通过无线桥接启动瘦客户端
在 20 世纪 70 年代和 80 年代,企业和学术计算的普遍模式是许多用户远程登录到单个服务器,以使用其宝贵的处理时间的一小部分。然而,随着半导体的成本紧随摩尔定律在随后的几十年中快速下降,计算领域的下一个进步是台式计算机成为标准,因为它变得更加经济实惠。
虽然瘦客户端背后的技术并非革命性的,但它们近来的人气一直在上升。对于许多依赖较旧的捐赠硬件的机构来说,瘦客户端网络是为用户提供对相对较新的软件的访问的唯一可行方式。它们的用途在企业环境中也蓬勃发展。瘦客户端网络提供成本节约,简化网络管理,并在需要处置它们时减少安全隐患。几家计算机制造商已跃跃欲试,争夺这个不断扩大的市场:戴尔和惠普康柏等公司现在为企业客户提供瘦客户端解决方案。
当然,瘦客户端也拥有大量的业余爱好者和发烧友,他们在其无数的自制项目中极大地利用了它们的小巧尺寸和灵活性。诸如 Etherboot 项目和 Linux 终端服务器项目等软件项目拥有庞大而活跃的社区,并为那些希望尝试无盘工作站的人提供出色的支持。
将瘦客户端连接到服务器始终使用以太网完成;然而,情况正在发生变化。无线技术,例如 Wi-Fi (IEEE 802.11),已经取得了巨大的进步,现在可以开始提供将客户端连接到服务器的另一种方式。此外,无线设备在世界范围内广受欢迎,兼容产品随处可见且非常便宜。
在本文中,我们将简要描述瘦客户端网络的设置,以及我们发现对其运行和管理有用的一些工具。我们还将描述我们设置的一个测试场景,其中涉及一个跨越无线桥接的瘦客户端网络。
瘦客户端是一台没有本地硬盘驱动器的计算机,它在启动时从启动服务器加载其操作系统。它旨在独立处理数据,但完全依赖其服务器进行管理、应用程序和非易失性存储。
在客户端的 BIOS 序列之后,大多数具有网络启动功能的机器将启动预启动执行环境 (PXE),这将系统控制权传递给本地网络适配器。图 1 说明了启动过程的流量配置文件以及从 1 到 5 编号的各个不同阶段。网卡广播一个 DHCPDISCOVER 数据包,其中设置了特殊标志,指示发送者正在尝试查找有效的启动服务器。本地 PXE 服务器将回复有效的启动服务器列表。然后,客户端选择一个服务器,从服务器请求 Linux 内核文件的名称,并使用简单文件传输协议 (TFTP;阶段 1) 启动其传输。然后,客户端像往常一样加载并执行 Linux 内核(阶段 2)。然后运行自定义的 init 程序,该程序搜索网卡并使用 DHCP 在网络上标识自身。使用 Sun Microsystems 的网络文件系统 (NFS),瘦客户端然后将位于 PXE 服务器上的目录树挂载为其自己的根文件系统(阶段 3)。一旦客户端拥有非易失性根文件系统,它将继续加载其余的操作系统环境(阶段 4)——例如,它可以挂载本地文件系统并创建一个 ramdisk 以存储临时文件的本地副本。启动过程的第五阶段是 X Window 系统的启动。这会将来自瘦客户端的击键传输到服务器进行处理。服务器反过来发送图形输出,以便由瘦客户端上的用户界面系统(通常是 KDE 或 GNOME)显示。
X 显示管理器控制协议 (XDMCP) 在系统中的硬件和向用户显示的输出之间提供了一个抽象层。这允许用户通过本地局域网(在本例中)在物理上远离硬件。当 X Window 系统在瘦客户端上运行时,它会联系 PXE 服务器。这意味着用户登录到瘦客户端以获取服务器上的会话。
在传统的胖客户端环境中,如果客户端从网络服务器打开一个大文件,则必须通过网络将其传输到客户端。如果客户端保存该文件,则该文件必须再次通过网络传输。在带宽有限的无线网络的情况下,胖客户端网络效率非常低。另一方面,使用瘦客户端网络,如果用户修改大文件,则只有鼠标移动、击键和屏幕更新被传输到和从瘦客户端传输。这是一种非常有效的方式,其他示例(例如 ICA 或 NX)可能仅消耗 5kbps 的带宽。这种流量级别适合通过无线链路传输。
瘦客户端的要求之一是它具有 PXE 可启动系统。通常,PXE 是您的网卡 BIOS 的一部分,但如果您的网卡不支持它,您可以从 ROM-o-matic (请参阅资源) 获取带有 PXE 支持的 Etherboot 的 ISO 映像。查看服务器,例如,十个客户端,它应该有足够的硬盘空间 (100GB)、足够的 RAM (至少 1GB) 和现代 CPU (例如 AMD64 3200)。
以下是关于通过固定网络设置 Edubuntu 瘦客户端网络的五步操作指南。
1. 准备服务器。
在我们的网络中,我们使用了标准独立配置。从命令行
sudo apt-get install ltsp-server-standalone
如果您更改客户端的默认 IP 范围,您可能需要编辑 /etc/ltsp/dhcpd.conf。默认情况下,它配置为在 192.168.0.1 上为 PXE 客户端提供服务的服务器。
我们的网络不在防火墙后面,但如果您的网络在防火墙后面,您需要打开 TFTP、NFS 和 DHCP。为此,请编辑 /etc/hosts.allow,并将 portmap、rpc.mountd、rpc.statd 和 in.tftpd 的访问权限限制为本地网络
portmap: 192.168.0.0/24 rpc.mountd: 192.168.0.0/24 rpc.statd: 192.168.0.0/24 in.tftpd: 192.168.0.0/24
通过执行以下命令重新启动所有服务
sudo invoke-rc.d nfs-kernel-server restart sudo invoke-rc.d nfs-common restart sudo invoke-rc.d portmap restart
2. 构建客户端的运行时环境。
在连接到 Internet 的情况下,发出命令
sudo ltsp-build-client
如果您未连接到 Internet 并且 CD 上有 Edubuntu,请使用
sudo ltsp-build-client --mirror file:///cdrom
记住将 sources.list 从服务器复制到 chroot 中。
3. 配置您的 SSH 密钥。
要配置您的 SSH 服务器和密钥,请执行以下操作
sudo apt-get install openssh-server sudo ltsp-update-sshkeys
4. 启动 DHCP。
您现在应该准备好启动您的 DHCP 服务器
sudo invoke-rc.d dhcp3-server start
如果一切顺利,您应该准备好启动您的瘦客户端。
5. 启动瘦客户端。
确保客户端连接到与您的服务器相同的网络。
打开客户端电源,如果一切顺利,您应该会看到一个漂亮的 XDMCP 图形登录对话框。
一旦瘦客户端网络启动并正确运行,我们在我们的网络中添加了一个无线桥接。在我们的网络中,许多瘦客户端位于单个集线器上,该集线器通过 IEEE 802.11 无线桥接与启动服务器分离。这并非不切实际的情况;这种情况可能发生在公司环境或大学中。例如,如果一组瘦客户端位于没有访问主网络的其他或临时建筑物中,一个简单而优雅的解决方案是在客户端和服务器之间建立无线链路。以下是关于使桥接运行以使客户端可以通过桥接启动的迷你指南
将服务器连接到接入点的 LAN 端口。使用此 LAN 连接,访问接入点的 Web 配置界面,并将其配置为在唯一通道上广播 SSID。确保它处于基础设施模式(而非 ad hoc 模式)。保存这些设置并断开服务器与接入点的连接,使其保持通电状态。
现在,将服务器连接到无线节点。使用其 Web 界面,连接到接入点广播的无线网络。同样,确保节点以基础设施模式连接到接入点。
最后,将瘦客户端连接到接入点。如果有多个瘦客户端连接到单个集线器,请将接入点连接到此集线器。
我们发现 ad hoc 模式不合适有两个原因。首先,大多数无线设备将 ad hoc 连接速度限制为 11Mbps,这将使网络承受巨大的压力,即使启动一个客户端也是如此。其次,在 ad hoc 模式下,我们使用的无线节点会将上次访问其 Web 界面(使用以太网)的计算机的媒体访问控制 (MAC) 地址假定为其自己的无线 LAN MAC。这使得节点适合将单个计算机连接到无线网络,但不适合桥接目标为多台计算机的流量。此细节仅在经过大量侦查后才发现,并导致我们的系统中出现一系列零星且经常无法重现的错误。
无线设备将在服务器和瘦客户端之间形成开放系统互连 (OSI) 第 2 层桥接。换句话说,无线设备在其以太网接口上接收到的所有数据包都将通过无线网络转发,并在另一个无线设备的以太网适配器上重新传输。该桥接对于客户端和服务器都是透明的;两者都不知道桥接的存在。
为了管理瘦客户端和网络,我们使用了 Webmin 程序。Webmin 包括一个 Web 前端和许多 CGI 脚本,它们直接更新系统配置文件。由于它是基于 Web 的,因此只需使用 Web 浏览器登录到服务器,即可从网络的任何部分执行管理。图形界面大大简化了任务,例如从网络添加和删除瘦客户端或更改启动时要传输的映像文件的位置。另一种方法是手动编辑多个配置文件并手动重新启动所有守护程序。
瘦客户端的启动过程是网络密集型的,但是一旦操作系统传输完毕,客户端和服务器之间的流量就很少了。由于启动瘦客户端所需的时间是衡量网络整体可用性的良好指标,因此这是我们在所有测试中使用的指标。
我们的测试平台由一台 3GHz Pentium 4 组成,配备 1GB RAM 作为 PXE 服务器。我们为服务器选择了 Edubuntu 5.10,因为这个版本(以及所有更新版本的 Edubuntu)都包含 LTSP。我们使用了六个相同的瘦客户端:500MHz Pentium III 机器,配备 512MB RAM——对于我们的目的来说,这已经足够多的处理能力了。
在执行测试时,重要的是获得的结果不受任何外部影响。其中很大一部分是确保无线桥接不受任何其他无线网络、工作在 2.4GHz 频率的无绳电话、微波炉或任何其他射频 (RF) 干扰源的影响。为此,我们使用了 Azimuth 301w 测试室来容纳无线设备(请参阅资源)。这确保了启动时间的任何变化都是由系统本身内的随机变量引起的。
Azimuth 是一个用于 802.11 无线网络系统级测试的测试平台。它将两个无线设备(在我们的例子中,是组成我们桥接的设备)保存在单独的腔室中,并在它们之间提供人工介质,从而完全隔离外部 RF 环境。Azimuth 可以衰减无线设备之间的介质,并将分贝的衰减转换为它们之间的大概距离。这为我们提供了可重复性,这在无线 LAN 评估中是罕见的。图 2 显示了我们的测试平台的图形表示。
我们在三种不同的场景中广泛测试了瘦客户端网络:首先,当多个客户端同时通过网络启动时;其次,在不同距离下通过网络启动单个瘦客户端,这些距离通过改变腔室引入的衰减来模拟;第三,当服务器和网络上的其他客户端之间存在大量后台网络流量时,启动单个客户端。
如图 3 所示,有线网络更适合瘦客户端网络。使用 802.11g 网络的主要限制因素是其可用带宽的不足。即使老旧的 100Mbps 以太网也轻松超越 802.11g,后者提供最大数据速率为 54Mbps(而实际传输速度不到它的一半)。在像这样的网络中使用 802.11g 桥接时,最好记住其局限性。如果您的网络包含多个客户端,请尽可能错开它们的启动过程。
其次,如图 4 所示,将桥接长度保持在最短。使用 802.11g 技术,在 25 米的长度之后,单个客户端的启动时间急剧增加,很快达到三分钟的标记。最后,我们的测试表明,如图 5 所示,大量的后台流量(由其他客户端启动或外部来源生成)也对无线环境中的客户端启动过程产生重大影响。随着后台流量达到我们最大吞吐量的 25%,启动时间开始飙升。在指出了 802.11g 的局限性之后,802.11n 即将问世,它可以提供 540Mbps 的数据速率,这意味着这些局限性可能很快就不再是问题。
与此同时,我们可以推荐几种加快启动过程的方法。首先,从瘦客户端中剥离不需要的服务。其次,修复 klibc 中 NFS 挂载的延迟,并尝试在启动过程中尽早启动 LDM,这意味着将其作为 rc2.d 中的第一个服务运行。如果您不需要系统日志,您可以从瘦客户端启动中完全删除 syslogd。最后,值得记住的是,在客户端完全启动后,它只需要很少的带宽,并且当前的无线技术完全能够支持瘦客户端网络。
资源
Linux 终端服务器项目 (LTSP): ltsp.sourceforge.net
Ubuntu 瘦客户端操作指南: https://help.ubuntu.com/community/ThinClientHowto
Azimuth WLAN 室: www.azimuth.net
ROM-o-matic: rom-o-matic.net
Etherboot: www.etherboot.org
Wireshark: www.wireshark.org
Webmin: www.webmin.com
Edubuntu: www.edubuntu.org
Ronan Skehill 在爱尔兰利默里克大学的无线接入研究中心工作,担任高级研究员。该中心专注于所有与无线相关的事物,自 1999 年成立以来一直在稳步发展。
Alan Dunne 在 John Nelson 的指导下在该中心进行了他的毕业设计项目。他于 2007 年毕业于计算机工程专业,现在在爱立信爱尔兰公司担任网络集成工程师。
John Nelson 是利默里克大学电子与计算机工程系的资深讲师。他的兴趣包括移动和无线通信、软件工程和环境辅助生活。