brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Dec 10. 2018

5장. SIP의 개요

1. SIP의 시작

SIP 프로토콜은 2000년대 초반에 H.323의 단점을 극복하기 위한 만들어졌습니다. 엔지니어들의 예상과는 달리 VoIP 시장에서 지배적인 프로토콜이 되기까지 오랜 시간이 걸렸습니다. 2018년 현재 SIP는 가장 인기있는 VoIP 프로토콜이며 모든 장비 제조사들이 SIP를 기본으로 제품을 생산합니다. 특히, Secure IP Telephony가 일반화 되면서 H.323의 보안 프로토콜인 H.235의 복잡성으로 인해 SIP로 빠르게 전환되었습니다. 


SIP는 Session Initiation Protocol의 약자로 '세션 설정 프로토콜'입니다. SIP는 RFC 3261로 권고되었으며, 하나 또는 그 이상의 참가자와 멀티미디어 세션의 생성, 변경, 종료에 대한 응용 계층의 프로토콜입니다. 

인터넷에서 세션은 폭넓은 의미로 사용되지만 SIP에서 세션은 다음과 같습니다.    

Internet multimedia conferences (다자간 회의)  

Internet telephone calls (음성 전화)

Internet video sessions (영상 전화)

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

 Publications of State (상태 정보 배포) 


2. SIP 패킷 구조

SIP의 특징을 이해하기 위해 메시지를 송수신하는 패킷의 구조를 살펴봅니다.  


<그림 5-1> SIP 헤더의 구조


SIP 메시지는 가변 길이의 텍스트로 만들어지며 SIP헤더와 메시지 바디로 구성됩니다. SIP 헤더는 편지의 봉투와 같은 내용을 담고 있으며 뒤에 올 메시지 바디의 종류를 표시합니다. 메시지 바디는 옵션 필드로 있을 수도 있고 없을 수도 있습니다. 

 

SIP가 사용하는 전송 프로토콜 (Transport Layer)은 TCP (Transport Control Protocol) 또는 UDP (User Data Protocol)입니다. 보통은 UDP를 주로 사용하지만 현재는 TCP를 더 많이 사용합니다. SIP는 5060과 5061 포트를 이용합니다.  



3.  SIP 주요 컴포넌트

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

사용자 위치 (User Location) : 통신에 참가할 단말을 결정

사용자 이용 가능성 (User Availiability) : 통신에 참여할 착신 측의 통화 가능 여부를 결정

사용자 능력 (User Capabilities) : 통신간에 사용될 미디어 및 미디어 파라미터를 결정

세션 설정 (Session Setup) : 착신 측 및 송신 측에 세션 파라미터 생성

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

 

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


<그림 5-2> SIP 컴포넌트


RFC 3261에 정의된 SIP 주요 컴포넌트를 살펴봅니다. 


UA (User Agent)
UA는 UAC (UA Client)와 UAS (UA Server)의 기능을 수행하는 단말입니다. UAC는 세션을 시작하는 역할로 통화를 시도하는 기능이고, UAS는 세션을 종단하는 역할로 통화를 받는 기능을 합니다. UA는 다른 UA와 직접 연결을 설정하거나 Proxy/Redirect Server들의 도움으로 다른 UA와 연결을 설정할 수 있습니다. 통화 중인 호의 상태를 실시간으로 관리합니다. 간단히 말해서, UA는 SIP 전화기이거나 SIP 소프트폰입니다. 
SIP 컴포넌트들은 호마다 UAC의 역할을 하거나 UAS의 역할을 하지만, SIP Proxy는 호를 종단하지 않고 릴레이 하므로 UAC 나 UAS의 역할을 수행하지 않습니다.


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


SIP를 지원하는 UA인 전화기가 두 대가 있습니다. SIP 전화기가 상대방의 IP주소를 정확히 알고 있거나, 전화번호와 IP 주소가 매핑된 테이블을 가지고 있다면 상호 간에 통화가 가능합니다. 전화기가 두 대가 아닌 수천 대일 경우를 생각해 봅시다. 모든 전화기가 전화번호와 IP주소 매핑 테이블을 가지고 있으면 통화가 가능하겠지만, 현실적으로는 불가능합니다. 전화기가 컴퓨터 수준의 성능을 발휘해야 하고 사용자가 전화기의 IP 주소가 바뀔 때마다 업데이트를 해야 하기 때문입니다. 이런 관리적인 요소를 해결할 수 있는 방법은 별도의 서버가 전화번호와 IP 주소 매핑 테이블을 가지고 있고 모든 전화기들이 IP 주소가 변경될 때마다 서버에 자동으로 업데이트를 합니다. 전화기는 통화를 시도하고자 할 때마다 서버에게 IP 주소를 물어봅니다. 이런 관리적인 요소들을 구분하기 위해 서버를 기능적으로 다음과 같이 구분합니다.   


Registrar Server (등록 서버)
SIP 전화기는 부팅할 때 자신이 획득한 IP 주소 또는 SIP URI정보를 등록 서버에 업데이트합니다. 전화기는 SIP REGISTER 메시지를 등록 서버에 보내어 정보를 업데이트합니다. 등록 서버는 저장된 정보를 바탕으로 Proxy Server로부터 요청에 응답하지만 SIP 메시지를 직접 처리하지는 않습니다. 등록 서버의 기능을 이용하여 Presence (상태 정보)의 정보를 생성할 수 있습니다. 

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

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


통신 사업자들과 같은 대규모 VoIP망을 지원하는 소프트 스위치는 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의 준말입니다. 


B2BUA가 구현된 IP PBX와 SIP Proxy로 구현된 IP PBX의 차이점은 다이얼로그 구성에서 차이가 납니다. B2BUA가 구현된 IP PBX는 발신 전화기와 IP PBX 간의 다이얼로그를 만들고, IP PBX와 착신 전화기간에 다이얼로그를 만듭니다. 하나의 호에 대해 두 개의 다이얼로그를 생성합니다. SIP Proxy로 구현된 IP PBX는 발신 전화기에서 시작하여 IP PBX를 거쳐 착신 전화기간의 다이얼로그가 하나로 구성됩니다. 따라서, B2BUA로 구현된 IP PBX는 SIP 메시지의 헤더와 바디 부분을 변경할 수 있으므로 다양한 부가 기능을 구현할 수 있고, SIP로 들어온 호를 H.323으로 변경도 가능하여 이기종 프로토콜 연동이 용이합니다. 또한, LAN 상에서는 G.722 코덱을 사용하고, WAN 구간에서는 G.729 코덱을 사용하도록 대역폭 관리 및 정책 설정이 용이합니다. 


일반적으로 기업들은 B2 BUA로 구현된 IP PBX를 선호하고, 대용량을 처리해야 하는 통신 사업자들은 SIP Proxy로 구현된 소프트스위치를 선호합니다. 



5. SIP의 친구들

SIP는 시그널링 프로토콜로 완전한 하나의 호를 생성 및 종료하기 위해서는 SIP를 도와주는 친구 프로토콜이 있습니다. 실제 음성이나 영상을 전달하기 위한 Real-time Transport Protocol (RTP) & Real-time Transport Control Protocol (RTCP)와 세션 설정을 위한 세부 속성 파라미터를 제공하는 Session Description Protocol (SDP)입니다. 




'엔지니어를 위한 인터넷 전화와 SIP의 이해'를 책으로 만들다


https://brunch.co.kr/@linecard/188


매거진의 이전글 4장. VoIP 시그널링의 이해
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari