SIP SDP

From 탱이의 잡동사니
Revision as of 09:58, 22 January 2015 by Pchero (talk | contribs)
Jump to navigation Jump to search

Overview

원문은 이곳<ref>http://www.nexpert.net/497</ref>에서 확인할 수 있다.

SDP는 코덱 협상과 같은 Capability Exchange 를 수행하는 프로토콜로 SIP 뿐만 아니라 MGCP와 Megaco에서도 사용한다. 기술적으로는 SIP와 SDP 프로토콜을 구분해서 사용하지만, SIP를 살펴볼 때 SDP는 자연스럽게 언급된다.

SDP 의 개요

SDP는 Session Description Protocol 의 약어로 멀티미디어 세션 파라미터를 협상하는 프로토콜이다. SDP는 RFC 2327을 개정한 RFC 4566 으로 권고되었다. H.323에 대한 이해가 있다면 SDP가 H.323 프로토콜의 H.245와 비슷한 역할을 수행한다고 생각하면 된다.

SIP를 요청과 응답 모델(Request & Response Model)로 정의하였듯이 SDP는 제안과 수락 모델(Offer & Answer Model)로 정의한다. SDP의 Offer/Answer Model 로의 동작에 대해서는 RFC 33264 An Offer/Answer Model with the SDP 에서 자세히 설명되어 있다.

Sdp dialog.png

SDP는 Capability를 협상하기 위해 기존의 호 처리 프로토콜을 이용한다. 위의 그림에서처럼 SDP는 SIP 메시지와 함께 전달된다. SIP INVITE 메시지에 SDP Offer가 포함되거나 200 OK 응답 메시지에 SDP Answer 가 포함된다.

SDP 메시지 분석

SDP는 멀티미디어를 전달하는 RTP 프로토콜에 대한 세부적인 내용을 협상한다. SDP는 아래와 같이 SIP와 다른 메시지 포멧을 유지하지만, SIP와 같이 텍스트 기반으로 구성된다.

v=0
o=alice 2890844526 2890844526 IN IP4 atlanta.com
s=
c=IN IP4 10.1.3.33
t=0 0
m=audio 49172 RTP/AVP 0
a=rtpmap:0 PCMU/8000

각 라인의 의미는 다음과 같다.

  • v=0 (필수)
SDP 프로토콜의 버전을 표시한다. SDP 버전은 0이다.
  • o=alice 2890844526 2890844526 IN IP4 atlanta.com (필수)
SDP 메시지를 생성한 Owner/Creator 를 표시한다. 순서대로 Username, Session-ID, Session Version, Network Type, Address Type, Unicast Address 를 표시한다.
  • s= (필수)
세션 이름을 표시한다.
  • c=IN IP4 10.1.3.33 (옵션)
순서대로 Network Type, Address Type, Connection-Address 를 나타내며 미디어의 주소를 정의한다.
  • t=0 0 (필수)
Timing 으로 Start-time과 End-Time을 표시한다. 0 0 은 고정 세션을 의미한다.

SDP의 Capability Exchange 를 주도하는 라인은 m= 와 a= 로 RTP가 사용할 코덱, IP 주소, 포트넘버가 자세히 명기된다. SDP를 생성하는 UA는 자신이 지원가능한 모든 코덱과 능력을 아래와 같이 명기한다.

m=audio 16444 RTP/AVP 0 8 18 101
a=rtpmap:0 PCMU/8000
a=ptime:20
a=rtpmap:8 PCMA/8000
a=ptime:20
a=rtpmap:18 G729/8000
a=ptime:20
a=sendrecv
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15 
  • m= (미디어 설명)
Media Description으로 Media, Port, Protocol, Format 을 정의한다.
Media : audio, video, text, application, message 로 표시.
Port : 미디어가 전송될 전송포트(Transport port) 표시.
Protocol : UDP, RTP/AVP, RTP/SAVP로 표시하며 AVP는 Audio Video Profile의 약자이다.
Format : 미디어의 포멧을 서브필드 (a=)로 표시함을 의미.
Payload Type 0 8 18 의 순서는 코덱 협상의 우선순위를 나타내며, Payload Type 101은 DTMF 이벤트를 정의한다. 각 포멧에 대한 상세 설명은 a= 에 표시된다.
  • a= (미디어 속성)
미디어 속성(attributer)을 정의한다.
a=rtpmap : Payload type, encoding name/clock rate 를 표시
a=ptime : Packet time으로 미디어 패킷 한 개가 포함된 시간 정보로 ms로 표시 (보통 20ms).
a=fmtp : 미디어 포멧에 대한 파라미터를 정의
  • a= (미디어의 방향)
미디어 속성 뿐만 아니라 미디어 방향도 표시한다. 미디어의 방향은 아래와 같이 4가지로 나타낸다.
a=sendrecv : 단말은 미디어를 송신 및 수신할 수 있음.
a=recvonly : 단말은 수신만을 할 수 있으며 송신하지 않음.
a=sendonly : 단말은 송신만을 할 수 있으며 수신하지 않음.
a=inactive : 단말은 송신 및 수신을 할 수 없음 (Hold 버튼을 누를 경우)
별도의 언급이 없을 경우에는 a=sendrecv 로 설정되었다고 가정한다. 미디어의 방향은 다양한 부가 서비스 구현시 유용하다.
  • a= (DTMF 협상)
DTMF 전달에 관한 협상도 진행한다.
a=rtpmap:101 telephone-event.8000 : RFC 2833에 의한 In-band DTMF를 의미.
a=fmtp 101 0-15 : DTMF Tone 은 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *, #, A, B, C, D 총 15 가지를 송수신 함.

RFC 3264의 기본 SDP 협상 (Offer / Answer Model)

RFC 3264 An Offer/Answer Model Session Description Protocol 권고안에 나와 있는 10.1 Basic Exchange 부분을 살펴보면서 Offer/Answer 모델의 동작 방식을 살펴보자.


References

<references />