Linux 作为互联网信息亭
如果您对互联网的消费者应用感兴趣,您一定听说过网吧和所谓的“互联网信息亭”。两者都试图将无处不在的互联网可访问性带给公众。在网吧中,其理念是让您在熟悉的咖啡馆舒适环境中浏览互联网(甚至进行实际工作)。互联网信息亭应该成为快速且易于使用的站点,用于查看电子邮件或在网络上查找一些信息。
剑桥市马萨诸塞州的自由咖啡馆是波士顿地区第一家此类咖啡馆,成立于 1994 年秋季。从一开始,我们就配备了几台电脑供顾客使用,并收取少量小时费。我们自己的经验,加上其他咖啡馆老板的经验,最终使我们得出结论,我们很多人都有兴趣为顾客提供互联网访问,但却完全不知道该如何去做。
1996 年 3 月,NetPod 项目诞生,由自由咖啡馆资助和管理。我们着手构建一个公共访问互联网终端,即“NetPod”,它将允许任何花一美元的人上网、使用 TELNET、查看电子邮件或执行任何常见的互联网功能。该系统必须非常易于使用、万无一失、快速、可靠且易于在目标站点安装。也许不足为奇的是,我们为网络中的每台机器都选择了 Linux。《Linux Journal》1997 年 4 月刊上 Phil Hughes 撰写的文章“Linux—互联网设备?”引起了我们的共鸣,因为他所说的大部分内容正是我们正在做的。虽然我们的系统不是为家庭设计的,但它确实试图提供任何人都能理解的界面,它在廉价硬件上运行,它是一个互联网设备,当然,它运行的是 Linux。
为了理解我们的网络架构,有必要了解我们希望提供的服务类型。当用户接近 NetPod 时,他会看到一个经过大量修改的 XDM(X 显示管理器),它为他提供了几个选项:访客登录、账户登录、关于和创建账户(见图 1)。机器的使用费用为每小时六美元,以十分钟一美元的增量支付。用户将纸币插入 NetPod 侧面的验钞机(见图 2)。
访客登录仅提供对 Netscape Navigator 和 TELNET 的访问,而账户(每月费用为三美元)还提供电子邮件(发送和接收)以及从完整新闻源访问 Usenet 新闻组的功能。
登录后,用户会看到一个大型 Netscape 窗口和一个屏幕右侧的工具栏,该工具栏允许他们在系统的各个部分之间切换(见图 3)。他们的剩余时间也显示在工具栏上。当账户持有人注销时,他们剩余的钱将保留到下次登录会话。当访客注销时,任何剩余的钱都将丢失。
如前所述,我们使用 XDM 作为登录屏幕。这是因为 XDM 相对容易修改,并且可以处理用户登录的所有细节,例如设置 X 访问控制和创建环境。整个登录程序只是通过 Greet() 函数链接到 XDM。由于我们不想处理 Motif 的臃肿或 X 工具包的复杂性,我们为 NetPod 设计了自己的 GUI 工具库。这使我们能够定制系统外观的每一个细节。它还使我们能够轻松构建独特的界面元素,例如异形图形按钮,其中一些可以在图 1 中看到。
工具栏的编写难度要大得多。我们选择使用 FVWM 作为窗口管理器,因为它易于定制,并提供 module 函数,该函数允许单独的程序探测 FVWM 的内部窗口信息和结构。我们将 FVWM 配置为不允许窗口移动、没有特殊菜单和没有按键控制;简而言之,它被紧紧锁定,用户无法进行任何涉及窗口管理的操作。
工具栏不断接收来自 FVWM 的有关窗口更新的信息,因此我们可以提取 Netscape 窗口、TELNET 会话等的窗口 ID,并在用户单击工具栏按钮时移动窗口。
如果 Netscape 是一个相对简单的程序,这种方案就可以很好地工作,但 Netscape 在正常操作期间会打开许多其他窗口,例如邮件和新闻窗口、对话框等。跟踪所有这些窗口有点麻烦,而且随着我们最近合并了 Netscape Communicator,这种情况变得更加困难,后者打开的窗口比 Navigator 多得多。
尽管可能很简单,但许多用户称赞我们直观的界面易于使用且速度快。习惯了迟缓的 Windows 和 Mac 系统的用户简直不敢相信像我们这样的机器(奔腾 100,配备 16MB 内存)可以如此快速和响应迅速——这在很大程度上归功于我们使用了 Linux 和 X 窗口系统。
我们的网络是随机硬件和手工构建软件的混合体。进入自由咖啡馆的是两条 384Kbps 的部分 T1 线路。一条连接到我们的 ISP,并使用 Cisco HDLC 协议提供互联网服务。另一条是帧中继线路,为 NetPod 提供服务。两条 T1 都连接到我们的路由器(一台运行 Linux 的 486DX/40),它也有两张以太网卡。一张以太网用于咖啡馆(包括供公众使用的网络插孔),另一张用于 NetPod 机器。
您不常听到使用单个 Linux 盒子作为多个以太网和 T1 线路(具有不同协议)的路由器,更不用说一台性能较弱的 486DX/40 了。但是,由于 SDL Communications 的 RISCom/N2 卡,这是可能的。一个带有 T1 CSU/DSU 的 RISCom/N2 连接到其 v.35 端口,运行帧中继连接,另一个 RISCom/N2csu(带有内置 CSU/DSU)运行 Cisco HDLC 互联网连接。
启动和运行这些卡大部分都很简单,尽管有很多小细节,例如 T1 线路的电气特性,有时我们不得不猜测并希望它能工作。在卡启动后,路由很容易——只需将 IP 转发编译到内核中,设置一些子网,一切都会就位。
NetPod 以太网上只有几台机器,其中最重要的是 NetPod 服务器。服务器是一台奔腾 100(运行 Linux),配备 32MB 内存,用于处理 NetPod 邮件(使用 ZMailer)、Usenet 源 (inn)、用户主目录的 NFS 服务以及 NetPod 数据库。数据库用于跟踪用户信息,是自定义编写的,并通过加密通道与 NetPod 通信以确保安全。
服务器已完全开启 IP 防火墙。虽然任何人都可以连接到 SMTP、POP 和 IMAP 守护程序,但其他一切(最具体的是 NFS)都受到严格控制。
每个 NetPod 都有一个 56Kbps 的帧中继连接。据我们所知,我们是世界上唯一一家选择帧中继的互联网终端公司;绝大多数公司使用标准电话线,少数公司使用 ISDN。每条帧中继线路都分配了一个不同的 PVC(永久虚电路)号码。它们的数据被整合并显示在自由咖啡馆的帧中继 T1 上。
虽然帧中继对于互联网终端来说可能看起来是过度杀伤,但它具有巨大的优势。
帧中继速度很快。帧中继线路上的延迟远小于通过调制解调器的 PPP 连接。这直接转化为 Netscape 更快的 TCP 连接时间。我们保证 56Kbps 的带宽,而普通的 33.6Kbps 或 56Kbps 调制解调器不太可能获得其理论最大带宽。
帧中继很便宜。我们的线路每月花费大约 150 美元。对于上面提到的相对平庸的速度优势来说,这似乎是一笔相当大的溢价,但请记住,马萨诸塞州位于 NYNEX(美国东北部的电话公司)的区域。[NYNEX 覆盖了美国东海岸从缅因州到纽约州,而贝尔大西洋覆盖了从新泽西州南部到弗吉尼亚州,它们刚刚合并。合并后的公司是贝尔大西洋——编者注。] 我们发现 NYNEX 会向我们收取每月 数千 美元的费用,用于 24 小时开通的 64Kbps ISDN 连接。标准模拟拨号的情况也好不到哪里去;根本无法避免任何类型的商业电话线的荒谬的按分钟收费。
因此,帧中继是显而易见的选择。然而,帧中继的启动成本令人望而却步。一个 SDL RISCom/N2dds(带有内置 56Kbps CSU/DSU)和帧中继软件的成本为 750 美元。线路的安装成本还要高出几百美元。尽管如此,我们仍然认为帧中继技术具有非常实际的好处。能够随时随地远程访问 NetPod 非常有用。
为了降低帧中继的成本,我们已经开始了一个附加项目,为 Linux 添加帧中继支持。我们经常想知道为什么 Linux 没有帧中继协议驱动程序。似乎主要原因是复杂性和成本。您可以看出帧中继的某些部分是由委员会设计的;每个参与者都设法将他或她最喜欢的功能塞进了某个地方,但它们并非都完全合适。所有相关的标准文档都必须从 ITU(国际电信联盟)购买,然后再进行解读。
我们认为,如果我们使用 BAT Electronics CSU/DSU(我们能找到的最便宜的)然后加上我们自己设计的极简同步到异步转换器,我们可以将帧中继的成本降低约 500 美元。该转换器采用 CSU/DSU 的同步比特流,以 115,200 波特的 RS-232 字节重新封装,并将其发送到 NetPod,然后 NetPod 使用帧中继驱动程序对其进行解释。截至 6 月初,我们已经通过该系统建立了成功的 TCP 连接,现在我们正专注于提高驱动程序的稳定性和性能。一旦它们准备好发布,我们将把驱动程序捐赠给标准内核发行版,以便任何生成 HDLC 帧比特流的设备(如基于 Z8530 的同步卡)都可以用于帧中继。
我们是一家 100% 的 Linux 商店。除了我们在 Macintosh 上做的一些图形工作以使专业打印机满意之外,每台机器都是运行 Linux 的 PC。Linux 给了我们很多,本着 Linux 的真正精神,我们觉得我们必须回馈社区,我们希望通过我们的帧中继软件包来实现这一目标。
虽然我们是最早的公司之一,但我们肯定不是唯一一家尝试创建公共互联网接入解决方案的公司。我们最初的目标市场是市场的一小部分,即咖啡馆和类似的场所,但我们意识到我们的系统可以应用于更广泛的站点。我们认为,从总体上讲,我们拥有市场上最好的互联网终端系统。
我们之所以这样认为,是出于以下几个原因。首先,我们有一个尽可能傻瓜式的界面(Netscape 除外)。我们有一条快速可靠的互联网链路,始终保持畅通。我们提供其他公司不提供的账户和其他服务。我们不会让用户花大价钱使用我们的终端。
相比之下,其他互联网终端(其中大多数运行 Microsoft 操作系统)更倾向于为用户提供“有趣的玩具”,而不是为实际 使用 系统提供任何激励。为了获得这些玩具,机器必须运行 Windows,这意味着它们放弃了我们利用的所有 Linux 优势。它们不稳定且总是崩溃。它们不提供易于使用的界面。计费系统通常是临时拼凑的;许多系统只是在用户的时间用完时切断键盘和鼠标的电源。它们提供的安全性极低;在我们玩过的几乎每个终端上,我们都设法在几分钟内获得了对系统的完全管理访问权限。
这里要记住的根本要点是,如果没有 Linux,我们不可能用如此少的资金、如此少的时间和如此少的麻烦来完成 任何 这些事情。其中一些事情对于任何其他操作系统,甚至其他 Unix 系统来说,都是完全不可能的。由于 Linux 类似于 Unix,我们可以控制系统的每个方面。而且由于 Linux 是免费的,我们可以做一些事情,例如随意地将我们自己的帧中继驱动程序添加到内核中。
我们的第一个 NetPod 于 1996 年 8 月在自由咖啡馆投入公共使用。在收到用户数月的反馈后(以及在等待 NYNEX 三个月安装我们的帧中继线路后),我们在 1997 年 2 月在剑桥/波士顿地区的 Someday 咖啡馆和 Seattle Joe's 咖啡馆又放置了两个 NetPod。我们正在为今年秋季大量新站点的部署做准备。
构建 NetPod 系统的基础设施,包括网络和核心软件,一直具有挑战性,但我们已经证明它有效,并且运行良好。当我们面对每一个挑战时,我们都看到运行 Linux 的盒子可以提供解决方案。现在我们可以专注于添加新功能以扩展系统的吸引力。
尽管可能令人遗憾,但事实证明,我们的许多用户都希望通过我们的 NetPod 访问他们的 America Online 帐户。我们通过 Caldera 购买了一个 Wabi(Windows 应用程序二进制接口)副本,并且我们发现(令我们非常惊讶的是)它实际上运行了 AOL 的 Windows 软件,而且实际上运行得非常好。我们最近将其与许多其他新功能以及一套精简、更完整的用户工具结合在一起。仍有许多新功能正在建设中。
简而言之,如果它涉及网络,我们想将其添加到 NetPod 中。NetPod 能够做到他们所做的事情的原因,以及我们有理由考虑我们拥有的某些疯狂想法的原因,是因为我们在 NetPod 网络中的每个系统上都使用 Linux。试想一下,使用 Windows 95 在分布式文件系统上使用帧中继实现多用户访问控制,然后从 Netscape 切换到运行 Quake 的 SVGAlib 虚拟终端,然后切换到在 Windows 模拟器中运行的 AOL。这应该会让您不寒而栗。有了 Linux,这简直是小菜一碟。
Kevin McCormick 是麻省理工学院的高年级学生,主修电气工程和计算机科学。他是 NetPod 项目的首席程序员。当不在麻省理工学院或 NetPod 埋头苦干时,他会尝试将目光所及的一切都连接到互联网,包括(不开玩笑)他兄弟会的厕所。可以通过 fbyte@netpod.com 与他联系。