Content-Disposition 헤더
Early Media Session을 기존 다이얼로그에서 생성하기 위해 Content-Disposition 헤더를 이용합니다. Content-Disposition 헤더는 'early-session'이라는 새로운 disposition type을 정의하고, Require와 Supported 헤더에 'early-session'이라는 옵션 태그를 정의하여 early-session disposition type을 표시합니다.
RFC 3959 The Early Session Disposition Type for the SIP 권고안은 Early Media Session과 Regular Media Session이 같은 코덱을 사용할 것을 권고합니다. RFC 3959의 예제는 Early Media 세션을 개방하는 과정을 잘 설명합니다.
앨리스는 SIP INVITE 요청과 SDP Offer를 발행하면서 Regular Media Session에 대한 협상을 시작합니다. 밥은 183 Session Progress에서 Regular Media Session에 대한 SDP Answer와 함께 Early Media Session에 대한 SDP Offer를 협상을 시작합니다. Early Media Session 은 Regular Media Session 협상 전에 이루어져야 합니다. 하지만, 앨리스는 200 OK 이전에 밥에게 SDP Answer를 전달할 수 있는 호 절차가 없습니다. 앨리스는 기존 호 절차에서 사용하는 요청과 응답이 아닌 새로운 SIP 메쏘드가 필요합니다.
PRACK은 Provisional Response ACKnowledgement의 준말로 아직 설립되지 않은 세션에 신뢰할 수 있는 최종 응답을 제공합니다. PRACK에 대해서는 다음 장에서 자세히 설명할 것이므로 여기서는 SIP헤더만을 위주로 설명합니다.
1) 앨리스의 INVITE (SDP Offer)
앨리스는 SIP INVITE 메시지와 Regular Media Session에 대한 SDP Offer를 전달합니다.
...
Content-Type: application/sdp
Content-Disposition: session
v=0
o=alice 2890844730 2890844731 IN IP4 host.example.com
s=
c=IN IP4 192.0.2.1
t=0 0
m=audio 20000 RTP/AVP 0
SIP INVITE 메시지에 'Content-Disposition: session' 헤더를 에 추가함으로써, 현재의 SDP Offer가 Regular Media Session에 대한 협상임을 표시합니다.
2) 밥의 183 Session Progress (Early Offer & Answer)
밥은 183 Session Progress 메시지와 함께 SDP 협상을 발행합니다. SDP 협상은 Early Media Session에 대한 Offer와 Regular Media Session에 대한 Answer입니다.
...
Content-Type: multipart/mixed; boundary="boundary1"
Content-Length: 401
--boundary1
Content-Type: application/sdp
Content-Disposition: session
v=0
o=Bob 2890844725 2890844725 IN IP4 host.example.org
s=
c=IN IP4 192.0.2.2
t=0 0
m=audio 30000 RTP/AVP 0
--boundary1
Content-Type: application/sdp
Content-Disposition: early-session
v=0
o=Bob 2890844714 2890844714 IN IP4 host.example.org
s=
c=IN IP4 192.0.2.2
t=0 0
m=audio 30002 RTP/AVP 0
--boundary1--
Content-Type:multipart/mixed를 통해 여러 SDP 세션에 대한 정보가 포함되어 있음을 표시합니다. Content-Disposition 헤더는 Regular Media Session을 위한 'session'과 Early Media Session을 위한 'early-session'을 정의하고 각각의 미디어 속성 파라미터를 협상합니다.
3) 앨리스의 PRACK (Early Answer)
엘리스는 PRACK 메쏘드를 이용하여 Early Offer에 대한 Answer를 200 OK 이전에 수행하여 Early Media Session 협상을 완료합니다.
...
Content-Type: application/sdp
Content-Disposition: early-session
v=0
o=alice 2890844717 2890844717 IN IP4 host.example.com
s=
c=IN IP4 192.0.2.1
t=0 0
m=audio 20002 RTP/AVP 0
기존 다이얼로그를 유지하면서 Early Media Session을 만들기 위해 Content-Disposition 헤더를 사용하고, 신뢰할 수 있는 응답을 받기 위해 PRACK을 사용합니다. PRACK은 전화기와 전화기간 또는 전화기와 게이트웨이 간에 링백톤을 전달할 때 유용한 방법입니다. 컬러링을 이용하더라도 컬러링 서비스가 음성 게이트웨이를 통해 들어오기 때문에 PRACK으로 충분합니다. 그러나 인터넷 전화에서 링백을 위해 UAS가 아닌 컬러링 서버에서 직접 음원을 받아야 하는 경우에는 같은 다이얼로그가 아닌 별도의 다이얼로그를 생성하는 것이 훨씬 편리합니다. Early Media Session을 만들기 위한 다른 방법을 고민해 봅니다.
https://brunch.co.kr/@linecard/188