Mini-HOWTO LBX Paul D. Smith, psmith@baynetworks.com, 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 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 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 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 . 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 +o Actuel responsable : Zachary Vonler 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 . 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 : 1111..22.. SSsshh ((SSeeccuurree SShheellll)) Ken Chase precise que 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. .