<!doctype linuxdoc system>

<article>

<title>Mini-HOWTO LBX
<author>Paul D. Smith, <tt><htmlurl url="mailto:psmith@baynetworks.com"
name="psmith@baynetworks.com"></tt>, trad. : <htmlurl url="mailto:xglattard@aol.com"
name="Xavier Glattard">
<date>v1.04, 11 D&eacute;cembre 1997, trad. Juin 1997
<abstract>
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 s&eacute;par&eacute;s par une
connexion r&eacute;seau lente, d'acc&eacute;l&eacute;rer l'affichage et de
r&eacute;duire les temps de r&eacute;ponse.
</abstract>

<toc>

<sect>Introduction
<p>
<em/Low-Bandwidth X/ (LBX) prend en compte le fait
que de nos jours tout le monde ne travaille pas qu'&agrave; une ou deux
connexions rapides du serveur sur lequel tournent ses applications.

Le protocole X peut g&eacute;n&eacute;rer un trafic extraordinaire sur votre
r&eacute;seau, en
particulier pour des choses apparemment simples telles que la cr&eacute;ation de
nouvelles fen&ecirc;tres. Quiconque aura essay&eacute; d'utiliser X &agrave; travers une
connexion modem &agrave; 28,8 (ou m&ecirc;me mieux) vous le dira :
cr&eacute;er de nouvelles
fen&ecirc;tres X n&eacute;cessite une patience &agrave; toute &eacute;preuve. 

Le principe est le suivant : LBX est un syst&egrave;me de compression et de cache conçu pour
minimiser le trafic X g&eacute;n&eacute;r&eacute; entre deux
syst&egrave;mes.

<sect>
Quel est le statut de LBX ?
<p>
En tant que composant de la publication X11R6.3 du Consortium X datant de d&eacute;cembre
1996, LBX est une authentique extension du protocole X. Pour les utilisateurs de
XFree86, cela correspond &agrave; XFree86 version 3.3.

