Mini-HOWTO LBX
Paul D. Smith,
[email protected], trad. : Xavier Glat-
tard
v1.04, 11 Decembre 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
separes par une connexion reseau lente, d'accelerer l'affichage et de
reduire les temps de reponse.
11.. IInnttrroodduuccttiioonn
_L_o_w_-_B_a_n_d_w_i_d_t_h _X (LBX) prend en compte le fait que de nos jours tout le
monde ne travaille pas qu'a une ou deux connexions rapides du serveur
sur lequel tournent ses applications.
Le protocole X peut generer un trafic extraordinaire sur votre reseau,
en particulier pour des choses apparemment simples telles que la
creation de nouvelles fenetres. Quiconque aura essaye d'utiliser X a
travers une connexion modem a 28,8 (ou meme mieux) vous le dira :
creer de nouvelles fenetres X necessite une patience a toute epreuve.
Le principe est le suivant : LBX est un systeme de compression et de
cache concu pour minimiser le trafic X genere entre deux systemes.
22.. QQuueell eesstt llee ssttaattuutt ddee LLBBXX ??
En tant que composant de la publication X11R6.3 du Consortium X datant
de decembre 1996, LBX est une authentique extension du protocole X.
Pour les utilisateurs de XFree86, cela correspond a XFree86 version
3.3.
33.. PPoouurrqquuooii uuttiilliisseerr LLBBXX ??
Si vous utilisez un modem pour vous connecter a un prestataire de
service, et que vous executez des applications X sur des machines
distantes, l'affichage (variables DISPLAYs) etant dirige sur votre
machine (et vice versa), alors LBX accelerera la connexion. De meme,
si vous redirigez l'affichage d'autres systemes a travers des reseaux
etendus (d'autres pays, par exemple) ou a travers des connexions
lentes, LBX peut vous etre utile.
44.. PPoouurrqquuooii nnee ppaass uuttiilliisseerr LLBBXX ??
LBX est inutile, naturellement, si vous executer des applications
localement, ou si vous n'utilisez pas X.
De meme, si vous travaillez sur un reseau local rapide, LBX ne vous
sera pas d'une grande utilite. Certains disent : "si LBX reduit le
trafic reseau, ne pourrait-on pas l'utiliser sur des reseaux locaux
rapides ?" On pourrait, si le but est de reduire le trafic sur le
reseau. Neanmoins, cela introduirait du cache et de la compression,
qui consomment des ressources a chaque extremites (de la memoire
supplementaire pour le cache, et du temps CPU pour la decompression).
Si votre liaison est plutot performante, LBX causera sans doute un
ralentissement global du reseau.
55.. CCoommmmeenntt ffoonnccttiioonnnnee LLBBXX ??
LBX fonctionne en introduisant un _s_e_r_v_e_u_r _p_r_o_x_y du cote du client,
lequel se charge du cache et de la compression. Le serveur X sait que
le client utilise un serveur proxy, et decompresse en consequence.
Voici un exemple de configuration classique pour des clients X
distants. Dans la suite, LOCAL representera 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
executee.
______________________________________________________________________
DISTANT LOCAL
+-----+ +-----+
| APP |-\ Reseau +-----------+ | |\
+-----+ \-------------------------->| SERVEUR X |=>| ||
+-----+ / (Protocole X) +-----------+ +-----+\
| APP |-/ /_____//
+-----+
______________________________________________________________________
Lors de l'utilisation de LBX, un serveur proxy (lbxproxy) est
introduit du cote 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 requetes X et les
transmet. Cela ressemble a ca :
______________________________________________________________________
DISTANT LOCAL
+-----+
+-----+ +-------+ Reseau +-----------+ | |\
| APP |->| PROXY |------------------------>| SERVEUR X |=>| ||
+-----+ +-------+ (LBX/Protocole X) +-----------+ +-----+\
+-----+ / /_____//
| APP |--/
+-----+
______________________________________________________________________
Le detail des fonctions de cache et de compression de LBX sort du
cadre de ce document.
66.. DDee qquuooii aaii--jjee bbeessooiinn ppoouurr uuttiilliisseerr LLBBXX ??
Vous avez besoin sur votre systeme LOCAL d'un serveur X compile avec
l'extension LBX. A moins que vous n'ayez explicitement demande le
contraire, les serveurs X11R6.3 incluent automatiquement LBX a la
compilation. Par consequent, tous les serveurs XFree86 3.3 incluent
LBX par defaut.
Vous pouvez utiliser la commande xdpyinfo afin de verifier si votre
serveur dispose de l'extension LBX : executez xdpyinfo et verifiez 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 compile pour le
systeme DISTANT. C'est le point le plus delicat. Si le systeme distant
n'est pas du meme type que votre systeme local, le lbxproxy de votre
systeme local ne sera pas bon, evidement.
Malheureusement, aucune distribution de lbxproxy n'a jamais ete
publiee. Par consequent, vous devez soit (a) obtenir et compiler la
majeure partie, sinon la totalite, de X11R6.3 pour le systeme distant,
soit (b) trouver quelque part un executable lbxproxy precompile pour
votre systeme. Cette derniere solution est naturellement la plus
simple.
lbxproxy est constitue d'un unique fichier executable. Aucun fichier
de configuration, de ressources, etc. ne lui est associe.
77.. DDee qquuooii nn''aaii--jjee ppaass bbeessooiinn ppoouurr uuttiilliisseerr LLBBXX ??
Le systeme DISTANT nn''aa ppaass besoin d'un nouveau serveur X (dans tous
les cas, le systeme DISTANT n'a besoin d'executer _a_u_c_u_n serveur X).
L'application que vous voulez executer nn''aa ppaass besoin d'etre liee a
une version speciale de X, ou a une bibliotheque speciale; j'utilise
regulierement des applications commerciales X11R5 a travers LBX sans
aucun souci.
Vous nn''aavveezz ppaass besoin de droits d'acces "root" ou privilegies sur le
systeme DISTANT; le processus lbxproxy utilise vos droits d'acces
normaux. De plus, vous pouvez l'executer depuis votre repertoire
personnel : il n'a pas besoin d'etre installe a un endroit
particulier.
88.. CCoommmmeenntt jjee ddeemmaarrrree LLBBXX ??
Bon, nous y voila... apres tout, rien de bien complique jusqu'a
present. Remplacez dans la suite LOCAL et DISTANT respectivement par
les noms d'hote de votre station locale et du systeme distant (ne
melangez pas tout!).
Sur LOCAL :
1. Demarrez votre serveur X.
2. Donnez les droits d'acces du systeme distant aupres de votre
serveur X. Avec la methode de la liste d'hotes, tapez xhost
+DISTANT. Si vous utilisez xauth cela risque de ne pas etre
suffisant; consultez le manuel _x_a_u_t_h_(_1_) pour plus d'informations.
Vous pourriez consulter efficacement le mini howto Remote X Apps
<
http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html> si vous
n'etes pas familier avec la configuration des droits d'acces
distants sous X.
Sur DISTANT :
1. Demarrez lbxproxy en precisant la redirection vers le serveur X
LOCAL, comme cela :
$ lbxproxy -display LOCAL :0 :1 &
Cette commande indique a lbxproxy d'utiliser l'ecran ("display")
:1 sur le systeme DISTANT; si ce systeme dispose deja de plus d'un
ecran, vous pouvez choisir :2, ou n'importe quoi d'autre.
2. Definissez votre variable d'environnement DISPLAY afin qu'elle
pointe vers l'ecran gere par lbxproxy, au lieu de l'ecran 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 a verifier que votre "cookie"
est accessible localement. Consultez le mini howto Remote X Apps
<
http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html> pour
plus d'informations a ce propos.
4. Demarrez vos applications X!
Voila; toute application demarree vers l'ecran :1 utilisera LBX.
Naturellement, il n'y a aucune raison pour que vous ne puissiez pas
egalement demarrer des applis X vers LOCAL :0 et les utiliser
simultanement.
99.. PPrroobblleemmeess
Voici quelques problemes courants :
QQ)) lbxproxy se termine avec l'erreur "access denied" ("acces
refuse").
RR)) Cela signifie que le systeme LOCAL n'accepte pas les connexions
en provenance du systeme DISTANT pour des raisons
d'autorisation. Consultez le mini howto Remote X Apps
<
http://www.freenix.fr/linux/HOWTO/mini/Remote-X-Apps.html> pour
plus de details a ce sujet.
En guise de test simple, essayez de lancer sur DISTANT une appli
simple, comme xclock, en l'affichant sur le systeme local, sans
utiliser lbxproxy :
$ xclock -display LOCAL :0
Si cela ne marche pas, le probleme vient de xhost, ou d'une simple
anomalie de X, pas de LBX.
1100.. DDooccuummeennttaattiioonn
La seule documentation fournie avec une distribution X standard est
probablement la page de manuel de _l_b_x_p_r_o_x_y_(_1_).
Si vous pouvez consulter l'arborescence des sources de X, de tres
interessantes informations sont disponibles la :
+o xc/doc/specs/Xext/lbx.mif (Framemaker MIF)
+o xc/doc/hardcopy/Xext/lbx.PS.Z (Postscript compresse)
+o xc/doc/hardcopy/Xext/lbxTOC.html (HTML)
Une discussion plus precise a propos des algorithmes specifiques a LBX
est disponible la :
+o xc/doc/specs/Xext/lbxalg.mif (Framemaker MIF)
+o xc/doc/specs/Xext/lbxalg.PS.Z (Postscript compresse)
Si vous n'avez pas acces a l'arborescence des sources de X11, vous
pouvez obtenir ces fichiers depuis le site FTP du Consortium X <ftp
://ftp.x.org/pub/R6.3/xc/doc/>.
1111.. AAlltteerrnnaattiivveess
Si, pour quelque raison, vous n'aimez pas lbxproxy : vous n'etes pas
satisfait des performances, ou bien ca ne marche pas pour vous, ou
vous ne voulez pas vous casser la tete a creer un lbxproxy pour le
systeme 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 connait d'autres?)
1111..11.. ddxxppcc -- DDiiffffeerreennttiiaall XX PPrroottooccooll CCoommpprreessssoorr
+o Auteur initial : Brian Pane <
[email protected]>
+o Actuel responsable : Zachary Vonler <
[email protected]>
dxpc <
http://ccwf.cc.utexas.edu/~zvonler/dxpc/> (Differential X
Protocol Compressor, Compresseur Differentiel de protocole X)
fonctionne pour l'essentiel de la meme maniere que LBX. Cependant,
afin d'eviter d'avoir a implementer une extension X et a modifier le
code du serveur X, dxpc utilise ddeeuuxx proxys : le premier s'execute sur
le systeme DISTANT, comme lbxproxy, et l'autre s'execute sur l'hote
LOCAL.
Le proxy de l'hote DISTANT intervient dans la communication entre les
clients X et le proxy de l'hote LOCAL, tandis que le proxy de l'hote
LOCAL intervient dans la communication entre le serveur X et le proxy
de l'hote DISTANT.
Ainsi, a la fois pour les clients X et pour le serveur X, cela
ressemble a une connexion X normale.
1111..11..11.. AAvvaannttaaggeess
+o Comme il s'agit d'une application completement independante qui
n'utilise aucune particularite de X, elle est plus simple a
compiler et a installer.
+o Elle est maintenue separement, aussi vous n'avez pas a attendre la
publication par l'OSF de nouvelles versions de X pour profiter
d'ameliorations ou de corrections.
+o Elle fournie des informations et des statistiques plus nombreuses
et plus completes que lbxproxy.
1111..11..22.. IInnccoonnvveenniieennttss
+o Ce n'est pas un composant standard de X; vous devez l'obtenir et
l'installer separement.
+o dxpc est legerement plus complexe a configurer, puisqu'un proxy est
necessaire sur LOCAL, en plus du proxy DISTANT.
1111..11..33.. OOuu oobbtteenniirr ddxxppcc??
Le code source de dxpc est disponible a ftp.x.org <ftp
://ftp.x.org/contrib/utilities/>.
Une page web sur dxpc donne beaucoup d'informations interessantes, y
compris des liens vers la liste de diffusion dxpc, un acces au code
source, et un certain nombre d'executables precompiles pour
differentes plates-formes :
<
http://ccwf.cc.utexas.edu/~zvonler/dxpc/>
1111..22.. SSsshh ((SSeeccuurree SShheellll))
Ken Chase <
[email protected]> precise que ssh
<
http://www.cs.hut.fi/ssh/> peut etre utilise pour la compression.
Bien que sa principale fonction soit de securiser, il compresse
egalement les donnees qu'il envoie.
Ainsi, si vous utilisez X a travers une connexion ssh, vous obtiendrez
automatiquement un certain taux de compression.
1111..33.. LLeeqquueell cchhooiissiirr ??
Je ne sais pas. LBX et dxpc apportent certainement tous les deux une
meilleure compression que ssh. Bien sur, ssh a pour lui l'avantage de
la securisation. Et bien sur, il n'y a aucune raison pour que vous ne
puissiez pas utiliser a la fois ssh et l'un des deux autres, afin
d'obtenir une bonne compression et une securisation.
Il ne devrait pas etre tres difficile de realiser un test comparatif
de ces differentes 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.