home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 August / PCWorld_1999-08_cd.bin / doc / HOWTO / mini / LBX < prev    next >
Text File  |  1998-05-08  |  13KB  |  463 lines

  1.   The LBX Mini-HOWTO
  2.   Paul D. Smith, psmith@baynetworks.com
  3.   v1.04, 11 December 1997
  4.  
  5.   LBX (Low Bandwidth X) is an X server extension which performs compres¡
  6.   sion on the X protocol.  It is meant to be used in conjunction with X
  7.   applications and an X server which are separated by a slow network
  8.   connection, to improve display and response time.
  9.   ______________________________________________________________________
  10.  
  11.   Table of Contents
  12.  
  13.  
  14.   1. Introduction
  15.  
  16.   2. What's The Status Of LBX?
  17.  
  18.   3. Who Can Benefit From LBX?
  19.  
  20.   4. Who Doesn't Need LBX?
  21.  
  22.   5. How Does LBX Work?
  23.  
  24.   6. What Do I Need To Use LBX?
  25.  
  26.   7. What Don't I Need To Use LBX?
  27.  
  28.   8. How Do I Start LBX?
  29.  
  30.   9. Problems
  31.  
  32.   10. Documentation
  33.  
  34.   11. Alternatives
  35.  
  36.      11.1 dxpc - The Differential X Protocol Compressor
  37.         11.1.1 Advantages
  38.         11.1.2 Disadvantages
  39.         11.1.3 Where Can I Get dxpc?
  40.      11.2 Ssh (Secure Shell)
  41.      11.3 Which Is Better?
  42.  
  43.  
  44.   ______________________________________________________________________
  45.  
  46.   1.  Introduction
  47.  
  48.   Low-Bandwidth X (LBX) attempts to recognize that in this day and age,
  49.   not everyone will be a fast LAN hop or two away from the system that
  50.   they are running their applications on.
  51.  
  52.   The X protocol can generate an extraordinary amount of traffic,
  53.   especially for simple-seeming things such as creating new windows.  As
  54.   anyone who has tried to use X over a dial-in modem at 28.8 or even
  55.   higher can attest, creating new X windows can involve an excruciating
  56.   wait.
  57.  
  58.   LBX is fundamentally a compression and caching scheme designed to
  59.   minimize the amount of X traffic generated between two systems.
  60.  
  61.  
  62.  
  63.   2.  What's The Status Of LBX?
  64.  
  65.   As of the X Consortium's release of X11R6.3 in December, 1996, LBX is
  66.   a full extension to the X protocol.  For XFree86 folks, that's XFree86
  67.   version 3.3.
  68.  
  69.  
  70.  
  71.   3.  Who Can Benefit From LBX?
  72.  
  73.   If you use a modem to dial into a service provider, then run X
  74.   applications on remote machines with their DISPLAYs set to your local
  75.   machine (or vice versa), LBX will speed up that connection.  Also if
  76.   you set DISPLAYs from systems across WANs (other countries, for
  77.   example) or other slow links, LBX can help.
  78.  
  79.  
  80.  
  81.   4.  Who Doesn't Need LBX?
  82.  
  83.   LBX is useless, of course, if you're only running applications
  84.   locally, or if you're not running X at all.
  85.  
  86.   Also, if you're running on a fast LAN, LBX won't be much help.  Some
  87.   people say "if LBX cuts down on network traffic, wouldn't it be good
  88.   to use even on fast LANs?"  It might be, if your goal is to reduce
  89.   network traffic.  But if your goal is to get better response time LBX
  90.   probably isn't what you want.  Although it does introduce caching and
  91.   compression, that comes at a cost on both ends (extra memory for
  92.   caching, and extra CPU for decompression).  If your link is fairly
  93.   speedy LBX will probably result in an overall slowdown.
  94.  
  95.  
  96.  
  97.   5.  How Does LBX Work?
  98.  
  99.   LBX works by introducing a proxy server at the client side, which
  100.   performs caching and compression.  The X server knows that the client
  101.   is using a proxy server, and decompresses accordingly.
  102.  
  103.   Here's a normal setup for remote X clients.  In our discussion, LOCAL
  104.   is always the workstation sitting in front of you, whose monitor
  105.   you're looking at, and REMOTE is the remote workstation, where the
  106.   actual application is running.
  107.  
  108.  
  109.  
  110.        ______________________________________________________________________
  111.             REMOTE                               LOCAL
  112.         +-----+                                             +-----+
  113.         | APP |-\          Network            +----------+  |     |\
  114.         +-----+  \--------------------------->| X SERVER |=>|     ||
  115.         +-----+  /       (X Protocol)         +----------+  +-----+\
  116.         | APP |-/                                          /_____//
  117.         +-----+
  118.        ______________________________________________________________________
  119.  
  120.  
  121.  
  122.  
  123.   When using LBX, a proxy server (lbxproxy) is introduced on the remote
  124.   side, and the applications talk to that process instead of directly to
  125.   the LOCAL server.  That process then performs the caching and
  126.   compression of X requests and forwards them.  It looks like this:
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.   ______________________________________________________________________
  134.        REMOTE                                         LOCAL
  135.                                                                  +-----+
  136.    +-----+  +-------+           Network            +----------+  |     |\
  137.    | APP |->| PROXY |----------------------------->| X SERVER |=>|     ||
  138.    +-----+  +-------+       (LBX/X Protocol)       +----------+  +-----+\
  139.    +-----+   /                                                  /_____//
  140.    | APP |--/
  141.    +-----+
  142.   ______________________________________________________________________
  143.  
  144.  
  145.  
  146.  
  147.   Details on exactly what caching and compression LBX does is beyond the
  148.   scope of this document.
  149.  
  150.  
  151.  
  152.   6.  What Do I Need To Use LBX?
  153.  
  154.   You need an X server on your LOCAL system which has the LBX extension
  155.   compiled in.  Unless you explicitly told it not to when building it,
  156.   X11R6.3 servers automatically enable LBX.  Also, all XFree86 3.3
  157.   servers have LBX enabled by default.
  158.  
  159.   You can use the xdpyinfo command to see if your server has the LBX
  160.   extension: run xdpyinfo and look at the list just under "number of
  161.   extensions"; you should see "LBX" listed there.
  162.  
  163.   Next, you need to get an lbxproxy program compiled for the REMOTE
  164.   system.  This is the tricky part.  If the remote system is not the
  165.   same type as your local system, the lbxproxy on your local system will
  166.   do you no good, of course.
  167.  
  168.   There is unfortunately no "broken out" distribution of lbxproxy, so
  169.   you will have to either (a) get and build most, if not all, of X11R6.3
  170.   for the remote system, or (b) find someplace to get a pre-compiled
  171.   lbxproxy binary for your system.  The latter is much simpler of
  172.   course.
  173.  
  174.   The lbxproxy is simply a single executable.  There are no
  175.   configuration files, resource files, etc. associated with it.
  176.  
  177.  
  178.  
  179.   7.  What Don't I Need To Use LBX?
  180.  
  181.   The REMOTE system does not need a new X server (as always, the REMOTE
  182.   system doesn't need any X server running).
  183.  
  184.   The application you want to run does not need to be linked with any
  185.   special version of X, or any special libraries; I regularly use
  186.   commercial X11R5 apps over LBX with no trouble.
  187.  
  188.   You do not need root or other privileged access on the REMOTE system;
  189.   the lbxproxy process runs under your normal access permissions.
  190.   Further, you can run it right from your home directory: it does not
  191.   have to be installed anywhere.
  192.  
  193.  
  194.  
  195.   8.  How Do I Start LBX?
  196.  
  197.   OK, here it is... after all that it's actually quite simple.  Replace
  198.   LOCAL and REMOTE below with the hostnames of your local workstation
  199.   and remote system, respectively (don't get them mixed up!)
  200.  
  201.   On LOCAL:
  202.  
  203.  
  204.   1. Start your X server.
  205.  
  206.   2. Tell your X server that the remote system is allowed access.  Using
  207.      the host-list method, type xhost +REMOTE.  If you use xauth you may
  208.      need to do more than this; see the xauth(1) man page for more
  209.      information.
  210.  
  211.      You should consult the Remote X Apps Mini-HOWTO
  212.      <http://www.xs4all.nl/~zweije/xauth.html> if you're not familiar
  213.      with remote X access permission setup.
  214.  
  215.   On REMOTE:
  216.  
  217.  
  218.   1. Start lbxproxy and tell it to forward to the LOCAL X server, like
  219.      this:
  220.  
  221.  
  222.  
  223.          $ lbxproxy -display LOCAL:0 :1 &
  224.  
  225.  
  226.  
  227.  
  228.  
  229.   This tells lbxproxy to use display :1 on the REMOTE system; if that
  230.   system has >1 display already you can use :2 or whatever instead.
  231.  
  232.   2. Set your DISPLAY environment variable to point to the display that
  233.      lbxproxy is providing, instead of the normal display:
  234.  
  235.  
  236.  
  237.          $ DISPLAY=:1
  238.          $ export DISPLAY
  239.  
  240.  
  241.  
  242.  
  243.  
  244.   Or, if you use csh or clones:
  245.  
  246.  
  247.  
  248.          % setenv DISPLAY :1
  249.  
  250.  
  251.  
  252.  
  253.  
  254.   3. If you're using xauth you will need to ensure that your cookie is
  255.      available locally.  See the Remote X Apps Mini-HOWTO
  256.      <http://www.xs4all.nl/~zweije/xauth.html> for more information on
  257.      this.
  258.  
  259.   4. Start your X applications!
  260.  
  261.   That's it; all X apps that are started up pointing to :1 will use LBX.
  262.   Of course, there's no reason you couldn't also start X apps pointing
  263.   to LOCAL:0 and have both running at the same time.
  264.  
  265.   9.  Problems
  266.  
  267.   Here are some common problems:
  268.  
  269.  
  270.      Q) lbxproxy exits with an "access denied" error.
  271.  
  272.  
  273.      A) This means the LOCAL system isn't accepting connections from the
  274.         REMOTE system due to permissions errors.  See the Remote X Apps
  275.         Mini-HOWTO <http://www.xs4all.nl/~zweije/xauth.html> for details
  276.         on these issues.
  277.  
  278.         As a simple trouble-shooting measure, try running a simple X app
  279.         like xclock on REMOTE and have it display on the local system
  280.         without using lbxproxy:
  281.  
  282.  
  283.  
  284.             $ xclock -display LOCAL:0
  285.  
  286.  
  287.  
  288.  
  289.      If that doesn't work, it's xhost or some other basic X problem, not
  290.      LBX.
  291.  
  292.  
  293.   10.  Documentation
  294.  
  295.   The only documentation available in a standard X distribution may be
  296.   the lbxproxy(1) man page.
  297.  
  298.   If you have access to the X source tree, then very interesting
  299.   information on LBX is available there:
  300.  
  301.  
  302.   ╖  xc/doc/specs/Xext/lbx.mif (Framemaker MIF)
  303.  
  304.   ╖  xc/doc/hardcopy/Xext/lbx.PS.Z (Compressed Postscript)
  305.  
  306.   ╖  xc/doc/hardcopy/Xext/lbxTOC.html (HTML)
  307.  
  308.   More detailed discussion of specific LBX algorithms is available here:
  309.  
  310.  
  311.   ╖  xc/doc/specs/Xext/lbxalg.mif (Framemaker MIF)
  312.  
  313.   ╖  xc/doc/specs/Xext/lbxalg.PS.Z (Compressed Postscript)
  314.  
  315.   If you don't have access to the X11 source, you can obtain these files
  316.   from the X Consortium's FTP site <ftp://ftp.x.org/pub/R6.3/xc/doc/>.
  317.  
  318.  
  319.  
  320.   11.  Alternatives
  321.  
  322.   If you don't like lbxproxy for some reason: you're not satisfied with
  323.   the performance, it doesn't work for you, you don't want to hassle
  324.   with creating an lbxproxy for the remote host, or you simply are
  325.   interested in trying other options, there is at least one other
  326.   package for X protocol compression (anyone have others?)
  327.  
  328.  
  329.  
  330.  
  331.   11.1.  dxpc - The Differential X Protocol Compressor
  332.  
  333.  
  334.   ╖  Original Author: Brian Pane <brianp@cnet.com>
  335.  
  336.   ╖  Current Maintainer: Zachary Vonler <lightborn@mail.utexas.edu>
  337.  
  338.   dxpc <http://ccwf.cc.utexas.edu/~zvonler/dxpc/> works in essentially
  339.   the same way as LBX.  However, to avoid having to implement an X
  340.   extension and modify the X server code, dxpc uses two proxies: one
  341.   that runs on the REMOTE host, like lbxproxy, and one that runs on the
  342.   LOCAL host.
  343.  
  344.   The REMOTE host proxy communicates between the X clients and the LOCAL
  345.   host proxy, and the LOCAL host proxy communicates between the X server
  346.   and the REMOTE host proxy.
  347.  
  348.   So, to both the X clients and the X server, it looks like X protocol
  349.   as usual.
  350.  
  351.  
  352.   11.1.1.  Advantages
  353.  
  354.  
  355.   ╖  Since it's a completely separate application that does not require
  356.      any X internals, it's much simpler to compile and install.
  357.  
  358.   ╖  It's maintained separately, so you don't have to wait for the OSF
  359.      to release new X versions for enhancements or fixes.
  360.  
  361.   ╖  It provides more and better compression information and statistics
  362.      than lbxproxy.
  363.  
  364.  
  365.   11.1.2.  Disadvantages
  366.  
  367.  
  368.   ╖  It is not a standard part of X; you must obtain and build it
  369.      separately.
  370.  
  371.   ╖  It is slightly more complex to set up, since it requires a LOCAL-
  372.      side proxy as well as the REMOTE proxy.
  373.  
  374.  
  375.   11.1.3.  Where Can I Get dxpc?
  376.  
  377.   The source for dxpc is available at ftp.x.org
  378.   <ftp://ftp.x.org/contrib/utilities/>.
  379.  
  380.   There is a WWW homepage for dxpc that gives a lot of good information,
  381.   including pointers to the dxpc mailing list, access to the source
  382.   code, and a number of pre-built binaries for various platforms:
  383.  
  384.   <http://ccwf.cc.utexas.edu/~zvonler/dxpc/>
  385.  
  386.  
  387.   11.2.  Ssh (Secure Shell)
  388.  
  389.   Ken Chase <lbxhowto@sizone.org> notes that ssh
  390.   <http://www.cs.hut.fi/ssh/> can be used for compression.  Although its
  391.   main purpose is to provide security, it also compresses the data it
  392.   sends.
  393.  
  394.   Thus, if you run X over a ssh link you will automatically obtain some
  395.   amount of compression.
  396.  
  397.   11.3.  Which Is Better?
  398.  
  399.   I don't know.  Both LBX and dxpc are certainly better at raw
  400.   compression than ssh.  Of course, ssh provides the added advantage of
  401.   security.  And of course, there's no reason you can't use both ssh and
  402.   one of the other two, to get good compression and security.
  403.  
  404.   It shouldn't be hard to run some benchmarking against these options
  405.   and get both subjective and statistical measurings of performance.
  406.   But I haven't done this, and I don't know of anyone who has.
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.