본문 바로가기

카테고리 없음

[Network] SIP(Session Initiation Protocol)

 

SIP(Session Initiation Protocol) 이란 ?

 

  1.  SIP(Session Initiation Protocol) 의 정의

 

    -  SIP 란, VoIP나 멀티미디어 통신에 있어 세션이나 호(Call)을 관리하는 프로토콜로,

 

    -  SIP 서버는 SIP 프로토콜을 사용해서 IP 전화를 제어하는 역할을 한다.

 

    -  즉, 하나 혹은 그 이상의 참가자와 멀티미디어 세션의 생성, 변경, 종료(해제)에 대한 응용 계층의 프로토콜인 것이다. 

 

 

  2.  SIP 에서의 세션

 

    -  인터넷에서 세션은 넓은 의미로 사용되지만, SIP에서 세션은 아래와 같다.

 

    1)  Internet multimedia conferences (다자간 회의)

 

    2)  Internet telephone calls (음성 통화)

 

    3)  Internet video sessions (영상 통화)

 

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

 

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

 

 

  3.  SIP의 프로토콜 스택

 

    -  SIP 는 멀티미디어 데이터 전송 자체 보다는, << Signaling을 통한 멀티미디어 통신 관리에 중점을 두고 있다.

 

    -  즉, 멀티미디어 데이터 전송은 -> 실시간 전송을 기반으로 하는 RTP 가,

 

       어플리케이션 레벨의 프로토콜이 -> SIP 인 것이다. 

 

 

SIP 프로토콜 스택

 

    1)  SIP (RFC 3261) : SIP 의 기본 내용 정의

 

    2)  SDP (Session Description Protocol, RFC 4566/3264)

 

      -  멀티미디어 세션 설정을 위한 세부 속성 파라미터 제공

 

    3)  Audio Codec (G.711A, G723.1, G729A) 

 

      -  음성 코딩 담당, 다양한 시스템과 호환을 위해 여러 규격 존재

 

    4)  Video Codec (H.263, MPEG-4, H.264)

 

      -  비디오 코딩, H.263이 공통으로 사용되며 H.264는 최신 버전

 

    5)  RTP / RTCP (Realtime Transport (Control) Protocol, RFC 3550/3551)

 

      -  실시간 통신으로 실제 음성이나 영상을 전달하기 위함

 

      ->  SIP는 시그널링 프로토콜로, 완전한 하나의 호를 생성 및 종료하기 위해 SIP를 도와주는 역할을 하는 것이 SDP와 RTP/RTCP 이다.

 

 

  4.  SIP 패킷 구조

 

    -  패킷 : 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록으로, 제어 정보와 사용자 데이터로 이루어지며,

 

'페이로드' 라고도 부른다.

 

    -  SIP 메시지를 송수신하는 패킷의 구조를 먼저 살펴보면, 

 

    1)  SIP 메시지는 가변 길이의 텍스트로 만들어지며, ' SIP 헤더 ' + ' 메시지 바디 ' 로 구성된다.

 

      -  SIP 헤더 : 뒤에 올 메시지 바디의 종류 표시

 

      -  메시지 바디 : Option Field 로, 있을 수도 있고 없을 수도 있는 요소이다.

 

    2)  SIP 가 사용하는 전송 프로토콜(Transport Layer)

 

     -  SIP 가 사용하는 전송 프로토콜은, 위의 SIP 프로토콜 스택에서 볼 수 있듯이 

 

        ' TCP (Transport Control Protocol) ' or ' UDP (User Data Protocal) ' 이다.

 

      -  보통 UDP 를 주로 사용하지만, 현재는 TCP 를 더 많이 사용하고, 

 

      -  SIP 는 5060 & 5061 포트를 이용한다. 

 

SIP 헤더 구조

 

