<?xml version="1.0" encoding="iso-8859-15"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ <!ENTITY howto "http://www.traduc.org/docs/howto/lecture/"> <!ENTITY guide "http://www.traduc.org/docs/guides/lecture/"> <!ENTITY traduc "http://www.traduc.org"> ]> <article lang="fr"> <articleinfo> <title>Guide pratique de la voix sur IP (VoIP)</title> <subtitle> Version française du guide pratique <foreignphrase lang="en">VoIP Howto</foreignphrase> </subtitle> <author> <firstname>Roberto</firstname> <surname>Arcomano</surname> <email>berto CHEZ fatamorgana POINT com</email> </author> <releaseinfo>Version : 1.7.fr.1.0</releaseinfo> <pubdate>3 mai 2007</pubdate> <othercredit role="traduction" class="translator"> <firstname>Jérôme</firstname> <surname>Blondel</surname> <contrib>Adaptation française</contrib> <email>jeromeblondel CHEZ yahoo POINT fr</email> </othercredit> <!-- <othercredit role="relecture" class="translator"> <firstname>Alice</firstname> <surname>Martin</surname> <contrib>Relecture de la version française</contrib> <email>alice CHEZ ouebe POINT org</email> </othercredit> --> <othercredit role="publication" class="copyeditor"> <firstname>Jean-Philippe</firstname> <surname>Guérard</surname> <contrib>Préparation de la publication de la v.f.</contrib> <email>fevrier CHEZ tigreraye POINT org</email> </othercredit> <abstract><para> Grâce à la transmission de la voix sur un réseau IP (abrégée <quote>voix sur IP</quote>), 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. <!-- JPG : texte déplacé dans le corps du document. Le site Web <ulink url="http://www.fatamorgana.com/bertolinux"> http://www.fatamorgana.com/bertolinux</ulink> contient la dernière version de ce document. --> </para></abstract> <!-- Historique des révisions --> <revhistory> <revision> <revnumber>1.7.fr.1.0</revnumber> <date>2007-05-03</date> <authorinitials>JB, JPG</authorinitials> <revremark>Première traduction française.</revremark> </revision> <revision> <revnumber>1.7</revnumber> <date>2002-08-07</date> <authorinitials>RA</authorinitials> <revremark>Version originale.</revremark> </revision> </revhistory> </articleinfo> <sect1> <title>Introduction</title> <sect2> <title>Introduction</title> <para>Ce document explique les systèmes de VoIP. Des événements récents, telles que la diffusion sur Internet à faible coût, l'intégration récente de processeurs dédiés de compression de voix, ont changé les conditions pour les utilisateurs courants en permettant aux normes de VoIP de se diffuser. Ce guide pratique essaie de définir certains éléments de base de l'architecture VoIP.</para> <para>Envoyez s'il vous plait vos suggestions et critiques à mon <ulink url="mailto:berto@fatamorgana.com">mon adresse électronique </ulink></para> </sect2> <sect2> <title>Copyright</title> <para> Copyright © 2000, 2001 Roberto Arcomano. Ce document est libre vous pouvez le redistribuer et le modifier sous les termes de la licence GNU General Public License publiée par la Free Software Foundation ; soit la version 2 de la Licence ou (selon votre choix) toute version ultérieure. Ce document est distribué dans l'espoir qu'il sera utile mais </para> <para> SANS AUCUNE GARANTIE ; sans même les garanties implicites de COMMERCIALISATION et de CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. Voir la GNU General Public License pour plus de détails. Vous trouverez un exemplaire de la GNU GPL <ulink url="http://www.gnu.org/copyleft/gpl.html">ici</ulink> </para> </sect2> <sect2> <title> Nouvelles versions de ce document </title> <para> La <ulink url="&howto;VoIP-HOWTO.html">plus récente version française</ulink> de ce document est disponible sur le site de l'association <ulink url="&traduc;">Traduc.org</ulink>. </para> <para> Le site <ulink url="http://www.fatamorgana.com/bertolinux"/> contient la plus récente version originale de ce document. </para> </sect2> <sect2> <title>Traductions</title> <para>Si vous voulez traduire ce document vous êtes libre, vous devez simplement :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Vérifier qu'une autre version n'existe pas déjà à votre LDP local.</para> </listitem> <listitem> <para> Conserver toute la partie <quote>Introduction</quote> (y compris <quote>Introduction</quote>, <quote>Copyright</quote>, <quote>Traductions</quote> et <quote>Remerciements</quote>). </para> </listitem> </orderedlist> </para> <para>Attention ! Vous n'avez pas besoin de traduire les fichiers TXT ou HTML, vous devez modifier le fichier LYX, pour qu'il soit possible de le convertir dans tous les autres formats (TXT, HTML, RIFF, et cætera) : pour cela vous pouvez utiliser l'application <quote>LyX</quote> téléchargeable à <ulink url="http://www.lyx.org"/>.</para> <para>Pas besoin de me demander pour traduire ! Vous n'avez qu'à me faire savoir (si vous le souhaitez) que vous avez fait une traduction. </para> <para>Merci pour votre traduction !</para> </sect2> <sect2> <title>Remerciements</title> <para>Merci à <ulink url="http://www.fatamorgana.com">Fatamorgana Computers</ulink>pour le matériel et les opportunités d'expérimentation. </para> <para>Merci au <ulink url="http://www.linuxdoc.org">Linux Documentation Project</ulink> pour la publication et la mise en ligne très rapide de mon document.</para> <para>Merci à <ulink url="mailto:dprice@intercorp.com.au">David Price</ulink>pour son soutien.</para> </sect2> </sect1> <sect1> <title>Contexte</title> <sect2> <title>Le passé</title> <para>Il y a plus de 30 ans, Internet n'existait pas. Les communications interactives se faisaient seulement par téléphone au prix de la ligne du RTCP (réseau téléphonique commuté public).</para> <para>Les échanges de données étaient coûteux (pour les longues distances) et personnes n'avait pensé à des interactions vidéo (il n'y avait que la télévision qui n'est pas interactive comme on le sait). </para> </sect2> <sect2> <title>Hier</title> <para> Il y a quelques années nous avons vu apparaître des choses intéressantes : les PC pour le grand public, les nouvelles technologies pour communiquer, comme les téléphones cellulaires et enfin le grand réseau : Internet. Les gens ont commencé à communiquer à l'aide de nouveaux services comme le courrier électronique, les discussions en ligne (<foreignphrase lang="en">chat</foreignphrase>), et cætera, et le commerce transformé avec le web a permis aux gens de faire des achats d'un simple <quote>clic</quote>. </para> </sect2> <sect2> <title>Aujourd'hui</title> <para>Aujourd'hui nous assistons à une véritable révolution du monde des communications : tout le monde commence à utiliser des PC et Internet au travail et pendant son temps libre pour communiquer avec les autres, pour échanger des données (images, sons, documents) et, parfois, pour se parler à l'aide d'applications comme Netmeeting ou Internet Phone. En particulier, une nouvelle idée commence à se diffuser qui pourrait être l'avenir et qui permet des communications vocales en temps réel : la voix sur IP (VoIP).</para> </sect2> <sect2> <title>Le futur</title> <para>Nous ne pouvons pas connaître l'avenir, mais nous pouvons essayer de l'imaginer avec beaucoup d'ordinateurs, l'Internet haut débit presque partout et des gens se parlant (en audio et en vidéo) en temps réel. Il nous suffit de connaître les moyens de réaliser cela : l'UMTS, la VoIP (avec l'extension vidéo) ou autre chose ? En tout cas, nous pouvons remarquer qu'Internet s'est beaucoup développé ces dernières années, qu'il est gratuit (au moins en tant que média international) et pourrait être le bon moyen de communication pour le futur.</para> </sect2> </sect1> <sect1> <title>Généralités</title> <sect2> <title>Qu'est-ce que la VoIP ?</title> <para>VoIP signifie 'V'oice 'o'ver 'I'nternet 'P'rotocol. Comme son nom l'indique, la VoIP essaie de faire passer la voix (principalement humaine) dans des paquets IP et, en définitive, sur Internet. La VoIP peut utiliser du matériel d'accélération pour réaliser ce but et peut aussi être utilisée en environnement de PC.</para> </sect2> <sect2> <title>Comment cela fonctionne-t-il ?</title> <para>Il y a de nombreuses années, nous avons découvert qu'on pouvait aussi envoyer un signal à une destination éloignée par des moyens numériques : avant de l'envoyer il faut le numériser avec un CAN (convertisseur analogique-numérique), le transmettre, et à l'autre le bout le remettre au format analogique avec un CNA (convertisseur numérique-analogique) pour l'utiliser.</para> <para>C'est comme cela que fonctionne la VoIP, en numérisant la voix en paquets de données, en les envoyant et en les reconvertissant en voix à la destination.</para> <para>Le format numérique est plus facile à contrôler : on peut le compresser, le router, le convertir en un nouveau format meilleur, et ainsi de suite ; nous avons également découvert que le signal numérique est plus tolérant au bruit que l'analogique (comparer GSM et TACS). </para> <para>Les réseaux TCP/IP sont constitués de paquets IP contenant un en-tête (pour contrôler la communication) et une charge utile pour transporter les données : la VoIP s'en sert pour traverser le réseau et arriver à destination.</para> <screen> Voix (source) - - CAN - - - - Internet - - - CNA - - Voix (dest) </screen> </sect2> <sect2> <title>Quel est l'avantage de la VoIP sur le RTCP ?</title> <para>Vous vous utilisez une ligne du RTCP, vous payez généralement le temps de communication à une société qui gère la ligne de téléphone : plus vous restez longtemps au téléphone et plus vous payez. De plus, vous ne pouvez parler qu'à une personne à la fois.</para> <para>Au contraire, avec le mécanisme de la VoIP, vous pouvez parler à tout moment avec la personne que vous voulez (pourvu qu'elle soit aussi connectée à Internet en même temps), autant que vous voulez (indépendant de l'argent), et de plus, vous pouvez parler à plusieurs personnes en même temps.</para> <para>Si vous n'êtes pas encore convaincu, considérez qu'en même temps, vous pouvez échanger des données avec les gens à qui vous parlez, envoyer des images, des graphiques et des vidéos.</para> </sect2> <sect2> <title>Alors pourquoi tout le monde ne l'utilise pas déjà ?</title> <para>Malheureusement, nous devons rapporter qu'il y a des problèmes d'intégration de l'architecture VoIP avec Internet. Comme vous pouvez facilement l'imaginer, les communications de données vocales doivent être un flux en temps réel (vous ne pouvez pas parler et attendre plusieurs secondes qu'arrive la réponse à l'autre bout) : c'est contraire à l'architecture hétérogène d'Internet qui peut comprendre de nombreux routeurs (machines qui aiguillent les paquets), environ 20-30 ou plus, et peut avoir un temps d'aller-retour (RTT, round trip time) très long. Il faut donc modifier des choses pour que ça fonctionne correctement.</para> <para>Dans les sections suivantes nous allons essayer de comprendre comment résoudre ce grand problème. En général, nous savons qu'il est très difficile de garantir une bande passante sur Internet pour les applications de VoIP.</para> </sect2> </sect1> <sect1> <title>Infos techniques sur la VoIP</title> <para>Nous allons voir ici des choses importantes qu'il faut connaître pour comprendre la VoIP.</para> <sect2> <title>Description d'une connexion VoIP</title> <para>Pour établir une communication VoIP, il faut :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>D'abord le CAN pour convertir la voix analogique en signaux numériques (bits).</para> </listitem> <listitem> <para>Ensuite les bits doivent être compressés dans un format approprié pour la transmission : il y a plusieurs protocoles que nous allons voir après.</para> </listitem> <listitem> <para>Puis nous devons insérer nos paquets de voix dans des paquets de données à l'aide d'un protocole temps réel (généralement RTP sur UDP sur IP).</para> </listitem> <listitem> <para>Nous avons besoin d'un protocole de signalisation pour appeler les usagers. ITU-T H323 fait cela.</para> </listitem> <listitem> <para>À la réception nous devons désassembler les paquets, extraire les données, puis les convertir en signaux de voix analogiques et les envoyer à une carte son (ou à un téléphone). </para> </listitem> <listitem> <para>Tout cela doit se faire en temps réel, car nous ne pouvons pas attendre trop longtemps la réponse vocale ! (voir la section QoS)</para> </listitem> </orderedlist> </para> <screen> 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 ----- </screen> </sect2> <sect2> <title>Conversion Analogique-Numérique</title> <para>Celle-ci est faite par le matériel, généralement une carte CAN intégrée.</para> <para>Aujourd'hui, n'importe quelle carte son vous permet de convertir en 16 bits une bande de 22050 Hz (pour l'échantillonner vous avez besoin d'une fréquence de 44100 Hz à cause du principe de Nyquist), ce qui 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.</para> <para>Pour la VoIP nous n'avons pas besoin d'un tel débit (176 ko/s) pour envoyer un paquet de voix : nous verrons après les autres codages qui sont utilisés.</para> </sect2> <sect2> <title>Algorithmes de compression</title> <para>Maintenant que nous avons des données numériques, nous pouvons les convertir dans un format standard rapide à transmettre.</para> <screen> PCM, Pulse Code Modulation, Standard ITU-T G.711 </screen> <para> <itemizedlist> <listitem> <para>La bande passante de la voix est de 4 kHz, donc la fréquence d'échantillonnage doit être de 8 kHz (Nyquist).</para> </listitem> <listitem> <para>Nous représentons chaque échantillon par 8 bits (ce qui donne 256 valeurs possibles).</para> </listitem> <listitem> <para> Le débit est de 8000 Hz * 8 bits = 64 kbps, comme une ligne téléphonique typique. </para> </listitem> <listitem> <para> Dans les applications réelles, les variantes à loi mu (Amérique du Nord) et à loi a (Europe) sont utilisées pour encoder le signal analogique sur une échelle logarithmique en utilisant 12 ou 13 bits au lieu de 8 (voir la norme ITU-T G.711). </para> </listitem> </itemizedlist> </para> <screen> ADPCM, Adaptive differential PCM, Standard ITU-T G.726 </screen> <para>Il ne convertit que la différence entre le paquet de voix actuel et le précédent, ce qui nécessite 32 kbps (voir Norme ITU-T G.726). </para> <screen> LD-CELP, Standard ITU-T G.728 CS-ACELP, Standard ITU-T G.729 et 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, capable d'atteindre 2.5 kbps!! </screen> <para>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 !</para> </sect2> <sect2> <title>RTP : Real Time Transport Protocol</title> <para>Maintenant que nous avons les données brutes, nous devons les encapsuler dans la pile TCP/IP. Nous suivons la structure :</para> <screen> paquets de données VoIP RTP UDP IP couches I, II </screen> <para>Les paquets de VoIP sont placés dans des paquets RTP (Real Time Transport Protocol) à l'intérieur de paquets UDP/IP.</para> <para>Tout d'abord, la VoIP n'utilise pas TCP, car il est trop lourd pour les applications en temps réel. On utilise donc à la place un datagramme UDP.</para> <para>Ensuite, UDP ne contrôle pas l'ordre dans lequel les paquets arrivent à destination, ni le temps qu'ils mettent pour arriver (concept du datagramme). Ces deux choses sont très importantes pour la qualité de la voix (notre compréhension de ce que dit l'autre personne) et la qualité de la conversation (la facilité avec laquelle celle-ci se fait). RTP résout le problème en permettant au destinataire de remettre les paquets dans le bon ordre et de ne pas attendre trop longtemps les paquets qui ont perdu leur chemin ou mettent trop longtemps à arriver (nous n'avons pas besoin de chaque paquet individuel, mais il nous faut un flux continu de beaucoup de paquets dans l'ordre).</para> <screen> 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) | | .... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ </screen> <para>Où :</para> <para> <itemizedlist> <listitem> <para>V indique la version de RTP utilisée</para> </listitem> <listitem> <para>P indique le bourrage (padding), un octet inutilisé à la fin du paquet pour atteindre une dimension de paquet paire</para> </listitem> <listitem> <para>X est la présence de l'extension d'en-tête</para> </listitem> <listitem> <para>Le champ CC est le nombre d'identifiants CSRC suivant l'en-tête fixe. Le champ CSRC sert par exemple dans les conférences.</para> </listitem> <listitem> <para>M est un bit marqueur.</para> </listitem> <listitem> <para>PT est le type de charge utile (payload type).</para> </listitem> </itemizedlist> </para> <para>Pour une description complète du protocole RTP et de toutes ses applications, voir les RFC <ulink url="http://www.ietf.org/rfc/rfc1889.txt">1889</ulink>et <ulink url="http://www.ietf.org/rfc/rfc1890.txt">1890</ulink>.</para> </sect2> <sect2> <title>RSVP</title> <para>D'autres protocoles sont utilisés en VoIP, comme RSVP, qui peut prendre en charge la Qualité de Service (QoS, Quality of Service).</para> <para>RSVP est une protocole avec signalisation, qui nécessite une certaine bande passante et un délai à chaque bond réseau le prenant en charge.</para> <para>Pour des informations détaillées sur RSVP, voir <ulink url="http://www.ietf.org/rfc/rfc2205.txt?number=2205">RFC 2205</ulink></para> </sect2> <sect2> <title>Qualité de Service (QoS, Quality of Service)</title> <para>Nous avons répété plusieurs fois que les applications de VoIP nécessitaient un flux de données en temps réel car nous voulons un échange de voix interactif.</para> <para>Malheureusement, TCP/IP ne peut garantir ce type d'objectif, il peut juste faire <quote>au mieux</quote>. Nous devons utiliser des astuces et des stratégies pouvant gérer le flux de paquets dans CHAQUE routeur que nous traversons.</para> <para>Ainsi, il y a :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para> Le champ TOS du protocol IP, qui indique le type de service : une valeur élevée signifie une faible urgence alors que des valeurs de plus en plus petites indiquent une plus grande urgence pour le temps réel. </para> </listitem> <listitem> <para>Méthodes de mise en file d'attente des paquets : <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>FIFO (First In First Out, Premier Entré Premier Sorti), la méthode la plus stupide, qui fait passer les paquets dans leur ordre d'arrivée.</para> </listitem> <listitem> <para>WFQ (Weighted Fair Queuing, file d'attente équitable pondérée) consiste en un passage équitable des paquets (par exemple, FTP ne peut pas consommer toute la bande passante disponible), selon le type de flux de données, généralement un paquet pour UDP et un pour TCP de manière équitable.</para> </listitem> <listitem> <para>CQ (Custom Queuing, file d'attente personnalisée), les usagers peuvent décider de la priorité.</para> </listitem> <listitem> <para>PQ (Priority Queuing, file de priorité), il y a plusieurs (généralement 4) files avec chacune un niveau de priorité. Les paquets de la première file sont envoyés en premier puis (quand elle est vide), on passe à la seconde, et ainsi de suite.</para> </listitem> <listitem> <para>CB-WFQ (Class Based Weighted Fair Queuing), comme WFQ, mais en plus, il y a une notion de classes (jusqu'à 64) et à chaque classe est associée une valeur de bande passante.</para> </listitem> </orderedlist></para> </listitem> <listitem> <para>La capacité de mise en forme du trafic, qui permet de limiter la source à une bande passante fixe en : <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>téléchargement (download)</para> </listitem> <listitem> <para>mise en ligne (upload)</para> </listitem> </orderedlist></para> </listitem> <listitem> <para>Evitement de congestion (Congestion Avoidance), comme RED (Random Early Detection).</para> </listitem> </orderedlist> </para> <para>Pour des informations exhaustives sur la QoS, voir <ulink url="http://www.ietf.org/html.charters/diffserv-charter.html"> Differentiated Services</ulink> à l'IETF.</para> </sect2> <sect2> <title>Protocole de signalisation H323</title> <para>Le protocole H323 est utilisé par exemple par Microsoft NetMeeting pour faire des appels VoIP.</para> <para>Ce protocole permet à plusieurs éléments de se parler :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Des terminaux, clients qui initient une connexion VoIP. Bien que les terminaux puissent se parler sans l'aide d'un intermédiaire, nous avons besoin d'éléments additionnels dans la perspective d'une montée en charge.</para> </listitem> <listitem> <para>Des portiers, qui réalisent essentiellement : <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>un service de traduction d'adresses, pour utiliser des noms à la place des adresses IP</para> </listitem> <listitem> <para>un contrôle des admissions, pour autoriser ou refuser certaines machines ou certains usagers</para> </listitem> <listitem> <para>une gestion de la bande passante</para> </listitem> </orderedlist></para> </listitem> <listitem> <para>Des passerelles, points de référence pour la conversion TCP/IP-RTCP.</para> </listitem> <listitem> <para>Des Unités de Contrôle Multipoint (MCU, Multipoint Control Units), pour permettre les conférences.</para> </listitem> <listitem> <para>Des serveurs proxies sont également utilisés.</para> </listitem> </orderedlist> </para> <para>H323 permet non seulement la VoIP mais aussi les communications de données et de vidéo.</para> <para>En ce qui concerne la VoIP, h323 peut utiliser les codecs audio G.711, G.722, G.723, G.728 et G.729, et pour la vidéo il prend en charge h261 et h263.</para> <para>Plus d'informations sur h323 se trouve à <ulink url="http://www.openh323.org/standards.html">Openh323 Standards</ulink>, sur <ulink url="http://www.cs.columbia.edu/~hgs/rtp/h323.html">ce site web h323</ulink>et dans la description de sa norme : <ulink url="http://www.itu.int/itudoc/itu-t/rec/h/">ITU H-series Recommendations</ulink>.</para> <para>On le trouve implémenté dans différents logiciels comme <ulink url="http://www.microsoft.com">Microsoft Netmeeting</ulink>, <ulink url="http://www.net2phone.com">Net2Phone</ulink>, <ulink url="http://www.dialpad.com">DialPad</ulink>, ... et aussi dans des produits freeware qu'on peut trouver au <ulink url="http://www.openh323.org">site web Openh323</ulink>.</para> </sect2> </sect1> <sect1> <title>Prérequis</title> <sect2> <title>Prérequis matériel</title> <para>Pour créer un petit système VoIP vous avez besoin du matériel suivant :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>PC 386 ou plus</para> </listitem> <listitem> <para>Carte son, capable de full duplex</para> </listitem> <listitem> <para>une carte réseau ou une connexion Internet ou autre type d'interface permettant la communication entre deux PC</para> </listitem> </orderedlist> </para> <para>Tout cela doit être présent en double pour simuler une communication normale.</para> <para>Les outils ci-dessus sont les prérequis minimum pour une connexion VoIP : nous verrons plus loin ce que nous devrions (et devons sur Internet) utiliser en plus comme matériel pour faire la même chose dans une situation réelle.</para> <para>La carte son doit être full duplex car sinon nous n'entendrions rien pendant que nous parlons !</para> <para>En addition, vous pouvez utiliser des cartes matérielles (voir plus loin) pour gérer le flux de données en format compressé (voir § 4.3).</para> </sect2> <sect2> <title>Cartes d'accélération matérielle</title> <para>Nous pouvons utiliser des cartes spéciales dotées de capacités d'accélération matérielle. Deux d'entre elles (et aussi les seules à être actuellement prises en charge par le noyau Linux) sont les</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Quicknet PhoneJack</para> </listitem> <listitem> <para>Quicknet LineJack</para> </listitem> <listitem> <para>VoiceTronix V4PCI</para> </listitem> <listitem> <para>VoiceTronix VPB4</para> </listitem> <listitem> <para>VoiceTronix VPB8L</para> </listitem> </orderedlist> </para> <para>Quicknet PhoneJack est une carte son qui utilise des algorithmes standards pour compresser un flux audio comme G723.1 (section 4.3) jusqu'à un débit de 4,1 kbps.</para> <para>Elle peut être directement connectée à un téléphone (prise téléphone classique) ou à un couple micro-haut-parleur.</para> <para>Elle se connecte à un bus ISA ou PCI.</para> <para>Quicknet LineJack fonctionne comme PhoneJack avec des caractéristiques en plus (voir ci-dessous).</para> <para>VoiceTronix V4PCI est une carte PCI comme Quicknet LineJack mais avec 4 ports téléphone.</para> <para>VoiceTronix VPB4 est une carte ISA équivalente à V4PCI.</para> <para>VoiceTronix VPB8L est une carte à journalisation avec 8 ports. </para> <para>Pour plus d'infos voir <ulink url="http://www.quicknet.net">le site web de Quicknet</ulink>et <ulink url="http://www.voicetronix.com.au">le site web de VoiceTronix </ulink></para> </sect2> <sect2> <title>Cartes passerelles matérielles</title> <para>Les cartes Quicknet LineJack et VoiceTronix peuvent être connectées à une ligne RTCP ce qui leur permet de fonctionner comme passerelle VoIP.</para> <para>Vous aurez alors besoin d'un logiciel qui gère cela (voir ci-dessous).</para> </sect2> <sect2> <title>Prérequis logiciels</title> <para>Nous pouvons choisir le système d'exploitation à utiliser :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Win9x</para> </listitem> <listitem> <para>Linux</para> </listitem> </orderedlist> </para> <para>Sous Win9x nous avons Microsoft NetMeeting, Internet Phone, DialPad ou d'autres, ou Internet Switchboard (du <ulink url="http://www.quicknet.net">site web de Quicknet</ulink>) pour les cartes Quicknet.</para> <para>Attention !! Les dernières cartes Quicknet utilisant Switchboard (ancienne version aussi) DOIVENT être connectées à Internet pour fonctionner pour gérer un compte Microtelco (non gratuit), donc si vous avez l'intention de rester isolés d'Internet vous devez installer <ulink url="http://www.openh323.org">les logiciels OpenH323</ulink>. </para> <para>Pour les cartes VoiceTronix, vous trouverez des logiciels au <ulink url="http://www.voicetronix.com.au">site web de VoiceTronix </ulink></para> <para>Sous Linux, nous avons les logiciels libres <ulink url="http://www.gnomemeeting.org">GnomeMeeting</ulink>, clone de Microsoft Netmeeting, et en mode console nous utilisons les applications (également libres) du site web <ulink url="http://www.openh323.org">OpenH323</ulink>: simph323 ou ohphone, qui fonctionnent aussi avec le matériel d'accélération de Quicknet.</para> <para>Attention : tout le code source d'Openh323 doit être compilé dans un répertoire d'utilisateur (sinon il faut changer certaines variables d'environnement). Vous êtes prévenu que le temps de compilation pourrait être très long et que vous pourriez avoir besoin de beaucoup de RAM pour le faire en un temps correct.</para> </sect2> <sect2> <title>Logiciel de passerelle</title> <para>Pour gérer les fonctions de passerelle (relier des lignes TCP/IP VoIP et RTCP), vous avez besoin d'un logiciel tel que :</para> <para> <itemizedlist> <listitem> <para> <ulink url="http://www.quicknet.net">Internet SwitchBoard</ulink>(seulement si vous êtes connecté à Internet) pour les systèmes Windows, fonctionne aussi comme terminal h323. </para> </listitem> <listitem> <para>PSTNGw pour les systèmes Linux et Windows, à télécharger sur <ulink url="http://www.openh323.org/code.html"> OpenH323</ulink>.</para> </listitem> </itemizedlist> </para> </sect2> <sect2> <title>Logiciel de portier</title> <para>Vous pouvez choisir comme portier :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Opengatekeeper, téléchargeable au <ulink url="http://www.opengatekeeper.sourceforge.net">site web d'opengatekeeper</ulink>pour Linux et Win9x.</para> </listitem> <listitem> <para>Openh323 Gatekeeper (GK) <ulink url="http://www.willamowius.de/openh323gk.html">ici </ulink>.</para> </listitem> </orderedlist> </para> </sect2> <sect2> <title>Autres logiciels</title> <para> <anchor id="phonepatch" xreflabel="Phonepatch"/>En complément, voici quelques logiciels utiles conformes à h323 : </para> <para> <itemizedlist> <listitem> <para>Phonepatch, capable de résoudre les problèmes de pare-feu NAT. Il permet simplement aux utilisateurs (externes ou internes) d'appeler à partir une page web (qui est accessible aux utilisateurs externes comme internes). Quand l'application web comprend que l'hôte distant est prêt, elle appelle (en h323) la source et lui dit que tout est ok et que la communication peut être établie. Phonepatch est un logiciel propriétaire (avec une version de démo pour des conversations de moins de 3 minutes), que vous pouvez télécharger <ulink url="http://www.equival.com/phonepatch"> ici</ulink>.</para> </listitem> </itemizedlist> </para> </sect2> </sect1> <sect1> <title>Configuration des cartes</title> <para>Voici comment configurer le matériel spécial en environnement Linux et Windows.</para> <sect2> <title>Quicknet PhoneJack</title> <para>Comme nous l'avons vu, Quicknet PhoneJack est une carte son avec capacités d'accélération pour VoIP. Elle prend en charge :</para> <para> <itemizedlist> <listitem> <para>G.711 normal et à loi mu/A, G.728-9, G.723.1 (TrueSpeech) et LPC10.</para> </listitem> <listitem> <para>Connecteur téléphone (pour pouvoir appeler directement depuis votre téléphone) ou</para> </listitem> <listitem> <para>Jacks pour micro et hauts-parleurs.</para> </listitem> </itemizedlist> </para> <para>Quicknet PhoneJack est une carte ISA (ou PCI) à installer dans votre boîtier de PC. Elle peut fonctionner sans IRQ.</para> <sect3> <title>Installation du logiciel</title> <para>Sous Windows vous devez installer :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Pilote de la carte</para> </listitem> <listitem> <para>Application Internet Switchboard (ne fonctionne qu'avec Internet, avec les nouvelles cartes Quicknet)</para> </listitem> </orderedlist> </para> <para>tous téléchargeables sur <ulink url="http://www.quicknet.net">le site web de Quicknet </ulink></para> <para>Après avoir installé Switchboard, vous devez vous enregistrer auprès de Quicknet pour bénéficier des pleines capacités de votre carte.</para> <para>Quand vous décrochez le téléphone, Internet Switchboard se réveille et attend votre numéro d'appel (directement composé sur votre téléphone). Vous pouvez :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Entrer un astérisque, puis taper un numéro IP (avec des astérisques à la place des points), avec un # à la fin</para> </listitem> <listitem> <para>Taper directement un numéro de téléphone RTCP (avec le préfixe international) pour appeler un usager du téléphone classique. Dans ce cas, vous avez besoin d'un abonnement à un gestionnaire de passerelle à qui vous payez le temps de communication.</para> </listitem> <listitem> <para>Entrer directement un numéro rapide (jusqu'à 2 chiffres) que vous avez stocké au préalable pour faire un appel (IP ou RTCP).</para> </listitem> </orderedlist> </para> <para>Internet Switchboard est compatible avec h323, ainsi vous pouvez par exemple utiliser Microsoft Netmeeting à l'autre bout pour parler.</para> <para>Attention !! Internet Switchboard DOIT être connecté à Internet quand il est utilisé avec les nouvelles cartes Quicknet.</para> <para>À la place d'Internet Switchboard, vous pouvez utiliser les applications <ulink url="http://www.openh323.org/code.html"> openphone</ulink>(avec interface utilisateur graphique) ou <ulink url="http://www.openh323.org/code.html"> ohphone</ulink>(ligne de commande) d'openh323.</para> <para>Sous Linux vous devez installer :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Le pilote de carte, du <ulink url="http://www.quicknet.net">site web de Quicknet </ulink>. Après l'avoir téléchargé, vous devez le compiler (vous devez avoir un lien symbolique ou dur /usr/src/linux vers votre répertoire des sources linux) : tapez make pour avoir les instructions.</para> </listitem> <listitem> <para>Application <ulink url="http://www.openh323.org/code.html"> openphone</ulink>ou <ulink url="http://www.openh323.org/code.html"> ohphone</ulink>.</para> </listitem> <listitem> <para>Si vous êtes développeur, vous pouvez utiliser le <ulink url="ftp://ftp.quicknet.net/Developer/Linux/Docs/"> SDK</ulink>pour créer votre propre application (aussi pour Windows).</para> </listitem> </orderedlist> </para> </sect3> <sect3> <title>Configuration</title> <para>Avec Internet Switchboard (et les autres applications), vous pouvez :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Changer votre algorithme de compression préféré</para> </listitem> <listitem> <para>Régler le délai de gigue (jitter)</para> </listitem> <listitem> <para>Régler le volume</para> </listitem> <listitem> <para>Régler le niveau d'annulation d'écho.</para> </listitem> </orderedlist> </para> </sect3> </sect2> <sect2> <title>Quicknet LineJack</title> <para>Cette carte ressemble beaucoup à la précédente, elle prend aussi en charge la fonction de passerelle.</para> <para>Remarquons simplement qu'il faut <ulink url="http://www.quicknet.net/code.html">télécharger</ulink> l'application PSTNGx (pour Linux et Windows) ou utiliser Internet Switchboard pour utiliser la fonction de passerelle.</para> </sect2> <sect2> <title>Produits VoiceTronix</title> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Téléchargez d'abord le logiciel <ulink url="http://www.voicetronix.com.au/vpb-driver-2.1.8.tar.gz"> ici</ulink></para> </listitem> <listitem> <para>Décompactez-le</para> </listitem> <listitem> <para>Modifiez 'src/vpbreglinux.cpp' selon le fichier README</para> </listitem> <listitem> <para>Tapez 'make'</para> </listitem> <listitem> <para>Tapez 'make install'</para> </listitem> <listitem> <para>cd dans src</para> </listitem> <listitem> <para>Tapez 'insmod vpb.o'</para> </listitem> <listitem> <para>Récupérez (à la console ou dans la sortie de la commande 'dmesg') le numéro majeur, disons MAJEUR</para> </listitem> <listitem> <para>tapez 'mknod /dev/vpb0 c MAJEUR 0' où MAJEUR est le numéro susmentionné</para> </listitem> <listitem> <para>cd dans unittest et tapez './echo'</para> </listitem> </orderedlist> </para> <para>Suivez le fichier README pour plus d'aide.</para> <para>Je n'ai pas testé personnellement les produits VoiceTronix. Contactez <ulink url="http://www.voicetronix.com.au">le site web de VoiceTronix </ulink>pour tout support.</para> </sect2> </sect1> <sect1> <title>Installation</title> <para>Dans ce chapitre, nous essayons d'installer un système de VoIP, simple d'abord, puis de plus en plus complexe.</para> <sect2> <title>Communication simple : IP vers IP</title> <screen> A (Carte son) - - - B (Carte son) 192.168.1.1 - - - 192.168.1.2 192.168.1.1 appelle 192.168.1.2 et vice-versa. </screen> <para>A et B devraient avoir</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>une application comme Microsoft Netmeeting, Internet Switchboard, Openh323 (sous environnement Windows) ou Ohphone, Gnomemeeting (sous Linux), installée et correctement configurée. </para> </listitem> <listitem> <para>une carte réseau ou autre type d'interface TCP/IP pour communiquer.</para> </listitem> </orderedlist> </para> <para>Dans ce cas de figure, A fait un appel H323 à B (si B a une application serveur active) à l'aide de l'adresse IP de B. Puis B peut répondre s'il le souhaite. Après avoir accepter l'appel, les paquets de données VoIP commencent à circuler.</para> </sect2> <sect2> <title>Utiliser des noms</title> <para>Sous Microsoft Windows, on peut utiliser un nom NetBIOS à la place d'une adresse IP.</para> <screen> A - - - B 192.168.1.1 - - - 192.168.1.2 John - - - Alice John appelle Alice. </screen> <para>C'est possible car la requête d'appel de John à Alice est convertie en appel IP par le protocole NetBIOS.</para> <para>Ces deux exemples sont très faciles à implémenter mais ne montent pas en charge.</para> <para>Dans un cas plus étendu comme Internet, il est impossible d'utiliser l'appel direct, car en général les appelants ne connaissent pas l'adresse IP de destination. De plus le système de noms NetBIOS ne peut fonctionner car il utilise des messages broadcast, qui ne passent généralement pas les routeurs des FAI.</para> <para>Vous pouvez aussi utiliser le DNS pour résoudre les noms en adresses IP : par exemple vous pouvez appeler <quote>ordinateur.domaine.com</quote>.</para> </sect2> <sect2> <title>Appels sur Internet avec un serveur WINS</title> <para>L'idée d'appeler des noms NetBIOS peut aussi être implémentée en environnement Internet à l'aide d'un serveur WINS : les clients NetBIOS peuvent être configurés pour utiliser un serveur WINS pour résoudre les noms.</para> <para>Les PC utilisant le même serveur WINS pourront se faire des appels directs.</para> <screen> A (serveur WINS S) - - - - - I - - - - B (serveur WINS S) N T E - - - - - S (serveur Wins) C (serveur WINS S) - - - - - R N E - - - - D (serveur WINS S) T Communication Internet </screen> <para>A, B, C et D sont dans des sous-réseaux différents, mais ils peuvent s'appeler à la manière d'un appel de nom NetBIOS. Il faut que tous utilisent S comme serveur WINS.</para> <para>Remarque : le serveur WINS n'a pas de grandes performance car il utilise NetBIOS, et ne devrait être utilisé que pour réunir un petit nombre de sous-réseaux.</para> </sect2> <sect2> <title>Serveur ILS</title> <para>ILS est un type de serveur qui vous permet de résoudre votre nom durant un appel H323 : quand vous démarrez l'application de VoIP, vous enregistrez d'abord un nom sur le serveur ILS. Tout le monde pourra alors voir que vous utilisez ce nom (s'ils ont le même serveur ILS !). </para> </sect2> <sect2> <title>Un gros problème : le masquerading.</title> <para>Un problème de pénurie d'adresses IP peut être résolu en utilisant ce qu'on appelle le masquerading (ou NAT, network address translation, traduction d'adresse réseau) : il n'y a qu'une seule adresse IP publique (qui est <quote>vue</quote> directement sur Internet), les autres machines sont <quote>masquées</quote> sous cette IP.</para> <screen> A - - - B - - - Routeur NAT - - - Internet C - - - Ça ne fonctionne pas. </screen> <para>Dans l'exemple, A, B et C peuvent naviguer, pinguer, utiliser le mail et les news avec des gens sur Internet, mais ils NE PEUVENT PAS faire un appel de VoIP. En effet le protocole H323 envoie l'adresse IP au niveau applicatif, donc la réponse n'arrivera jamais à la source (qui utilise une adresse IP privée).</para> <para>Solutions:</para> <para> <itemizedlist> <listitem> <para>Il y a un module Linux qui modifie les paquets h323 pour éviter ce problème. Vous pouvez télécharger ce module <ulink url="http://www.coritel.it/coritel/ip/sofia/nat/nat2/nat2.htm"> ici</ulink>. Pour l'installer vous devez le copier dans le répertoire source spécifié, modifier le Makefile, le compiler et installer le module avec <quote>modprobe ip_masq_h323</quote>. Malheureusement ce module ne fonctionne pas actuellement avec ohphone (je ne sais pas pourquoi).</para> </listitem> </itemizedlist> </para> <screen> A - - - Routeur NAT B - - - + - - - Internet C - - - module ip_masq_h323 Ça fonctionne. </screen> <para> <itemizedlist> <listitem> <para> Il y a aussi une application qui résout ce problème. Voir <xref linkend="phonepatch"/> </para> </listitem> </itemizedlist> </para> <screen> A - - - B - - - PhonePatch - - - Internet C - - - Ça fonctionne. </screen> </sect2> <sect2> <title>Applications Open Source</title> <sect3> <title>Syntaxe d'Ohphone</title> <para>La syntaxe est :</para> <para><quote>ohphone -l|--listen [options]</quote></para> <para><quote>ohphone [options]... adresse</quote></para> <para> <itemizedlist> <listitem> <para><quote>-l</quote>, écoute sur le port standard (1720)</para> </listitem> <listitem> <para><quote>adresse</quote>, signifie que nous n'attendons pas d'appel, mais que nous nous connectons à la machine <quote>adresse</quote></para> </listitem> <listitem> <para><quote>-n</quote>, <quote>--no-gatekeeper</quote>, c'est bon si nous n'avons pas de portier</para> </listitem> <listitem> <para><quote>-q num</quote>, <quote>--quicknet num</quote>, utilise la carte Quicknet, périphérique /dev/phone(num)</para> </listitem> <listitem> <para><quote>-s device</quote>, <quote>--sound device</quote>, utilise le périphérique audio /dev/device.</para> </listitem> <listitem> <para><quote>-j délai</quote>, <quote>--jitter délai</quote>, change le tampon de délai à <quote>délai</quote>.</para> </listitem> </itemizedlist> </para> <para>De plus, une fois que vous avez lancé ohphone, vous pouvez donner directement des commandes à l'interpréteur (comme de diminuer l'AEC, Automatic Echo Cancellation, annulation automatique d'écho). </para> </sect3> <sect3> <title>Gnomemeeting</title> <para>Gnomemeeting est une application utilisant une interface graphique utilisateur pour faire des appels VoIP. Elle est très simple à utiliser et vous permet d'utiliser un serveur ILS, un chat et d'autres choses.</para> </sect3> </sect2> <sect2> <title>Installer un portier</title> <para>Vous pouvez aussi expérimenter la fonction de portier.</para> <screen> Exemple (Terminal H323) A - - - \ (Terminal H323) B - - - D (Portier) / (Terminal H323) C - - - Configuration du portier </screen> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Les machines A, B et C sont configurées pour pointer sur le portier D.</para> </listitem> <listitem> <para>Au démarrage, chaque machine donne sa propre adresse et son propre nom (avec aussi des alias) à D, qui pourra être utilisé par un appelant pour la contacter.</para> </listitem> <listitem> <para>Quand un terminal demande une machine à D, D répond en donnant la bonne adresse IP, afin de pouvoir établir la communication.</para> </listitem> </orderedlist> </para> <para>Nous devons remarquer que le Portier est seulement capable de résoudre des noms en adresses IP : il ne pourrait pas relier des machines qui ne sont pas joignables entre elles (au niveau IP), autrement dit il ne pourrait pas fonctionner comme routeur NAT.</para> <para>Vous pouvez trouver du code de portier <ulink url="http://www.opengatekeeper.org">ici</ulink>: la <ulink url="http://www.openh323.org/code.html">librairie openh323 </ulink>est également nécessaire.</para> <para>Le programme peut être lancé avec les paramètres -d (démon) ou -x (execute).</para> <para>Vous pouvez de plus utiliser un fichier de config (.ini) que vous trouverez <ulink url="http://www.opengatekeeper.org/opengate.ini"> ici</ulink>.</para> </sect2> <sect2> <title>Installer une passerelle</title> <para>Comme nous l'avons dit, une passerelle est une entité qui peut relier la VoIP aux lignes du RTCP ce qui nous permet de faire des appels d'Internet vers un téléphone classique. Donc, en plus, il nous faut une carte capable de gérer des lignes RTCP : Quicknet LineJack le fait.</para> <para>Sur le <ulink url="http://www.openh323.org">site web OpenH323</ulink> nous téléchargeons :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>le pilote de Linejack</para> </listitem> <listitem> <para>l'application PSTNGw pour créer notre passerelle.</para> </listitem> </orderedlist> </para> <para>Si l'exécutable ne fonctionne pas vous devrez télécharger le code source et la <ulink url="http://www.openh323.org/code.html">librairie openh323 </ulink>, puis tout installer dans un répertoire personnel.</para> <para>Ensuite il vous suffit de lancer PSTNGw pour démarrer votre passerelle H323.</para> </sect2> <sect2> <title>Matrice de compatibilité</title> <para>La première matrice fait référence à :</para> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Communications entre logiciels (ex: Netmeeting avec Switchboard)</para> </listitem> <listitem> <para>Communication entre logiciels, pilotes et matériel (ex: Netmeeting peut utiliser une carte PhoneJack)</para> </listitem> </orderedlist> </para> <screen> _____________________________________________________________________________________________________________________ | | Netmeeting |SwitchBoard | Simph323 | OhPhone | LinPhone |Speak-Freely|HW PhoneJACK|HW 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 _ _ |____________|____________|____________|____________|____________|_____________|____________|____________|____________| </screen> <para>La seconde matrice fait référence aux logiciels de passerelle qui gèrent la carte LineJack.</para> <screen> ___________________________________________________________ | |HW LineJACK GW| SwitchBoard | PSTNGW | |______________|______________|______________|______________| |HW LineJACK GW| _ | V | V | |______________|______________|______________|______________| | SwitchBoard | V | _ | _ | |______________|______________|______________|______________| | PSTNGW | V | _ | _ | |______________|______________|______________|______________| </screen> <para>Notation:</para> <para> <itemizedlist> <listitem> <para>V : Fonctionne</para> </listitem> <listitem> <para>X : Ne fonctionne pas</para> </listitem> <listitem> <para>-- : Non significatif</para> </listitem> </itemizedlist> </para> </sect2> </sect1> <sect1> <title>Communications sur des lignes RTCP</title> <sect2> <title>Généralités</title> <para>La VoIP devient très intéressante quand vous commencez à utiliser des lignes RTCP pour appeler d'autres gens dans le monde, directement sur leur téléphone à domicile.</para> </sect2> <sect2> <title>Scénario</title> <para>Une application typique serait :</para> <screen> Téléphone 1 -- (RTCP) -- PC1 -- (Internet) -- PC2 -- (RTCP) -- Téléphone 2 </screen> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Le téléphone 1 appelle le numéro du PC1 (sur le RTCP, càd la ligne téléphonique classique)</para> </listitem> <listitem> <para>Le PC1 lui répond.</para> </listitem> <listitem> <para>Le téléphone 1 doit dire au PC1 quelle passerelle utiliser (le PC2 dans ce cas) en lui donnant son adresse IP (par le clavier à tonalités) et/ou le numéro à appeler (dans ce cas le téléphone 2)</para> </listitem> <listitem> <para>Puis PC1 fait un appel H323 au PC2, puis il transmet le numéro du téléphone 2 au PC2 pour que celui-ci fasse un appel sur le RTCP.</para> </listitem> <listitem> <para>Le téléphone 2 répond à l'appel et la communication entre le téléphone 1 et le téléphone 2 commence.</para> </listitem> </orderedlist> </para> </sect2> <sect2> <title>Que peut-on changer dans cette configuration ?</title> <para> <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>Vous pouvez utiliser un autocommutateur privé pour sélectionner plusieurs lignes accédant à la passerelle PC1 (par exemple une pour appeler à l'intérieur de votre état, une pour appeler en Europe, et cætera) : en général vous n'avez pas à changer cela, car le coût reste le même.</para> </listitem> <listitem> <para>Vous pouvez sélectionner (après avoir appelé votre passerelle PC1) le PC2 de votre choix (par exemple un PC2 se trouvant en Angleterre pour appeler un Anglais afin de payer seulement les coûts de communications nationales).</para> </listitem> </orderedlist> </para> <para>Votre décision dépendra donc des coûts des lignes RTCP. En fait, la VoIP fait la conversion de :</para> <screen> Téléphone 1 --- (RTCP) --- Téléphone 2 Coût d'un appel grande distance RTCP </screen> <para>en :</para> <screen> Téléphone 1 --- (RTCP) --- PC1 + PC2 ---- (RTCP) --- Téléphone 2 = -------------------------------------- 2 coûts d'appel RTCP courte distance </screen> <para>Pour économiser de l'argent vous avez besoin que :</para> <screen> 2 coûts d'appel RTCP courte distance < coût d'appel RTCP grande distance </screen> <para>Généralement, un <quote>appel à courte distance</quote> désigne un <quote>appel local</quote> alors qu'un <quote>appel grande distance</quote> peut être un <quote>appel intercontinental</quote> !</para> </sect2> </sect1> <sect1> <title>Considérations de bande passante</title> <para>Après tout ce que nous avons dit, nous n'avons toujours pas résolu le problème de bande passante : comment créer un flux de données en temps réel.</para> <para>Nous savons que nous ne trouverons pas de solution tant que nous n'auront pas un protocole de gestion du temps réel dans chaque routeur que nous traversons, donc que pouvons nous faire ?</para> <para>D'abord nous essayons d'utiliser des algorithmes de compression à taux très élevé (autant que possible, comme LPC10 qui ne consomme que 2,5 kbps de bande passante, environ 313 octets/s).</para> <para>Puis nous essayons de classifier nos paquets, dans le champ TOS, en leur donnant le niveau de priorité maximum, afin que chaque routeur nous aide à le recevoir le plus urgemment possible.</para> <para>Important : tout cela ne suffit pas à garantir que notre conversation sera toujours bonne, mais sans grosse infrastructure gérant la mise en forme du trafic, la réservation de bande passante, et cætera. Il n'est pas possible de le faire : TCP/IP n'est pas un protocole en temps réel.</para> <para>Une solution possible pourrait être de commencer avec de petits WAN à bande passante garantie et de s'agrandir étape par étape.</para> <para>Enfin, il faut remarquer une chose : les services supposés garantis, comme les lignes RTCP, ne pouvaient pas non plus gérer tous leurs clients. Par exemple, un appel GSM n'est pas capable de gérer plus de quelques centaines ou quelques milliers de clients.</para> <para>En tout cas, pour un service qui débute, limité à quelques utilisateurs, la VoIP peut être une alternative valable au service RTCP classique.</para> </sect1> <sect1> <title>Glossaire</title> <para>RTCP : Réseau Téléphonique Commuté Public</para> <para>VoIP : Voice over Internet Protocol</para> <para>LAN : Local Area Network</para> <para>WAN : Wide Area Network</para> <para>TOS : Type Of Service</para> <para>FAI : Fournisseur d'Accès Internet</para> <para>RTP : Real Time Protocol</para> <para>RSVP : ReSerVation Protocol</para> <para>QoS : Quality of Service</para> </sect1> <sect1> <title>Liens utiles</title> <sect2> <title>Liens vers des logiciels open source</title> <para> <itemizedlist> <listitem> <para> <ulink url="http://www.voxilla.org">Voxilla</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.linuxtelephony.org">Linux Telephony</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.openh323.org">Site web Open H323</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.gnomemeeting.org/"/> </para> </listitem> <listitem> <para> <ulink url="http://www.speakfreely.org">Speak Freely</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.linphone.org"/> </para> </listitem> <listitem> <para> <ulink url="http://www.fsf.org/software/osip"/> </para> </listitem> <listitem> <para> <ulink url="http://www.gnu.org/software/bayonne"/> </para> </listitem> </itemizedlist> </para> </sect2> <sect2> <title>Liens commerciaux</title> <para> <itemizedlist> <listitem> <para> <ulink url="http://www.fatamorgana.com">Fatamorgana Computers</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.itu.org">International Communication Union</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.voicetronix.com.au">Voicetronix</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.quicknet.net">Quicknet</ulink> </para> </listitem> <listitem> <para> <ulink url="http://www.cisco.com">Cisco Systems</ulink> </para> </listitem> <listitem> <para> <ulink url="www.metropark.com">www.metropark.com</ulink> </para> </listitem> <listitem> <para> <ulink url="www.nbxsoftware.com">www.nbxsoftware.com</ulink> </para> </listitem> </itemizedlist> </para> </sect2> </sect1> </article>