250 likes | 1k Views
SIP Protocol & RTP Protocol. Oct. 1, 2010 Hyun- ki , Jung. Contents ( 목차 ). SIP 프로토콜 SIP 프로토콜의 개요 SIP 의 구성요소 SIP 어드레스 SIP 메시지 SIP 프로토콜의 동작과 구현 RTP 프로토콜 RTP 프로토콜의 개요 RTP 프로토콜의 주요 동작 RTP 헤더의 또 다른 기능 RTP 헤더 압축하기. SIP 프로토콜의 개요. SIP (Session Initiation Protocol)
E N D
SIP Protocol& RTP Protocol Oct. 1, 2010 Hyun-ki, Jung
Contents (목차) • SIP 프로토콜 • SIP 프로토콜의 개요 • SIP의 구성요소 • SIP 어드레스 • SIP 메시지 • SIP 프로토콜의 동작과 구현 • RTP 프로토콜 • RTP 프로토콜의 개요 • RTP 프로토콜의 주요 동작 • RTP 헤더의 또 다른 기능 • RTP 헤더 압축하기
SIP 프로토콜의 개요 • SIP (Session Initiation Protocol) • IETF (Internet Engineering Task Force) 에서 발표한 표준 VoIP 프로토콜 • IP 네트워크에서 여러명의 이용자들끼리 멀티미디어 세션을 생성 및 종료하는 프로토콜 • H.323 프로토콜과 다른점 • H.323 : 관련된 다수의 프로토콜이 있고, RFC문서도 방대함 ISDN의 Q.931 프로토콜을 모토로 만들어짐 • SIP : RFC 2543 문서는 153쪽에 불과 디자인 목적 자체가 IP 네트워크용 HTTP 프로토콜을 모토로 만들어짐 ASCII 텍스트 기반 – 어플리케이션 구현이나 디버깅이 쉬움
SIP의 구성요소 • UA • 클라이언트 파트 • UAC(User Agent Client) 와 UAS(User Agent Server)로 나눌 수 있음 • SIP 서버 • UIP Proxy 서버 : UAC로부터 SIP 콜을 받아서 자기가 대신 콜을 만들어 주는 역할 • Redirect 서버 : UAC로부터 SIP 콜을 받으면 실제 목적지(UAS)의 어드레스를 알려주는 역할
SIP의 구성요소 기록 Registrar Location 서버 콜의 목적지 어드레스 요청 어드레스 및 위치 정보 제공 제공 Called PC Caller PC SIP Proxy 서버
SIP 어드레스 • 인터넷의 전자메일 (E-mail) 어드레스 형식과 아주 비슷 • sip:errofree@gkn.com • Sip는 프로토콜을 표시, errorfree는 사용자 ID • gkn.com 은 유저가 소속된 도메인 • sip:hoony;password=cisco@4networkers.co.kr • 사용자 ID에 대해 비밀번호를 설정하여 인증할 때 사용할 수 있음 • 사용자 네임은 hoony, 패스워드는 cisco로 설정한 예
SIP 메시지(1) • Request 메시지 • Invite : SIP세션을 시작할 때, 즉 콜을 만들 때 클라이언트(UAC)가 서버쪽으로 전송하는 메시지. • Ack : UAC는 Invite 메시지에 대한 최종 Response 메시지를 받고, 그 Response에 대해Ack를 회신, 자기의 Invite에 대한 최종 Response에 대한 회신 • BYE : 클라이언트가 콜을 종료할 때 서버에서 해당 콜이 종료되었다는 것을 알리기 위한 메시지
SIP 메시지(2) • Cancel : 이미 요청했지만 아직 완료되지 않은 Request를 취소할 때 사용, 서버로부터 Response 메시지를 받았다면 해당 Request 메시지를 취소할 수 없음 • Option : 콜 셋업과 관계 없이 상대방에 대한 정보를 요구할 때 사용되는 메시지 • Register : 자신의 SIP 어드레스와 IP 어드레스 정보 등을 등록할때 사용되는 메시지
SIP 메시지(3) • Response 메시지 • 1XX : Information 메시지 • 180 : Call Alert 메시지, SDP를 이용해 콜의 코덱과UDP 포트 정보 등 콜 파라미터 정보를 제공함 • 2XX : Successful 메시지 • 200 : OK 메시지 • 3XX : Redirect 메시지, SIP Redirect 서버를 사용할 때 발생 • 301, 302 : redirect
SIP 메시지(4) • 4XX : 클라이언트의 Request 메시지에 문제가 있다고 표시 • 404 : Not Found, 클라이언트가 요구한 SIP 어드레스를 찾을 수 없음 • 400: Bad Request 클라이언트의 Requset가 형식에 어긋남 • 5XX : 서버의 문제를 나타냄, 서버가 동작하지 못할 때 또는 응답이 없을 때 사용됨 • 505 : Internal Server Error 서버가 응답하지 않습니다. • 6XX : 그외의나머지 일반적인 에러를 표현
Peer-to-Peer 환경에서 SIP 동작하기 G1 SIP GW Invite w/ SDP G2 SIP GW G1 SIP GW G2 SIP GW 100 Trying G1 SIP GW G2 SIP GW 180/183 Ringing w/ SDP G1 SIP GW 200 OK G2 SIP GW ACK G1 SIP GW G2 SIP GW
SIP 프로토콜의 동작 – Proxy 서버 환경 출처 : 고도리 님의 네이버블로그 http://blog.naver.com/godorimania
SIP 프로토콜의 동작 – Proxy 서버 환경 DNS Lookup sip.cisco.com의 어드레스 hoony cisco.com INVITE hoony@cisco.com INVITE hoony@cisco.com 200 OK 200 OK Ack hoony@cisco.com Ack hoony@cisco.com Called PC hoony@cisco.com Caller PC errorfree@gkn.com SIP Proxy 서버 sip.cisco.com Location 서버 DNS
SIP 프로토콜의 동작 – SIP Redirect 서버 환경 DNS Lookup sip.voice.com의 어드레스 hoony cisco.com INVITE hoony@voice.com 302 moved hoony@cisco.com Ack hoony@voice.com Caller PC errorfree@gkn.com INVITE hoony@cisco.com 200 OK Ack hoony@cisco.com SIP Redirect 서버 sip.voice.com DNS Location 서버 Called PC hoony@cisco.com
RTP 프로토콜의 개요 • RTP(Real-time Transport Protocol) • IP 네트워크에서 음성이나 비디오 같은 실시간 속성을 갖는 트래픽을 최적화된 상태로 전송하기 위해 만들어진 프로토콜 • UDP 기반의 전송레이어 프로토콜로서 RFC 1889, 1890에 정의 • RTP는 UDP에서 동작 • RTP 프로토콜이 제공하는 정보 • 패킷의코덱 타입 • RTP 세그먼트의 생성 시간 • RTP 세그먼트의 순서 • RTP 세그먼트의 발생 소스 • RTCP(Real-time Transport Control Protocol) • 현재의 RTP 세션의 참여자, 즉 전화하고 있는 통화자에 대한 정보와 현재의 RTP 세션의 품질에 대한 정보를 전달하기 위한 프로토콜
RTP 프로토콜의 주요 동작 • PT필드(7bit) • RTP헤더 다음에 오는 데이터가 어떻게 캡슐화 되었는지에 대한 코덱 정보를 제공. • 0 : G711 u-law • 2 : G726 32Kbps • 3 : GSM • 4 : G723 • 8 : G711 a-law • 15 : G728 • 18 : G729
RTP 프로토콜의 주요 동작(2) • 패킷리오더링 • Sequence Number(16bit) • Reassemble : 패킷 헤더의 시퀀스 넘버를 보고 패킷을 모아서 원래의 파일로 복원하는 작업 • 지터(jitter) • IP네트워크에서 링크의 혼잡도에 따라 패킷의지연값이 유동적인데 이러한 보이스패킷의 지연시간의 편차 • Dejitter버퍼 (Play out Delay 버퍼) • 지터(jitter) 현상을제거하여 미디어 스트림을 끊김 없이 재생하기 위해 운영되는 버퍼 • 시스코 장비의 경우 Dejitter버퍼의 크기가 자동으로 변하는 가변모드로 운영됨
RTP 프로토콜의 주요 동작(3) • Timestanp(4Byte) • Dejitter버퍼 크기를 가변적으로 운영하기 위해 사용 • SilenceSuppression • 통화중말을 하지 않고 있을 경우 아예 보이스패킷을 만들지 않는 기술 • 컴포트노이즈 • silence suppression 동안 통화의 안정감을 주기 위해 발생시키는 소음
RTP 헤더의 또 다른 기능 • Ver : Version 필드, RTP 프로토콜의 버전을 표시 • P : Padding bit, 0이면 패딩이 없다는 의미, 1이면 패딩이 이루어졌다는 의미 • X : Extension bit, RTP 헤더에 옵션 필드가 있다는 것을 표시 • CC : CSRC Count 필드, CSRC 필드가 몇 개 붙었는지를 표시 • M : Marker bit, Silence Suppressio이 끝나고 말을 시작하는 첫번째 RTP 패킷에마킹 • SSRC : Synchronization Source Identifier 필드, RTP 패킷을 만든 소스를 표시하는데 사용, 세션에서 이 값은 고유한 값이어야 함 • CSRC : Contributing Source Identifier, 옵션헤더로 컨퍼런스를 할 경우에 사용,
RTP 헤더 압축하기 • 이더넷 헤더+ 데이터링크 트레일러 : 18Byte • IP 헤더 : 20 Byte • UDP 헤더 : 8 Byte • RTP 헤더 : 12 Byte 오버헤드의 총합 : 58Byte • RTP 패킷이G.729 패킷이고, 20ms씩 패킷화 된 것이라면 보이스 페이로드의 크기는 20Byte
RTP 헤더 압축하기 1ms 8 Byte, 10ms 80 Byte 240Byte 30ms의 양 즉 초당 33.333 회 정도 전송됨 PPP의 헤더 IP 헤더 (20Byte) + UDP 헤더 (8Byte) + RTP 헤더 (12Byte) + PPP 헤더 (6Byte) = 46Byte 헤더(46Byte) + 페이로드(240Byte) = 286Byte = 2,288bit 2,288 bit x 33.333 = 76.266.5bit