西非的无线电电子邮件

作者:Wayne Marshall

编者注:本文的完整版本,后来发表在 Linux Journal 网站上。

在西非正面叶中心几内亚温暖翠绿的腹地深处,达博拉、基西杜古和恩泽雷科雷等分散城镇的国际救援人员现在可以正常使用互联网电子邮件,邮件直接发送到他们自己的桌面。这里看不到电话线或卫星天线。相反,我们正在使用高频 (HF) 无线电在数百英里的距离内传输邮件,跨越丛林覆盖的山脉和高耸的棕榈热带草原。我们的项目称为无线电电子邮件,以下是它的故事。

几内亚共和国是位于大西洋上的腰果形国家,位于西非赤道以北十度。它是一个美丽且资源丰富的国家,面积与俄勒冈州相当。就非洲国家而言,几内亚是一个平静、和平和稳定的地区,通常不会引起太多关注。但近年来,几内亚在世界事件舞台上悄然发挥了英勇的作用,为邻国塞拉利昂和利比里亚残酷的战争和内乱中流离失所的多达 50 万人提供了安全和受欢迎的避难所。

国际救援委员会 (IRC) 在几内亚开展了规模最大的行动之一,为遍布全国许多难民营的最多 20 万难民人口提供服务和支持。当我的妻子在 2001 年夏天接受了该项目国家主任的职位后,我开始参与 IRC。不久,我们开始对难民营进行考察,进行了长途公路旅行,走访了该项目在“内陆地区”的三个外地办事处。

在首都科纳克里以外旅行,人们立即发现几内亚的基础设施很少,尤其是在电网和电信系统方面,更不用说宽带互联网接入了。因此,IRC 外地办事处必须提供自己的基础设施:用于发电的柴油发电机和用于与其他办事处和移动单位通信的高频无线电装置,这些办事处和移动单位可能相距数百英里。

考虑到这种隔离和普遍缺乏连接的情况,我非常惊讶地发现一名无线电操作员正在使用他的设备将二进制文件从他的台式电脑无线传输到另一个外地办事处!在操作员的无线电设备顶部,连接到他的 PC 的串行端口,放着一个脏兮兮的黑色盒子,上面标有“9002 HF 数据调制解调器”。操作员使用专有的、基于 MS-DOS 的程序进行文件传输,但我立即开始思考。如果此设备正在无线传输二进制数据,为什么我们不能使用 Linux 设置它并使用 PPP 连接进行联网呢?

由于 IRC 已经拥有大部分设备,并且我们将使用 Linux 和其他免费提供的软件,因此该系统的实施成本可以忽略不计。我为该系统制定了设计和规范,我们称之为无线电电子邮件的项目自 2002 年 1 月以来一直在持续运行。

高频无线电传输距离远

如果您最近一直在转向无线,那么您很可能正在使用 802.11b 的微波、高带宽频率。如果是这样,您就会知道,在晴朗的日子里,您也许可以获得大约十英里左右的视线连接。高频无线电是另一种截然不同的事物。它的波长更长,可以从电离层反射以沿着地球的曲率传播,从而使高频信号的范围达到数百英里。从科纳克里到恩泽雷科雷(IRC 几内亚最偏远的外地办事处),高频无线电可以轻松覆盖超过 375 英里(600 公里)的直线距离。

因此,高频无线电的巨大优势在于它可以远距离传输,轻松跃过路径上的障碍。现在来说坏消息:高频无线电在无线传输范围方面胜出,但在数据容量方面却远远落后。如果 802.11b 被认为是宽带,那么可以将高频无线电视为几乎没有带宽。我们在这里使用的无线电调制解调器的额定速度为令人难以置信的 2,400 波特!

等等,情况变得更糟。双向无线电是经典的半双工通信介质。也就是说,您要么正在发送(按下通话键)要么正在接收,而不是同时进行。再加上调制解调器硬件实施的强大的错误检查协议,意味着实际链路体验更接近 300 波特。有人还记得 300 波特吗?除非您使用放射性碳来衡量您的耐心,否则您远程登录会话的梦想将会破灭。

但是,对于经典的存储转发应用程序(如基于文本的电子邮件),高频无线电的带宽限制是可以接受的。我们需要密切关注我们的配置,并尽可能进行优化。对于高频无线电,每个数据包都非常宝贵。

