Guide pratique de la voix sur IP (VoIP)

Version française du guide pratique VoIP Howto

Jérôme Blondel

Adaptation française 

Alain Boulé

Relecture de la version française 

Jean-Philippe Guérard

Préparation de la publication de la v.f. 

Version : 1.7.fr.1.0

3 mai 2007

Historique des versions
Version 1.7.fr.1.02007-05-03JB, AB, JPG
Première traduction française.
Version 1.72002-08-07RA
Version originale.

Résumé

Grâce à la transmission de la voix sur un réseau IP (abrégée « voix sur IP »), il est possible, pour un coût quasi nul, d'utiliser Internet pour téléphoner. Ce guide pratique explique le fonctionnement de cette technique, et présente les normes et systèmes utilisés.


Table des matières

1. Introduction
1.1. Introduction
1.2. Copyright
1.3. Nouvelles versions de ce document
1.4. Traductions
1.5. Remerciements
2. Contexte
2.1. Le passé
2.2. Hier
2.3. Aujourd'hui
2.4. Le futur
3. Généralités
3.1. Qu'est-ce que la VoIP ?
3.2. Comment cela fonctionne-t-il ?
3.3. Quel est l'avantage de la VoIP sur le RTCP ?
3.4. Alors pourquoi tout le monde ne l'utilise pas déjà ?
4. Infos techniques sur la VoIP
4.1. Description d'une connexion VoIP
4.2. Conversion Analogique-Numérique
4.3. Algorithmes de compression
4.4. RTP : Real Time Transport Protocol
4.5. RSVP
4.6. Qualité de Service (QoS, Quality of Service)
4.7. Protocole de signalisation H323
5. Prérequis
5.1. Prérequis matériel
5.2. Cartes d'accélération matérielle
5.3. Cartes passerelles matérielles
5.4. Prérequis logiciels
5.5. Logiciel de passerelle
5.6. Logiciel de portier
5.7. Autres logiciels
6. Configuration des cartes
6.1. Quicknet PhoneJack
6.2. Quicknet LineJack
6.3. Produits VoiceTronix
7. Installation
7.1. Communication simple : IP vers IP
7.2. Utiliser des noms
7.3. Appels sur Internet avec un serveur WINS
7.4. Serveur ILS
7.5. Un gros problème : le masquerading.
7.6. Applications Open Source
7.7. Installer un portier
7.8. Installer une passerelle
7.9. Matrice de compatibilité
8. Communications sur des lignes RTCP
8.1. Généralités
8.2. Scénario
8.3. Que peut-on changer dans cette configuration ?
9. Considérations de bande passante
10. Glossaire
11. Liens utiles
11.1. Liens vers des logiciels open source
11.2. Liens commerciaux

La plus récente version française de ce guide pratique est disponible sur le site de l'association Traduc.org.

Le site http://www.bertolinux.com/ contient la plus récente version originale de ce document.

Merci à Fatamorgana Computers pour le matériel et les opportunités d'expérimentation.

Merci au Linux Documentation Project pour la publication et la mise en ligne très rapide de mon document.

Merci à David Price pour son soutien.

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

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.

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.

On peut choisir l'un de ces systèmes d'exploitation :

Les logiciels pour Win9x sont, en particulier, Microsoft NetMeeting, Internet Phone, DialPad, et, pour les cartes Quicknet, Internet Switchboard (disponible sur le site web de Quicknet).

Attention !! Les dernières cartes Quicknet utilisant Switchboard (ancienne version aussi) DOIVENT être connectées à Internet pour avoir accès à un compte Microtelco (payant), aussi, si vous ne souhaitez pas être connecté à Internet vous devrez installer les logiciels OpenH323.

Pour les cartes VoiceTronix, vous trouverez des logiciels au site web de VoiceTronix

Sous Linux, nous avons les logiciels libres GnomeMeeting, clone de Microsoft Netmeeting, et en mode console nous utilisons les applications (également libres) du site web OpenH323: simph323 ou ohphone, qui fonctionnent aussi avec le matériel d'accélération de Quicknet.

