Chapter 2. SIP Overview

2000년대 초반에 H.323의 단점을 극복하기 위한 아키택쳐로 만들어진 SIP는 차세대 VoIP 표준 프로토콜로 각광을 받았습니다. 엔지니어들과 개발자들의 예상보다는 SIP가  폭넓게 사용되는 데 많은 시간이 들었지만, 현재 가장 많이 사용하는 VoIP 프로토콜은 SIP입니다. 


SIP는 모든 VoIP 장비에서 사용되는 프로토콜이므로 SIP를 공부하면 VoIP의 거의 모든 기술과 맥락을 이해할 수 있습니다. 이 장에서는 입문자들도 쉽게 읽을 수 있는 SIP에 대한 기본적인 내용과 주요 컴포넌트에 대해 다룹니다. 



1. SIP 정의

SIP는 Session Initiation Protocol의 약자로 응용 계층의 시그널링을 담당하는 프로토콜입니다. SIP의 이름을 그대로 번역을 하면 “세션 설정 프로토콜”입니다. RFC 3261 권고안에 따르면, SIP는 하나 또는 그 이상의 참가자와 멀티미디어 세션의 생성, 변경, 종료에 대한 응용 계층의 프로토콜로 정의합니다. SIP에서 정의한 세션은 다음과 같습니다. 

  • Internet multimedia conferences (다자간 회의)

  • Internet telephone calls (음성 전화)

  • Internet video sessions (영상 전화)

  • Multimedia distribution (멀티미디어 분배)

  • Subscriptions and Nofitifations for Events (이벤트 신청 및 통지)

  • Publications of State (상태 정보 배포) 

인터넷에서 세션은 폭넓은 의미로 사용되지만, SIP에서는 전화를 걸고 받기 위한 전화번호와 같은 정보를 송수신하는 것을 의미합니다. 



2. SIP 패킷 구조

SIP 메세지를 송수신하는 패킷의 구조를 알면 SIP의 특징을 이해할 수 있습니다. SIP의 패킷 구조는 다음과 같습니다. 



SIP 메세지는 텍스트 기반의 가변 길이로 구성되며 크게 SIP헤더와 메세지 바디로 나뉩니다. 헤더는 편지의 봉투와 같은 내용을 담고 있으며 뒤에 올 메세지 바디의 종류를 표시합니다. 메세지 바디로 필요한 구체적인 사항들이 기술되며 옵션 필드입니다. 




SIP가 사용하는 전송 프로토콜 (Transport Layer)은 TCP (Transport Control Protocol) 또는 UDP (User Data Protocol) 입니다. 위의 그림에서 처럼 일반적인 상황에서는 UDP를 주로 사용하지만, 현재는 Secure IPT 나 특정 상황에서 TCP를 많이 사용하며, 사용하는 포트는 SIP는 5060과 5061 포트를 이용합니다. 



4. SIP 컴포넌트

SIP 프로토콜이 멀티미디어 통신을 위한 호를 생성 및 종료하기 위해서는 다음의 5가지 기능 (Funtionality)이 필요합니다.


  • User Location : 통신에 참가할 단말을 결정

  • User Availiability : 통신에 참여할 착신측의 통화 가능여부 결정

  • User Capabilities : 통신간에 사용될 미디어 및 미디어 파라미터 결정

  • Session Setup : 착신측 및 송신측에 세션 파라미터 생성

  • Session Management : 세션의 종료 및 전환, 세션 파라미터 변경, 부가 서비스 연동

 이 기능들은 SIP 컴포넌트에서 직접 구현됩니다. 



  


위의 다이어그램은 SIP  통신을 위한 컴포넌트들을 간단히 표시한 것입니다.  SIP 주요 컴포넌트를 하나씩 살펴보겠습니다.


  • UA (User Agent)
    UA는 User Agent의 약어로 UAC (UA Client)와 UAS (UA Server)를 합쳐서 부릅니다. UAC는 세션을 시작하는 역할로 접속을 요청을 하며, UAS는 세션을 종단하며 접속요청 메시지를 수신합니다. UA는 다른 UA와 직접 연결을 설정하거나 Proxy/Redirect Server들의 도움으로 다른 UA와 연결을 설정합니다. 통화 중인 호의 상태를 실시간으로 관리합니다. 따라서, UA는 UAC와 UAS의 역할을 동시에 가지고 있습니다. 

    호 별로 SIP 컴포넌트들은 UAC의 역할을 하거나 UAS의 역할을 합니다. 그러나 SIP Proxy는 호를 종단하지 않고 릴레이만을 하므로 UAC 나 UAS의 역할을 수행하지 않습니다.


  • SIP Gateway
    Gateway는 관문이라는 뜻으로 서로 다른 이기종망을 연결하는 장비입니다. SIP Gateway는 PSTN 전화망과 IP 네트워크를 서로 연결해 주는 역할합니다.  