无线电网络拓扑

考虑到高频无线电的这些能力和限制,我们项目的设计策略是在外地办事处拓扑中使用无线电调制解调器,如图 1 的参考网络所示。在科纳克里,我们在主机 coyah 上有一个全职互联网网关,主机 congo 上的无线电调制解调器充当三个外地办事处中每个办事处的拨入中心。我们在外地办事处和科纳克里之间建立定期的 PPP 链路,并在 TCP/IP 上使用我们精心选择的客户端/服务器协议。虽然我们本可以使用 UUCP 将电子邮件实施到外地办事处,但我们的 TCP/IP 系统更易于配置,并且可以与现有网络和电子邮件系统集成。如果外地办事处可以使用更快的电信链路(如陆地线路或卫星),此设置也可以轻松转换为使用这些链路。

Radio E-Mail in West Africa

图 1. 无线电网络拓扑

但就目前而言,我们无法奢侈地将无线电设备专用于全职数据通信连接。事实上,语音通信仍然是无线电设备的核心用途。我们的实施和程序必须补充这一生命线,而不是损害它。由于无线电数据会话会阻止链路两端的语音呼叫,因此我们制定了策略和配置,将每次会话的连接时间保持在 15 分钟以内,以保持无线电空闲以进行语音联系。在外地办事处,无线电操作员制定了程序协议,用于在一天中的固定时间定期与科纳克里进行“拨号”连接,以进行电子邮件交换。无线电操作员会根据需要调整时间表和中断会话,以适应紧急语音通信。由于这些原因,所有拨号都必须由无线电操作员控制,而不是使用 cron 作业或 diald 设置。

本项目中使用的设备由澳大利亚制造商 Codan 制造。虽然还有其他制造商,包括摩托罗拉、建伍和八重洲,但 Codan 似乎是该地区国际援助组织的首选无线电设备。他们带有官方标记的大型白色陆地巡洋舰,每个前保险杠上都显眼地螺栓固定着粗大的 Codan 鞭状天线。这些粗大的黑色鞭状天线的象征性权威价值,例如在穿过许多军事检查站时,无疑是它们最突出的特点。

本项目中使用的调制解调器是他们的 9002 型号。这些调制解调器配备了类似 Hayes 的基本 AT 命令集,因此它们易于配置、操作和使用任何电信应用程序进行故障排除。

然而,此调制解调器与 Sportster 系列之间存在一些显着差异。首先,Codan 单元实际上是作为 DTE(数据终端设备)而不是 DCE(数据通信设备)构建的。要将其连接到您的串行端口,您需要一根 DB-9 空调制解调器电缆,其接线方式如图 David Lawler 的 Text-Terminal-HOWTO (www.tldp.org/HOWTO/Text-Terminal-HOWTO.html) 中所示。并非所有描述为空调制解调器的电缆都以相同方式接线,因此此细节至关重要。此外,AT 命令不如标准命令集那样广泛,并且略有不同。当然,此调制解调器传输数据的速度比您可能想象的要慢。

配置 mgetty 和 PPP

科纳克里无线电主机 congo(别名为 radiohub)配置为 PPP 服务器,准备接受来自外地办事处的无线电拨入连接。与传统的电话拨入配置一样,我们使用 mgetty 监视串行线路,初始化调制解调器,等待传入呼叫,应答“振铃”并启动 PPP 守护程序。

9002 的工作方式与 mgetty 期望的几乎相同。我们首先使用出厂默认设置 (AT&F) 将调制解调器设置为已知状态,然后进行防御性冗余。我们关闭所有命令、本地和远程回显 (E0 L0 R0);忽略载波 (X0);使用硬件流控制 (&K3);关闭自动应答 (S0=0 & A=0);并重置站地址 (&I=nnnn,其中 nnnn 就像电话号码,是其他无线电呼叫以联系此特定站点的唯一标识符)。

在 mgetty 应答“振铃”并从另一端获得“连接”响应后,接下来会发生什么?这由 mgetty 的 login.conf 文件控制。在拨入系统中,通常让 mgetty 查找传入的 PPP 数据包,然后自动启动 PPP 守护程序,通常在链路协商过程中使用 CHAP 进行身份验证。此类配置由以魔术字符串 /AutoPPP/ 开头的行处理。