Attention : le code source complet d'Openh323 doit être compilé dans un répertoire utilisateur (sinon il est nécessaire de modifier certaines variables d'environnement). Notez que le temps de compilation peut être très long et qu'une quantité importante de RAM est nécessaire si on veut le réduire à une durée raisonnable.

La fonction de passerelle (qui assure la liaison entre les lignes TCP/IP, VoIP et RTCP) nécessite un logiciel, tel que :

  • Internet SwitchBoard (nécessitant une connexion à Internet) pour les systèmes Windows, qui fonctionne aussi comme terminal h323.

  • PSTNGw pour les systèmes Linux et Windows, à télécharger sur OpenH323.

La configuration du matériel spécifique, en environnement Linux ou Windows, est présentée ci-dessous.

Comme nous l'avons déja vu, la carte Quicknet PhoneJack est une carte son à fonction d'accélération spécifique à la VoIP. Ses caractéristiques sont les suivantes :

La carte Quicknet PhoneJack est une carte ISA (ou PCI) à installer dans le boîtier du PC. Elle peut fonctionner sans IRQ.

Sous Windows vous devez installer :

tous téléchargeables sur le site web de Quicknet

Une fois Switchboard installé, il faut s'enregistrer auprès de Quicknet pour bénéficier des pleines capacités de la carte.

Lorsque vous décrochez le téléphone, Internet Switchboard se réveille et attend que vous composiez un numéro d'appel (directement à partir du téléphone). Vous pouvez effectuer l'une des opérations suivantes :

  1. Taper un astérisque, puis un numéro IP (des astérisques remplaçant les points), et un # à la fin

  2. Composer le numéro d'appel (avec préfixe international) d'un abonné du réseau téléphonique classique. Dans ce cas, il est nécessaire d'être abonné à un gestionnaire de passerelle qui vous facturera le temps de communication.

  3. Composer un code d'accès rapide (un ou deux chiffres), que vous aurez stocké au préalable, pour effectuer un appel de type IP ou RTCP.

Internet Switchboard est compatible avec h323, il est ainsi possible de correspondre, par exemple, avec Microsoft Netmeeting.

Attention !! Internet Switchboard DOIT être connecté à Internet quand il est utilisé avec les nouvelles cartes Quicknet.

À la place d'Internet Switchboard, vous pouvez utiliser les applications openphone(avec interface utilisateur graphique) ou ohphone(ligne de commande) d'openh323.

