SIP INFO

From 탱이의 잡동사니
Jump to navigation Jump to search

Overview

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

SIP 세션이 설립된 후 기존의 세션을 유지하면서 필요한 정보를 교환하려면 어떻게 해야할까? 기존의 메소드는 세션 설립/종료에 관한 것이었다. 200 OK 이후부터 BYE 이전까지 기존의 세션 내에서 UAC와 UAS 간에 정보 교환을 할 수 있는 방법이 없다.

세션이 설립된 후, 즉 200 OK 이후의 세션 관련 제어 정보는 INFO를 사용한다. SIP INFO는 SIP Signaling 경로를 이용하여 어플리케이션 레벨의 정보를 전송하는 것이 목적이다. 다양한 정보를 교환할 수 있지만, 다음과 같은 정보의 변경은 불가능하다.

  • SIP 호의 상태 변경
  • 초기 설정된 세션 파라미터의 변경

위와 같은 변경을 하기 위해서는 UPDATE나 re-INVITE를 통해 가능하다. 단순히 세션 완료 전에는 UPDATE 를 세션 완료 후에는 re-INVITE를 이용한다. 물론, UPDATE는 세션 완료 후에도 사용되지만, 추천하지 않는다. 단지 세션과 관련된 미디어 속성을 변경하거나 세션 타이머를 업데이트할 때는 UPDATE나 re-INVITE를, 어플리케이션 레벨의 세션 관련 제어 정보를 전송할 때는 INFO를 사용한다고 이해하자.

SIP INFO가 전송하는 주요 정보는 RFC 2976 The SIP INFO Method 에 다음과 같다고 명시한다.

  • PSTN 게이트웨이간에 PSTN Signaling 메시지 전송
  • DTMF Digits 전송
  • Wireless Mobility 어플리케이션 지원을 위해 무선 신호의 세기를 전송
  • Account balance 정보 전송(선불카드 시스템 등에서 사용)
  • 세션 참가자간에 이미지 또는 비 스트리밍 정보를 전송

INFO 메소드의 호절차

SIP INFO 를 사용하는 절차는 다음과 같다.

Sip info dialog.png

세션이 설립 후 Alice 는 어플리케이션 레벨의 정보를 전송하기 위해 SIP INFO를 전달한다. 여기서는 DTMF를 전송한다고 가정해보자.

INFO sip:Alice's_Bank@192.168.10.20 SIP/2.0
Via: SIP/2.0/TCP pc33.atlanta.com;branch=z9hG4bK776asegma
Max-Forwards: 70
To: Bank <sip:Bank@Bank_URI.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 22756 INFO
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: text/plain
Content-Length: 16

3 1 8 1 9 6 2

Alice's Back는 IVR이라고 생각하면 되겠다. 세션 설립 후 IVR이 주민 번호 또는 회원번호를 요구한 것이라고 생각할 수 있겠다. Alice's Bank는 기존의 Call-ID와 동일하므로, SIP INFO를 받아들이고, 200 OK를 전송한다. RFC 2976 에는 Content-Type 에 대해 정의하지 않기에 필요에 따라 사용할 수 있다. 여기에서는 메시지 바디가 text/plain 으로 되어 있다고 나타나며, 전송된 정보는 Digits 3 1 8 1 9 2 이다. 이에 대해 정상적으로 처리 되었으므로 200 OK가 전송되었으며, 아래와 같은 다양한 응답이 발생할 수 있다.

  • 481 Call leg / Transaction Deesnot Exist
만일 INFO 요청을 받은 UAS가 기존의 Call leg와 매치가 되지 않을 때
  • 415 Unsupported Media Type
UAS가 이해할 수 없는 메시지 바디를 포함했으므로, 처리할 수 없을 때
  • 200 OK (정상)
UAS가 이해할 수 있는 메시지 바디를 포함했고, 처리할 때
  • 487 Request Terminated
SIP INFO 요청을 처리 중인 가운데 CANCEL 메소드를 받았을 때

RFC 2976 에서 SIP INFO 메시지 바디에 Digit 를 실어 보낼 수 있다고 되었지만, Content-Type 에 대한 정확한 형식을 규정하지 않아 제조사 별로 다른 방식을 사용한다. 이기종 장비간의 상호 연동에 문제를 일으킬 수 있으므로 Contents-type 을 UAC 와 UAS 간에 동일하게 사용하는지를 확인해야 한다. DTMF를 위한 SIP INFO 헤더의 Content-Type 헤더 부분에 대한 정의는 아래와 같이 제조사별로 다르게 사용한다.

“Contents-type; audio/telephone-event”
“Contents-type; application/vnd.networks.digits”
“Content-Type: text/plain”

References

<references />