<?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>