<?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&nbsp;: 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 &copy; 2000, 2001 Roberto Arcomano. Ce document est 
        libre &nbsp; vous pouvez le redistribuer et le modifier sous les 
        termes de la licence GNU General Public License publiée par la 
        Free Software Foundation&nbsp;; 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&nbsp;; 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&nbsp;:</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&nbsp;! 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)&nbsp;: 
                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&nbsp;! Vous n'avez qu'à me 
                faire savoir (si vous le souhaitez) que vous avez fait une traduction.
                </para>
      <para>Merci pour votre traduction&nbsp;!</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&nbsp;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&nbsp;: les PC pour le grand public, les 
          nouvelles technologies pour communiquer, comme les téléphones 
          cellulaires et enfin le grand réseau&nbsp;: 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&nbsp;: 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&nbsp;: 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&nbsp;: l'UMTS, la VoIP
                (avec l'extension vidéo) ou autre chose&nbsp;? 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&nbsp;?</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&nbsp;?</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&nbsp;: 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&nbsp;: on peut le 
                compresser, le router, le convertir en un nouveau format meilleur, et 
                ainsi de suite&nbsp;; 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&nbsp;: 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&nbsp;?</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&nbsp;: 
                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à&nbsp;?</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)&nbsp;: 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&nbsp;:</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&nbsp;: 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&nbsp;! (voir la section 
                                QoS)</para>
          </listitem>
        </orderedlist>
      </para>

<screen>
                          Architecture de base
Voix )) CAN - Algorithme de Compression -  Assembler RTP dans TCP/IP -----
                                                             ----&gt;     |
                                                             &lt;----     | 
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&nbsp;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&nbsp;: 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&nbsp;kHz, donc la fréquence 
                                d'échantillonnage doit être de 8&nbsp;kHz (Nyquist).</para>
          </listitem>
          <listitem>
            <para>Nous représentons chaque échantillon par 8&nbsp;bits (ce qui 
                                donne 256 valeurs possibles).</para>
          </listitem>
          <listitem>
            <para>
                 Le débit est de 8000 Hz * 8&nbsp;bits = 64&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;: jusqu'à 26&nbsp;MIPS&nbsp;!</para>
    </sect2>
    <sect2>
      <title>RTP&nbsp;: 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&nbsp;:</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ù&nbsp;:</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&nbsp;:</para>
      <para>
        <orderedlist inheritnum="ignore" continuation="restarts">
          <listitem>
            <para>
            
            Le champ TOS du protocol IP, qui indique le type de 
            service&nbsp;: 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&nbsp;:
            <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&nbsp;:
            <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&nbsp;:</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&nbsp;:
            <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&nbsp;: 
      <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&nbsp;:</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&nbsp;: 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&nbsp;!</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&nbsp;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&nbsp;:</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&nbsp;!! 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&nbsp;: 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&nbsp;:</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&nbsp;:</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&nbsp;:
                                
      </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&nbsp;:</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&nbsp;:</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&nbsp;:</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 &num; à 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&nbsp;!! 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&nbsp;:</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)&nbsp;: 
                                  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&nbsp;:</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&nbsp;: 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&nbsp;: 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&nbsp;: 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&nbsp;: 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&nbsp;: 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&nbsp;!).
                </para>
    </sect2>
    <sect2>
      <title>Un gros problème&nbsp;: 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)&nbsp;: 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&lowbar;masq&lowbar;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&nbsp;:</para>
        <para><quote>ohphone -l&verbar;--listen
        &lsqb;options&rsqb;</quote></para>
        <para><quote>ohphone &lsqb;options&rsqb;... 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&nbsp;: 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&nbsp;: Quicknet LineJack le 
                fait.</para>
      <para>Sur le 
      <ulink url="http://www.openh323.org">site web OpenH323</ulink> nous
      téléchargeons&nbsp;:</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 à&nbsp;:</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&nbsp;: Fonctionne</para>
          </listitem>
          <listitem>
            <para>X&nbsp;: Ne fonctionne pas</para>
          </listitem>
          <listitem>
            <para>--&nbsp;: 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&nbsp;:</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&nbsp;?</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)&nbsp;: 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&nbsp;:</para>

<screen>
Téléphone 1 --- (RTCP) --- Téléphone 2
             Coût d'un appel grande distance RTCP
</screen>

      <para>en&nbsp;:</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&nbsp;:</para>

<screen>
2 coûts d'appel RTCP courte distance &lt; 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>&nbsp;!</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&nbsp;: 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&nbsp;?</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 
        &nbsp;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&nbsp;: 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&nbsp;: 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&nbsp;: 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&nbsp;: Réseau Téléphonique Commuté Public</para>
    <para>VoIP&nbsp;: Voice over Internet Protocol</para>
    <para>LAN&nbsp;: Local Area Network</para>
    <para>WAN&nbsp;: Wide Area Network</para>
    <para>TOS&nbsp;: Type Of Service</para>
    <para>FAI&nbsp;: Fournisseur d'Accès Internet</para>
    <para>RTP&nbsp;: Real Time Protocol</para>
    <para>RSVP&nbsp;: ReSerVation Protocol</para>
    <para>QoS&nbsp;: 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>
Heberge par Ikoula