The LBX Mini-HOWTO Paul D. Smith, [1]psmith@baynetworks.com v1.04, 11 December 1997 _________________________________________________________________ LBX (Low Bandwidth X) 是一种在 X Protocol 上进行压缩的 X Server 延伸。 他的用意在於改善低速网路连接时,X 程式与 X Server 显示及回应的时间。 _________________________________________________________________ 1. 内容 2. LBX 目前的状况? 3. 谁能再 LBX 上获得利益? 4. 谁不需要 LBX? 5. 如何让 LBX 工作? 6. 我需准备要什麽去使用 LBX? 7. 我不需要准备什麽去使用 LBX? 8. 如何使 LBX 开始工作? 9. 问题 10. Documentation 11. Alternatives * 11.1 dxpc - 一个极不一样的 X Protocol 压缩程式 * 11.2 Ssh (Secure Shell) * 11.3 谁比较好? _________________________________________________________________ 1. 内容 X protocol 可能制造网路上的壅塞, 尤其是一些看似简单的事情,例如开新的 视窗。 任何人尝试著在 28.8 或是更快的拨接网路上使用 X 开启一个 X 视窗都 能造成极痛苦的等待。 LBX 基本上是为了减少两个系统的 X 讯息交换压缩极快取的专案。 2. LBX 目前的状况? LBX 完全延伸在 1996十二月由 X 社群释出 X11R6.3 的 X Protocol 。 以 XFree86 家族而言,她算是 XFree86 3.3.x 系列的一分子。 3. 谁能再 LBX 上获得利益? 如果你利用拨接使用服务,LBX 将可以加速 X 程式於远端执行,而在 DISPLAY 环境变数设定的本端的 连接。此外如果 DISPLAY 设定跨越 WAN (例如跨国的) 或是其他的低速连接, LBX 都有所助益。 4. 谁不需要 LBX? 如果你镜静止需要在本端使用X 或是你根本不使用 X,当然, LBX 不会有任何助 益。 如果你在高速的 LAN 上, LBX 也不会有太大助益。 有些人也许会问"如果 LBX 能减低网路交通,那麽为什会在 高速的 LAN 上没有帮助?" 如果你的目的是在 於减少网路流量 那麽它的确可能有所帮助。 但是你的目的是减少 X 的回应时间 , LBX 可能不是你所需要的。 虽然它使用快取以及 压缩,但是他们也造成一些 花费 ( 快取需要记忆体 压缩需要 CPU 时间 )。 如果你的连线已经很快速了 LBX 反而可能降低速度。 5. 如何让 LBX 工作? LBX 利用在 X client 端的一个处理快取和压缩的代理伺服器工作。 X 伺服器知 道远端使用这一个代理装置,并依据他而进行解压缩。 以下是 X clients的一般设定。在我们的讨论中本端 (LOCAL) 指的是在你面前的 工作站,你能见到它的萤幕。而远端 (REMOTE) 指的是你远端跑程式的工作站。 ______________________________________________________________ REMOTE LOCAL +-----+ +-----+ | APP |-\ Network +----------+ | |\ +-----+ \--------------------------->| X SERVER |=>| || +-----+ / (X Protocol) +----------+ +-----+\ | APP |-/ /_____// +-----+ ______________________________________________________________ 当使用 LBX ,一个代理伺服器 ( lbxproxy ) 在远端被处理 ,现在本端先和代 理伺服器沟通,而不是直接和程式沟通。 接著这程序处理快取以及压缩 X 的要 求并传递他们。 他们看起来像是∶ ______________________________________________________________ REMOTE LOCAL +-----+ +-----+ +-------+ Network +----------+ | |\ | APP |->| PROXY |----------------------------->| X SERVER |=>| || +-----+ +-------+ (LBX/X Protocol) +----------+ +-----+\ +-----+ / /_____// | APP |--/ +-----+ ______________________________________________________________ 至於到底是什麽东西被压缩以及被快取则不是这放文件讨论的□围。 6. 我需准备要什麽去使用 LBX? 你需要一个已经将 LBX 编译整合在本端的 X Server。 除非你在编译的时候指定 不将 LBX 整合於其中, 否则 X11R6.3 会自动的使用 LBX 的特性。 所有的 XFree86 3.3 server 预设都会把 LBX 整合於其中。 你可以使用 xdpyinfo 这个命令检是你的 server 是否打开了 LBX 的功能。 执 行 xdpyinfo 即可在 number of extensions 的列表下面,见到 LBX 列在其中。 下一不你需要一个在远端已经将 lbxproxy 这程式编译在内的系统。 这边有个陷 阱。 如果远端的系统和你本端不同,那麽在本端的 lbxproxy 将不会作用。 很不幸的,没所所谓分离开的 lbxproxy ,所以 你必须 (a) 所有的远端系统都 使用X11R6.3,或是 (b) 找一个针对你的本端系统预先编译好的 lbxproxy。 当 然後者是比较方便的。 lbxproxy 仅仅是一个单一执行档。 它没有任何的设定档或是资源档,或诸如此 类的档案。 7. 我不需要准备什麽去使用 LBX? 远端系统不需要一个新的 X server (如同一般的状况,远端系统并不需要任何一 个 X Server). 你所需的程式并不需要指定特别版本的 X 或是特别的函式库。 我借由 LBX 使用 X11R5 的程式,也没碰到什麽问题。 你不需要使用 root 或是特别的权限存取选端系统。 你只需要一般的权限执行 lbxproxy。 另外你只需要在你自己的家目录下执行即可,lbxproxy 并不需要安 装在特定的目录。 8. 如何使 LBX 开始工作? OK,接下来的步骤都很简单。 将下列 LOCAL 以及 REMOTE 用你本端以及远端的 主机名称取代。 ( 千万不要搞混了 )On LOCAL: 1. 启动你的 X server。 2. 告诉你的 X server 哪些远端系统是被允许存取的。 使用 host-list 的方 法,键入 xhost + REMOTE。如果你要使用 xauth 你需要作更多事情;请参 阅 man xauth(1) 以获得更多的资讯。 如果你不熟悉 X 远端的存取,那麽 你需要参阅 [2]Remote X Apps Mini-HOWTO 。 On REMOTE: 1. 起始 lbxproxy 并告诉它传送讯息到本端的 X server,如下∶ $ lbxproxy -display LOCAL:0 :1 & 这告诉 lbxproxy 在远端系统使用 display :1 ;如果系统大於 1 的 display 已经在使用。你可以使用 :2 之类的设定取代。 2. 设定你的 DISPLAY 环境变数,使此环境变数和你 lbxproxy 所设定的相同。 取代平常的 DISPLAY 设定 $ DISPLAY=:1 $ export DISPLAY 如果你使用 csh 之类的,以下可能是你所需要的∶ % setenv DISPLAY :1 3. 如果你使用 xauth 你需要确定你的 cookie 正确的运作。你可以从 [3]Remote X Apps Mini-HOWTO 获的更多的资讯。 4. 执行你的 X 程式! 接下来就完成了;所有在 Display 环境变数为:1 的 X 程式都会在都会使用 LBX。当然,你没有办法起始一个 X 程式,其 Display 的环境变数是指向 LOCAL:0 以及在同一个时间下执行。 9. 问题 这边有一些常见的问题∶ Q) lbxproxy 以 access denied 的错误结束程式。 A) 这是代表你进端的系统不接受选端系统的连结而产生的错误。 请参阅 [4]Remote X Apps Mini-HOWTO 有更详尽的说明。 碰到这问题时,有一个简单的试验方式。请试著在远端不要透过 lbxproxy 执行一个简单的 X 程式, 比如说 xclock ∶ $ xclock -display LOCAL:0 如果它不能正常的工作,那麽就表示是xhost或是 其他一些基本的 X 问 题而不是 LBX。 10. Documentation 在标准的 X 文件中,唯一可以参阅的文件应该是 man lbxproxy(1)。 如果你有看 X 的原始档,那麽下列有些有趣的资讯有关 LBX ∶ * xc/doc/specs/Xext/lbx.mif (Framemaker MIF) * xc/doc/hardcopy/Xext/lbx.PS.Z (Compressed Postscript) * xc/doc/hardcopy/Xext/lbxTOC.html (HTML) LBX 更深入的演算法在下列的地方∶ * xc/doc/specs/Xext/lbxalg.mif (Framemaker MIF) * xc/doc/specs/Xext/lbxalg.PS.Z (Compressed Postscript) 如果你没有 X 的原始档,你可以由 [5]X 组织的 FTP 站取得。 11. Alternatives 如果你有某些原因不喜欢 lbxproxy 。例如你不喜欢他的执行效率, 它不帮你工 作, 你不想麻烦的为远端建立 lbxproxy 或著你只是想是是其他的选择, 这边 有一些其他的 X protocol 压缩方式。 (有没有人有其他的方案?) 11.1 dxpc - 一个极不一样的 X Protocol 压缩程式 * 原本的作者∶ [6]Brian Pane * 现下的维护者∶ [7]Zachary Vonler [8]dxpc 和 LBX 以相同的方式运作。然而为了避免修改 X Server的原始码 以及 实作一个 X Server 的扩充dxpc 使用 两个 代理伺服器∶ 一个像是 lbxproxy 跑在远端的系统,另一个则在本端执行。 在远端的代理伺服器负责沟通 X Client 以及本端的代理伺服器, 而本端的代理 伺服器负责沟通 X Server 以及远端的代理伺服器。 所以,对於 X clients 以及 X server 两造,他们都以平常的处理方式处理 X Protocol 优点 * 既然它是完全的独立程式而不需要动到 X 的内部, 它一定非常的 容易编译 以及安装。 * 它是独立的被维护著,所以你不需要 OSF 释出新的 X ,即可过的效能的增 进以及错误的修正。 * 它提供了比 lbxproxy 更多的压缩资讯以及统计资讯。 缺点 * 它不是 X 的标准套件,你必须自己取得以及编译安装。 * 它在安装上变的比较复杂,因为它要求在本端也要有一个像是远端的代理伺 服器。 我在哪里可以得到 dxpc? dxpc 的原始档可以自 [9]ftp.x.org取得。 这里有一个网页 [10]http://ccwf.cc.utexas.edu/~zvonler/dxpc/有 dxpc 很多 不错的资讯。包含了 dxpc 的 mailing list,原始档,以及 为多种平台预先编 译好的执行档。 11.2 Ssh (Secure Shell) [11]Ken Chase notes that [12]ssh 能被用於压缩。虽 然它只要的目的是为了保密,但是它也压缩它传送的资料。 所以如果你自一个 ssh 连结执行 X ,你在使用间自然会压缩资料。 11.3 谁比较好? 我不知道。 LBX 以及 dxpc 在纯压缩上比 ssh 好。当然, ssh 提供了在安全上 的附加功能。 不过,也没有任何理由禁止你使用 ssh 加上另外两种之一的压缩 方式,以获得良好的压缩以及安全性。 在这些选择上跑一些评量以获取统计资讯,应该不是很难的事。 但是我没有做过 这件事,也没有听说过任何人做过。 References 1. mailto:psmith@baynetworks.com 2. http://www.xs4all.nl/~zweije/xauth.html 3. http://www.xs4all.nl/~zweije/xauth.html 4. http://www.xs4all.nl/~zweije/xauth.html 5. ftp://ftp.x.org/pub/R6.3/xc/doc/ 6. mailto:brianp@cnet.com 7. mailto:lightborn@mail.utexas.edu 8. http://ccwf.cc.utexas.edu/~zvonler/dxpc/ 9. ftp://ftp.x.org/contrib/utilities/ 10. http://ccwf.cc.utexas.edu/~zvonler/dxpc/ 11. mailto:lbxhowto@sizone.org 12. http://www.cs.hut.fi/ssh/