<?xml version="1.0" encoding="UTF-8"?>
<!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>Alain</firstname>
    <surname>Boulé</surname>
    <contrib>Relecture de la version française</contrib>
    <email>alain POINT boule CHEZ free POINT fr</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, AB, 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, tels que la diffusion sur Internet à faible coût, 
		l'intégration récente de processeurs dédiés de compression de voix, ont 
		modifié les exigences des utilisateurs ordinaires et ont rendu possible 
		la diffusion des normes VoIP. Ce guide pratique essaie de définir 
		certains éléments de base de l'architecture VoIP.</para>
      <para>Merci d'envoyer 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 guide pratique est disponible sur le 
         site de l'association <ulink url="&traduc;">Traduc.org</ulink>.

     </para>

     <para>
      
         Le site <ulink url="http://www.bertolinux.com/"/> 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">http://www.lyx.org</ulink>.</para>
      <para>Il n'est pas nécessaire de me demander l'autorisation de traduire
		&nbsp;! Faites-le moi savoir (si vous le souhaitez) lorsque vous aurez 
		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 personne 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é par 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. Une
		nouvelle idée, en particulier, commence à se répandre, qui représente 
      peut-être l'avenir, et qui permet l'échange de 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 nous le représenter avec une multitude d'ordinateurs, l'Internet 
		haut débit presque partout et des gens qui se parlent (en audio et en 
		vidéo) en temps réel. Pour cela, ils nous suffit de connaître les
		moyens d'y parvenir&nbsp;: l'UMTS, la VoIP (avec extension vidéo) ou 
		peut-être 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 qu'il pourrait 
		bien être le moyen de communication du futur.</para>
    </sect2>
  </sect1>
  <sect1>
    <title>Généralités</title>
    <sect2>
      <title>Qu'est-ce que la VoIP&nbsp;?</title>
      <para>VoIP signifie Voice over Internet Protocol ou Voix sur IP (IP = 
		Protocole Internet). Comme son nom l'indique, la VoIP essaie de 
		transmettre des sons (en particulier la voix) dans des paquets IP 
		circulant 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>De nombreuses années en arrière, nous avons découvert qu'il était 
		possible de transmettre un signal à une destination éloignée sous forme
		de données numériques. Avant la transmission, il faut numériser le
		signal à l'aide d'un CAN (convertisseur analogique-numérique). Le 
		signal est ensuite transmis, et, pour être utilisable, doit être 
		transformé à nouveau, par le récepteur, en un signal analogique, à 
		l'aide d'un CNA (convertisseur numérique-analogique).</para>
      <para>La VoIP fonctionne ainsi, par numérisation de la voix et 
		transmission dans des paquets de données, puis par reconversion des 
		paquets numériques en voix à l'arrivée.</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 des supports de circulation 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>Quand vous utilisez une ligne du RTCP, vous payez généralement le 
		temps de communication à la société qui gère la ligne téléphonique&nbsp;: 
		plus vous passez de temps au téléphone et plus vous payez. De plus, 
		vous ne pouvez parler qu'à une personne à la fois.</para>
      <para>La VoIP vous permet, au contraire, à tout moment, de parler à la
		personne que vous souhaitez (pourvu qu'elle soit connectée à Internet 
		au même moment), aussi longtemps que vous le souhaitez (sans coût
		supplémentaire), et de plus, vous pouvez parler à plusieurs 
		personnes en même temps.</para>
      <para>Si vous n'êtes pas encore convaincu, considérez qu'il est 
		possible, en simultané, d'échanger des données avec vos interlocuteurs, 
		d'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, il faut reconnaître des problèmes d'intégration 
		de l'architecture VoIP et d'Internet. Comme vous pouvez 
		facilement l'imaginer, les communications de données vocales 
		nécessitent une transmission en temps réel (on n'admettrait pas de 
		parler et d'attendre plusieurs secondes qu'arrive la réponse à l'autre 
		bout). Cette contrainte entre en contradiction avec l'architecture 
		hétérogène d'Internet qui comprend de nombreux routeurs (équipement
		d'aiguillage des paquets), un nombre typique est 20-30, voire plus, 
		ce qui donne un temps d'aller-retour (RTT, round trip time) très long. 
		Il est donc nécessaire d'effectuer des modifications pour que cela
		fonctionne.</para>
      <para>Dans les sections ci-dessous nous allons essayer de comprendre 
		comment il est possible de résoudre ce problème majeur. 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>Ci-dessous sont présentés des aspects importants qu'il faut 
	 connaître pour comprendre le fonctionnement de la VoIP.</para>
    <sect2>
      <title>Description d'une connexion VoIP</title>
      <para>L'établissement d'une connexion VoIP nécessite&nbsp;:</para>
      <para>
        <orderedlist inheritnum="ignore" continuation="restarts">
          <listitem>
            <para>D'abord le CAN qui permet de convertir la voix analogique en 
				signaux numériques (bits).</para>
          </listitem>
          <listitem>
            <para>Les bits doivent être ensuite compressés en un format 
				adapté à la transmission&nbsp;: il existe plusieurs protocoles 
				que nous allons examiner ci-dessous.</para>
          </listitem>
          <listitem>
            <para>Il faut ensuite transmettre les données numériques vocales 
				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>Il est nécessaire d'utiliser un protocole de signalisation 
				pour appeler les usagers. ITU-T H323 le permet.</para>
          </listitem>
          <listitem>
            <para>À la réception, il faut désassembler les paquets, 
				extraire les données, les convertir en signaux analogiques 
				représentant la voix, puis les transmettre à une carte son (ou 
				à un téléphone).
				</para>
          </listitem>
          <listitem>
            <para>Tout cela doit être réalisé en temps réel, afin d'éviter 
				une attente trop longue de 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 
		une bande de 22050 Hz en données de 16 bits (l'échantillonnage doit 
		être réalisé à une fréquence de 44100 Hz en raison du principe de 
		Nyquist), cela donne un débit de 2 octets * 44100 échantillons par 
		seconde = 88200 octets/s soit 176,4 ko/s pour un flux stéréo.</para>
      <para>La VoIP ne nécessite pas un tel débit pour la transmission des 
		paquets de voix&nbsp;: nous allons examiner ci-dessous les différents 
		codages qui seront utilisés en pratique.</para>
    </sect2>
    <sect2>
      <title>Algorithmes de compression</title>
      <para>Comme nous disposons maintenant de données numériques, nous 
		pouvons les convertir dans un format standard qui permet une 
		transmission rapide.</para>

