'Packetization'에 해당되는 글 2건

  1. 2008.09.18 | [VoIP개요] 음성의 패킷화(Packetization) 2
  2. 2008.09.18 | [VoIP개요] 음성의 패킷화(Packetization) 1

오늘은 DSP 통해 인코딩된 보이스 Payload 어떻게 패킷화 되는지를 좀더 알아 보도록 하겠습니다.

앞서 칼럼에서 알아본 처럼 DSP 적용되는 코덱 알고리즘에 따라 코덱의 종류별로 보이스의 인코딩 타임은 다릅니다.

 

예를 들면 G.711 G.729   10ms 이고 G.723 30ms 입니다.

 

, DSP 통해 하나의 보이스 프레임 아웃풋이 나오기까지 그만큼의 시간이 소요 되는 이지요.이때 이러한 보이스 프레임을 어떻게 패킷화 하느냐에 따라 보이스 트래픽의 소모 밴드위드 네트워크 지연시간(Delay time) 달라 집니다.

 

아래 그림을 보시죠.


                                                                   <그림1>

 

  <그림2>

 

 

<그림1> G.711코덱을 사용했을 경우에서  Payload  값의 변화에 따른 차이를 보여 줍니.위에 있는 트럭 그림이 디폴트 경우 입니다.

DSP 에서 10ms 마다 생성되는 보이스 프레임을 2개를 모아서 패킷화 한것입니다. 경우 20ms 마다 패킷이 생성되고 Payload 160Byte 됩니다.(G.711 초당 64Kbps ,8000 Byte 이므로 20ms 160Byte 됩니다.)

 

IP 네트워크를 통해 이러한 보이스 프레임을 전달하기 위해서는 RTP,UDP,IP  그리고 사용하는 미디어 타입에 따른 데이터 링크 레이어 헤더 정보가 필요 합니다.

 

그림에서 헤더가 58Byte 보여지는 것은 이더넷일 경우를 가정한 입니다., 패킷 마다 RTP 헤더 12 Byte + UDP 헤더 8Byte + IP 헤더 20Byte + 이더넷 헤더 18 Byte = 58 Byte 붙게 됩니다.이러한 패킷이 패킷화 타임이 20ms 라면 초당 50 전송 됩니다.따라서 G.711 경우 필요한 밴드위드는 Payload (64Kbps) + Overheader ( 23.2Kbps) = 87.2Kbps 됩니다. (<그림2> 계산 수식 참조)

 

<그림1> 아래 트럭 그림은 Payload 사이즈를 보다 60 ms 만큼 모아서 늘렸을 경우 입니.

 

경우는 60ms 이므로 DSP 보이스 프레임 아웃풋을 6(80Byte *6 = 480 Byte) 모으 됩니다.따라서 60ms 마다 패킷화가 이루어져 전송되므로 초당 16.7 정도만 전송이 됩니다.이 경우는 오버헤드가 20ms 보다 훨씬 줄게 되어서 필요한 밴드위드는 Payload (64Kbps) + Overheader ( 7.75Kbps) = 71.75Kbps 됩니다. (<그림2> 계산 수식 참조)

 

, G.711 Payload 경우 모두 동일 하지만 패킷화 타임에 따라 소모하는 밴드위드는 달라 집니다.

 

여러분들이 보시기에 위의 두가지 경우에서 어떤게 낫습니까?

 

밴드위드 측면에서 보자면 당연히 오버헤더가 작아서 밴드위드 소모가 적은 아래의 경우가 낫지요.하지만 이렇게 패킷화 시간을 길게 잡으면 실시간 트래픽의 성격에 맞지가 않습니다.실시간 트래픽은  빠른 전송이 필요합니다. 만약 너무 늦어지면 원활한 통신이 방해가 됩니.따라서 G.711, G.729 디폴트 인코딩 타임이 20ms 되어 있는 이지요물론 경우에 따라 얼마든지 변경이 가능하구요.

 

시스코 라우터 에서는 IOS 명령어로 이것의 수정이 가능 합니다.아직은 라우터의 구성 명령어를 소개해 드리지 않겠습니다.사실 지금까지 배운 내용으로 구성 할수 있는 것들이 별로 없거든요.아래 내용은 별도의 설명을 드리지 않겠습니다.그냥 참조만 하세요;

 

Dial-peer voice 1 voip

Destination-pattern 3501

Session target ipv4:10.0.2.3

