brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Dec 14. 2018

12장. SIP OPTIONS의 이해

1. OPTIONS의 개요

OPTIONS 메쏘드는 UA가 다른 UA나 SIP Proxy 서버의 Capability를 확인하기 위해 사용합니다. INVITE 요청과 200 OK 응답 중에 확인할 수 있지만, OPTIONS 요청은 원하는 때에 확인할 수 있습니다. SIP 컴포넌트의 Capability 란 다음과 같습니다.

      

지원 가능한 매쏘드의 종류

지원 가능한 콘텐츠의 타입    

지원 가능한 확장 헤더의 종류

지원 가능한 코덱 등

<그림 12-1> SIP OPTIONS


SIP OPTIONS 메시지의 요청과 응답을 분석해봅니다.   


1) OPTIONS

앨리스의 전화기는 밥 전화기의 Capability를 확인하기 위해 OPTIONS을 발행합니다. 

OPTIONS sip:bob@192.168.10.20 SIP/2.0
Via: SIP/2.0/TCP pc33.atlanta.com;branch=z9hG4bK77i832k9
Max-Forwards: 70
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID:a84b4c76e6Kr456@pc33.atlanta.com
CSeq: 22756 OPTIONS
Contact: <sip:alice@pc33.atlanta.com> 
Allow: INVITE, ACK, OPTIONS, BYE, CANCEL, REFER, SUBSCRIBE, NOTIFY, MESSAGE, UPDATE 
Accept: application/sdp, application/pidf-xml
Content-Length: 0


2) 200 OK

OPTIONS 요청에 대한 응답으로 200 OK를 전송합니다. OPTIONS 요청은 긴급하거나 중요한 요청이 아니므로 UA나 SIP Proxy 서버가 바쁘다면 '486 Busy Here'로 응답해도 무방합니다.   


SIP/2.0 200 OK
Via: SIP/2.0/TCP sip:alice@atlanta.com;branch=z9hG4bK77i832k9
To: Bob <sip:bob@biloxi.com>; tag=a6c85e3
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID:a84b4c76e6Kr456@pc33.atlanta.com
CSeq: 22756 OPTIONS
Contact: <sip:bob@biloxi.com>
Contact: <sip:bob_home@biloxi.com>
Allow: INVITE, ACK, OPTIONS, BYE, CANCEL, REFER, NOTIFY, MESSAGE
Accept: application/sdp, text/plain, image/jpeg
Accept-language: en, fr
Content-Type: application/sdp
Content-Length: 274


SIP OPTIONS 메시지에는 4 개의 새로운 헤더가 등장합니다.        

Contact 헤더
연결 가능한 단말들의 Contact address 리스트    

Allow 헤더
지원 가능한 메쏘드 리스트  
  

Accept-language 헤더
지원 가능한 언어 리스트    

Accept
지원 가능한 메시지 바디의 타입 리스트 
Accept 헤더가 없을 경우 “application/sdp”로 가정
실제로 SIP 메시지 바디 타입은 Content-Type 헤더로 표시



2. OPTIONS PING

Keepalive 메커니즘은 상대방이 정상 동작하는 지를 확인하는 절차입니다. SIP 프로토콜은 REGISTER 메쏘드를 이용하여 UA와 SIP Proxy 서버 간의 Keepalive 확인이 가능합니다. 그러나, SIP Proxy 서버의 Voice Gateway를 연결하는 SIP Trunk 구간은 등록하는 과정이 없습니다. SIP INVITE 메시지를 전송해서 응답을 받기 전에는 상대방의 상태를 알 수가 없습니다. OPTIONS 메쏘드를 이용하여 SIP Trunk 구간에서 상대방의 상태를 확인할 수 있는 Keepalive 메커니즘을 제공하는 것을 OPTIONS PING이라 합니다. 


OPTIONS PING은 SIP Trunk 사이에서 주기적으로 OPTIONS 메시지를 주고받다가 상대방이 응답이 없거나 200 OK 응답이 아닌 경우에는 INVITE 요청을 전달하지 않습니다. 만일 OPTIONS PING을 사용하지 않으면, SIP Trunk 구간에서 INVITE에 대한 응답이 수신되거나 무응답으로 인한 Timeout 이 발생할 때까지 SIP 컴포넌트가 대기해야 합니다. 그러나, OPTIONS PING을 사용한다면 사전에 장애를 감지할 수 있으므로 호를 빠르게 진행할 수 있습니다.   


따라서, OPTIONS PING은 상대 SIP 컴포넌트를 URI 주소가 아닌 IP주소를 사용할 것을 권장합니다. 만일 도메인 이름인 FQDN을 이용할 경우 DNS에 의한 이중화 기능으로 인해 정확한 확인이 어려울 수 있습니다. 



'엔지니어를 위한 인터넷 전화와 SIP의 이해'를 책으로 만들다


https://brunch.co.kr/@linecard/188


매거진의 이전글 11장. SIP CANCEL의 이해
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari