ISDN 和 Linux—以超高速冲浪

作者:Mark Buckaway

comp.os.linux.* 上一个典型的问题是“我是否需要为 Linux 获取 ISDN 驱动程序才能使我的 Bitsurfr/ISDN 路由器工作?” 关于使用 Linux 和 ISDN 连接的要求有很多误解。本文定义了 ISDN 并解释了一些相关术语(参见词汇表),并描述了三种不同的 ISDN 设备类型以及如何让 Linux 使用它们连接到互联网。现在正是升级到 64K 或 128K ISDN 互联网连接的好时机。

什么是 ISDN 以及它是如何工作的?

ISDN,或综合业务数字网络,是一种电信技术,它为最终用户提供了一种使用数字信号连接到电话网络的方法。它最初旨在取代 POTS 系统;然而,它从未(至少在北美)在标准电话使用中流行起来,因为 ISDN 标准有不同的实现方式。然而,随着互联网的出现,ISDN 开始作为普通用户获得高速互联网接入的解决方案而兴起。还有其他可用的数字连接,例如有线调制解调器和 ADSL;然而,ISDN 现在就在这里,几乎随处可用。

ISDN 以 BRI 服务形式提供,具有两个 64K B(数据)通道和一个 16K D(信令)通道。一些电信公司仍然只提供一个 B 通道,但这正变得越来越罕见。BRI 线路通常由小型企业和个人使用。

对于拥有 PBX 或接入路由器的企业用户,将使用 PRI。在北美,PRI 由 23 个 64K B 通道和一个 64K D 通道组成,在欧洲,由 30 个 64K D 通道和一个 64K D 通道组成。这相当于 ISDN 的 T1 或 E1。

在北美,电信公司以 U 接口形式提供 ISDN BRI 线路。这是一个双线链路,可以轻松地在模拟电话线使用的标准铜线对上工作。在欧洲,电信公司通常以 S/T 接口形式提供线路。这是一个四线链路,能够将七个 ISDN 设备连接到同一条线路。U 接口需要一个 NT1 适配器来切换 S/T 接口。在提供 S/T 接口的地方,NT1 位于电信公司的交换机处。大多数面向北美的 ISDN 产品也集成了 NT1,从而节省了资金和桌面空间。

ISDN 的最大好处是呼叫建立时间短;也就是说,从拨打电话号码到连接完成之间经过的时间。这通过使用 D 通道进行带外信令来实现。D 通道向电信公司的交换机发出信号以进行呼叫,并且在不到一秒钟的时间内,连接就建立完成了。POTS 服务使用带内信令。当调制解调器拨打系统时,它会拿起线路并在与数据传输相同的频带中发送音调或脉冲。

获取您的 ISDN 线路

ISDN 终端适配器用户指南给您的印象是获取 ISDN 很困难。如果您问对了问题,获取您的 ISDN 线路可能很容易。订购线路时,请询问

  • BRI 是否有两个 B 通道?(几乎总是是的。)

  • 我应该告诉我的 TA 使用什么交换机类型?(在加拿大,通常是 NI-1。)

  • 它是以 U 接口还是 S 接口交付的?我需要 NT1 吗?(如果您的线路以 U 接口交付,您必须确保您的终端适配器内置了 NT1,否则,需要单独的 NT1。)

查看您所在地区 ISDN 的定价。在美国的某些地方,帧中继连接比 ISDN 便宜。ISDN 通常也按分钟收费。例如,加拿大贝尔的 Z@P 服务在特定时间之间,每个 B 通道每小时收费 1 美元,每个 B 通道每月最高收费 50 美元。

选择终端适配器

这是获取 ISDN 昂贵的部分。通常,终端适配器的价格从 300 美元到数千美元不等,具体取决于类型、特性和功能。

终端适配器有三种基本类型:ISDN 路由器、外部 ISDN 调制解调器和内部 ISDN 网络适配器。如今,大多数终端适配器都提供 POTS 插孔,用于连接标准模拟电话设备。这些插孔为您提供了一个连接传真机或模拟调制解调器的地方。

