通用 HDLC 层¶
Krzysztof Halasa <khc@pm.waw.pl>
通用 HDLC 层目前支持
帧中继 (ANSI, CCITT, Cisco 和无 LMI)
普通(路由)和以太网桥接(以太网设备模拟)接口可以共享单个 PVC。
ARP 支持(内核中没有 InARP 支持 - 在以下网址提供实验性的 InARP 用户空间守护程序:https://linuxkernel.org.cn/pub/linux/utils/net/hdlc/)。
原始 HDLC - 既可以是 IP (IPv4) 接口,也可以是以太网设备模拟
Cisco HDLC
PPP
X.25(使用 X.25 例程)。
通用 HDLC 仅是一个协议驱动程序 - 它需要一个适用于您特定硬件的底层驱动程序。
以太网设备模拟(使用 HDLC 或帧中继 PVC)与 IEEE 802.1Q (VLAN) 和 802.1D (以太网桥接) 兼容。
确保已加载 hdlc.o 和硬件驱动程序。它应该创建许多 “hdlc”(hdlc0 等)网络设备,每个 WAN 端口一个。您将需要 “sethdlc” 实用程序,请从以下网址获取:
编译 sethdlc.c 实用程序
gcc -O2 -Wall -o sethdlc sethdlc.c
确保您使用的 sethdlc 版本与您的内核版本匹配。
使用 sethdlc 设置物理接口、时钟速率、使用的 HDLC 模式,如果使用帧中继,请添加任何所需的 PVC。通常您需要类似下面的配置:
sethdlc hdlc0 clock int rate 128000
sethdlc hdlc0 cisco interval 10 timeout 25
或者
sethdlc hdlc0 rs232 clock ext
sethdlc hdlc0 fr lmi ansi
sethdlc hdlc0 create 99
ifconfig hdlc0 up
ifconfig pvc0 localIP pointopoint remoteIP
在帧中继模式下,在使用 PVC 设备之前,请先 ifconfig master hdlc 设备 up(不为其分配任何 IP 地址)。
设置接口
- v35 | rs232 | x21 | t1 | e1
如果网卡具有软件可选的接口,则为给定端口设置物理接口
- loopback
激活硬件环回(仅用于测试)
- clock ext
RX 时钟和 TX 时钟均为外部时钟
- clock int
RX 时钟和 TX 时钟均为内部时钟
- clock txint
RX 时钟为外部时钟,TX 时钟为内部时钟
- clock txfromrx
RX 时钟为外部时钟,TX 时钟从 RX 时钟导出
- rate
设置时钟速率(以 bps 为单位)(仅适用于 “int” 或 “txint” 时钟)
设置协议
hdlc - 设置原始 HDLC(仅限 IP)模式
nrz / nrzi / fm-mark / fm-space / manchester - 设置传输代码
no-parity / crc16 / crc16-pr0(预置零的 CRC16)/ crc32-itu
crc16-itu (使用 ITU-T 多项式的 CRC16) / crc16-itu-pr0 - 设置奇偶校验
hdlc-eth - 使用 HDLC 的以太网设备模拟。奇偶校验和编码如上所述。
cisco - 设置 Cisco HDLC 模式(支持 IP、IPv6 和 IPX)
interval - 保活数据包之间的时间间隔(以秒为单位)
- timeout - 自上次收到保活数据包后经过的时间(以秒为单位),之后
我们假设链路已断开
ppp - 设置同步 PPP 模式
x25 - 设置 X.25 模式
fr - 帧中继模式
lmi ansi / ccitt / cisco / none - LMI(链路管理)类型
dce - 帧中继 DCE(网络)侧 LMI,而不是默认的 DTE(用户)。
它与时钟无关!
t391 - 链路完整性验证轮询定时器(以秒为单位) - 用户
t392 - 轮询验证定时器(以秒为单位) - 网络
n391 - 完全状态轮询计数器 - 用户
n392 - 错误阈值 - 用户和网络
n393 - 监控事件计数 - 用户和网络
仅限帧中继
create n | delete n - 添加/删除 DLCI 为 #n 的 PVC 接口。新创建的接口将被命名为 pvc0、pvc1 等。
create ether n | delete ether n - 为以太网桥接帧添加设备。该设备将被命名为 pvceth0、pvceth1 等。
特定板卡问题¶
n2.o 和 c101.o 需要参数才能工作
insmod n2 hw=io,irq,ram,ports[:io,irq,...]
示例
insmod n2 hw=0x300,10,0xD0000,01
或者
insmod c101 hw=irq,ram[:irq,...]
示例
insmod c101 hw=9,0xdc000
如果内置到内核中,这些驱动程序需要内核(命令行)参数
n2.hw=io,irq,ram,ports:...
或者
c101.hw=irq,ram:...
如果您在使用 N2、C101 或 PLX200SYN 网卡时遇到问题,可以发出 “private” 命令来查看端口的数据包描述符环(在内核日志中)
sethdlc hdlc0 private
必须使用 #define DEBUG_RINGS 构建硬件驱动程序。将此信息附加到错误报告中会很有帮助。无论如何,如果您在使用过程中遇到问题,请告知我。
有关补丁和其他信息,请访问:<https://linuxkernel.org.cn/pub/linux/utils/net/hdlc/>。