<sect>
Pourquoi utiliser LBX ?
<p>
Si vous utilisez un modem pour vous connecter &agrave; un prestataire de service,
et que vous ex&eacute;cutez des applications X sur des machines distantes,
l'affichage (variables DISPLAYs) &eacute;tant dirig&eacute; sur votre machine (et vice versa),
alors LBX acc&eacute;l&eacute;rera la
connexion. De m&ecirc;me, si vous redirigez l'affichage d'autres syst&egrave;mes &agrave;
travers des r&eacute;seaux &eacute;tendus (d'autres pays, par exemple) ou &agrave; travers des
connexions lentes, LBX peut vous &ecirc;tre utile.

<sect>
Pourquoi ne pas utiliser LBX ?
<p>
LBX est inutile, naturellement, si vous ex&eacute;cuter des applications
localement, ou si vous n'utilisez pas X.

De m&ecirc;me, si vous travaillez sur un r&eacute;seau local rapide, LBX ne vous sera pas d'une
grande utilit&eacute;. Certains disent : "si LBX r&eacute;duit le trafic r&eacute;seau, ne
pourrait-on pas l'utiliser sur des r&eacute;seaux locaux rapides ?" On pourrait, si
le but est de r&eacute;duire le trafic sur le r&eacute;seau. N&eacute;anmoins, cela
introduirait
du cache et de la compression, qui consomment des ressources &agrave; chaque
extr&eacute;mit&eacute;s (de la m&eacute;moire suppl&eacute;mentaire pour le cache, et du temps CPU pour
la d&eacute;compression). Si votre liaison est plut&ocirc;t performante, LBX causera sans
doute un ralentissement global du r&eacute;seau. 

<sect>
Comment fonctionne LBX ?
<p>
LBX fonctionne en introduisant un <em/serveur proxy/ du c&ocirc;t&eacute; du client,
lequel se charge du cache et de la compression. Le serveur X sait que le
client utilise un serveur proxy, et d&eacute;compresse en cons&eacute;quence.

Voici un exemple de configuration classique pour des clients X distants.
Dans la suite, LOCAL repr&eacute;sentera 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 ex&eacute;cut&eacute;e.

<tscreen><code>
    DISTANT                               LOCAL
 +-----+                                             +-----+
 | APP |-\          R&eacute;seau            +-----------+  |     |\
 +-----+  \-------------------------->| SERVEUR X |=>|     ||
 +-----+  /     (Protocole X)         +-----------+  +-----+\
 | APP |-/                                          /_____//
 +-----+
</code></tscreen>

Lors de l'utilisation de LBX, un serveur proxy (<tt/lbxproxy/) est introduit
du c&ocirc;t&eacute; 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 requ&ecirc;tes X et les transmet. Cela ressemble &agrave;
&ccedil;a :

<tscreen><code>
     DISTANT                                     LOCAL
                                                           +-----+
 +-----+  +-------+        R&eacute;seau           +-----------+  |     |\
 | APP |->| PROXY |------------------------>| SERVEUR X |=>|     ||
 +-----+  +-------+    (LBX/Protocole X)    +-----------+  +-----+\
 +-----+   /                                              /_____//
 | APP |--/
 +-----+
</code></tscreen>

Le d&eacute;tail des fonctions de cache et de compression de LBX sort du cadre de
ce document.

<sect>
De quoi ai-je besoin pour utiliser LBX ?
<p>
Vous avez besoin sur votre syst&egrave;me LOCAL d'un serveur X compil&eacute; avec
l'extension LBX. A moins que vous n'ayez explicitement demand&eacute; le contraire,
les serveurs X11R6.3 incluent
automatiquement  LBX &agrave; la compilation. Par cons&eacute;quent, tous les serveurs XFree86 3.3 incluent LBX
par d&eacute;faut.

Vous pouvez utiliser la commande <tt/xdpyinfo/ afin de v&eacute;rifier si votre
serveur dispose de l'extension LBX : ex&eacute;cutez <tt/xdpyinfo/ et v&eacute;rifiez la
liste qui suit  "number of extensions" (nombre d'extensions); vous devez
voir "LBX" dans cette liste.

Ensuite, vous avez besoin d'un programme <tt/lbxproxy/ compil&eacute; pour le
syst&egrave;me DISTANT. C'est le point le plus d&eacute;licat. Si le syst&egrave;me distant n'est
pas du m&ecirc;me type que votre syst&egrave;me local, le <tt/lbxproxy/ de votre syst&egrave;me
local ne sera pas bon, &eacute;videment.

Malheureusement, aucune distribution de <tt/lbxproxy/ n'a jamais &eacute;t&eacute;
publi&eacute;e. Par cons&eacute;quent, vous devez soit (a) obtenir et compiler la majeure partie, sinon
la totalit&eacute;, de X11R6.3 pour le syst&egrave;me distant, soit (b) trouver quelque part
un ex&eacute;cutable <tt/lbxproxy/ pr&eacute;compil&eacute; pour votre syst&egrave;me. Cette derni&egrave;re solution est
naturellement la plus simple.

<tt/lbxproxy/ est constitu&eacute; d'un unique fichier ex&eacute;cutable. Aucun
fichier de configuration, de ressources, etc. ne lui est associ&eacute;.

<sect>
De quoi n'ai-je pas besoin pour utiliser LBX ?
<p>
Le syst&egrave;me DISTANT <bf/n'a pas/ besoin d'un nouveau serveur X (dans tous les
cas, le syst&egrave;me DISTANT n'a besoin d'ex&eacute;cuter <em/aucun/ serveur X).

L'application que vous voulez ex&eacute;cuter <bf/n'a pas/ besoin d'&ecirc;tre li&eacute;e &agrave;
une version sp&eacute;ciale de X, ou &agrave; une biblioth&egrave;que sp&eacute;ciale; j'utilise
r&eacute;guli&egrave;rement des applications commerciales X11R5 &agrave; travers LBX sans aucun
souci.

Vous <bf/n'avez pas/ besoin de droits d'acc&egrave;s "root" ou privil&eacute;gi&eacute;s sur le
syst&egrave;me DISTANT; le processus <tt/lbxproxy/ utilise vos droits d'acc&egrave;s
normaux. De plus, vous pouvez l'ex&eacute;cuter depuis votre r&eacute;pertoire personnel :
il n'a pas besoin d'&ecirc;tre install&eacute; &agrave; un endroit particulier.

<sect>
Comment je d&eacute;marre LBX ?
<p>
Bon, nous y voil&agrave;... apr&egrave;s tout, rien de bien compliqu&eacute; jusqu'&agrave; pr&eacute;sent.
Remplacez dans la suite LOCAL et DISTANT respectivement par les noms d'h&ocirc;te de votre
station locale et du syst&egrave;me distant (ne m&eacute;langez pas tout!).

Sur LOCAL :

<enum>
<item> D&eacute;marrez votre serveur X.

<item> 
Donnez les droits d'acc&egrave;s du syst&egrave;me distant aupr&egrave;s de votre serveur X. Avec
la m&eacute;thode de la liste d'h&ocirc;tes, tapez <tt/xhost +DISTANT/. Si vous
utilisez <tt/xauth/ cela risque de ne pas &ecirc;tre suffisant; consultez le
manuel <em/xauth(1)/ pour plus d'informations.

Vous pourriez consulter efficacement le mini howto <url
url="http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html" name="Remote X Apps">
si vous n'&ecirc;tes pas familier avec la configuration des
droits d'acc&egrave;s distants sous X.
</enum>

Sur DISTANT :

<enum>
<item> D&eacute;marrez <tt/lbxproxy/ en pr&eacute;cisant la redirection vers le serveur X
LOCAL, comme cela :

<tscreen><verb>
  $ lbxproxy -display LOCAL :0 :1 &ero;
</verb></tscreen>

Cette commande indique &agrave; <tt/lbxproxy/ d'utiliser l'&eacute;cran ("display")
<tt/ :1/ sur le syst&egrave;me DISTANT; si ce syst&egrave;me dispose d&eacute;j&agrave; de plus d'un &eacute;cran,
vous pouvez choisir <tt/ :2/, ou n'importe quoi d'autre.

<item> 
D&eacute;finissez votre variable d'environnement DISPLAY afin qu'elle pointe vers
l'&eacute;cran g&eacute;r&eacute; par <tt/lbxproxy/, au lieu de l'&eacute;cran habituel :

<tscreen><verb>
  $ DISPLAY= :1
  $ export DISPLAY
</verb></tscreen>

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

<tscreen><verb>
  % setenv DISPLAY :1
</verb></tscreen>

<item> 
Si vous utilisez <tt/xauth/, vous aurez &agrave; v&eacute;rifier que votre "cookie" est
accessible localement. Consultez le mini howto <url
url="http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html" name="Remote X Apps"> pour plus d'informations &agrave; ce propos.

<item> 
D&eacute;marrez vos applications X!
</enum>

Voil&agrave;; toute application d&eacute;marr&eacute;e vers l'&eacute;cran <tt/ :1/ utilisera LBX.
Naturellement, il n'y a aucune raison pour que vous ne puissiez pas &eacute;galement
d&eacute;marrer des applis X vers <tt/LOCAL :0/ et les utiliser simultan&eacute;ment.

<sect>Probl&egrave;mes
<p>
Voici quelques probl&egrave;mes courants :

<descrip>
<tag/Q)/ <tt/lbxproxy/ se termine avec l'erreur "access denied" ("acc&egrave;s
refus&eacute;").

<tag/R)/
Cela signifie que le syst&egrave;me LOCAL n'accepte pas les connexions en
provenance du syst&egrave;me DISTANT pour des raisons d'autorisation.
Consultez le mini howto <url
url="http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html" name="Remote X Apps"> pour plus de d&eacute;tails &agrave; ce sujet.