SIP를 지원하는 UA인 전화기가 두 대가 있습니다. 전화기가 "전화번호와 IP 주소 매핑 테이블"을 가지고 있다고 가정할 경우에 서로 통화가 가능합니다. 만일 사용자가 상대방 전화기의 IP 주소를 알고 있다고 할 경우에도 통화가 가능할 것입니다. 전화기가 두 대가 아닌 수천 수만대일 경우를 생각해 봅시다.


모든 전화기가 "전화번호와 IP주소 매핑 테이블"을 가지고 있으면 통화가 가능합니다. 그러나, 현실적으로 전화기가 컴퓨터 수준으로 성능이 증가해야 되는 단점과 IP 주소가 바뀔 때마다 다른 모든 전화기에 정보를 업데이트 해주어야 하므로 현실적으로 불가능합니다. 이런 관리적인 요소를 해결할 수 있는 방법은 제 3의 서버가 "전화번호와 IP 주소 매핑 테이블"을 가지고 있고, 모든 전화기들이 IP 주소가 변경될 때 마다 업데이트를 하고, 통화 시도시에 제 3의 서버에게 IP 주소를 물어보면 됩니다.


관리적인 요소들을 구분하여 제 3의 서버는 다음과 같이 분류됩니다. 

  • Registrar Server (등록 서버)
    일반적으로 전화기들은 부팅 시에 자신이 획득한 IP 주소나 SIP URI정보를 Registrar Server에 등록합니다. Registrar Server는 전화기로 부터의 받은 SIP REGISTER 메세지를 기준으로 데이터베이스에 저장합니다.

    Registrar Server는 저장된 정보를 바탕으로 Proxy Server로 부터 요청에 응답하지만 SIP메세지를 직접 처리하지는 않습니다. Registrar Server의 기능을 이용하여 Presence (상태정보)의 정보를 생성할 수 있습니다. 
     

  • Proxy Server
    Proxy Server는 전화기(UA)로부터의 수신한 접속 요청 메시지를 추가 변경 삭제할 수 있습니다. 즉, 전화기가1001전화번호로 통화를 시도하는 SIP INVITE 메세지가 도착하면, Proxy Server는 Registrar Server에 1001의 IP 주소를 문의한 후에 1001 전화기로 메세지를 전달합니다. 또한, 과금(billing)을 위한 CDR (Call Detail Record)정보 등을 유지합니다.


  • Redirect Server 
    Proxy Server는 통화 연결을 위한 SIP INVITE 메세지를 목적지로 직접 전달해주는 것과 달리 Redirect Server는 메세지를 전송한 UAC로 목적지를 3xx redirect 메세지로 알려줍니다.  Redirect메세지를 받은UAC는 수신한 목적지 주소를 가지고 새로운 세션을 열어서 통신을 시도합니다. 

통신사와 같은 대규모 VoIP망을 지원하는 IP PBX의 경우에는 Registrar Server, Proxy Server, Redirect Server를 따로 구축하기도 하지만, 일반 기업용 IP PBX는 한 서버에 모두 구현합니다. 따라서, VoIP 엔지니어들은 IP PBX내에서 각 컴포넌트를 따로 구분하지 않습니다. 


4. B2BUA의 이해
SIP는 UA (User Agent)간의 통신으로 클라이언트 서버 기반 프로토콜로 UAC (User Agent Client)와 UAS (User Agent Server) 간 통신을 다룹니다. SIP Proxy는 옵션장비로 다수의 UA간의 통신을 편리하게 해주는 역할을 수행하지만, UA가 보내는 SIP 메세지 전체를 수정 변경 삭제할 수없고, 특정 헤더를 삽입하거나 제한된 수정이 가능합니다. 따라서, SIP Proxy는 기업에서 사용되는 수많은 부가 기능을 구현하거나 서로다른 프로토콜간 연동을 하기 위해서는 부족한 장비입니다. 