但在我们的经验中,无线电链路的高延迟使得 /AutoPPP/ 配置启动缓慢。我们接下来要做的会令人震惊:我们完全放弃了传统的身份验证!在我们的配置中,传入连接的聊天脚本提供的登录名用于直接启动 PPP 守护程序。当 mgetty 将登录名与 login.conf 文件第一字段中的条目匹配时(例如 Pklogin),它会运行第四字段中指定的程序,例如 /usr/local/sbin/pppd.login.kenya。从本质上讲,远程系统使用的登录名用于控制访问。请注意,Pklogin 作为系统帐户是虚假的,您可以肯定我没有告诉您我们真正使用的字符串!(另请注意,即使在建立连接之前,我们也有一种隐式的身份验证系统,当操作员通过语音同意在启动链路之前锁定特定频道时。)

当 mgetty 获取 login.conf 文件中列出的登录名时,它会将控制权传递给相应的启动脚本,例如 pppd.login.kenya。这反过来又启动 PPP 守护程序,为特定的远程主机使用选项文件,例如 options.kenya。

为了避免您遭受痛苦的汗水、泪水和其他情绪分泌物的折磨,请注意 lcp-restart 和 ipcp-restart 选项。这些参数给出了 pppd 在尝试再次重试之前等待接收 PPP 协商的特定阶段的回复的时间(以秒为单位)。这些参数的默认值为三秒,这通常在使用常规电信时绰绰有余。

但是,在无线电中,如果这些重启默认值未延长,您只会给自己带来一团毫无用处的咆哮的毛球。以下是发生的情况。当 pppd 启动时,每个对等方都开始与另一方进行协商过程,以就连接的所有参数达成一致。在这些初始讨论期间,当链路一端在重启间隔内没有收到另一端的回复时,pppd 会重复传输。但与此同时,远程端收到原始传输并发送回其回复。本地端会收到对其第一次传输的响应,认为这是对其第二次传输的正确响应,然后继续执行协商的下一步。但是,本地服务器会收到现在是来自其第二次传输的意外响应,并且协商在未解决的混乱中崩溃。

通过延长 lcp-restart 和 ipcp-restart 参数,您可以延迟发送重复传输的时间,以便两端的对等方有足够的时间接收响应。我们配置了慷慨的 16 秒延迟,并且没有再遇到任何问题。

将我们的注意力转向内陆地区,外地办事处的每个远程主机都配置为拨打科纳克里的无线电服务器。在经历了我们所有的测试、失败和旅行折磨之后,当我们最终通过无线电波在几内亚大气层中隐形传播时,我们感到非常高兴和惊讶。从肯尼亚,我们实际上与刚果建立了 SSH 连接,只是为了与在科纳克里观看终端屏幕的无线电操作员进行“对话”会话,以表达我们的喜悦——“来自基西的问候!”

在最终确定配置细节后,我们发现 PPP 链路虽然速度很慢,但可以可靠地建立,并在一天中的任何时间保持稳定,即使在其他方面听起来模糊且有相当大静电的频道上也是如此。当然,所有无线电设备和天线都应调整到最佳性能。但是,一旦您能够建立链路,就会令人欣慰地发现无线电调制解调器完全有能力维护它,即使在条件不太理想的情况下也是如此。因为不知何故,条件总是有办法变得不太理想。

灌木丛中的 qmail

qmail 的作者 D. J. Bernstein 还开发了许多特别用途的工具和应用程序,非常适合无线电电子邮件项目。其中最重要的是,qmail 包括一个 QMTP 服务器,实现了 Bernstein 自己的快速邮件传输协议。QMTP 是一套补充程序,旨在通过慢速连接传输邮件。

如图 1 参考网络所示,qmail 在五个主机上运行:中央邮件服务器 coyah、radiohub 服务器 congo 以及三个外地办事处主机中的每一个。

一旦 qmail 认为邮件已送达,我们将等待与基西杜古的远程主机肯尼亚的下一个 PPP 连接。然后,我们可以使用 serialmail 包来(相对而言)快速地将 /var/qmail/qturn/kissidougou/.QMAIL.PPP/ 邮箱中收集的所有邮件通过 QMTP 链路传输过去。

表 1. qmail 组件

外地办事处的每个无线电电子邮件服务器都以无头方式运行,通过操作员台式电脑上的 Telnet 会话从简单的命令行界面控制。基本界面由四个命令组成,通常按以下顺序运行

ppp.start
mail.get
mail.send
ppp.stop

这些命令是简单的 shell 脚本,用于执行各自的任务,每个脚本都为操作员提供适量的关于当时正在发生的事情的反馈。这些功能可以进一步收集到一个命令中,例如 mail.run,但我们希望操作员能够根据语音通信的需求来保持对无线电访问的酌情权。

我们不尝试同时获取和发送邮件;我们首先执行一个,然后再执行另一个。这是对高频无线电链路的贫血、半双工带宽的另一种适应。就网络流量而言,此链路就像一条单车道的乡间小路——稍微多一点的流量就会造成一条又长又细的停车场。

非洲算法

正如我们可能已经提到的,高频无线电链路有点慢。然而,我们设法通过它传输了相当数量的邮件。平均每天,超过 300 条消息通过无线电波在科纳克里和外地办事处之间传输,每个办事处连接两到三次。与所有互联网技术一样,每一种尝试都会刺激更大的胃口。

鉴于无线电电子邮件固有的局限性,我们尝试保持尽可能开放的使用政策。例如,工作人员可以自由地使用无线电电子邮件与世界任何地方的朋友和家人进行个人通信,并且任何用户可以发送的消息数量没有限制。我们唯一明确的政策限制是要求用户不要订阅邮件列表。

为了防止无线电链路因大型文档和图形文件等大型附件而堵塞数小时,所有连接到无线电的 qmail 服务器(即科纳克里的 radiohub 和每个外地办事处服务器)都以 8,000 个字符的消息大小限制运行。这足以容纳三到四页文本。可以通过附件和文件压缩挤入 8,000 字节限制的任何内容都可以自由发送。

该系统已被证明非常可靠。尽管科纳克里典型的间歇性停电,但我们确实尝试通过使用发电机和电池备用电源来保持邮件中心服务器 coyah 始终运行。到目前为止,这些措施使这台机器自首次安装以来一直完美运行,截至本文撰写时,连续运行时间已超过三个月而没有重启。

然而,如果该系统不能长期持续运行,那么这种可靠性将毫无意义。在我们于外地办事处安装第一台无线电服务器的两个月前,我们在感兴趣且有能力的 IRC 工作人员中组建了一个网络用户/UNIX 小组 (IRC-NU/UG)。该小组定期且热情地开会,学习 Linux/UNIX 并培养网络管理技能。该小组现在有许多功能性生产系统可供工作和娱乐,主要使用回收硬件。为此项目安装的 Linux 服务器还托管了一系列典型的其他服务器和服务,包括 DHCP、DNS、NATD、Apache、FTP、Samba 和 PostgreSQL。IRC-NU/UG 提供了一个人际网络,该网络将在未来几年继续维持和发展技术网络。

该项目的成功经验很容易在世界任何地方复制。学校、政府部门和其他组织可以轻松地在高频无线电上构建远程网络解决方案,在其他方式无法访问的地方实现访问,并且成本极低。一旦安装,这些系统几乎可以轻松管理,并且可以快速适应其他 TCP/IP 载体。电子邮件系统本身的维护仅涉及用户帐户的例行添加和删除以及保持 /etc/aliases 文件为最新状态。

我们现在为几内亚各地四个办事处的 50 多台桌面电脑和 150 名员工提供邮件服务。整个广域网在一个公共 IP 地址后面提供服务,每月 ISP 总成本为 150 美元。最重要的是,该系统已在整个组织(以及整个几内亚)部署了标准网络和互联网技术,利用了免费提供的技术。这不仅在尚无互联网的地方建立了基层网络基础设施,还有助于培养非洲互联未来必不可少的核心能力和技能。

资源

Radio E-Mail in West Africa
Wayne Marshall (guinix@yahoo.com) 是一位居住在几内亚的 UNIX 程序员和技术顾问,他从未打算成为电子邮件管理员。他和他的妻子 Paula 喜欢旅行和非洲的天空。
加载 Disqus 评论