您购买的终端适配器类型通常取决于您希望花费的金额。最好的设备取决于您的应用和预算。ISDN 路由器通常最容易配置和设置,但往往价格稍贵。ISDN 调制解调器和网络适配器需要更多的工作,因为它们需要额外的软件,但往往更符合个人的价格范围。然而,使用 ISDN 路由器,只需将其连接到您的以太网卡即可上线。ISDN 调制解调器和网络适配器往往需要更多的工作才能上线。

从您的 ISP 获取 ISDN 帐户

ISDN 拨号帐户往往比 28.8K 连接更昂贵。这种情况正在发生变化,因为越来越多的 ISP 转换为接入路由器,这些路由器在同一条 ISDN 线路外同时支持 ISDN 和 28.8K 连接。UUNET Technologies(在美国)和 UUNET Canada 使用这种类型的技术提供 ISDN 接入。

当您致电 ISP 以获取 ISDN 帐户时,您需要了解一些关于其服务的信息。询问他们正在使用什么 ISDN 路由器。此信息可能有助于在出现问题时追踪问题。并非每个 ISDN 路由器都能与所有其他 ISDN 路由器对话。Ascend MAX 在 ISP 中很受欢迎。如果他们允许 128K 2B 帐户,请确保他们支持 MPPP(多链路 PPP)。

还要考虑您需要的服务类型。大多数 ISP 提供专用或拨号 ISDN。专用服务为您提供 ISP 路由器上的专用线路。它们通常还为您分配一个 IP 地址块。如果您打算通过该链路接收 SMTP 邮件,则需要一个固定的 IP 地址。拨号情况往往使用动态 IP 分配,这意味着每次呼叫都会分配给您不同的 IP 地址。少数 ISP 为您分配一个 IP 地址供您使用。虽然这种情况很少见,但这是一种允许通过拨号帐户接收 SMTP 邮件而无需使用 UUCP 的方法。您打算如何访问网络以及出于什么目的将决定您需要的帐户类型。

网络地址转换,或 Linux 内核中称为 IP Masquarade,是路由器提供对单个拨号 ISDN 帐户的多个系统访问所必需的。在 ISDN 调制解调器或 ISDN 网络适配器的情况下,Linux 内核处理转换。如果您的 ISP 为您分配了一个 C 类块或点对点号码,则不需要地址转换。

是否压缩

最新的 ISDN 设备具有某种形式的压缩。他们的营销部门会说压缩将导致吞吐量增加两到四倍。他们声称 128K 线路看起来会以 256K 运行。不要被愚弄了。在实际生活中,您很幸运能感受到 10% 的增长。考虑到设备将下载的大多数信息已经被压缩,因此无法进一步压缩(或至少很少)。来自网络的 JPEG 和 GIF 文件已经被压缩,并且大多数 ftp 存档都是 zip 或 gzip 压缩的 tar 文件。只有文本从压缩中获益匪浅,而文本通常只占网页数据的 20% 左右。

因此,在购买 ISDN 设备时,不要将压缩放在您的优先事项列表中。

使用 ISDN 路由器

ISDN 路由器是连接的简便方法——在路由器的配置中输入一些信息,您就可以上网了。路由器是让 LAN 与互联网对话的最佳方法,因为这是一款专门用于处理数据包负载的专用计算机。唯一的缺点可能是价格。对于大多数个人用户而言,ISDN 路由器将超出他们的经济承受能力。对于企业而言,路由器对于可靠性至关重要。

要开始使用,您需要获取网卡并安装它;有关详细信息,请参阅以太网迷你 HOWTO。

最好使用的以太网卡是带有内存缓冲区的网卡,因为它能提供最佳性能。大多数路由器都配有一根双绞线 10baseT 电缆,用于将路由器直接连接到您的以太网卡。如果您打算连接多台计算机,则需要以太网集线器。如果可能,请避免使用 10base2(同轴)电缆,以避免麻烦。它最初可能更便宜,但可能会导致诊断和布线噩梦。

我使用过并发现可靠的两款 ISDN 路由器是 Ascend Pipeline 50 和 Farallon Netopia。

Ascend Pipeline 系列非常适合专用 ISDN 应用,因为它最初是为路由网络块或静态 IP 地址而设计的。Ascent 路由器支持地址转换;Ascend 称之为 NAT(网络地址转换)。如果需要 POTS 插孔,请考虑 Pipeline 75,它基本上是带有 POTS 插孔的 Pipeline 50。

Farallon Netopia 是迄今为止最容易配置的路由器之一。Netopia 支持专用连接,并支持 Farallon 版本的地址转换,称为 SmartIP,用于拨号应用。Netopia 有 12 用户版本以及完整路由版本。可选配两个 POTS 插孔。这款路由器的独特之处在于其 PC 卡 (PCMCIA) 插槽。插入 PC 卡调制解调器,即使 ISDN 连接断开,也可以拨入路由器。对于那些需要远程配置和故障排除能力的用户来说,这非常方便。Netopia 还包括一个调度程序,因此可以为一周中的不同时间安排连接。我用过的其他 ISDN 路由器都没有此功能。

Ascend Pipeline 系列是最流行的,大多数 ISP 目前正在使用它们或过去曾使用过它们。Netopia 是较新的,其功能集使其值得注意。在我使用过的众多路由器中,Ascend 和 Farallon 产品给我留下了最深刻的印象。

外部 ISDN 调制解调器

在这个领域存在相当多的困惑。comp.os.linux.networking 上一个典型的问题是“我是否必须包含 ISDN 支持才能操作我的 Bitsurfr ISDN 调制解调器?” 不用。ISDN 调制解调器是一种串行设备,它连接到 PC 上的串行端口,“拨打”一个电话号码并将 ISDN 数据转换为 RS-232 数据。系统将其视为常规调制解调器。您可以设置 getty 来应答来电,并且可以使用 minicompppd 拨出。ISDN 内核支持既不需要也不使用。请注意,“调制解调器”一词实际上并不适用于 ISDN 终端适配器,因为“调制解调器”意味着模拟设备,而 ISDN TA 不是。

Motorola Bitsurfr Pro 就是这样一款 ISDN 调制解调器。我将详细讨论它与 Linux 系统的连接,因为它已经存在很长时间并且运行良好。它具有 115Kbps 串行端口和两个 POTS 插孔。较新的 ISDN 调制解调器可能包括 230Kbps 或更高的串行端口和压缩(例如 Farallon Netmodem)。

Bitsurfr Pro 的测试系统是一台配备 32MB 内存的奔腾 100,运行 Linux 2.0.28。连接由 UUNET Canada 提供,并且测试了专用连接和拨号连接。在单 B 通道或双 B 通道运行的情况下,两种情况都运行良好。以下步骤概述了如何设置 Linux 以通过串行端口与 Bitsurfr Pro 通信并配置 pppd 以使用它。

  1. 将 Bitsurfr Pro 连接到系统和 ISDN 线路。

  2. 根据需要使用 setserial 配置串行端口(例如,setserial /dev/cua1 spd_vhi hup_notify)。有关详细信息,请参阅串行 HOWTO。

  3. 现在是有趣的部分:配置 Bitsurfr Pro。Bitsurfr Pro 需要完全兼容 VT100 的终端仿真器才能使用其本地菜单。在我的测试中,我只发现 Seyon 可以工作——Minicom 对我不起作用——运行 Seyon(即,seyon - modems/dev/cua1)。键入 AT 以引起 Bitsurfr 的注意。然后键入 AT@MENU。本地菜单将如图 图 1 所示出现。

  4. 从 NET SWITCH 菜单中,设置交换机类型和 SPID(即 ISDN 电话线路号码)。只有当您打算拨入 Bitsurfr 时才需要目录号码。“要配置的端口”选择要设置的 SPID。输入 SPID 后,选择“重置网络链路”以启动 Bitsurfr 与 ISDN 交换机的通信。如果一切顺利,LS(链路状态)指示灯将变为稳定的绿色。这可能需要长达两分钟的时间才能发生。

  5. 从 CALL SETUP 菜单中,将 B 通道速度设置为 64K,除非您所在地区的 ISDN 不支持 64K。基本上,如果无法拨打电话,请将此设置降低到 56K。

  6. 从 PROTOCOLS 菜单中,将“速率适配协议”设置为 PPPC。

  7. 从 LOAD/SAVE 菜单中,选择“保存总活动配置文件”并将其保存到配置文件 0 和配置文件 1。

  8. 安装 pppd。

  9. pppd 在其源代码树的 scripts 目录中附带了一个示例脚本。将 ppp-off 复制到 /etc/ppp 目录;ppp-off 保持不变。

  10. 请参阅 清单 1。在 /etc/ppp 目录中创建如清单所示的脚本。这些是 pppd ppp-on 和 ppp-on-dialer 脚本的修改版本。ppp-on 脚本运行 pppd,ppp-on-dialer 拨打电话号码。ppp-on-dialer 还控制 Bitsurfr 使用的 B 通道数量。大多数拨号 ISP 只允许使用一个 B 通道。请咨询您的 ISP 了解详细信息。对于两个通道,必须告知 Bitsurfr 使用 MPPP 而不是 PPP,并且必须使用 ATD 命令给出两个电话号码。

  11. 创建如 清单 2 所示的 options 文件。debug 选项对于初始测试很有用。查看您的 syslog 以获取来自 pppd 的消息。name 选项是必需的,用于在 chap-secrets 文件中标识您的身份。

  12. 创建 chap-secrets 和 pap-secrets 文件。在大多数情况下,内容应该相同。清单 3 显示了一个示例。chap 和 pap-secrets 应该具有相同的内容,并且应该列出远程端上的每个路由器。在该示例中,列出了多伦多(加拿大)UUNET 的 Alterdial POP 上的大多数路由器。要确定远程路由器名称,请在连接时监控 syslog。这些名称作为协商的一部分报告。这是一种构建路由器列表的简便方法。或者,致电您的 ISP 并索取此信息。ISDN 路由器不发出正常的登录提示,而是依赖 chap 或 pap 进行身份验证。即使发出登录提示,它也不会通过 Bitsurfr 的 PPP 支持显示。所有路由器都在列表中反向列出两次,以防请求双向 CHAP 或 PAP。(Cisco 路由器倾向于默认为双向 CHAP。)如果您有专用连接,则只需列出您要拨入的一个路由器即可;否则,您必须列出您在拨号连接中可能遇到的所有路由器。

  13. 通过运行 ppp-on 脚本上线。如果一切顺利,您将连接成功。DTE(数据终端设备)指示灯将在 Bitsurfr 拨号时闪烁,并在链路的 ISDN 部分处于活动状态时变为稳定的绿色。从拨号到身份验证的总时间约为 2 到 8 秒,具体取决于远程路由器的负载。

  14. 开始冲浪吧!检查路由表以确保存在默认路由(即,运行 netstat -rn)。如果存在,ping Internet 上的某些内容。您的数据包应该会返回。

对于拨号连接,您可能需要更进一步并安装 diald,Linux 拨号守护程序,以便在检测到 Internet 流量时自动建立 Internet 连接。

