6. IP over ATM

IP over ATM 通过传统 IP over ATM (CLIP,定义在 RFC1577 [RFC1577])、LAN 仿真 (LANE,定义在 [lanev1] 和 [lanev2]) 以及多协议 over ATM (MPOA,仅客户端,定义在 [mpoav1]) 提供支持。

6.1. CLIP

一个守护进程用于生成和应答 ARP 查询。实际的内核部分仅维护一个包含部分信息的小型查找表。

手册页:atmarpd(8), atmarp(8)

atmsigdilmid 必须在 atmarpd 启动之前运行。使用-b选项以确保它们正确同步,例如

#!/bin/sh
atmsigd -b
ilmid -b
atmarpd -b
...

有效,但是

#!/bin/sh
atmsigd &
ilmid &
atmarpd &
...

通常无效(尚未)。

atmarp 程序用于配置 ATMARP。首先,您必须启动 atmsigdilmidatmarpd,然后创建一个 IP 接口并配置它

# atmarp -c interface_name
# ifconfig atm0 local_address possibly_more_options up

例如

# atmarp -c atm0
# ifconfig atm0 10.0.0.3 up

如果仅使用 PVC,则现在可以使用如下命令创建它们

# atmarp -s 10.0.0.4 0.0.70

如果指定了null关键字,则使用 NULL 封装。请注意,ARP 需要 LLC/SNAP 封装。因此,NULL 封装只能用于 PVC。

当使用 SVC 时,可能需要一些额外的配置工作。如果机器充当该 LIS 上的 ATMARP 服务器,则不需要额外的配置。否则,必须配置 ATMARP 服务器的 ATM 地址。这通过使用arpsrv选项为网络地址创建条目来完成,例如

# atmarp -s \
  10.0.0.0 47.0005.80.ffe100.0000.f215.1065.0020EA000756.00 \
  arpsrv

请注意,ATMARP 服务器目前必须在配置任何客户端之前启动和配置。

内核 ATMARP 表可以通过 \path{/proc/net/atm/arp} 读取。如果 atmarpd 启动时带有-d选项,则 atmarpd 使用的表会定期打印在标准错误输出上。如果调用 atmarpd 时没有-d,该表将写入文件atmarpd.table在转储目录中(默认/var/run;可以使用-D更改),并且可以使用 atmarp -a 读取它。

6.2. LAN 仿真

除了传统 IP over ATM,LAN 仿真 (LANE) 也可用于在 ATM 上承载 IP。LANE 模拟传统 LAN 技术的特性,例如对广播的支持。LANE 服务器支持在linux-atm 发行版中的 src/lane/USAGE文件中描述。

手册页:bus(8), lecs(8), les(8)zeppelin(8)

如果您计划运行多个 LANE 客户端、LANE 服务或 LANE 客户端和 LANE 服务,则需要为每个守护进程指定不同的本地 ATM 地址。由于所有 LANE 守护进程都使用类似的服务访问点 (SAP),因此它们需要不同的 ATM 地址来区分连接。

与 CLIP 类似,LANE 客户端由两部分组成:一个名为 zeppelin 的守护进程,它负责 LANE 协议,以及包含 LANE ARP 缓存的内核部分。

atmsigdilmid 必须在 zeppelin 启动之前运行。当 zeppelin 启动时,内核会创建一个新的接口,然后可以配置该接口

# zeppelin possibly_more_options &
# ifconfig lec0 local_address possibly_more_options up

在下面的示例中,启动了两个 LANE 客户端。第一个客户端使用默认接口 lec0、默认监听地址并尝试加入默认 ELAN。另一个 LANE 客户端获取分配给它的接口 lec2,绑定到本地地址mybox3,尝试加入名为myelan的 ELAN,并将桥接 ELAN 和以太网段之间的数据包。地址mybox3/etc/hosts.atm中定义。桥接的其余部分可以通过阅读桥接迷你 HOWTO 进行配置。[bridge-howto]

# zeppelin &
# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \
                          broadcast 10.1.1.255 up
#
# zeppelin -i 2 -l mybox3 -n myelan -p &
# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \
                          broadcast 10.1.2.255 up

