Infos techniques sur la VoIP

Ci-dessous sont présentés des aspects importants qu'il faut connaître pour comprendre le fonctionnement de la VoIP.

L'établissement d'une connexion VoIP nécessite :

                          Architecture de base
Voix )) CAN - Algorithme de Compression -  Assembler RTP dans TCP/IP -----
                                                             ---->     |
                                                             <----     | 
Voix (( CNA - Algorithme de Décompression -  Désass. RTP de TCP/IP   -----

Celle-ci est faite par le matériel, généralement une carte CAN intégrée.

Aujourd'hui, n'importe quelle carte son vous permet de convertir une bande de 22050 Hz en données de 16 bits (l'échantillonnage doit être réalisé à une fréquence de 44100 Hz en raison du principe de Nyquist), cela donne un débit de 2 octets * 44100 échantillons par seconde = 88200 octets/s soit 176,4 ko/s pour un flux stéréo.

La VoIP ne nécessite pas un tel débit pour la transmission des paquets de voix : nous allons examiner ci-dessous les différents codages qui seront utilisés en pratique.

Comme nous disposons maintenant de données numériques, nous pouvons les convertir dans un format standard qui permet une transmission rapide.

PCM, modulation par impulsion et codage (MIC), norme ITU-T G.711

ADPCM, modulation par impulsion et codage différentiel adaptatif (MICDA), norme ITU-T G.726

Seule la différence entre le paquet de voix actuel et le précédent est converti, ce qui nécessite 32 kbps (Norme ITU-T G.726).

LD-CELP, norme ITU-T G.728
CS-ACELP, normes ITU-T G.729 et G.729a
MP-MLQ, norme ITU-T G.723.1, 6.3kbps, Truespeech
ACELP, norme ITU-T G.723.1, 5.3kbps, Truespeech
LPC-10, norme capable d'atteindre 2.5 kbps!!

Ces derniers protocoles sont les plus importants car ils peuvent garantir une bande minimale très basse par un codage à la source. De plus les codecs G.723.1 ont une note moyenne d'opinion très élevé (utilisée pour mesurer la fidélité de la voix), mais attention aux performances d'élaboration qu'ils nécessitent : jusqu'à 26 MIPS !

Nous disposons maintenant des données brutes, il faut les empaqueter en données de protocole TCP/IP, en respectant le schéma suivant :

paquets de données VoIP
     RTP
     UDP
     IP  
   couches I, II

Les paquets de VoIP sont placés dans des paquets RTP (Real Time Transport Protocol) à l'intérieur de paquets UDP/IP.

On remarque, d'abord, que la VoIP n'utilise pas le protocole TCP, trop lourd pour les applications en temps réel. On utilise, à la place, les datagrammes du protocole UDP.

Ensuite, UDP ne garantit ni l'ordre d'arrivée à destination des paquets, ni leur temps de transfert (principe du datagramme). Ces deux propriétés sont très importantes pour la qualité générale de la voix (la bonne compréhension des paroles de l'interlocuteur) et la qualité de la conversation (la facilité de son déroulement). RTP résout le problème en permettant au destinataire de remettre les paquets dans l'ordre et en évitant une attente excessive des paquets égarés en chemin ou trop longs à parvenir (il n'est pas nécessaire de recevoir chaque paquet, il faut par contre disposer d'un flux continu, en nombre suffisant, de paquets dans l'ordre).

             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      |     numéro de séquence        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       empreinte temporelle                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   identifiant de la source de synchronization source (SSRC)   |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|     identifiants des sources contribuantes (CSRC)             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Où :

Pour une description complète du protocole RTP et de toutes ses applications, voir les RFC 1889et 1890.

D'autres protocoles sont utilisés en VoIP, comme RSVP, qui peut prendre en charge la Qualité de Service (QoS, Quality of Service).

RSVP est un protocole avec signalisation, qui nécessite une certaine bande passante et un délai à chaque bond réseau le prenant en charge.

Pour des informations détaillées sur RSVP, voir RFC 2205

Nous avons répété à plusieurs reprises que les applications de VoIP nécessitaient un flux de données en temps réel car le but est d'obtenir un échange vocal interactif.

Malheureusement, TCP/IP ne permet pas d'atteindre cet d'objectif, il ne peut que faire « au mieux ». Il va falloir utiliser des astuces et des stratégies pour la gestion du flux des paquets dans CHACUN des routeur que nous allons traverser.

On peut ainsi utiliser :

  1. Le champ TOS du protocol IP, qui indique le type de service : une valeur élevée signifie un degré d'urgence faible, alors que des valeurs faibles signifient un degré d'urgence important, compatible avec le temps réel.

  2. Méthodes de mise en file d'attente des paquets :

  3. La capacité de mise en forme du trafic, qui permet de limiter la source à une bande passante fixe en :

  4. Evitement de congestion (Congestion Avoidance), comme RED (Random Early Detection).

Pour des informations exhaustives sur la QoS, voir Differentiated Services à l'IETF.

Le protocole H323 est utilisé par exemple par Microsoft NetMeeting pour faire des appels VoIP.

Ce protocole permet à plusieurs éléments de se parler :

Le protocole H323 concerne non seulement la VoIP mais aussi les communications de données et de vidéo.

En ce qui concerne la VoIP, h323 peut utiliser les codecs audio G.711, G.722, G.723, G.728 et G.729 ; pour la vidéo il prend en charge h261 et h263.

On trouvera des informations complémentaires sur h323 sur les sites Web Openh323 Standards et h323 ainsi que dans le document de définition de la norme : ITU H-series Recommendations.

On le trouve implémenté dans différents logiciels comme Microsoft Netmeeting, Net2Phone, DialPad, ... et aussi dans des produits freeware qu'on peut trouver au site web Openh323.