Codec g711ulaw byte 480 (코덱을 지정하고 Payload 사이즈를 설정하는 명령어 입니. 디폴트는 “codec g729r8 byte 20” 입니다.)

[출처] VoIP 개요|작성자 스펀지밥

 

그럼 오늘 칼럼의 내용은 보이스의 패킷화 입니다.

 

지금까지는 아날로그 보이스가 어떻게 디지털화 하는지, 그리고 어떻게 압축이 되어 지는지 알아 보았구요.이렇게 변화된 보이스 프레임은 바로 전송 될수가 없습니다.상대방의 IP 주소 라든지, 소켓 넘버등의 필요한 정보가 붙어야 합니다.

이렇게 데이터를 네트워크상에 전송하기위해 필요한 정보를 붙이는 것을 인켑슐레이션 이라 하지요?이러한 인켑슐레이션 작업 때문에 각각의 보이스 코덱 아웃풋은 실제 네트워크로 전송될  보다 많은 밴드위드가 요구 되어 집니다.

 

예로써 전용회선 같은 WAN 구간에서  G.711 82Kbps(Payload;64K + Overhead: 18K) , G.729a 26Kbps(Payload:8K + Overhead:18K, 오버헤드 때문에 배보다 배꼽이 큰경우가 되죠?) 정도의 밴드위드가 필요 합니다.

 

오늘은 이렇게 디지털 시그널로 변환된 보이스가 IP 네트워크에서 IP Packet 으로 어떻게 들어 지고 어떻게 전송이 되어지는지를 알아 보겠습니다.

 

아래 <그림1> 보시죠.

  

 

<그림 1> (그림이 허접 한데요양해해 주세요.)
 

<그림1> 넷미팅 같은 보이스 어플리케이션을 사용하는 PC 간의 보이스 전송시에 보이스 패킷의 처리 과정을 보여 주고 있습니다.실제로  <그림1> 처럼 보이스 패킷이 전달되기 위해서는 과정에 앞서서 송수신 단말간에 사용하는 프로토콜 (H.323,MGCP,SIP,Skinny등등) 따라  셋업 과정과 파라미터협의 (Negotiations) 과정이 수행되어져야 합니다.

 

이러한 내용은 추후에 다루어 겁니다.어쨌든 이러한 과정이 문제없이 진행되었다고 가정하고 이제 실제 미디어 스트림이 송된다고 보았을 보이스의 처리 과정을 보도록 하지요. 차례대로 보면은요

 

(1)어플리케이션(넷미팅이나 소프트폰 등등)에서 보이스 Payload 발생시킵니다.

 

기에서는  160Byte 되어 있죠? G.711 경우는 디폴트 Payload 사이즈가 160 Byte 니다. G.711 코덱은 10ms 마다 보이스의 Digitization 발생됩니다. (이걸 앞서 인코딩 타임이라 했습니다.참고로 G.729 10ms 이지요?) DSP 통해서 보이스 아웃풋 샘플이 10ms 마다 생기는 이지요패킷을 구성시에 이러한 아웃풋을 두개를 모아 만듭니다. 두개를 모으는 이유는  보이스 래임 하나당 하나의 패킷을 만들면 오버헤드가 너무 커지기 때문 입니다. 그러니까 디폴트일 경우 G.711 패킷의 생성은 20ms 걸리는 이지요. G.711 초당 (,1000ms) 전송 트래픽이 64Kbps(8,000Byte) 이므로 10ms 마다  발생되 

보이스 Payload 80Byte이고 20ms 모으면 160Byte 됩니다.

 

(2) 어플리케이션에서 만들어진 보이스 Payload RTP 프로토콜을 거치게 됩니다.

 

RTP 프로토콜은 나중에 칼럼에서 자세하게 따로 소개해드릴 중요한 프로토콜 입니다일단은 RTP 라는 프로토콜은 IP 네트워크에서 보이스나 비디오와 같은 멀티미디어 트래픽 전송하기위해 사용되는 프로토콜이라고  알아두시고요 RTP 프로토콜은 UDP 프로토콜 기반에서 동작 합니다. 기본 RTP 헤더는 12 바이트 입니다.

 

다음으로는

 

