Thursday, July 31, 2008

VoIP connection


To setup a VoIP communication we need:

1. First the ADC to convert analog voice to digital signals (bits)
2. Now the bits have to be compressed in a good format for transmission: there is a number of protocols we'll see after.
3. Here we have to insert our voice packets in data packets using a real-time protocol (typically RTP over UDP over IP)
4. We need a signaling protocol to call users: ITU-T H323 does that.
5. At RX we have to disassemble packets, extract datas, then convert them to analog voice signals and send them to sound card (or phone)
6. All that must be done in a real time fashion cause we cannot waiting for too long for a vocal answer! (see QoS section)


Base architecture

Voice )) ADC - Compression Algorithm - Assembling RTP in TCP/IP -----
----> |
<---- |
Voice (( DAC - Decompress. Algorithm - Disass. RTP from TCP/IP -----


Analog to Digital Conversion
This is made by hardware, typically by card integrated ADC.

Today every sound card allows you convert with 16 bit a band of 22050 Hz (for sampling it you need a freq of 44100 Hz for Nyquist Principle) obtaining a throughput of 2 bytes * 44100 (samples per second) = 88200 Bytes/s, 176.4 kBytes/s for stereo stream.

For VoIP we needn't such a throughput (176kBytes/s) to send voice packet: next we'll see other coding used for it.

Compression Algorithms

Now that we have digital data we may convert it to a standard format that could be quickly transmitted.

PCM, Pulse Code Modulation, Standard ITU-T G.711

* Voice bandwidth is 4 kHz, so sampling bandwidth has to be 8 kHz (for Nyquist).
* We represent each sample with 8 bit (having 256 possible values).
* Throughput is 8000 Hz *8 bit = 64 kbit/s, as a typical digital phone line.
* In real application mu-law (North America) and a-law (Europe) variants are used which code analog signal a logarithmic scale using 12 or 13 bits instead of 8 bits (see Standard ITU-T G.711).

ADPCM, Adaptive differential PCM, Standard ITU-T G.726

It converts only the difference between the actual and the previous voice packet requiring 32 kbps (see Standard ITU-T G.726).

LD-CELP, Standard ITU-T G.728
CS-ACELP, Standard ITU-T G.729 and G.729a
MP-MLQ, Standard ITU-T G.723.1, 6.3kbps, Truespeech
ACELP, Standard ITU-T G.723.1, 5.3kbps, Truespeech
LPC-10, able to reach 2.5 kbps!!

This last protocols are the most important cause can guarantee a very low minimal band using source coding; also G.723.1 codecs have a very high MOS (Mean Opinion Score, used to measure voice fidelity) but attention to elaboration performance required by them, up to 26 MIPS!

RTP Real Time Transport Protocol
Now we have the raw data and we want to encapsulate it into TCP/IP stack. We follow the structure:

VoIP data packets
RTP
UDP
IP
I,II layers

VoIP data packets live in RTP (Real-Time Transport Protocol) packets which are inside UDP-IP packets.

Firstly, VoIP doesn't use TCP because it is too heavy for real time applications, so instead a UDP (datagram) is used.

Secondly, UDP has no control over the order in which packets arrive at the destination or how long it takes them to get there (datagram concept). Both of these are very important to overall voice quality (how well you can understand what the other person is saying) and conversation quality (how easy it is to carry out a conversation). RTP solves the problem enabling the receiver to put the packets back into the correct order and not wait too long for packets that have either lost their way or are taking too long to arrive (we don't need every single voice packet, but we need a continuous flow of many of them and ordered).

Real Time Transport Protocol

0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Where:

* V indicates the version of RTP used
* P indicates the padding, a byte not used at bottom packet to reach the parity packet dimension
* X is the presence of the header extension
* CC field is the number of CSRC identifiers following the fixed header. CSRC field are used, for example, in conference case.
* M is a marker bit
* PT payload type


Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

0 komentar: on "VoIP connection"

Post a Comment