En guise de test simple, essayez de lancer sur DISTANT une appli
simple, comme <tt/xclock/, en l'affichant sur le syst&egrave;me local, sans
utiliser <tt/lbxproxy/ :

<tscreen><verb>
  $ xclock -display LOCAL :0
</verb></tscreen>

Si cela ne marche pas, le probl&egrave;me vient de <tt/xhost/, ou d'une
simple anomalie de X, pas de LBX.
</descrip>

<sect>Documentation
<p>
La seule documentation fournie avec une distribution X standard est
probablement la page de manuel de <em/lbxproxy(1)/.

Si vous pouvez consulter l'arborescence des sources de X, de tr&egrave;s
int&eacute;ressantes informations sont disponibles l&agrave; :

<itemize>
<item><tt>xc/doc/specs/Xext/lbx.mif</tt> (Framemaker MIF)
<item><tt>xc/doc/hardcopy/Xext/lbx.PS.Z</tt> (Postscript compress&eacute;)
<item><tt>xc/doc/hardcopy/Xext/lbxTOC.html</tt> (HTML)
</itemize>

Une discussion plus pr&eacute;cise &agrave; propos des algorithmes sp&eacute;cifiques &agrave; LBX est
disponible l&agrave; :

<itemize>
<item><tt>xc/doc/specs/Xext/lbxalg.mif</tt> (Framemaker MIF)
<item><tt>xc/doc/specs/Xext/lbxalg.PS.Z</tt> (Postscript compress&eacute;)
</itemize>

Si vous n'avez pas acc&egrave;s &agrave; l'arborescence des sources de X11, vous pouvez
obtenir ces fichiers depuis <url url="ftp ://ftp.x.org/pub/R6.3/xc/doc/"
name="le site FTP du Consortium X">.


<sect>Alternatives
<p>
Si, pour quelque raison, vous n'aimez pas <tt/lbxproxy/ : vous n'&ecirc;tes pas
satisfait des performances, ou bien &ccedil;a ne marche pas pour vous, ou vous ne voulez pas
vous casser la t&ecirc;te &agrave; cr&eacute;er un lbxproxy pour le syst&egrave;me 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 conna&icirc;t
d'autres?)

