SIP-포크
때때로 프록시 서버는 단일 SIP 호출을 여러 SIP 엔드 포인트로 전달합니다. 이 프로세스를 분기라고합니다. 여기서 단일 통화는 동시에 여러 엔드 포인트에 벨을 울릴 수 있습니다.
SIP 포크를 사용하면 사무실 전화가 소프트 폰 또는 모바일의 SIP 전화와 동시에 울리도록 할 수 있으므로 두 장치에서 쉽게 전화를받을 수 있습니다.
일반적으로 사무실에서 상사가 전화를 걸 수 없거나 자리를 비울 수 없다고 가정하면 SIP 포크를 통해 비서는 내선 전화에 응답 할 수 있습니다.
Forking은 수신되는 많은 것 중에서 수행하고 응답해야하기 때문에 사용 가능한 상태 저장 프록시가있는 경우 가능합니다.
두 가지 유형의 포크가 있습니다.
- 병렬 포크
- 순차 포크
병렬 포크
이 시나리오에서 프록시 서버는 INVITE를 한 번에 두 개의 장치 (UA2, UA3)에 포크합니다. 두 장치 모두 180 Ringing을 생성하고 전화를받는 사람은 200 OK를 생성합니다. 발신자에게 먼저 도달하는 응답 (UA2 가정)은 UA2와의 세션을 설정합니다. 다른 응답의 경우 CANCEL이 트리거됩니다.
발신자가 두 응답을 동시에 받으면 q- 값에 따라 응답을 전달합니다.
순차 포크
이 시나리오에서 프록시 서버는 INVITE를 하나의 장치 (UA2)로 포크합니다. 이때 UA2를 사용할 수 없거나 사용 중이면 프록시가이를 다른 장치 (UA3)로 포크합니다.
분기-ID 및 태그
분기 ID는 프록시가 분기 된 요청에 대한 응답을 일치시키는 데 도움이됩니다. 지점 ID가 없으면 프록시 서버는 분기 된 응답을 이해할 수 없습니다. 분기 ID는 Via 헤더에서 사용할 수 있습니다.
태그는 UAC에서 다른 UAS의 여러 최종 응답을 구별하는 데 사용됩니다. UAS는 요청이 분기되었는지 여부를 확인할 수 없습니다. 따라서 태그를 추가해야합니다.
프록시는 또한 최종 응답을 생성하는 경우 태그를 추가 할 수 있으며 전달하는 요청이나 응답에 태그를 삽입하지 않습니다.
단일 요청이 여러 프록시 서버에 의해 분기 될 수도 있습니다. 따라서 포크하는 프록시는 생성 한 브랜치에 고유 한 ID를 추가합니다.
통화 다리 및 통화 ID
통화 레그는 두 사용자 에이전트 간의 일대일 신호 관계를 나타냅니다. 통화 ID는 통화를 참조하는 SIP 메시지에 포함 된 고유 식별자입니다. 통화는 통화 레그의 모음입니다.
UAC는 INVITE를 보내는 것으로 시작됩니다. 분기로 인해 서로 다른 UA에서 여러 개의 200 OK를받을 수 있습니다. 각각은 동일한 통화 내에서 서로 다른 통화 레그에 해당합니다.
따라서 통화는 통화 레그 그룹입니다. 통화 레그는 UA 간의 종단 간 연결을 나타냅니다.
콜 레그의 두 방향에있는 CSeq 공간은 독립적입니다. 단일 방향 내에서 각 트랜잭션에 대해 시퀀스 번호가 증가합니다.
음성 사서함
음성 메일은 오늘날 엔터프라이즈 사용자에게 매우 일반적입니다. 전화 애플리케이션입니다. 수신자가 통화가 불가능하거나 전화를받을 수 없을 때 PBX는 발신자에게 음성 메시지를 남기도록 알립니다.
사용자 에이전트는 3xx 응답을 받거나 수신자의 번호에 연결할 수없는 경우 음성 메일 서버로 리디렉션됩니다. 그러나 음성 메일 시스템에 사용할 사서함, 즉 재생할 인사말과 녹음 된 메시지를 저장할 위치를 나타내려면 일종의 SIP 확장이 필요합니다. 이것을 달성하는 두 가지 방법이 있습니다-
SIP 헤더 필드 확장을 사용하여
Request-URI를 사용하여이 정보에 신호를 보냅니다.
사용자를 위해 가정하십시오 sip:[email protected] 음성 메일을 제공하는 sip : voicemail.tutorialspoint.com에 음성 메일 시스템이 있습니다. 음성 메일 서버로 전달 될 때 INVITE의 Request-URI는 다음과 같습니다.
sip:voicemail.tutorialspoint.com;target = sip:[email protected];cause = 486
다음 그림은 Request-URI가 메일 함 식별자와 이유 (여기서는 486)를 전달하는 방법을 보여줍니다.