默认情况下,zeppelin 使用接口 lec0,使用选择器字节值 0 绑定到本地 ATM 地址,尝试使用众所周知的 LECS 地址联系 LECS,加入 LECS 定义的默认 ELAN,接受 LES 定义的 MTU 大小,并且不会充当代理 LEC。这些参数可以通过命令行选项进行定制,这些选项在 zeppelin(8) 中定义。

zeppelin 将自动加入任何使用高于默认 MTU 1516 字节的 MTU 的 ELAN。LANE 接口的 MTU 将根据当前 ELAN 的 MTU 自行调整。

LANE ARP 缓存条目的状态可以通过/proc/net/atm/lec进行监控。对于每个条目,都会列出 MAC 和 ATM 地址以及状态。如果条目具有活动连接,则还会列出连接标识符。

LANE 服务(lecs(8)les(8)bus(8))使用配置文件进行配置。配置文件语法在各自的手册页上列出。

Marko Kiiskil� 的硕士论文 [kiis] 中更详细地讨论了 Linux LANE 服务。

6.3. MPOA

Linux MPOA 客户端延续了用户空间 -- 内核分离 ATM 服务的传统。名为 mpcd 的守护进程处理 MPOA 控制数据包,而内核保存 MPOA 入口和出口缓存并执行数据包转发。

手册页:mpcd(8)

atmsigdilmid 必须在 mpcd 启动之前运行。由于 MPOA 从 LANE 流量中检测 IP 层流,因此您需要先运行 zeppelin,MPOA 才能正常工作。但是,启动 zeppelinmpcd 的顺序不是固定的。您可以随意终止任何守护进程,并在以后重新启动它,而无需重新启动另一个守护进程。禁用 MPOA 最简单的方法是终止正在运行的 mpcd

下面是 LAN 仿真 部分的示例,其中启动了两个 LANE 客户端。配置已使用 LANE 客户端将服务的两个 MPOA 客户端进行增强。

# zeppelin &
# ifconfig lec0 10.1.1.42 netmask 255.255.255.0 \
                          broadcast 10.1.1.255 up
# mpcd -s mybox1 -l mybox2 &
#
# zeppelin -i 2 -l mybox3 -n myelan -p &
# ifconfig lec2 10.1.2.42 netmask 255.255.255.0 \
                          broadcast 10.1.2.255 up
# mpcd -i 2 -s mybox4 -l mybox5 &

MPOA 守护进程需要两个不同的本地 ATM 地址,用于在发起和接收数据和控制连接时使用。地址可以与例如 zeppelin 相同,但必须与其他 mpcd 守护进程不同。默认情况下,mpcd 不会从 LECS 检索配置信息。必要的命令行选项和使用 LECS 的示例在 mpcd 手册页上显示。手册页还列出了其余可用的选项。

MPOA 入口和出口缓存的内容可以通过/proc/net/atm/mpc文件进行监控。

Linux MPOA 客户端还支持用于快捷方式 SVC 的 CBR 流量类别,而不是默认的 UBR。可以使用以下命令设置和修改未来快捷方式的 QoS 规范/proc/net/atm/mpc.

# echo add 130.230.54.146 tx=80000,1600 rx=tx > /proc/net/atm/mpc
#             # generate enough traffic to trigger a shortcut
# cat /proc/net/atm/mpc 
QoS entries for shortcuts:
IP address
  TX:max_pcr pcr     min_pcr max_cdv max_sdu
  RX:max_pcr pcr     min_pcr max_cdv max_sdu
130.230.54.146  
     80000   0       0       0       1600   
     80000   0       0       0       1600   

Interface 2:

Ingress Entries:
IP address      State     Holding time  Packets fwded  VPI VCI
130.230.4.3     invalid   1160          0           
130.230.54.146  resolved  542           151            0   109
...

到 IP 地址的快捷方式130.230.54.146是使用上面显示的参数建立的。还存在一些补丁,这些补丁扩展了流检测以完全支持第 4 层流。第 4 层流表示为 5 元组(协议、本地地址、本地端口、远程地址、远程端口),它们标识应用程序到应用程序的流。如果您有兴趣,请访问 ftp://sunsite.tut.fi/pub/Local/linux-atm/mpoa/ 获取最新补丁。