
                                Mini-HOWTO LBX

Paul D. Smith, psmith@baynetworks.com, trad. : Xavier Glattard

   v1.04, 11 Dcembre 1997, trad. Juin 1997
     _________________________________________________________________

   _LBX (Low Bandwidth X, X Faible Bande-passante) est une extension du
   serveur X qui effectue une compression du protocole X. En d'autres
   termes, elle permet, dans le cas d'applications X et d'un serveur X
   spars par une connexion rseau lente, d'acclrer l'affichage et de
   rduire les temps de rponse._
     _________________________________________________________________

1. Introduction

   _Low-Bandwidth X_ (LBX) prend en compte le fait que de nos jours tout
   le monde ne travaille pas qu' une ou deux connexions rapides du
   serveur sur lequel tournent ses applications.

   Le protocole X peut gnrer un trafic extraordinaire sur votre rseau,
   en particulier pour des choses apparemment simples telles que la
   cration de nouvelles fentres. Quiconque aura essay d'utiliser X 
   travers une connexion modem  28,8 (ou mme mieux) vous le dira :
   crer de nouvelles fentres X ncessite une patience  toute preuve.

   Le principe est le suivant : LBX est un systme de compression et de
   cache conu pour minimiser le trafic X gnr entre deux systmes.

2. Quel est le statut de LBX ?

   En tant que composant de la publication X11R6.3 du Consortium X datant
   de dcembre 1996, LBX est une authentique extension du protocole X.
   Pour les utilisateurs de XFree86, cela correspond  XFree86 version
   3.3.

