通用 HDLC 层

Krzysztof Halasa <khc@pm.waw.pl>

通用 HDLC 层目前支持

  1. 帧中继 (ANSI, CCITT, Cisco 和无 LMI)

    • 普通(路由)和以太网桥接(以太网设备模拟)接口可以共享单个 PVC。

    • ARP 支持(内核中没有 InARP 支持 - 在以下网址提供实验性的 InARP 用户空间守护程序:https://linuxkernel.org.cn/pub/linux/utils/net/hdlc/)。

  2. 原始 HDLC - 既可以是 IP (IPv4) 接口,也可以是以太网设备模拟

  3. Cisco HDLC

  4. PPP

  5. 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/>。