Sous Linux vous devez installer :

  1. Le pilote de carte, à partir du site web de Quicknet . Une fois téléchargés, vous devrez compiler les fichiers sources. (il faut disposer d'un lien symbolique ou physique vers le répertoire des sources de linux /usr/src/linux). Pour obtenir la marche à suivre, tapez la commande 'make'.

  2. Une des applications openphone ou ohphone.

  3. Si vous êtes développeur, vous pouvez utiliser le SDK pour créer votre propre application (valable aussi pour Windows).

Cette carte ressemble beaucoup à la précédente, elle prend aussi en charge la fonction de passerelle.

Remarquons simplement qu'il faut télécharger l'application PSTNGx (pour Linux et Windows) ou utiliser Internet Switchboard pour utiliser la fonction de passerelle.

  1. Téléchargez d'abord le logiciel ici

  2. Décompactez-le

  3. Modifiez 'src/vpbreglinux.cpp' selon le fichier README

  4. Tapez 'make'

  5. Tapez 'make install'

  6. Se placer dans le répertoire src (cd src)

  7. Tapez 'insmod vpb.o'

  8. Retrouvez (à partir de la console ou à l'aide de la commande 'dmesg') le numéro majeur, noté ci-dessous MAJEUR

  9. tapez 'mknod /dev/vpb0 c MAJEUR 0' où MAJEUR est le numéro susmentionné

  10. se placer dans le répertoire unittest (cd unittest) et taper './echo'

Le fichier README contient des informations plus détaillées

Je n'ai pas testé personnellement les produits VoiceTronix. Contactez le site web de VoiceTronix pour tout support.

Dans ce chapitre, nous allons installer un système VoIP, d'abord simple, puis, de plus en plus complexe.

Comme nous l'avons déja dit, une passerelle relie la VoIP aux lignes du réseau téléphonique (RTCP) ce qui permet d'appeler un téléphone classique depuis Internet. Il faut donc, en plus, une carte capable de gérer des lignes RTCP : la carte Quicknet LineJack convient.

Sur le site web OpenH323 nous téléchargeons :

  1. le pilote de Linejack

  2. l'application PSTNGw qui servira de passerelle.

Si l'exécutable ne fonctionne pas, il faut télécharger le code source et la librairie openh323 , puis installer le tout dans un répertoire personnel.

Il suffit ensuite de lancer PSTNGw pour démarrer la passerelle H323.

La première matrice concerne les :

 _______________________________________________________________________________________________
|            | Net-    | Switch- |Simph323 | OhPhone | LinPhone| Speak-  |    HW    |    HW    |
|            | meeting | Board   |         |         |         | Freely  | PhoneJACK| LineJACK |
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| Netmeeting |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|SwitchBoard |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| Simph323   |    V         V         V         V         X         X         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| OhPhone    |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| LinPhone   |    X         X         X         X         V         X         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|SpeakFreely |    X         X         X         X         X         V         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|HW PhoneJACK|    V         V         X         V         X         X         _          _
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|HW LineJACK |    V         V         X         V         X         X         _          _
|____________|_________|_________|_________|_________|_________|_________|__________|__________|

La seconde matrice fait référence aux logiciels de passerelle qui gèrent la carte LineJack.

___________________________________________________________
|              |HW LineJACK GW| SwitchBoard  |   PSTNGW     |
|______________|______________|______________|______________|
|HW LineJACK GW|      _       |       V      |       V      |
|______________|______________|______________|______________|
| SwitchBoard  |      V       |       _      |       _      |
|______________|______________|______________|______________|
|   PSTNGW     |      V       |       _      |       _      |
|______________|______________|______________|______________|

Notation:

  • V : Fonctionne

  • X : Ne fonctionne pas

  • -- : Non significatif

Dans ce qui a été dit jusqu'à présent le problème de bande passante n'a pas été résolu : comment créer un flux de données en temps réel.

Nous savons qu'il n'existe pas de solution en l'absence d'un protocole de gestion temps réel dans chaque routeur traversé. Qu'est-il possible de faire ?

On peut commencer par utiliser des algorithmes de compression à taux très élevé (le plus élevé possible), comme l'algorithme LPC10 qui ne consomme que 2,5 kbps de bande passante, environ 313 octets/s.

On peut ensuite essayer de classer les paquets, à l'aide du champ TOS, au niveau de priorité maximum, afin que chaque routeur les traite en urgence

Remarque importante : tout cela ne suffira pas à garantir que la permanence conversation sera toujours de bonne qualité, mais, en l'absence d'infrastructure importante qui assure, en particulier, la mise en forme du trafic et la réservation de bande passante, cela n'est pas réalisable : TCP/IP n'est pas un protocole temps réel

Une solution pourrait être d'utiliser, pour commencer, des petits réseau WAN à bande passante garantie et de les agrandir étape par étape.

Une remarque pour finir : les services supposés garantis, comme les lignes RTCP, ne peuvent pas non plus gérer l'ensemble de leurs clients au même instant. Par exemple, un appel GSM ne peut pas absorber un nombre supérieur à quelques centaines ou quelques milliers de clients

En tout cas, pour un service qui débute, limité à quelques utilisateurs, la VoIP peut être une alternative valable au service RTCP classique.

RTCP : Réseau Téléphonique Commuté Public

VoIP : Voice over Internet Protocol (Voix sur protocole Internet - Voix sur IP)

LAN : Local Area Network (réseau local)

WAN : Wide Area Network (réseau étendu)

TOS : Type Of Service (type de service)

FAI : Fournisseur d'Accès Internet

RTP : Real Time Protocol (protocole temps réel)

RSVP : ReSerVation Protocol (protocole de réservation)

QoS : Quality of Service (qualité de service)