3. Pourquoi utiliser LBX ?

   Si vous utilisez un modem pour vous connecter  un prestataire de
   service, et que vous excutez des applications X sur des machines
   distantes, l'affichage (variables DISPLAYs) tant dirig sur votre
   machine (et vice versa), alors LBX acclrera la connexion. De mme,
   si vous redirigez l'affichage d'autres systmes  travers des rseaux
   tendus (d'autres pays, par exemple) ou  travers des connexions
   lentes, LBX peut vous tre utile.

4. Pourquoi ne pas utiliser LBX ?

   LBX est inutile, naturellement, si vous excuter des applications
   localement, ou si vous n'utilisez pas X.

   De mme, si vous travaillez sur un rseau local rapide, LBX ne vous
   sera pas d'une grande utilit. Certains disent : "si LBX rduit le
   trafic rseau, ne pourrait-on pas l'utiliser sur des rseaux locaux
   rapides ?" On pourrait, si le but est de rduire le trafic sur le
   rseau. Nanmoins, cela introduirait du cache et de la compression,
   qui consomment des ressources  chaque extrmits (de la mmoire
   supplmentaire pour le cache, et du temps CPU pour la dcompression).
   Si votre liaison est plutt performante, LBX causera sans doute un
   ralentissement global du rseau.

5. Comment fonctionne LBX ?

   LBX fonctionne en introduisant un _serveur proxy_ du ct du client,
   lequel se charge du cache et de la compression. Le serveur X sait que
   le client utilise un serveur proxy, et dcompresse en consquence.

   Voici un exemple de configuration classique pour des clients X
   distants. Dans la suite, LOCAL reprsentera toujours la station qui se
   trouve en face de vous, et dont vous regardez le moniteur, et DISTANT
   sera la station distante, sur laquelle votre application est excute.
       ______________________________________________________________

    DISTANT                               LOCAL
 +-----+                                             +-----+
 | APP |-\          Rseau            +-----------+  |     |\
 +-----+  \-------------------------->| SERVEUR X |=>|     ||
 +-----+  /     (Protocole X)         +-----------+  +-----+\
 | APP |-/                                          /_____//
 +-----+
       ______________________________________________________________

   Lors de l'utilisation de LBX, un serveur proxy (lbxproxy) est
   introduit du ct distant, et les applications communiquent avec ce
   processus et non plus directement avec le serveur LOCAL. Ce processus
   se charge alors du cache et de la compression des requtes X et les
   transmet. Cela ressemble  a :
       ______________________________________________________________

     DISTANT                                     LOCAL
                                                           +-----+
 +-----+  +-------+        Rseau           +-----------+  |     |\
 | APP |->| PROXY |------------------------>| SERVEUR X |=>|     ||
 +-----+  +-------+    (LBX/Protocole X)    +-----------+  +-----+\
 +-----+   /                                              /_____//
 | APP |--/
 +-----+
       ______________________________________________________________

   Le dtail des fonctions de cache et de compression de LBX sort du
   cadre de ce document.

6. De quoi ai-je besoin pour utiliser LBX ?

   Vous avez besoin sur votre systme LOCAL d'un serveur X compil avec
   l'extension LBX. A moins que vous n'ayez explicitement demand le
   contraire, les serveurs X11R6.3 incluent automatiquement LBX  la
   compilation. Par consquent, tous les serveurs XFree86 3.3 incluent
   LBX par dfaut.

   Vous pouvez utiliser la commande xdpyinfo afin de vrifier si votre
   serveur dispose de l'extension LBX : excutez xdpyinfo et vrifiez la
   liste qui suit "number of extensions" (nombre d'extensions); vous
   devez voir "LBX" dans cette liste.

   Ensuite, vous avez besoin d'un programme lbxproxy compil pour le
   systme DISTANT. C'est le point le plus dlicat. Si le systme distant
   n'est pas du mme type que votre systme local, le lbxproxy de votre
   systme local ne sera pas bon, videment.

   Malheureusement, aucune distribution de lbxproxy n'a jamais t
   publie. Par consquent, vous devez soit (a) obtenir et compiler la
   majeure partie, sinon la totalit, de X11R6.3 pour le systme distant,
   soit (b) trouver quelque part un excutable lbxproxy prcompil pour
   votre systme. Cette dernire solution est naturellement la plus
   simple.

   lbxproxy est constitu d'un unique fichier excutable. Aucun fichier
   de configuration, de ressources, etc. ne lui est associ.

7. De quoi n'ai-je pas besoin pour utiliser LBX ?

   Le systme DISTANT _n'a pas_ besoin d'un nouveau serveur X (dans tous
   les cas, le systme DISTANT n'a besoin d'excuter _aucun_ serveur X).

   L'application que vous voulez excuter _n'a pas_ besoin d'tre lie 
   une version spciale de X, ou  une bibliothque spciale; j'utilise
   rgulirement des applications commerciales X11R5  travers LBX sans
   aucun souci.

   Vous _n'avez pas_ besoin de droits d'accs "root" ou privilgis sur
   le systme DISTANT; le processus lbxproxy utilise vos droits d'accs
   normaux. De plus, vous pouvez l'excuter depuis votre rpertoire
   personnel : il n'a pas besoin d'tre install  un endroit
   particulier.

8. Comment je dmarre LBX ?

   Bon, nous y voil... aprs tout, rien de bien compliqu jusqu'
   prsent. Remplacez dans la suite LOCAL et DISTANT respectivement par
   les noms d'hte de votre station locale et du systme distant (ne
   mlangez pas tout!).

   Sur LOCAL :

    1. Dmarrez votre serveur X.
    2. Donnez les droits d'accs du systme distant auprs de votre
       serveur X. Avec la mthode de la liste d'htes, tapez xhost
       +DISTANT. Si vous utilisez xauth cela risque de ne pas tre
       suffisant; consultez le manuel _xauth(1)_ pour plus
       d'informations. Vous pourriez consulter efficacement le mini howto
       Remote X Apps si vous n'tes pas familier avec la configuration
       des droits d'accs distants sous X.

   Sur DISTANT :

    1. Dmarrez lbxproxy en prcisant la redirection vers le serveur X
       LOCAL, comme cela :

  $ lbxproxy -display LOCAL :0 :1 &

       Cette commande indique  lbxproxy d'utiliser l'cran ("display")
       :1 sur le systme DISTANT; si ce systme dispose dj de plus d'un
       cran, vous pouvez choisir :2, ou n'importe quoi d'autre.
    2. Dfinissez votre variable d'environnement DISPLAY afin qu'elle
       pointe vers l'cran gr par lbxproxy, au lieu de l'cran habituel
       :

  $ DISPLAY= :1
  $ export DISPLAY

       Ou, si vous utilisez csh ou un de ses clones :

  % setenv DISPLAY :1

    3. Si vous utilisez xauth, vous aurez  vrifier que votre "cookie"
       est accessible localement. Consultez le mini howto Remote X Apps
       pour plus d'informations  ce propos.
    4. Dmarrez vos applications X!

   Voil; toute application dmarre vers l'cran :1 utilisera LBX.
   Naturellement, il n'y a aucune raison pour que vous ne puissiez pas
   galement dmarrer des applis X vers LOCAL :0 et les utiliser
   simultanment.

9. Problmes

   Voici quelques problmes courants :

   _Q)_
          lbxproxy se termine avec l'erreur "access denied" ("accs
          refus").

   _R)_
          Cela signifie que le systme LOCAL n'accepte pas les connexions
          en provenance du systme DISTANT pour des raisons
          d'autorisation. Consultez le mini howto Remote X Apps pour plus
          de dtails  ce sujet.

          En guise de test simple, essayez de lancer sur DISTANT une
          appli simple, comme xclock, en l'affichant sur le systme
          local, sans utiliser lbxproxy :

  $ xclock -display LOCAL :0

          Si cela ne marche pas, le problme vient de xhost, ou d'une
          simple anomalie de X, pas de LBX.