使用 Bitsurfr Pro 连接时可能会出现一些问题。SPID 不正确是最常见的问题。请咨询您的电信公司以了解 SPID 的正确格式。其次,脚本中的拼写错误会导致各种奇怪的问题。例如,ppp-on-dialer 中的电话号码错误可能会导致某些麻烦。最后,如果 pap-secrets 文件未正确设置,则会导致身份验证问题和连接失败。启用 debug 选项后,syslog 输出中会记录此错误类型。显然,以上说明中缺少很多细节;但是,经过一些实验后,事情应该开始工作。有关更多详细信息,请查看 PPP HOWTO,因为让 Bitsurfr 正常工作主要是与 pppd 的斗争。

ISDN 网络适配器

市场上有许多 ISDN 网络适配器。随着 Linux 内核升级到 2.2,Linux 内置 ISDN 支持正在支持更多设备。我应该提到,ISDN 网络适配器不是调制解调器。它不占用串行端口,因此没有串行端口的速度限制问题。SpellCaster DataCommute/BRI 就是这样一款 ISDN 网络适配器。SpellCaster 是一家加拿大公司,正在开发 Linux 驱动程序,并将其产品定位于 Linux 市场。该卡最近在 1997 年 10 月号的Linux Journal 上进行了评测。

对于那些买不起功能齐全的 ISDN 路由器并且不想受串行端口开销拖累的人来说,ISDN 网络适配器是理想的解决方案。与 ISDN 调制解调器相比,ISDN 网络适配器通常具有更高的吞吐量。例如,SpellCaster 卡使用 16K 内存缓冲区将数据从 ISDN 线路传输到系统,因此产生的interrupts更少。此外,该卡不受串行端口 115K 的限制。使用 ISDN 网络适配器的双 B 通道连接通常可以达到完整的 128K 速度。是的,现在有更高速的串行端口;然而,任何非智能串行卡都需要处理器比 ISDN 网络适配器更频繁地关注。

ISDN 网络适配器也可以用于推出您自己的 ISDN 路由器;在 Linux 之外。Linux 的防火墙支持非常出色。这或许可以给旧的 386-40 带来新的活力。ISDN 调制解调器也可以用于推出路由器,但是,需要智能串行卡才能获得相当的性能。

为了演示 ISDN 网络适配器的设置,我将讨论 SpellCaster DataCommute/BRI 的安装和使用。DataCommute 使用 2.x 内核的 ISDN4Linux 支持。在撰写本文时,SpellCaster 正在努力开发一个名为 Babylon 的新驱动程序,目前以 beta 版本发布。它承诺提供额外的功能并克服 ISDN4Linux 的一些缺点。Babylon 还承诺更容易设置,因为让 DataCommute 工作的最大障碍是理解 ISDN4Linux 的操作。

相同的测试系统用于测试 SpellCaster DataCommute/BRI。再次尝试了专用和拨号情况以连接到 UUNET Canada 的 ISDN 服务。专用设置证明非常快。观察到的传输速率高于 ISDN 路由器。