SIP 의 특징

 

  1.  패킷 교환망에서 회상교환망 방식의 제어가 가능하도록 세션을 제어

 

  2.  패킷망의 인터넷 상에서 멀티미디어 어플리케이션이 가능하게 함

 

  3.  URL 및 E-mail 형식의 텍스트 기반 어드레싱 방법을 사용해 -> 메시지 파싱이나, 확장 용이

 

  4.  H.323 ( SIP 와 기존의 비슷한 기능 제공 ) Vs SIP

 

    -  초기 H.323 에서 -> 현재 SIP 기반의 단말 증가 추세

 

구분 H.323 SIP
정의 1996년 ITU-T에서 제정한 음성, 데이터 비디오 통신 규약 1998년 IETF에서 제정한 멀티미디어 통신 규약
제공 서비스 음성 위주 멀티미디어 위즈
서버 게이트 키퍼 SIP 서저
프로토콜 특징 복잡함 간단함
시장 증가율 0% 연 2~30%
특징 서비스 추가 및 멀티미디어 서비스에 제한적 - 멀티미디어 서비스 우수
- 서비스 추가시 간결성
- 유연성과 확장성
- 이동성 보장
민간 도입 사례 본사-지사간, 기존 IP-PBX 현 VoIP 서비스 제공 업체(KT, LG 파워콤/데이콤 등), 신규 VoIP 서비스 구축 시

 

 

SIP 구성요소

 

  -  SIP 시스템의 구성요소는 ' SIP 클라이언트 ' 와 ' SIP 서버 ' 로 나눌 수 있다

 

  1.  SIP 클라이언트

 

    1)  UAC(User Agent Client) 

 

      -  세션 종단에 위치하며 호를 생성하고, 설정을 요청한다.

 

    2)  UAS(User Agent Server)

 

      -  UAC로부터 호를 수락하거나 거절 또는 Redirect 한다.

 

  2.  SIP 서버

 

    -  UA 간 직접 호출이 가능하지만 SIP 서버를 둠으로 확장성을 제공한다. 

 

SIP 구성요소

 

    1)  Proxy Server : UAC로부터 SIP 콜을 받아 자신이 콜을 대신 만들어 주는 역할

 

    2)  Register Server : 사용자의 에이전트로부터 레지스터 요청을 수신하여 -> 사용자의 위치 정보를 유지한다.  

 

    3)  Redirect Server : 사용자가 직접 요청할 수 있는 상대방의 URL을 알려줌

 

    4)  Location Server : Proxy Server나 Redirect Server로 부터 SIP 콜의 목적지 노드의 주소가 요청되면, 이를 Resolution 해주는 역할 

 

 

SIP 기능과 주요 컴포넌트

  1.  SIP 프로토콜 기능

 

    -  SIP 프로토콜의 멀티미디어 통신을 위한 호의 생성 및 종료를 위해 필요한 기능 5가지는 아래와 같다.

 

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

 

    (2)  사용자 이용 가능성 (UserAvailability) : 통신에 참여힐 착신 측의 통화 가능 여부 결정

 

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

 

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

 

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

 

    위의 5가지 기능은 아래의 SIP 컴포넌트에서 직접 구현된다.

 

SIP Component

 

    -  RFC 3261(하나 또는 그 이상의 참가자와 세션의 생성, 변경, 종료에 대한 applicaton layer 프로토콜인 SIP에 대해

 

설명한 권고안)에 정의된 SIP 주요 컴포넌트는, 위에서 클라이언트와 서버로 구분해서 정리한 SIP 구성요소 부분과 동일

 

    (1)  UA(User Agent)

 

      1)  UAC (User Agent Client)와 UAS(User Agent Server)의 기능을 수행하는 단말

 

      -  UAC : 세션을 시작하는 역할 -> 통화 시도 기능

 

      -  UAS : 세션을 종단하는 역할 -> 통화 받는 기능

 

      2)  UA는 다른 UA와 직접 연결을 설정하거나, Proxy/Redirect Server들의 도움으로 다른 UA와 연결 설정 가능

 

      3)  통화중인 호의 상태를 실시간으로 관리

 

       ->  UA는 SIP 전화기이거나, SIP 소프트폰

 

      +  SIP 컴포넌트들은 호마다, UAC 혹은 UAS의 역할을 하지만, 

 

          SIP Proxy는 호를 종단하지 않고 릴레이 -> UAC나 UAS의 역할을 수행하지 않는다. 

 

    (2)  SIP Gateway

 

      -  Gateway는 관문이라는 뜻으로, 서로 다른 이기종망을 연결하는 장비이다.

 

      -  SIP Gateqay는 PSTN 전화망과 IP 네트워크를 서로 연결해주는 역할을 한다.

 

 

       이제, 아래에서 설명할 Register Server와 Proxy Server, Redirect Server이 필요한 상황 예시를 들면, 

 

        SIP를 지원하는 UA인 전화기가 두 개가 있는 상황에서, 

 

        SIP 전화기가 상대방의 IP. 주소를 정확히 알고 있거나, 전화번호와 IP 주소가 매핑된 테이블을 가지고 있다면, 상호

간에 통화가 가능하다. 

 

        그러나, 전화기가 두 대가 아닌 수천 대인 상황에서는 ?

 

    -> 모든 전화기가 전화번호와 IP 주소 매핑 테이블을 가지고 있는 경우에는, 통화가 가능하지만 현실적으로는 불가능할 것이다.

 

        사용자의 전화기 IP 주소가 바뀔 때마다 업데이트를 해야 하기 때문이다.

 

        이렇게 관리가 필요한 요소를 해결할 수 있는 방법은,

 

    -  별도의 서버가 전화번호와, IP 주소 매핑 테이블을 가지고 있고,

 

    -  모든 전화기들이 IP 주소가 변경될 때마다 서버에 자동으로 업데이트를 하는 것이다. 

 

   ->  전화기는 통화를 시도하고자 할 때마다 서버에게 IP 주소를 물어보게 된다.

 

        이러한 관리적인 요소들을 구분하기 위해 서버를 기능적으로 아래 세 가지로 구분하게 된다.

 

    (3)  Register Server (등록 서버)

 

      -  SIP 전화기는, 부팅할 때 자신이 획득한 IP 주소 또는 SIP URI 정보를 등록 서버에 업데이트 하고,

 

      -  SIP Register 메시지를 등록 서버에 보내어 정보를 업데이트 한다.

 

      -  등록 서버는 저장된 정보를 바탕으로, Proxy Server로부터 요청에 응답하지만, 

 

         SIP 메시지를 직접 처리하지는 않는다.

 

      -  등록 서버의 기능을 이용해 Presence(상태 정보)를 생성할 수 있다.  

            

    (4)  Proxy Server

 

      -  Proxy Server는 전화기(UA)로부터 수신한 접속 요청 메시지를 변경/추가/삭제 할 수 있다.

     

         Ex) 전화기가 1001 전화번호로 통화를 시도하는 SIP INVITE 메시지를 SIP Proxy 서버로 전송하면,

 

              즉, 전화기 ----  SIP INVITE Message ----> SIP Proxy 서버 인 상황에서, 

 

              Proxy Server는 등록 서버에 1001의 IP 주소를 문의한 후, 1001 전화기로 메시지를 전달한다.

 

      -  과금(billing)을 위한 CDR(Call Detail Record) 정보 등을 생성한다. 

 

    (5)  Redirect Server

 

      -  Proxy Server가 통화 연결을 위한 SIP INVITE 메시지를 목적지로 '직접' 전달해준다면, 

 

         Redirect Server는 메시지를 전송한 UAC로 목적지를 '3xx redirect 메시지'로 알려준다.

 

     ->  Redirect 메시지를 받은 UAC는 수신한 목적지 주소를 가지고 새로운 세션을 열어 통신을 시도하는 것이다.  

 

 

      +  통신 사업자와 같은 대규모 VoIP망을 지우너하는 소프트 스위치는 Register Server, Proxy Server, Redirect Server가 각기 따로 구현하기도 하지만,

 

         기업용 IP PBX는 한 서버에 모두 구현한다.

 

    ->  따라서, VoIP 엔지니어들은 IP PBX 내에서 각 컴포넌트를 따로 구분하지 않는 것이다.     

 

 