<sect1>dxpc - Differential X Protocol Compressor
<p>
<itemize>
<item>Auteur initial : <htmlurl url="mailto:brianp@cnet.com" name="Brian Pane &lt;brianp@cnet.com&gt;">
<item>Actuel responsable : <htmlurl url="mailto:lightborn@mail.utexas.edu" name="Zachary Vonler &lt;lightborn@mail.utexas.edu&gt;">
</itemize>

<tt><url url="http://ccwf.cc.utexas.edu/~zvonler/dxpc/"
name="dxpc"></tt> (Differential X Protocol Compressor, Compresseur Diff&eacute;rentiel de protocole
X) fonctionne pour l'essentiel de la m&ecirc;me mani&egrave;re que LBX. Cependant, afin
d'&eacute;viter d'avoir &agrave; impl&eacute;menter une extension X et &agrave; modifier le code du
serveur X, <tt/dxpc/ utilise <bf/deux/ proxys : le premier s'ex&eacute;cute sur le syst&egrave;me
DISTANT, comme <tt/lbxproxy/, et l'autre s'ex&eacute;cute sur l'h&ocirc;te LOCAL.

Le proxy de l'h&ocirc;te DISTANT intervient dans la communication entre les
clients X et le proxy de l'h&ocirc;te LOCAL, tandis que le proxy de l'h&ocirc;te LOCAL
intervient dans la communication entre le serveur X et le proxy de l'h&ocirc;te
DISTANT.

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

<sect2>Avantages
<p>
<itemize>
<item> Comme il s'agit d'une application compl&egrave;tement ind&eacute;pendante qui
n'utilise aucune particularit&eacute; de X, elle est plus simple &agrave; compiler et &agrave;
installer.

<item> Elle est maintenue s&eacute;par&eacute;ment, aussi vous n'avez pas &agrave; attendre la
publication par l'OSF de nouvelles versions de X pour profiter
d'am&eacute;liorations ou de corrections.

<item> Elle fournie des informations et des statistiques plus nombreuses et 
plus compl&egrave;tes que <tt/lbxproxy/.
</itemize>

<sect2>Inconv&eacute;nients
<p>
<itemize>
<item> Ce n'est pas un composant standard de X; vous devez l'obtenir et
l'installer s&eacute;par&eacute;ment.

<item> dxpc est l&eacute;g&egrave;rement plus complexe &agrave; configurer, puisqu'un proxy
est n&eacute;cessaire sur LOCAL, en plus du proxy DISTANT.
</itemize>

<sect2>O&ugrave; obtenir dxpc?
<p>
Le code source de dxpc est disponible &agrave; <url
url="ftp ://ftp.x.org/contrib/utilities/" name="ftp.x.org">.

Une page web sur dxpc donne beaucoup d'informations
int&eacute;ressantes, y compris des liens vers la liste de diffusion dxpc, un acc&egrave;s
au code source, et un certain nombre d'ex&eacute;cutables pr&eacute;compil&eacute;s pour
diff&eacute;rentes plates-formes :

<url url="http://ccwf.cc.utexas.edu/~zvonler/dxpc/">

<sect1>Ssh (Secure Shell)
<p>
<htmlurl url="mailto:lbxhowto@sizone.org" name="Ken Chase &lt;lbxhowto@sizone.org&gt;">
pr&eacute;cise que <tt><url url="http://www.cs.hut.fi/ssh/" name="ssh"></tt> peut
&ecirc;tre utilis&eacute; pour la compression. Bien que sa principale fonction soit de
s&eacute;curiser, il compresse &eacute;galement les donn&eacute;es qu'il envoie.

Ainsi, si vous utilisez X &agrave; travers une connexion <tt/ssh/, vous obtiendrez
automatiquement un certain taux de compression.

<sect1>Lequel choisir ?
<p>
Je ne sais pas. LBX et <tt/dxpc/ apportent certainement tous les deux une
meilleure compression que  <tt/ssh/. Bien s&ucirc;r, <tt/ssh/ a pour lui l'avantage
de la s&eacute;curisation. Et bien s&ucirc;r, il n'y a aucune raison pour que vous ne
puissiez pas utiliser &agrave; la fois <tt/ssh/ et l'un des deux autres, afin
d'obtenir une bonne compression et une s&eacute;curisation.

Il ne devrait pas &ecirc;tre tr&egrave;s difficile de r&eacute;aliser un test comparatif de ces
diff&eacute;rentes 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.

</article>
