brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Dec 12. 2018

9장. Route 헤더와 Record-Route 헤더

1. 모든 SIP 메시지가  SIP Proxy서버를 경유하게 하기

기업의 IP PBX 또는 SIP Proxy는 호의 상태를 관리하고 과금 데이터를 생성하기 위해 모든 시그널링이 자신을 경유하게 합니다. 모든 SIP Proxy 서버는 이렇게 동작하며, Dialog Stateful SIP Proxy라고 부릅니다. SIP 프로토콜은 새롭게 두 개의 SIP 헤더를 추가하여 이 문제를 해결합니다. 


1) Record-Route Header 

Record-Route 헤더는 SIP Proxy를 경유하는 다이얼로그에 대한 요청과 응답에 사용합니다. 여러 대의 SIP Proxy를 경유할 경우에는 ', '를 이용하여 추가합니다. 예를 들어, Record-Route: server10.biloxi.com  또는 Record-Route: server10.biloxi.com, bigbox3.atlanta.com처럼 사용합니다.


2)  Route Header 
Route 헤더는 응답 메시지의 Record-Route Header로부터 생성됩니다.  같은 다이얼로그 내의 첫 번째 Transaction이 완료되면 그 이후 트랜잭션은 Record-Route Header의 값을 복사하여 Route 헤더로 사용합니다. 다시 말해서 처음 INVITE 요청에 대한 200 OK 응답은 Record-Route 헤더를 사용하지만, 그다음의 ACK와 BYE 요청과 200 OK 응답은 Route 헤더를 사용합니다. 

Route 헤더도 Record-Route 헤더와 동일한 방식으로 사용합니다. 예를 들어, 'Route: server10.biloxi.com'로 사용합니다.



2. Record-Route 헤더와 Route Header의 활용

앨리스의 전화기가 INVITE 메시지를 송신하면 SIP Proxy는 Record-Route 헤더를 메시지에 삽입하여 밥에게 전송합니다. 통화중인 앨리스와 밥의 전화기는 동일한 Call-ID를 가진 다이얼로그 내의 모든 신규 요청을 SIP Proxy로 전달합니다.   


<그림 9-1> Record-Route 헤더


SIP Proxy 서버가 밥에게 보내는 SIP INVITE를 보겠습니다. SIP Proxy 서버는 'Record-Route : server10.biloxi.com'이라는 Record-Route 헤더가 추가하였습니다. 


INVITE sip:bob@biloxi.com/TCP SIP/2.0
Via: SIP/2.0/TCP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1
Via: SIP/2.0/TCP pc33.atlanta.com;branch=z9hG4bK776asdhds ;received=10.1.3.33
Max-Forwards: 69
To: Bob <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Record-Route: server10.biloxi.com
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com> 
Content-Type: application/sdp
Content-Length: 142 


SIP INVITE 메시지의 Record-Route 헤더의 값은 그대로 180 Ringing과 200 OK에 복사되어 전송합니다. ACK는 세션 설립을 위한 마지막 메시지이므로  SIP Proxy는 Route 헤더를 제거한 후에 밥에게 전송합니다. 


<그림 9-2> Record-Route 헤더


호 종료를 위한 BYE 요청은 기존 다이얼로그의 Record-Route 헤더를 복사합니다. 밥의 전화기는 같은 다이얼로그 내의 신규요청이므로 Record-Route 헤더의 정보를 바탕으로 BYE 요청을 SIP Proxy로 전달합니다. BYE의 응답인 200 OK는 Via 헤더를 따라 전송됩니다. BYE는 다이얼로그의 마지막 메시지이므로 Route 헤더가 있으나 없으나 상관없습니다.  



3. RFC 3261

SIP Protocol에 대해 정의한 RFC 3261 권고안은 6개의 메쏘드를 정의합니다. INVITE, ACK, BYE는 이미 살펴보았고, 나머지 3개는 REGISTER, CANCEL, OPTIONS입니다.  REGISTER는 SIP 전화기가 사전 설정된 SIP RESTRA 서버에 등록을 요청하는 메쏘드이며, CANCEL은 요청을 취소하기 위한 메쏘드이고, OPTIONS는 Capability를 확인하기 위한 메쏘드입니다. 다음장에서 나머지 3개의 메쏘드에 대해 공부합니다.



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


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


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari