임베디드/[ VoIP ]

[ VoIP ] 02. SIP란 무엇인가(2)

kim.svadoz 2020. 9. 15. 18:13
반응형

SIP ver.2


VoIP 또는 멀티미디어 통신용 신호 프로토콜

1 이상의 양방향 멀티미디어 세션/호를 설정, 변경, 해제

세션

  1. 네트워크 상에서 양 종단간 일회용 논리적 연결

    ex) SVC 가상회선, TCP 세션 등

  2. 컴퓨터(멀티 사용자 시스템) 상에서, 하니 사용자가 로그인 후부터 로그아웃할 때 까지의 경과

    -> 이 경우 사용 이력 기록을 로그(Log)라고 함

  • 세션 계층(Session Layer)

    • OSI 7계층 모델의 5계층에 해당
      • 종단 호스트 프로세스 간에 세션을 생성, 유지, 종료하는데 필요한 여러 기능을 제공
  • 세션 설정 프로토콜

    • 세션의 설정, 변경, 해제와 관련된 프로토콜

      ex) SIP, SDP 등

  • 세션 키(Session Key)

    • 하나의 논리적 연결 세션 동안 만 유효한 암호 키

> 세션계층의 주요 기능

  • 접속 설정 및 해제
    • 세션을 설정 및 해제하는 기능
  • 다중화
    • 여러 세션들이 효율을 높이기 위해 1개의 같은 전송계층 접속을 사용할 수 있음
      • 단대로 1개 세션이 속도 등을 위해 다수의 전송계층 접속들을 사용할 수도 있음
    • 따라서 전송 계층에서와 같이 세션 계층에서도 상향, 하향 다중화가 가능
  • 데이터 교환
    • OSI는 데이터를 4가지 범주로 구분한 바 있음
      • 정보 데이터, 급송 데이터, 제어데이터, 세션 파라미터 협상에 사용되는 데이터
  • 대화 관리
    • 세션계층은, 토큰을 사용함으로써 대화(dialogue)를 관리
    • 성립된 세션을 통한 상호 대화 관리를 하는 양단간 응용 개체를 위해 토큰개념이 정의
      • 누가 언제 통신하였는지를 결정하며 토큰을 교환함으로써 구현
      • 프로세스는 토큰을 가졌을 때 전송할 수 있음
    • 토큰은 어떤 서비스의 실행을 기동하는 권리를 표현하는 것
  • 에러 복구
    • 세션계층은 전송시 동기점을 삽입함으로써 메세지를 대화 단위로 그룹화 함
      • 에러 발생하면 중단된 대화 단위의 처음부터 전송을 다시 시작

호(Call)

전화교환망에서 개개의 통신이 통신설비를 일시적으로 점유하는 것

​ => 사용자가 통화를 목적으로 통신회선 또는 설비를 점유하는 사상

라우팅(Routing)

네트워크 상에서 주소를 이용, 목적지까지 경로를 체계적으로 결정하는 경로선택 과정

​ => 네트워크를 효율적으로 이용하여 양종단 노드 간에 경로 찾기

1. 라우팅 방식의 일반적 구분

  • 라우팅 방식의 주요 구분
    • 고정 라우팅(Fixed Routing) / 정적 라우팅(Static Routing)
      • 미리 정해진 루트를 따라 경로 선택 (수동 경로 설정)
    • 동적 라우팅(Dynamic Routing) / 적등적 라우팅(Adaptive Routing)
      • 망의 상테에 따라 경로 선택 (자동 경로 설정)
  • 네트워크 정보를 이용하지 않는 라우팅 방식
    • 홍수 라우팅(Fllod Routing) / 플러딩(Flooding)
      • 수신 경로 이외의 모든 경로로 전파하는 매우 간단한 경로선택 방식
    • 랜덤 라우팅(Random Routing)
      • 무작위로 경로 선택 방식
  • 기타 구분
    • 소스 라우팅(Source Routing)
      • 경로를 모두 리스트로 만들어 패킷의 헤더에 넣어 보내는 경로선택 방식
    • 계층적 라우팅(Heararchical Routing)
      • 큰 그룹에서 점차 작은 그룹으로 계층적 경로선택 방식

2. [패킷교환망(인터넷)] 라우팅

  • 데이터통신망에서 라우팅

    • 패킷 내 목적지 주소를 이용, 목적지까지 메세지(패킷 등)을 체계적으로 전달하는 경로선택 과정

      (이 과정을 능동적으로 수행하는 장치 -> Router(라우터))

  • 라우팅 정보 (라우팅 결정에 이용하는 주요 정보)

    • 목적지주소
      • 토폴로지
      • 트래픽 부하
      • 링크 비용(라우팅 메트릭) : 홉수, 비용, 지연, 처리율 등
  • 라우팅 알고리즘

    • 거리벡터 알고리즘 (속도나 거리 지연등을 고려하지 않아 최적의 경로 산정에 비효율적)
    • 링크상태 알고리즘 (최소비용 기준 알고리즘)
  • 라우팅 프로토콜

    • 자치시스템 내부에서의 라우팅 : RIP, OSPF, IGRP
    • 자치시스템 외부(상호) 간의 라우팅 : EGP, BGP
  • 라우팅(경로결정) 우선순위

    • 동일 목적지로 가능 경로가 단일이 아니고 다수개로 계산되었을 때,
      • 동일 라우팅 프로토콜에서는 라우팅 메트릭이 가장 낮은 것을 우선으로 함
      • 다른 라우팅 프로토콜 간에는 관리거리 값이 낮은 것을 우선으로 함.

3. [회선교환망(PSTN)] 라우팅(중계방식)

  • 회선 교환망에서의 경로 배정(루팅)
    • 전화번호에 따라 발신국에서 착신국까지 호가 연결되는 경로선택 방식
      • 이 과정에 참여하는 주된 장치 : 교환기(Switching System)
      • 교환기 간에 연결된 회선군 : 교환선군(Route)
  • 루팅 구분
    • 직접루팅
    • 우회루팅

PSTN(Public Swtiched Telephone Network)이란 KT(한국 통신)가 설치한 전화 통신망을 말한다. 즉, 시내전화/시외전화/국제전화 등을 할 수 있도록 전화케이블을 전국에 설치한 망을 말한다.

PSTN은 실시간 음성 통신을 위해 최적화 되어 있다. 누군가가 전화를 걸면 스위치가 닫히게 되고, 다른 대상에 회로가 설정된다.

PSTN은 전화를 끊을 때까지 회선을 호출해 전용시킴으로써 QoS(서비스 품질)를 보장한다. 사용자나 상대방이 말을 하거나 가많이 있거나 관계없이 전화를 끊을 때까지 같은 회로를 계속 사용하게 된다.

이렇게 전용하는 방식을 사용하기 때문에, 한 지역에 전화가 많이 몰리면 통화중이라는 현상이 발생하게 된다. 즉, 그쪽 지역으로 전화를 걸 수 없는 상황이 발생!

이와는 달리 인터넷망은 패킷망이다.

패킷망은 회선을 전용하는 게 아니라, 그때 그때 필요한 사람끼리 나눠쓰는 구조이다. 여러명이 접속할 수 있지만, 점점 느려지는 현상이 발생한다.

그래서 동영상을 실시간으로 볼 때는 동영상 플레이어가 이런현상을 가미해서, 버퍼링이라는 것을 해두는 것이다. 미리미리 수십초앞의 데이터를 받아두고 플레이를 시켜두는 것! => 그래야 혹시 네트웍이 불안하거나 다른 트래픽이 몰리더라도 동영상 플레이가 끊기지 않게 되기 때문이다!

+

공중전화망은 거의 대부분 고정적(정적) 또는 계층적 라우팅 방식

​ => 본래 공중전화망은 교환기 간에 연결된 직통회선에 여유회선이 없을 때 이미 점유된 경로와는 또다른 경로로 우회하며, 호 연결을 시키는 고정 경로제어 방식을 사용하여 왔다. (종단간에 이어진 회선의 원활한 연결접속에 주안점을 둠)

홉(Hop)

홉이란 영어 뜻 자체로는 건너뛰는 모습을 의미

데이터통신망에서 각 패킷이 매 노드(또는 라우터)를 건너가는 양상을 비유적으로 표현

​ => 이러한 체계를 hop-by-hop 체제라고 한다.

  1. 다음 홉(Next Hop)

    • 목적지 네트워크까지 가기위한 바로 다음의 라우터를 말함
    • 각 노드(라우터)는
      • 수신된 패킷의 헤더부분에 있는 주소를 조사하여,
      • 라우팅 테이블에 있는 최적 경로 상에 있는 다음 홉 라우터 인터페이스를 찾아내어
      • 수신 패킷을 당므으로 Hop할 라우터를 향하는 그 인터페이스에게 넘겨 전달함
  2. 홉 수 (Hop Count)

    • 거치게 되는 라우터 수
    • RIP 라우팅 프로토콜의 경우 최대 홉 수 : 15개 (16은 무한대를 의미)
  3. 홉 한계/제한 (Hop Limit 또는 TTL)

    • IP 헤더 내에서 8비트로 그 값을 나타냄

      • 헤더 내 필드 명칭 : TTL(IPv4) 또는 Hop Limit(IPv6)
      • 최대 홉 값 = 28 - 1 = 255
      • 권장 기본값 = 64
    • 멀티캐스트 패킷의 경우

      • RIPv2, OSPF에서 이웃라우터를 넘어서 멀티캐스트 패킷을 전달되지 못하도록 함

        => 즉, TTL(IPv4) 또는 Hop Limit(IPv6) = 1

    • 한편, IPv6에서 Hop Limit = 255(가장 큰 수)는 특별한 의미를 갖는다

      • 보안성 강화를 위해, 라우터가 이 값의 패킷을 아예 라우팅 처리하지 않음. 즉, 무시함

        => 즉, Local Link 영역 내에서만 통용됨

      • ICMPv6 NDP 메시지(5 종류)에 이 값(255)이 쓰여짐

        => 이 값으로 쓰여지지 않는 NDP 메시지들은 무시되어짐

      • RCP 5082

SIP의 특징

  • VoIP 표준
    • ITU-T H.323과 대응되는 IETF의 신호 프로토콜
      • H.323이 과거 인터넷폰에 대한 사실상의 표준이었으나, 지금은 SIP가 우세함
      • ITU-T가 IETF SIP 표준화 작업에 참여함으로써, 사실상 SIP로 단일화 됨
  • H.323에 비하면 매우 단순하여, 호 설정이 간단
    • 파싱(parsing)컴파일(Compile)이 쉬워 확장 및 구현이 용이
  • 호의 설정, 변경, 종료를 위한 일종의 시그널링 기술
    • 호의 경로 배정을 목적으로 RedirectProxy Server에 의해 중계도 가능
    • 세션의 관리보다는 세션의 설정/변경/종료를 위한 프로토콜임
  • 텍스트 기반(text-based)의 응용계층 프로토콜
    • HTTPSMTP 프로토콜에 바탕을 둔 요청-응답 텍스트 메시지
      • HTTP 클라이언트/서버 통신방법 및 URL 주소방식 등을 이용하여 구현 용이
    • SMTP의 텍스트 인코딩 방식 및 헤더 형태를 그대로 이용
  • 클라이언트/서버 기반의 요청과 응답 구조로 동작
    • 클라이언트(UAC)에서 서버(UAS)로의 호 설정 요청시 메소드를 이용
      • 메세지 구조가 헤더와 바디(본체)로 구성 (HTTP와 유사)
    • 서버(UAS)에서 클라이언트(UAC)로의 응답은 숫자에 의한 상태코드를 전달하게 됨
  • 주소방식은 URL방식을 응용
    • E-Mail과 유사한 형태의 주소를 이용해 사용자 식별
  • 사용자 간에 실제 통화 내용을 전달하는(주고받는) 프로토콜로는,
    • 호 설정 이후에, 실제 데이터 전달은 RTP 활용
    • 단, SIP자체를 활용하여 단순 테스트 전달도 가능
  • 사용자 이동성(Personal Mobility) 제공
    • 3GPPIMT-2000 VoIP 규격으로 기확정

SIP 프로토콜 계층

image-20200903110314540

  • SIP 호 신호의 전달 프로토콜로는,
    • 전송계층 프로토콜 중에, UDP를 기본으로 사용하나, TCP, SCTP, TLS 등도 가능함
  • 포트번호는 UDP 포트 5060을 기본으로 사용

​SIP 참고사항

> SIP 구성요소

  • SIP 터미널

    => 통화 세션 양단간 단말 소프트웨어/하드웨어 (호출 UAC <-> 피호출 UAS)

  • SIP 서버

    => 세션 관리를 위한 일종의 중계 장치

> SIP 에이전트

통상의 클라이언트/서버 구조와는 달리 SIP 단말은 세션 설정 역할에 따라, 클라이언트가 되기도 서버가 되기도 함.

  • SIP UA(User Agent, 유저에이전트)

    • IP 클라이언트(터미널, 단말)로써, 종단에 위치함

      • PC, 전화기, 사용자단말, 이종망 게이트웨이, 소프트스위치, IP-PBX 등 인터넷 호스트

        (인터넷호스트 : 표준 RFC 1121/1122에 부합하는 장치)

  • SIP UA 역할

    • 다른 UA와 직접 단대단 연결을 설정하거나
    • SIP 서버(프록시/리다이렉트 서버)의 도움으로 다른 UA와의 연결 설정하는 등에의해,
    • 주로, 단말(UA)측에서 세션 상태를 저장 및 관리 하게 됨
  • SIP UA 간에 발신 및 수신 (클라이언트/서버 모델) : (호출 UAC <-> 피호출 UAS)

    • 호출자/발신자 => UAC (User Agent Client)
      • 호를 생성, 호의 설정 요청을 함
    • 피호출/수신자 => UAS(User Agent Server)
      • 호를 수락 또는 거절 또는 Redirect

H.323 터미널은 TE라고 하고, SIP터미널은 UA라고 칭한다.