B2BUA 란?

 

  1.  B2BUA 의 필요성

 

    -  SIP는 UA 간의 통신으로, '클라이언트 서버 기반 프로토콜인 UAC' 와 'UAS' 간 통신을 다룬다.

 

    -  SIP Proxy는 옵션 장비로, 다수의 UA 간의 통신을 편리하게 해주는 역할을 수행하지만,

 

       UA가 보내는 SIP 메시지 전체를 수정하거나 변경, 혹은 삭제할 수 없고, 특정 헤더를 삽입하거나 제한된 수정이 가능하다.

 

   -> 이러한 점에서, SIP Proxy는 기업에서 사용되는 수많은 부가 기능을 구현하거나, 서로 다른 프로토콜 간 연동을 하기 위해 부족한 장비이다.

 

   -> 따라서, IP PBX는 SIP Proxy가 제공하는 것보다 '더 많은 부가 기능, 직접적인 코덱 협상, CAC, VoIP 프로토콜 간 상호 연동' 등의 기능을 수행하기 위해 B2BUA로 개발된 경우가 많다. 

         

  2.  B2BUA의 개념

 

   (1)  B2BUA가 구현된 IP PBX와 SIP Proxy로 구현된 IP PBX의 차이점

 

      -  두 경우의 차이점은, 다이얼로그 구성에서 차이가 나는데,   

 

    1)  B2BUA가 구현된 IP PBX

 

      -  발신 전화기와 IP PBX 간의 다이얼로그를 만들고, 

 

      -  IP PBX와 착신 전화기간의 다이얼로그를 만든다.

 

     -> 즉, '하나의 호'에 대해 '두 개의 다이얼로그'를 생성한다.  

 

    2)  SIP Proxy로 구현된 IP PBX  

 

      -  발신 전화기에서 시작해 -> IP PBX를 거쳐 -> 착신 전화기간의 다이얼로그가 하나로 구성된다.

 

      두 가지의 다이얼로그 구성 차이로 인해 B2BUA로 구현된 IP PBX의 장점은 아래와 같다.

 

 

   (2)  B2BUA로 구현된 IP PBX 장점

 

    1)  SIP 메시지의 헤더와 바디 부분을 변경할 수 있어, 다양한 부가 기능을 구현할 수 있고, 

 

    2)  SIP로 들어온 호를 H.323으로 변경도 가능해, 이기종 프로토콜 연동이 용이

 

    3)  LAN 상에서는 G.722 코덱을 사용하고, 

 

        WAN 구간에서는 G.729 코덱을 사용하도록 대역폭 관리 및 정책 설정이 용이하다.

 

    +  일반적으로, 기업들은 B2BUA로 구현된 IP PBX를 선호하고,

 

        대용량을 처리해야 하는 통신 사업자들의 경우 SIP Proxy로 구현된 소프트스위치를 선호한다.

 

 

SIP 메시지

  -  실제, SIP의 요청 메시지인 아래 예시에서 보면, 

 

SIP 메시지

 

    -  INVITE : 메시지가 전송되는 것을 알 수 있음

 

    -  INVITE or From : 이메일 형태의 adress 가 사용된 것을 알 수 있음

 

    -  Content-type : application/sdp -> SIP의 body에는 SDP(Session Description Protocol)이 사용된 것을 알 수 있음

 

    -  SDP가 적용된 body : RTP/AVP 와 같은 미디어 형태 표현

 

    +  가장 기본적인 형태(Proxy 나 Redirect X)의 흐름

 

SIP 흐름

 

 

 

참고

 

  -  https://coder-in-war.tistory.com/entry/VoIP-01-SIP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%801

  -  https://brunch.co.kr/@linecard/130