设置 SpellCaster DataCommute/BRI

  1. 编译您的 2.x 内核并启用 ISDN 支持。运行 make config 并对以下选项选择 YES:“ISDN Support”、“Support Synchronous PPP”、“Use VJ-compression with Synchronous PPP”和“Support generic MP”。编译并安装新的内核。

  2. 从 SpellCaster 网页下载当前驱动程序和 ISDN4Linux 支持文件(参见资源)。驱动程序是名为 scis 而不是 dcbri 的驱动程序。

  3. 解压驱动程序并通过在驱动程序的 /src 目录中键入 make 来编译它。这将创建两个可执行文件 scctrlsctrace,以及驱动程序模块 sc.o。使用 scctrl 为 DataCommute 配置正确的 ISDN 交换机类型和 SPID。

  4. 以 root 用户身份运行 make install 以将驱动程序安装到 /lib/modules 目录。更改您的 Linux 发行版的设置,以便在下次启动时自动加载驱动程序,然后将其插入内存以用于此会话(例如,insmod sc.o)。

  5. 解压 ISDN4Linux 包并通过键入 make 来编译它。以 root 用户身份运行 make install 以安装 ISDN4Linux 文件。这会将 ipppdisdnctrl 以及其他程序放置在 /sbin 目录中。ipppd 是 pppd 的同步版本。isdnctrl 设置 ISDN 接口并与 ipppd 通信以控制 ISDN 链路。

  6. 使用 scctl 以 root 用户身份执行以下任务

    • 通过键入 scctl -r 重置 DataCommute。卡背面的所有指示灯都将熄灭。

    • 通过键入 scctl -g 启动卡上的固件。卡顶部的指示灯将闪烁以指示固件正在运行。

    • 通过键入 scctl -w NI1 编程 ISDN 交换机类型(此处使用您的电信公司的交换机类型;键入 scctl -h 以查看可用的交换机类型。)

    • 编程 SPID 和目录号码

    scctl -c 1 -s 4165551234 -d 5551234\
            - the first channel
    scctl -c 2 -s 4165551235 -d 5551235\
            - the second channel
    

    如果一切顺利,卡顶部的指示灯将闪烁,其余指示灯将亮起,指示卡已成功与 ISDN 交换机协商。运行 scctl -u 也将显示卡的状态。交换机状态将显示 CONNECTED。需要一些耐心,因为 ISDN 交换机和您的卡之间的协商可能需要长达两分钟的时间。

    请注意,一旦卡被编程为 ISDN 交换机类型和 SPID,就不需要再次执行此操作,除非将新固件加载到卡中。因此,以上操作仅执行一次,而不是每次系统启动时都执行。

  7. 打开另一个 VT 或 Xterm 并运行 tail<\!s>-f<\!s>/var/log/messages。这将给出 syslog 文件的持续输出。ipppd 将所有调试信息输出到 syslog,在初始设置连接时查看正在发生的事情非常方便。

  8. 键入 清单 4 中显示的脚本,在适当的地方更改电话号码等,并将其另存为 isdnsetup。此脚本设置 ISDN 子系统并运行 ipppd。

  9. 最后,执行前面所示的设置 Bitsurfr Pro 的列表中的步骤 11 和 12。

假设一切顺利,运行

isdnctrl dial ippp0

以拨打您的 ISP。如果您配置了两个 B 通道,请键入

isndctrl addlink ippp0
以启动第二个通道。要随时终止连接,请键入
isdnctrl hangup ippp0
顺便说一句,以上步骤绝不是配置 ISDN 子系统和设置连接的标准方法。在使用专用链路的情况下进行一些实验后,应该可以在系统启动时设置链路。有关更多信息,请查看 isdnctrl 的 man 手册。确保在一切正常工作后禁用 isdnsetup 脚本中的调试功能,以避免填满 syslog 文件。

关于使用该卡还有一件事需要注意。某些 PCI 系统要求 BIOS 设置为为 DataCommute/BRI 保留 IRQ 和内存空间;在我们的测试系统中确实如此。通常,这在系统设置中的某种即插即用菜单下。否则,这张卡就可以正常工作,而且物有所值。

结论

有三种使用 ISDN 将 Linux 连接到 Internet 的通用方法:ISDN 路由器、外部 ISDN 调制解调器和内部 ISDN 网络适配器。您选择的设备应根据链路的功能、建立链路的时间限制以及设备的成本来确定。

无论您选择哪个选项,一旦您拥有 ISDN 网络连接,您将永远不会回到 28.8K——它太慢了!

词汇表

资源

ISDN and Linux—Surfing at Warp Speed
Mark Buckaway 是 UUNET Canada 的软件开发人员。Mark 的 ISDN 经验来自于他在 UUNET 技术支持部门工作一年的经历,在那里他发现自己是 ISDN 专家。在业余时间,Mark 享受他到 Internet 的专用 ISDN 连接,以及与他 4 岁的儿子 Matthew 和 6 岁的女儿 Allison 共度时光。可以通过 mark@datasoft.on.ca 以及 http://www.datasoft.on.ca/~mark 联系 Mark。
加载 Disqus 评论