1. SIP의 개요 (RFC 3261)
2. SDP의 개요 (RFC 4566 & RFC 3264)
3. Early Media in SDP (RFC 3959 & RFC 3960)
4. RFC 3261의 주요 매쏘드 I (RFC 3261)
5. RFC 3261의 주요 매쏘드 II (RFC 3261)
6. RFC 의 Response의 이해
7. PRACK (RFC 3262)
8. SUBSCRIBE & NOTIFY (RFC 3265, RFC 3680)
9. INFO (RFC 2976)
10. UPDATE (RFC 3311)
11. REFER (RFC 3515)
12. PUBLSIH (RFC 3903)
넥스퍼트 닷넷에 연재로 글을 쓰면서 많은 부담감으로 인해 다시는 연재로 글을 쓰지 않겠다는 다짐을 했지만, "SIP의 이해"라는 또 하나의 연재를 시작합니다. 기존의 연재 중 마무리하지 못한 "BcN 참조모델의 이해", "4G 이야기", "CUCM 데이타시트의 이해" 가 있습니다만, 올해안으로 정리하겠다는 다짐과 함께 부지런한 블로그가 되겠습니다. ^^
요즘 UC분야의 으뜸인 프로토콜은 SIP입니다. H.323과 MGCP는 Call Server와 Gateway간에 주로 사용이 되고, Line side는 SIP가 대세입니다. 또한, 지인들의 경우에도 SIP 프로토콜을 이용하여 IP Phone 또는 Gateway를 사용하시지만, Architecture에 대한 이해가 부족하여 장애나 이기종 장비간 연동시에 어려움을 겪는 듯합니다. 사실 저도 편하게 글을 써보고자 검색엔진에서 SIP 관련 자료를 찾아보았지만, 체계적으로 정리된 자료가 없는 것이 아쉬웠습니다. 이 연재를 통해 UC에 종사하시거나, UC를 공부하시는 분들에게 도움이 되길 기대합니다.
이 글은 "시스코네트워커스 "에서 발표되었던 SIP 관련 Presentation 파일 몇 개와 IETF의 RFC 문서를 기초로 작성하였습니다.
SIP의 개요 SIP는 Session Initiation Protocol의 약자로 으용계층의 호 Signaling Protocol입니다. SIP는 하나 또는 그이상의 참가와 멀티미디어 세션의 생성, 변경, 종료에 대해 정의하였습니다. SIP에서 세션은 다음과 같이 정의할 수 있습니다.
Internet multimedia conferences (다자간 회의)
Internet telephone calls (음성 전화)
Internet video sessions (영상 전화)
Multimedia distribution (멀티미디어 분배)
Subscriptions and Nofitifations for Events (이벤트 신청 및 통지)
Publications of State (상태 정보 배포)
SIP상에서 세션이라는 것이 전화를 걸고 받기 위한 시그널링이라고 단순히 생각할 수 없습니다. 현재, SIP를 통해 단순히 호 정보만을 교환하는 것이 아닌 다양한 곳에서 폭넓게 사용되고 있습니다.
SIP의 History
SIP는 1999년 3월 RFC 2543 SIP가 처음 IETF에서 표준화되었으며, 2002년 7월 RFC 3261 SIP로 개정되었습니다. 또한, SIP상의 기본적인 내용만 정의되었던 RFC 3261를 보완한 45개의 추가적인 SIP 관련 표준이 표준화 되어 다양한 부가서비스를 개발할 수 있게 되었습니다. 물론, 이외에도 다수의 SIP관련 Draft 문서들이 있습니다. RFC 3261는 SIP를 알기 위한 기본적인 문서이지만, 실제 업무에서 부딪히는 많은 부분은 아래 명시된 자료들과 함께 확인해야 합니다.
국내 및 해외 SIP 장비 중에서도 아래 모든 표준을 지원하고 있는 장비는 없는 듯합니다. 그러나, 차츰 시간이 지나면서 모두 지원될 수 있을 것으로 기대합니다.
RFC 2976 The SIP INFO Method
RFC 3204 MIME media types for ISUP and QSIG Objects
RFC 3261 SIP
RFC 3262 Reliablity of Provisional Responses in SIP
RFC 3263 SIP : Location SIP Servers
RFC 3265 SIP-Specific Event Notification
RFC 3311 SIP UPDATE Method
RFC 3312 Integration of Resource Management
RFC 3313 Private SIP Extensions for Media Authorization
RFC 3319 DHCPv6 Options for SIP Servers
RFC 3323 A Privacy Mechanism for the SIP
RFC 3325 Private Extensions to the SIP for Asserted Identity within Trusted Networks
RFC 3326 The Reason Header Field for the SIP
RFC 3327 SIP Extension for Tedistering Non-Adjacent Contacts
RFC 3329 Security Mechanism Agreement for the SIP
RFC 3310 HTTP Digest Authentication Using Authentication and Key Agreement
RFC 3361 DHCP Option for SIP Servers
RFC 3420 Internet MEdia Type message / sipfrag
RFC 3428 SIP for Instant Messaging
RFC 3515 The SIP Refer Method
RFC 3581 The SIP Extension for Symmetric Response Routing
RFC 3608 SIP Extension Header Field for Service Route Discovery During Registration
RFC 3853 S/MIME AES Requirement for SIP
RFC 3840 Indicating User Agent Capabilities in the SIP
RFC 3841 Caller Preferences for SIP
RFC 3891 The SIP 'Replaces' Header
RFC 3892 The SIP Referred-By Mechanism
RFC 3893 SIP Authenticated Identity Body (AIB) Format
RFC 3903 An Event State Publication Extension to the SIP
RFC 3911 The SIP 'Join' Header
RFC 3968 The IANA Header Field Parameter Registry for the SIP
RFC 3969 The IANA Universal Resource Identifier (URI) Parameter Registry for the SIP
RFC 4032 Update to the SIP Preconditions Framework
RFC 4028 Session Timers in the SIP
RFC 4092 Usage of the SDP Alternative Network Address Types (ANAT) Semantics in the SIP
RFC 4168 The SCTP as a Transport for SIP
RFC 4424 The History-Info Header for SIP
RFC 4411 The Reason Header for Preemption for SIP
RFC 4412 The Communications Resource-Priority Header for SIP
RFC 4488 Suppression of SIP REFER Method Implicit Subscription
RFC 4508 Conveying Feature Tags with SIP REFER Method
RFC 4485 Guidelines for Authors of Extensions to the SIP
RFC 4483 A Mechanism for Content Indirection in SIP Messages
RFC 4538 Request Authorization through Dialog Identification in the SIP
RFC 4474 Enhancements for Authenticated Identity Management in the SIP
SIP가 이용하는 IETF 프로토콜 SIP는 Signaling에 대한 정의이며, 이외의 다른 프로토콜과 연계하여 사용됩니다.
RFC 2616 Message formatting (HTTP 1.1)
RFC 4566 Media Description (SDP)
RFC 3550 RTP
RFC 1738 URL & RFC 2396 URI
RFC 1034 & RFC 1035 DNS
RFC 2131 Device Mobility
RFC 2045 MIME (Multiperpose INternet Mail Extensions)
메세지 포맷 (US-ASCII)에 대한 정의로 SIP의 Message Body에 사용됩니다.
RFC 4301 & RFC 4303 IPSec
보안관련 규정입니다.
RFC 4346 TLS
Signaling에 대한 보안 규정입니다.
SIP Components 및 SIP Header 설명
"RFC 3261 SIP 분석" 이라는 글에 자세히 올려 놓았으므로 넘어갑니다.
SIP 패킷의 구조 아래 그림은 일반적인 SIP를 포함한 패킷의 구조이며, IP Header (20Byte)/UDP Header (8Byte)/SIP Header/ SIP Message Body 로 이루져 있습니다. SIP 헤더에는 "RFC 3261 SIP분석" 이라는 글에 자세히 언급되어 있으며, SIP Message Body는 있을 수도 있고, 없을 수도 있는 옵션이며, 주로 SDP의 내용이 첨가된다고 보면 되겠습니다.
위의 그림에서는 Transport Layer 프로토콜로 UDP로 되어 있듯이 일반적이지만, TCP 또는 SCTP가 사용될 수 있습니다. SCTP는 잘 사용되지 않습니다만, Sigtran 프로토콜이 사용하는 것이 일반적입니다. SCTP는 TCP와 UDP의 장점을 결합해 놓은 것으로 IPv6에서만 기본 스택으로 들어가 있기때문에 많이 사용될 것으로 생각됩니다. 나중에 Sigtran을 연재할 기회가 생기면 그 때 다시 언급하도록 하겠습니다. SCTP만 가지고도 글 한 두개는 만들 수 있을 만큼 방대한 내용입니다.
결언 이 부분은 "RFC 3261 SIP 분석"과 중복되는 부분은 제외하고 작성되었습니다. 따라서, 같이 보시는 것을 권해드립니다. 그리고, 제가 아직 전체적으로 이 연재에 대한 밑그림을 정확하게 그리지 못해서 글 싣는 순서는 바뀌거나 변경될 수 있습니다. ^^