따라서, IP PBX는 SIP Proxy가 제공하는 것보다 더 많은 부가 기능, 직접적인 코덱협상, CAC, VoIP 프로토콜간 상호연동 등의 기능을 수행하기 위해 B2BUA로 개발된 경우가 많습니다. B2BUA는 Back-to-Back User Agent의 준말로 UAC 역할과 UAS의 역할을 동시에 수행한다는 의미입니다.


B2BUA가 구현된 IP PBX 와 SIP Proxy로 구현된 IP PBX의 차이점은 다이얼로그 구성에서 차이가 납니다.같은 Call ID를 가지는 하나의 트랜잭션 단위가 다이얼로그를 형성합니다. 아래 그림에서 왼쪽 전화기에서 INVITE를 보내면, 오른쪽 전화기가 200 OK로 응답하는 하나의 트랜잭션 단위입니다. SIP Proxy 서버는 SIP 메세지의 헤더와 바디 부분을 변경하지 않고 Via 헤더나 Route 헤더 등을 삽입하거나 제거하는 일을 하면서 실제 다이얼로그에 영향을 미치지 않습니다. 



B2BUA로 동작하는 IP PBX는 UAC인 전화기 보낸 INVITE를 종단하는 UAS로 동작하여 다이얼로그를 종단하고, 다시 UAC의 역할을 수행하여 착신 전화기에 INVITE메세지를 새롭게 생성하여 전송합니다. 


B2BUA로 구성된 IP PBX의 장점은 다음과 같이 요약할 수 있습니다.

  • 다양한 부가서비스 구현이 용이

  • 이기종 프로토콜간 연동 지원 
    발신 전화기는 SIP로 수신 전화기는 H.323으로 통신이 가능하며, 미디어는 직접은 전화기 간에 전달됩니다. 

  • 코덱 변환 지원
    하나의 통화에서 LAN상에서는 G.711로, WAN상에서는 G.729로 통신할 수 있어 대역폭 관리 및 정책 설정이 용이합니다. 




5. SIP의 친구들

SIP는 시그널링 프로토콜로 완전한 하나의 호를 생성 및 종료하기 위해서는 SIP를 도와주는 친구 프로토콜이 있습니다. 


  • RFC 3550 Real-Time Protocol (RTP) & RTCP : 실제 음성 및 영상 전송

  • RFC 4566 Session Description Protocol (SDP) : 세션 설정을 위한 세부 속성 파라미터 제공






"다시쓰는 SIP의 이해" 연재의 다른 글  


2015/07/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 22편 Chapter 8. RTP의 이해


2015/07/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 21편 Chapter 7. 가끔 보는 SIP Method


2015/07/08 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 20편 Chapter 7. 가끔 보는 SIP Method


2015/05/20 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 19편 Chapter 7. 가끔 보는 SIP Method


2015/05/18 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 18편 Chapter 7. 가끔 보는 SIP Method


2015/05/07 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 17편 Chapter 6. SIP Method


2015/02/26 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 16편 Chapter 6. SIP Method


2015/02/23 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 15편 Chapter 6. SIP Method


2015/02/11 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 14편 Chapter 6. SIP Method

2015/01/30 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 13편 Chaper 5.SDP


2015/01/29 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 12편 Chapter 5. SDP


2015/01/05 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 11편 Chapter 5. SDP


2014/12/09 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 10편 Chapter 4. SIP Response


2014/12/04 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 9편 Chapter 3. SIP Method on RFC 3261


2014/12/03 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 8편 Chapter 3. SIP Method on RFC 3261


2014/12/02 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 7편 Chapter 3. SIP Method on RFC 3261


2014/11/26 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 6편 Chapter 2. SIP Overview


2014/11/21 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 5편 Chapter 2. SIP Overview


2014/11/19 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 4편 Chapter 1. VoIP의 이해 (3)


2014/11/11 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 3편 Chapter 1. VoIP의 이해 (2)


2014/11/05 - [SIP의 이해] - [연재] 다시쓰는 SIP의 이해 - 2편 Chapter 1. VoIP의 이해 (1)




라인하
트 유씨누스 (CCIEV #18487)
  --------------------------------------
ucwana@gmail.com (라인하트의 구글 이메일) 
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항) 
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스) 
http://groups.google.com/group/ucforum (UC를 공부하는 사람들이 모인 구글 구룹스) 
세상을 이롭게 하는 기술을 지향합니다. ______________________________________________


저작자 표시 비영리
신고
Posted by 라인하트

댓글을 달아 주세요



티스토리 툴바