> SIP 서버(중계장치)

  • SIP 서버들은 일종의 중계장치

    • UA간에는 직접 호출/응답이 가능 하나, SIP 서버들은 오직 시그널링만을 전달
    • UA가 기능확장을 원한다면 SIP 서버들이 필요하다
  • 서버 구분

    • Register Server : 사용자 등록 기능

      • 사용자 현재 위치의 등록, 수정, 삭제 및 현재 리스트를 보여주는 기능 수행
      • SIP 등록 요쳥을 받아, 해당 UA 정보를 등록/변경함
    • Proxy Server : 호 접속 및 교환 중개(교환기와 유사)

      • 호 요청을 받고 좀 더 자세한 사용자 위치정보 및 다양한 기능. 서버로 호를 넘겨줌.
      • 가상적인 UAC/UAS 역할 가능
        • UA를 대신해 요청을 만들고 접속을 수립하는 등
        • 수신 Proxy, 발신 Proxy, 영역 담당 Proxy 등으로 동작 가능
    • Redirect Server

      • 자체적으로는 접속을 만들어내지 못하나, 원래 요청을 재시도할 곳에 대한 정보로써 방향을 바꾸는 응답(redirection response 3xx)을 해줌

        (다른 영역으로 이동한 사용자의 현재 위치를 알려주는 등)

image-20200903111556796

> SIP 메세지

  • 호 또는 세션의 제어(설정/변경/종료) 처리를 위해

    • 크게 요청(Request) 메세지응답(Response) 메시지 형태로 구성
  • SIP/TCP/IP, SIP/UDP/IP, SIP/SCTP/IP 등과 같은 프로토콜 스택 상에서 전달됨

  • 메시지구성

    1. 시작 줄(start line)

      • 요청 메시지 : Method, Request URI, SIP Version

        ex) INVITE sip : userid@ktword.co.kr SIP/2.0

      • 응답 메시지 : SIP Version, 응답상태코드

        ex) SIP/2.0 200 ok

    2. 메시지 헤더(Message Header)

      • 세션의 서비스, 주소, 프로토콜 등의 정보(To, from, Conatct, Cseq, Call-ID 등)

        ex) Via: SIP/2.0/UDP 221.146.2.5:5060; branch=z93ksh52

      • 여기서, 한 세션을 구분하는 단위로써, 세션 Dialog라고 불리움

        • 한 세션 동안 무 변화하므로 갑작스런 단말 고장시에도 상대 단말이 이 정보를 유지함으로써 재 설정 가능
    3. 빈 줄(blank line)

    4. 메시지 본체(Message body)

      • SDP(Session Description Protocol)을 통해 세션정보를 기술하게 됨
  • 메시지 구분

    1. Client -> Server 요청 메시지 : 메소드 이름으로 요청

      • SIP Request는 기본 6가지의 메소드(Method)로 나뉨(RFC 3261)
        • INVITE : 세션 설정
        • ACK : 응답 확인 (INVITE 요청에 대한 최종응답 확인)
        • BYE : 세션 종료
        • CANCEL : 요청 취소 (세션 취소)
        • REGISTER : 서버에 등록 (사용자 URI 등록)
        • OPTIONS : 수신자 능력 질의
      • 확장 메소드(Method) => INFO, PRACK, UPDATE, SUBSCRIBE, PUBLISH, REFER, NOTIFY
    2. Server -> Client 응답 메시지 : 1xx-6xx의 상태코드로 구분하여 응답

      • SIP Response(응답 상태 코드)는 숫자로 표시됨 (일부는 HTTP 코드와 유사)

        • 1xx : 정모메시지 (처리중)

          (100 trying, 180 ringin, 181 call is being forwarded)

        • 2xx : 성공적인 호 응답 (완료)

        • 3xx : Redirection 응답 (요청 대체)

        • 4xx : Request Fail 응답 (클라이언트 오류)

        • 5xx : Server Fail 응답 (서버 오류)

        • 6xx : Global Fail 응답 (처리 실패)

> SIP 호 처리절차

  • 단말 간 직접 연결

image-20200903113132411

  • SIP 서버 경유 호처리

image-20200903113144406

SIP 표준

  • RFC 2543 : SIP(1999)
    • IETF의 MMUSIC Working Group에서 작성
    • 이후 별도 SIP WG들이 구성되어 추가 표준 작업들이 진행
  • RFC 3261 : RFC 2543을 대체함
반응형

'임베디드 > [ VoIP ]' 카테고리의 다른 글

[ VoIP ] 05. PBX와 IP-PBX  (0) 2020.09.15
[ VoIP ] 04. PCM, TDM과 샘플링 이론  (0) 2020.09.15
[ VoIP ] 03. G.711 코덱?!  (0) 2020.09.15
[ VoIP] 01. SIP란 무엇인가(1)  (0) 2020.09.15
[ VoIP] 00. VoIP란 무엇인가?  (0) 2020.09.15