트랜스포트 레이어에서 상대방 (Destination) UDP 포트 넘버가 여기에서는 5004 으로 켑슐레이션 됩니다. 앞서 말씀 드린 처럼 이앞서의 과정에서 파라미터 협의(Negotiation)과정 있다고 했는데 과정에서 상대방(수신측) 송신측 에게 보이스 트래픽을 전송할 사용하도록 알려준 UDP 포트 넘버입니다. 따라서 RTP 사용하는 UDP 포트는 항상 Dynamic 하게 결정 됩니. 참고로 이러한 UDP 헤더는 8 바이트 입니다.

 

(3) 이제 네트워크 레이어 입니다. 네트워크 프로토콜이 당연히 IP 이니까…20 바이트의 IP

 

헤더가 인켑슐레이션 됩니다. 여기에서는  자신의 IP 10.0.1.2 상대방 IP 10.0.2.3 으로 인켑슐레이션 됩니다.

 

(4)데이터링크 레이어 에서는 피지컬 어드레스를 인켑슐레이션 합니다.

 

시나리오 에서는 보이스 콜의 상대방 IP 리모트 서브넷에 존재 하므로 디폴트 게이트웨이 IP 10.0.1.1. 대해 ARP 수행하고 디폴트 게이트웨이인 10.0.1.1 맥어드레스로 인켑슐레이션 하게 됩니다여기에서 18 바이트의 이더넷 헤더가 붙게 됩니다.

 

(5) 디폴트 게이트웨이는 목적지 주소가 자신으로 되어있는 프레임을 수신하고 프레임 더를 벗겨내고 IP 헤더를 확인합니다.

 

(6) 그리고 라우팅 테이블을 확인하여 패킷의 목적지 IP 주소인 10.0.2.3 네트워크의 아웃바운드 인터페이스와 인켑슐레이션 타입을 알아 냅니다.

 

(7) 패킷이 해당 인터페이스로 스위칭 되고 미디어 타입에 맞게 인켑슐레이션 되어져서 전송 됩니다.

 

(8)다음 홉에 있는 라우터 역시 앞서와 같이 라우팅 테이블을 참조합니다.

 

(9) 이경우는 자신의 이더넷 인터페이스의 서브넷이 10.0.2.0 네트워크 이므로 10.0.2.3 스트에 대해 ARP 수행해서 맥주소를 알아내고 패킷을 다시 새로운 프래임 헤더로 인켑슐레이션해서 전송합니다.

 

(10)이제 목적지 호스트는 목적지 주소가 자신으로 되어 있는 이더넷 프레임을 수신하고 프레임 헤더를 벗겨내고 네트워크 레이어로 올립니다.

 

(11)네트워크 레이어 에서는 목적지 IP 자신임을 확인이 되면 UDP 헤더의 포트 넘버를 인하고 해당 포트로 넘깁니다.

 

(12) 해당 UDP 포트를 사용하는 RTP 프로토콜에서 수신된 보이스 트래픽에 대한 처리를 행합니다.( 추후에 다루겠습니다.)

 

(13) 수신된 보이스 Payload 어플리케이션에 의해 바로 재생되지 않고 일시적으로 버퍼링 하고 버퍼가 100% 되면은 어플리케이션에 의해 재생이 됩니다. 이때 사용되는 버퍼를 Jitter 버퍼 또는 Dejitter 버퍼 라고 합니다.

 

여러분들이 윈도우의 미디어 플레이어 같은 툴로 인테넷상의 멀티미디어 프레임을 수신할  이러한 버퍼를 이용하는 것을 보셨을 겁니다이렇게 버퍼링을 하는 이유는 IP 네트워크상에서 미디어 프레임의 전송 속도가 일정치를 하기 때문에 끊김없이 규칙적인 재생을 하기 위함 입니다. 이러한 동작도 RTP 프로토콜이 관여 됩니다.

 

오늘 내용이 길었죠? 사실 간단한 그림인데글로 풀어 쓰면 상당히 길어 지는군요.

 

다음 시간에는 패킷의 오버헤더에 대해 알아 보도록 하겠습니다.제가 칼럼을 진행하면서 아직은 설명하지 않고 있는 용어들이 불가피하게 간혹 나옵니다.예를 들면 위에서 H.323,MGCP 라든지 RTP 같은 용어 등등요.이런 것들은 아직은 여러분들이 받아들이기엔 이른 들이기 때문에 추후에 다루어질 내용 입니다. 따라서 아직은 제가 설명 드린 내용만 받아 들이시구 그냥 그런 구나 하고 넘어가시면 니다.^^

[출처] VoIP 개요|작성자 스펀지밥

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)