通用 HDLC 層¶
Krzysztof Halasa <khc@pm.waw.pl>
通用 HDLC 層目前支援
幀中繼 (ANSI, CCITT, Cisco 和無 LMI)
普通(路由)和乙太網橋接(乙太網裝置模擬)介面可以共享一個 PVC。
ARP 支援(核心中沒有 InARP 支援 - 在以下位置提供了一個實驗性的 InARP 使用者空間守護程式:https://kernel.linux.club.tw/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 裝置之前,先啟動主 hdlc 裝置 (不為其分配任何 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 with preset zeros) / crc32-itu
crc16-itu (具有 ITU-T 多項式的 CRC16) / crc16-itu-pr0 - 設定奇偶校驗
hdlc-eth - 使用 HDLC 的乙太網裝置模擬。奇偶校驗和編碼與上面相同。
cisco - 設定 Cisco HDLC 模式(支援 IP、IPv6 和 IPX)
interval - keepalive 資料包之間的間隔時間(以秒為單位)
- timeout - 在收到最後一個 keepalive 資料包後,經過多少秒
我們認為鏈路已關閉
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://kernel.linux.club.tw/pub/linux/utils/net/hdlc/>。