10. Documentation

   La seule documentation fournie avec une distribution X standard est
   probablement la page de manuel de _lbxproxy(1)_.

   Si vous pouvez consulter l'arborescence des sources de X, de trs
   intressantes informations sont disponibles l :

     * xc/doc/specs/Xext/lbx.mif (Framemaker MIF)
     * xc/doc/hardcopy/Xext/lbx.PS.Z (Postscript compress)
     * xc/doc/hardcopy/Xext/lbxTOC.html (HTML)

   Une discussion plus prcise  propos des algorithmes spcifiques  LBX
   est disponible l :

     * xc/doc/specs/Xext/lbxalg.mif (Framemaker MIF)
     * xc/doc/specs/Xext/lbxalg.PS.Z (Postscript compress)

   Si vous n'avez pas accs  l'arborescence des sources de X11, vous
   pouvez obtenir ces fichiers depuis le site FTP du Consortium X.

11. Alternatives

   Si, pour quelque raison, vous n'aimez pas lbxproxy : vous n'tes pas
   satisfait des performances, ou bien a ne marche pas pour vous, ou
   vous ne voulez pas vous casser la tte  crer un lbxproxy pour le
   systme distant, ou encore vous avez tout simplement envie d'essayer
   d'autres solutions, alors il existe au moins un autre kit de
   compression du protocole X (quelqu'un en connat d'autres?)

11.1 dxpc - Differential X Protocol Compressor

     * Auteur initial : Brian Pane <brianp@cnet.com>
     * Actuel responsable : Zachary Vonler <lightborn@mail.utexas.edu>

   dxpc (Differential X Protocol Compressor, Compresseur Diffrentiel de
   protocole X) fonctionne pour l'essentiel de la mme manire que LBX.
   Cependant, afin d'viter d'avoir  implmenter une extension X et 
   modifier le code du serveur X, dxpc utilise _deux_ proxys : le premier
   s'excute sur le systme DISTANT, comme lbxproxy, et l'autre s'excute
   sur l'hte LOCAL.

   Le proxy de l'hte DISTANT intervient dans la communication entre les
   clients X et le proxy de l'hte LOCAL, tandis que le proxy de l'hte
   LOCAL intervient dans la communication entre le serveur X et le proxy
   de l'hte DISTANT.

   Ainsi,  la fois pour les clients X et pour le serveur X, cela
   ressemble  une connexion X normale.

  Avantages

     * Comme il s'agit d'une application compltement indpendante qui
       n'utilise aucune particularit de X, elle est plus simple 
       compiler et  installer.
     * Elle est maintenue sparment, aussi vous n'avez pas  attendre la
       publication par l'OSF de nouvelles versions de X pour profiter
       d'amliorations ou de corrections.
     * Elle fournie des informations et des statistiques plus nombreuses
       et plus compltes que lbxproxy.

  Inconvnients

     * Ce n'est pas un composant standard de X; vous devez l'obtenir et
       l'installer sparment.
     * dxpc est lgrement plus complexe  configurer, puisqu'un proxy
       est ncessaire sur LOCAL, en plus du proxy DISTANT.

  O obtenir dxpc?

   Le code source de dxpc est disponible  ftp.x.org.

   Une page web sur dxpc donne beaucoup d'informations intressantes, y
   compris des liens vers la liste de diffusion dxpc, un accs au code
   source, et un certain nombre d'excutables prcompils pour
   diffrentes plates-formes :

   http://ccwf.cc.utexas.edu/~zvonler/dxpc/

11.2 Ssh (Secure Shell)

   Ken Chase <lbxhowto@sizone.org> prcise que ssh peut tre utilis pour
   la compression. Bien que sa principale fonction soit de scuriser, il
   compresse galement les donnes qu'il envoie.

   Ainsi, si vous utilisez X  travers une connexion ssh, vous obtiendrez
   automatiquement un certain taux de compression.

11.3 Lequel choisir ?

   Je ne sais pas. LBX et dxpc apportent certainement tous les deux une
   meilleure compression que ssh. Bien sr, ssh a pour lui l'avantage de
   la scurisation. Et bien sr, il n'y a aucune raison pour que vous ne
   puissiez pas utiliser  la fois ssh et l'un des deux autres, afin
   d'obtenir une bonne compression et une scurisation.

   Il ne devrait pas tre trs difficile de raliser un test comparatif
   de ces diffrentes solutions, afin de disposer de mesures statistiques
   et subjectives des performances. Mais je ne l'ai pas fait, et je ne
   connais personne qui l'ait fait.