<screen>
PCM, modulation par impulsion et codage (MIC), norme 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, modulation par impulsion et codage différentiel adaptatif (MICDA), norme ITU-T G.726
</screen>

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

<screen>
LD-CELP, norme ITU-T G.728
CS-ACELP, normes ITU-T G.729 et G.729a
MP-MLQ, norme ITU-T G.723.1, 6.3kbps, Truespeech
ACELP, norme ITU-T G.723.1, 5.3kbps, Truespeech
LPC-10, norme capable d'atteindre 2.5&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>Nous disposons maintenant des données brutes, il faut les 
		empaqueter en données de protocole TCP/IP, en respectant le schéma
		suivant&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>On remarque, d'abord, que la VoIP n'utilise pas le protocole TCP, 
		trop lourd pour les applications en temps réel. On utilise, à la place,
		les datagrammes du protocole UDP.</para>
      <para>Ensuite, UDP ne garantit ni l'ordre d'arrivée à destination des 
		paquets, ni leur temps de transfert (principe du datagramme). Ces deux 
		propriétés sont très importantes pour la qualité générale de la voix 
		(la bonne compréhension des paroles de l'interlocuteur) et la qualité 
		de la conversation (la facilité de son déroulement). RTP résout le 
		problème en permettant au destinataire de remettre les paquets dans 
		l'ordre et en évitant une attente excessive des paquets égarés en
		chemin ou trop longs à parvenir (il n'est pas nécessaire de recevoir 
		chaque paquet, il faut par contre disposer d'un flux continu, en
		nombre suffisant, de paquets dans l'ordre).</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 représente la version utilisée du protocole RTP</para>
          </listitem>
          <listitem>
            <para>P indique la présence d'un octet de bourrage (padding), à 
				la fin du paquet, pour obtenir un paquet de longueur paire</para>
          </listitem>
          <listitem>
            <para>X indique la présence d'une extension d'en-tête</para>
          </listitem>
          <listitem>
            <para>Le champ CC représente le nombre d'identifiants CSRC qui 
				suivent l'en-tête fixe. Les champs CSRC servent, notamment, 
				pour 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 un 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 reprises que les applications de 
		VoIP nécessitaient un flux de données en temps réel car le but est 
		d'obtenir un échange vocal interactif.</para>
      <para>Malheureusement, TCP/IP ne permet pas d'atteindre cet d'objectif, 
		il ne peut que faire <quote>au mieux</quote>. Il va falloir utiliser 
		des astuces et des stratégies pour la gestion du flux des paquets dans
		CHACUN des routeur que nous allons traverser.</para>
      <para>On peut ainsi utiliser&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 un degré d'urgence 
				faible, alors que des valeurs faibles signifient un degré
				d'urgence important, compatible avec 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
					 (ainsi, FTP ne peut pas consommer la totalité de la bande 
					 passante disponible) entre les différents flux de données,
					 avec, en général, un paquet pour UDP et un pour TCP, en
					 alternance.</para>
              </listitem>
              <listitem>
                <para>CQ (Custom Queuing, mise en file d'attente 
					 personnalisée), les utilisateurs peuvent décider de la 
					 priorité.</para>
              </listitem>
              <listitem>
                <para>PQ (Priority Queuing, file d'attente avec priorité), il
					 existe plusieurs files (en général quatre), chacune 
					 disposant d'un niveau de priorité. Les paquets de la file la
					 plus prioritaire 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 - Mise en file 
					 d'attente par classes, pondérée et équitable), semblable à WFQ, 
					 avec en plus une notion de classes (jusqu'à 64)&nbsp; à 
					 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>Le protocole H323 concerne 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 ; pour la vidéo il prend en 
		charge h261 et h263.</para>
      <para>On trouvera des informations complémentaires sur h323 sur les
		sites Web <ulink url="http://www.openh323.org/standards.html">Openh323
      Standards</ulink> et 
      <ulink url="http://www.cs.columbia.edu/~hgs/rtp/h323.html">h323</ulink>
		 ainsi que dans le document de définition de la 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 supérieur</para>
          </listitem>
          <listitem>
            <para>Carte son, compatible full duplex (duplex intégral)</para>
          </listitem>
          <listitem>
            <para>une carte réseau, une connexion Internet ou tout autre type 
				d'interface permettant la communication entre deux PC</para>
          </listitem>
        </orderedlist>
      </para>
      <para>Chacun de ces éléments doit être présent en double exemplaire 
		comme pour une véritable communication.</para>
      <para>Les éléments ci-dessus sont le minimum requis pour une 
		connexion VoIP&nbsp;: nous verrons plus loin quel est le matériel qui 
      serait nécessaire (et qui l'est pour Internet) pour assurer la même 
		fonction en situation réelle.</para>
      <para>La carte son doit être full duplex si on veut pouvoir parler 
		et entendre en même temps&nbsp;!</para>
      <para>Il est possible par ailleurs d'utiliser des cartes (voir 
		ci-dessous) qui gèrent un flux de données en format compressé (voir § 
		4.3).</para>
    </sect2>
    <sect2>
      <title>Cartes d'accélération matérielle</title>
      <para>Il est possible d'utiliser des cartes spéciales dotées de fonctions
		d'accélération matérielle. Cinq d'entre elles (les seules à 
		être prises en charge actuellement par le noyau Linux) sont les
		suivantes&nbsp;:</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>La carte Quicknet LineJack fonctionne comme la carte PhoneJack avec des 
		caractéristiques en plus (voir ci-dessous).</para>
      <para>La carte VoiceTronix V4PCI est une carte PCI comme la carte Quicknet 
		LineJack mais avec 4 ports de type téléphone.</para>
      <para>La carte VoiceTronix VPB4 est une carte ISA équivalente à la carte V4PCI.</para>
      <para>La carte VoiceTronix VPB8L est une carte à journalisation à 8 ports.
		</para>
      <para>Pour obtenir des infos supplémentaires, consultez 
      <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>Un logiciel spécifique est nécessaire pour cette utilisation (voir 
		ci-dessous).</para>
    </sect2>
    <sect2>
      <title>Prérequis logiciels</title>
      <para>On peut choisir l'un de ces systèmes d'exploitation&nbsp;:</para>
      <para>
        <orderedlist inheritnum="ignore" continuation="restarts">
          <listitem>
            <para>Win9x</para>
          </listitem>
          <listitem>
            <para>Linux</para>
          </listitem>
        </orderedlist>
      </para>
      <para>Les logiciels pour Win9x sont, en particulier, Microsoft NetMeeting, 
		Internet Phone, DialPad, et, pour les cartes Quicknet, Internet Switchboard 
		(disponible sur le <ulink url="http://www.quicknet.net">site web de 
		Quicknet</ulink>).
		</para>
      <para>Attention&nbsp;!! Les dernières cartes Quicknet utilisant Switchboard 
		(ancienne version aussi) DOIVENT être connectées à Internet pour 
		avoir accès à un compte Microtelco (payant), aussi, si vous ne
		souhaitez pas être connecté à Internet vous devrez installer
      <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;: le code source complet d'Openh323 doit être compilé dans 
		un répertoire utilisateur (sinon il est nécessaire de modifier certaines variables
		d'environnement). Notez que le temps de compilation peut
		être très long et qu'une quantité importante de RAM est nécessaire si
		on veut le réduire à une durée raisonnable.</para>
    </sect2>
    <sect2>
      <title>Logiciel de passerelle</title>
      <para>La fonction de passerelle (qui assure la liaison entre les lignes TCP/IP, 
		VoIP et RTCP) nécessite un logiciel, tel que&nbsp;:</para>
      <para>
        <itemizedlist>
          <listitem>
            <para>
            <ulink url="http://www.quicknet.net">Internet
            SwitchBoard</ulink> (nécessitant une connexion à Internet) 
				pour les systèmes Windows, qui 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 un logiciel utile conformes à h323&nbsp;:
				
      </para>
      <para>
        <itemizedlist>
          <listitem>
            <para>Phonepatch, pouvant fonctionner derrière un pare-feu 
				NAT. Il permet aux utilisateurs (aussi bien externes qu'internes) 
				d'appeler, simplement, à partir une page web. Quand l'application web 
				voit que l'hôte distant est prêt, elle appelle la source, en h323, 
            pour l'informer 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>La configuration du matériel spécifique, en environnement Linux ou 
	 Windows, est présentée ci-dessous.</para>
    <sect2>
      <title>Quicknet PhoneJack</title>
      <para>Comme nous l'avons déja vu, la carte Quicknet PhoneJack est une 
		carte son à fonction d'accélération spécifique à la VoIP. Ses 
		caractéristiques sont les suivantes&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 pour téléphone (permettant d'appeler directement 
				depuis un téléphone) ou</para>
          </listitem>
          <listitem>
            <para>prises Jacks pour microphone et hauts-parleurs.</para>
          </listitem>
        </itemizedlist>
      </para>
      <para>La carte Quicknet PhoneJack est une carte ISA (ou PCI) à installer 
		dans le boîtier du 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>Le pilote de la carte</para>
            </listitem>
            <listitem>
              <para>L'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>Une fois Switchboard installé, il faut s'enregistrer auprès de 
		  Quicknet pour bénéficier des pleines capacités de la carte.</para>
        <para>Lorsque vous décrochez le téléphone, Internet Switchboard se 
		  réveille et attend que vous composiez un numéro d'appel (directement 
		  à partir du téléphone). Vous pouvez effectuer l'une des opérations 
		  suivantes&nbsp;: </para>
        <para>
          <orderedlist inheritnum="ignore" continuation="restarts">
            <listitem>
              <para>Taper un astérisque, puis un numéro IP (des astérisques 
				  remplaçant les points), et un &num; à la fin</para>
            </listitem>
            <listitem>
              <para>Composer le numéro d'appel (avec préfixe international) 
				  d'un abonné du réseau téléphonique classique. Dans ce cas, il 
				  est nécessaire d'être abonné à un gestionnaire de passerelle 
				  qui vous facturera le temps de communication.</para>
            </listitem>
            <listitem>
              <para>Composer un code d'accès rapide (un ou deux chiffres), 
				  que vous aurez stocké au préalable, pour effectuer un appel de 
				  type IP ou RTCP.</para>
            </listitem>
          </orderedlist>
        </para>
        <para>Internet Switchboard est compatible avec h323, il est ainsi 
		  possible de correspondre, par exemple, avec Microsoft Netmeeting.</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, à partir du 
              <ulink url="http://www.quicknet.net">site web de Quicknet
				  </ulink>. Une fois téléchargés, vous devrez compiler les 
				  fichiers sources. (il faut disposer d'un lien symbolique ou 
				  physique vers le répertoire des sources de linux /usr/src/linux). 
				  Pour obtenir la marche à suivre, tapez la commande 'make'.</para>
            </listitem>
            <listitem>
              <para>Une des applications 
              <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 (valable 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>Se placer dans le répertoire src (cd src)</para>
          </listitem>
          <listitem>
            <para>Tapez 'insmod vpb.o'</para>
          </listitem>
          <listitem>
            <para>Retrouvez (à partir de la console ou à l'aide de la commande 
				'dmesg') le numéro majeur, noté ci-dessous MAJEUR</para>
          </listitem>
          <listitem>
            <para>tapez 'mknod /dev/vpb0 c MAJEUR 0' où MAJEUR est le numéro
				susmentionné</para>
          </listitem>
          <listitem>
            <para>se placer dans le répertoire unittest (cd unittest) et taper './echo'</para>
          </listitem>
        </orderedlist>
      </para>
      <para>Le fichier README contient des informations plus détaillées</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 allons installer un système VoIP, d'abord 
	 simple, 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. Une fois l'appel accepté, 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>Ceci est possible car la requête d'appel de John à Alice a été 
		convertie en appel IP par le protocole NetBIOS</para>
      <para>Ces deux exemples sont très faciles à implémenter mais n'autorisent 
		pas la montée en charge.</para>
      <para>Dans le cas d'un réseau 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 du destinataire. De plus, la gestion des 
		noms NetBIOS ne peut pas fonctionner car elle utilise des messages broadcast, 
		qui ne passent pas au travers des routeurs des FAI, en général.</para>
      <para>Vous pouvez aussi utiliser DNS pour la résolution des noms en 
		adresses IP. Il est possible, par exemple, d'appeler le correspondant 
		nommé <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. Il est possible de 
		configurer les clients NetBIOS afin qu'ils utilisent un serveur WINS 
		pour la résolution des noms</para>
      <para>Les PC qui utilisent le même serveur WINS peuvent s'appeler 
		directement</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;: les performances du serveur WINS sont réduites 
		car il utilise NetBIOS&nbsp; on ne devrait l'utiliser que pour un nombre 
		restreint de sous-réseaux .</para>
    </sect2>
    <sect2>
      <title>Serveur ILS</title>
      <para>Les serveurs de type ILS permettent de résoudre un nom lors d'un 
		appel H323&nbsp;: lorsque vous démarrez une application VoIP, vous 
		commencez par enregistrer un nom sur le serveur ILS. L'ensemble des 
		utilisateurs pourront alors vous joindre à l'aide de ce nom (s'ils 
		possèdent le même serveur ILS&nbsp;!). 
		</para>
    </sect2>
    <sect2>
      <title>Un gros problème&nbsp;: le masquerading.</title>
      <para>On peut remédier à une pénurie d'adresses IP par utilisation du 
		masquage d'adresses (masquerading ou NAT, network address translation, 
		traduction d'adresse réseau)&nbsp;: une seule adresse IP est publique 
		(<quote>vue</quote> sur Internet), les autres machines sont 
		<quote>masquées</quote> par cette adresse 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>Un module Linux particulier qui modifie les paquets h323 
				permet d'éviter ce problème. Vous pouvez le télécharger 
            <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 &lsqb;options&rsqb; ou 
		  ohphone --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>, convient en
				  l'absence de portier</para>
            </listitem>
            <listitem>
              <para><quote>-q num</quote>, <quote>--quicknet num</quote>, utiliser la carte Quicknet,
				  périphérique /dev/phone(num)</para>
            </listitem>
            <listitem>
              <para><quote>-s device</quote>, <quote>--sound device</quote>, utiliser le périphérique
				  audio /dev/device.</para>
            </listitem>
            <listitem>
              <para><quote>-j délai</quote>, <quote>--jitter délai</quote>, passer le 
				  délai du tampon à la valeur <quote>délai</quote>.</para>
            </listitem>
          </itemizedlist>
        </para>
        <para>De plus, une fois ohphone lancé, il est possible de passer 
		  directement des commandes à l'aide de l'interpréteur (par exemple, pour 
		  diminuer l'AEC, Automatic Echo Cancellation, annulation automatique d'écho). 
		  </para>
      </sect3>
      <sect3>
        <title>Gnomemeeting</title>
        <para>Gnomemeeting est une application avec interface utilisateur 
		  graphique permettant d'effectuer des appels VoIP. Son utilisation est 
		  très simple et elle fournit, entre autres, un serveur ILS, et un chat.</para>
      </sect3>
    </sect2>
    <sect2>
      <title>Installer un portier</title>
      <para>Vous pouvez aussi faire l'essai d'un 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 fournit, à D, ses adresse et 
				nom propres (des alias également), qui pourront être utilisés, 
				par un appelant, pour la contacter.</para>
          </listitem>
          <listitem>
            <para>Quand un terminal demande, à D, l'accès à une machine, D 
				répond en fournissant l'adresse IP, qui permet d'établir la 
				communication.</para>
          </listitem>
        </orderedlist>
      </para>
      <para>Il faut noter que le Portier n'est capable que de résoudre des 
		noms en adresses IP&nbsp;: il ne peut pas relier des machines injoignables 
		entre-elles au niveau IP, autrement dit il ne peut pas fonctionner comme 
		routeur NAT.</para>
      <para>Vous pourrez trouver le code source d'un portier 
      <ulink url="http://www.opengatekeeper.org">ici</ulink>&nbsp;: la
      <ulink url="http://www.openh323.org/code.html">librairie openh323
      </ulink>est 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 déja dit, une passerelle relie la VoIP aux lignes 
		du réseau téléphonique (RTCP) ce qui permet d'appeler un téléphone 
		classique depuis Internet. Il faut donc, en plus, une carte capable de 
		gérer des lignes RTCP&nbsp;: la carte Quicknet LineJack convient.</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 qui servira de passerelle.</para>
          </listitem>
        </orderedlist>
      </para>
      <para>Si l'exécutable ne fonctionne pas, il faut télécharger le code source 
		et la 
      <ulink url="http://www.openh323.org/code.html">librairie openh323
      </ulink>, puis installer le tout dans un répertoire personnel.</para>
      <para>Il suffit ensuite de lancer PSTNGw pour démarrer la passerelle 
		H323.</para>
    </sect2>
    <sect2>
      <title>Matrice de compatibilité</title>
      <para>La première matrice concerne les&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>
 _______________________________________________________________________________________________
|            | Net-    | Switch- |Simph323 | OhPhone | LinPhone| Speak-  |    HW    |    HW    |
|            | meeting | Board   |         |         |         | Freely  | PhoneJACK| LineJACK |
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| Netmeeting |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|SwitchBoard |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| Simph323   |    V         V         V         V         X         X         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| OhPhone    |    V         V         V         V         X         X         V          V
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
| LinPhone   |    X         X         X         X         V         X         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|SpeakFreely |    X         X         X         X         X         V         X          X
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|HW PhoneJACK|    V         V         X         V         X         X         _          _
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
|HW LineJACK |    V         V         X         V         X         X         _          _
|____________|_________|_________|_________|_________|_________|_________|__________|__________|
</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 indiquer au PC1 la passerelle à utiliser 
				(le PC2 dans ce cas) en fournissant l'adresse IP (à l'aide du 
				clavier à tonalités) et/ou le numéro à appeler (dans ce cas, celui 
				du téléphone 2)</para>
          </listitem>
          <listitem>
            <para>Le PC1 émet ensuite un appel H323 au PC2, et lui transmet 
				le numéro du téléphone 2 afin qu'il appelle ce dernier à l'aide 
				du 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>Il est possible d'utiliser un autocommutateur privé qui 
				fournit plusieurs lignes d'accès à la passerelle PC1 (l'une, par 
				exemple, pour des appels internes à l'état, l'une pour des appels 
				vers l'Europe, et cætera)&nbsp;: en général cette option est 
				inutile, car le coût est identique.</para>
          </listitem>
          <listitem>
            <para>Il est possible de sélectionner, après appel de la passerelle 
				PC1, le PC2 de votre choix, (par exemple un PC2 situé en Angleterre 
				si on appelle un Anglais) afin de ne payer que des 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 réaliser des économies il est nécessaire 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>Dans ce qui a été dit jusqu'à présent le problème de bande passante 
	 n'a pas été résolu&nbsp;: comment créer un flux de données en temps réel.</para>
    <para>Nous savons qu'il n'existe pas de solution en l'absence d'un protocole 
	 de gestion temps réel dans chaque routeur traversé. Qu'est-il possible de 
	 faire&nbsp;?</para>
    <para>On peut commencer par utiliser des algorithmes de compression à taux 
	 très élevé (le plus élevé possible), comme l'algorithme LPC10 qui ne 
	 consomme que 2,5 kbps de bande passante, environ 313 octets/s.</para>
    <para>On peut ensuite essayer de classer les paquets, à l'aide du champ 
	 TOS, au niveau de priorité maximum, afin que chaque routeur les traite en 
	 urgence</para>
    <para>Remarque importante&nbsp;: tout cela ne suffira pas à garantir que 
	 la permanence conversation sera toujours de bonne qualité, mais, en 
	 l'absence d'infrastructure importante qui assure, en particulier, la mise 
	 en forme du trafic et la réservation de bande passante, cela n'est pas 
	 réalisable : TCP/IP n'est pas un protocole temps réel</para>
    <para>Une solution pourrait être d'utiliser, pour commencer, des petits 
	 réseau WAN à bande passante garantie et de les agrandir étape par étape.</para>
    <para>Une remarque pour finir : les services supposés garantis, comme les 
	 lignes RTCP, ne peuvent pas non plus gérer l'ensemble de leurs clients au 
	 même instant. Par exemple, un appel GSM ne peut pas absorber un nombre supérieur à  
	 quelques centaines ou quelques milliers de clients</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 (Voix sur protocole Internet - Voix sur IP)</para>
    <para>LAN&nbsp;: Local Area Network (réseau local)</para>
    <para>WAN&nbsp;: Wide Area Network (réseau étendu)</para>
    <para>TOS&nbsp;: Type Of Service (type de service)</para>
    <para>FAI&nbsp;: Fournisseur d'Accès Internet</para>
    <para>RTP&nbsp;: Real Time Protocol (protocole temps réel)</para>
    <para>RSVP&nbsp;: ReSerVation Protocol (protocole de réservation)</para>
    <para>QoS&nbsp;: Quality of Service (qualité de 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/">Gnomemeeting</ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              <ulink url="http://www.speakfreely.org">Speak Freely</ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              <ulink url="http://www.linphone.org">Linphone</ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              <ulink url="http://www.fsf.org/software/osip">Osip</ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              <ulink url="http://www.gnu.org/software/bayonne">Bayonne</ulink>
            </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="http://www.metropark.com"/>
            </para>
          </listitem>
          <listitem>
            <para>
              <ulink 
              url="http://www.nbxsoftware.com"/>
            </para>
          </listitem>
        </itemizedlist>
      </para>
    </sect2>
  </sect1>
</article>
