Nexpert SIP 4 - Route and Record-Route
Overview
Route/Record-Route 헤더 내용 정리. 원문은 이곳(https://brunch.co.kr/@linecard/134) 에서 확인할 수 있다.
Basic
기업의 IP PBX 또는 SIP Proxy 는 호의 상태를 관리하고 과금 데이터를 생성하기 위해 모든 시그널링이 자신을 경유하게 한다. 모든 SIP Proxy 서버는 이렇게 동작하며, Dialog Stateful SIP Proxy 라고 부른다. SIP 프로토콜은 두 개의 SIP 헤더를 추가하여 이 문제를 해결한다.
Record-Route
Record-Route 헤더는 SIP Proxy 를 경유하는 다이얼로그에 대한 요청과 응답에 사용한다. 여러 대의 SIP Proxy 를 경유할 경우에는 ','를 이용하여 추가한다.
Route
Route 헤더는 응답 메시지의 Record-Route Header 로부터 생성된다. 같은 다이얼로그 내의 첫번째 Transaction 이 완료되면 그 이후 Transaction 은 Record-Route 의 값을 복사하여 Route 헤더로 사용한다. 다시 말해서 처음 INVITE 요청에 대한 200 OK 응답은 Record-Route 헤더를 사용하지만, 그 다음의 ACK 와 BYE 요청과 200 OK 응답은 Route 헤더를 사용한다.
Record-Route 헤더와 Route 헤더의 활용
엘리스의 전화기가 INVITE 메시지를 송신하면 SIP Proxy는 Record-Route 헤더를 메시지에 삽입하여 밥에게 전송한다. 통화중인 엘리스와 밥의 전화기는 동일한 Call-ID 를 가진 다이얼로그 내의 모든 신규 요청을 SIP Proxy 로 전달한다.
SIP 프록시 서버가 밥에게 보내는 SIP INVITE 를 살펴보자. SIP Proxy 서버는 'Record-Route: <sip:34.90.68.237:5060;r2=on;lr> 라는 헤더를 추가하였다.
INVITE sip:bob@pchero21.com SIP/2.0 Record-Route: <sip:192.168.0.237:5060;r2=on;lr> Record-Route: <sip:10.164.0.20;transport=tcp;r2=on;lr> ...
SIP INVITE 메시지의 Record-Route 헤더의 값은 그대로 180 Ringing 과 200 OK 에 복사되어 전송된다. ACK 는 세션 설립을 위한 마지막 메시지이므로 SIP Proxy는 Route 헤더를 제거한 후에 밥에게 전송한다.
호 종료를 위한 BYE 요청은 기존 다이얼로그의 Record-Route 헤더를 복사한다. 밥의 전화기는 같은 다이얼로그 내의 신규요청이므로 Record-Route 헤더의 정보를 바탕으로 BYE 요청을 SIP Proxy 로 전달한다. BYE의 응담인 200 OK 는 Via 헤더를 따라 전송된다. BYE 는 다이얼로그의 마지막 메시지이므로 Route 헤더가 있으나 없으나 상관없다.
See also
- https://brunch.co.kr/@linecard/134 - 9장. Route 헤더와 Record-Route 헤더