第123篇:DLDP 单向链路检测:防光模块故障

关键词:DLDP、单向链路检测、单向通信、光模块故障、光纤断裂、主动检测模式、被动检测模式、华为


一、引言

在光纤网络中,最常见的故障是"两端全断"——光纤完全断开,两端设备都感知到链路 Down。但还有一种更隐蔽的故障:"单向链路故障"——光纤两芯中只有一芯断裂,或光模块的发送/接收方向只有一方失效。

单向链路故障的危害在于"静默丢包":一端设备认为链路正常(物理层 Up),持续发送数据,但另一端永远收不到。TCP 连接超时、视频中断、语音单向无声……这些现象排查起来极其困难,因为 display interface 显示链路 Up,但 ping 单向不通。

DLDP(Directed Link Detection Protocol,单向链路检测协议)通过定期发送检测报文并确认收到对端的检测报文,主动发现单向链路故障并采取处理措施。

二、核心概念

2.1 单向链路故障的典型场景

故障场景 说明 现象
光纤单芯断裂 光纤由两根纤芯组成(发送和接收各一根),其中一根断裂 单向 ping 不通
光模块发送端失效 光模块的激光器损坏,无法发送光信号 对端收不到光,本端显示 Up
光模块接收端失效 光模块的光检测器损坏,无法接收光信号 本端收不到光,但对端显示 Up
光纤跳线接反 收发纤芯接反 两端都"收不到"对方的信号
单向光衰过大 某一方向的光衰超过接收灵敏度 该方向数据完全丢失

单向链路故障的典型场景 - 图示

2.2 DLDP 检测模式

模式 行为 适用场景
主动模式(Active) 定期发送 DLDP 报文,同时接收对端 DLDP 报文 推荐模式,两端独立检测
被动模式(Passive) 不发送 DLDP 报文,只接收对端 DLDP 报文 依赖对端配置 Active 模式

DLDP 检测模式 - 图示

2.3 DLDP 故障处理动作

处理动作 说明 推荐程度
Shutdown(关闭端口) 检测到单向链路后,自动关闭本地端口 ✅ 推荐(彻底杜绝丢包)
No-Action(不关闭) 检测到单向链路后,仅记录日志和告警 ⚠️ 仅用于无法断链的场景

三、技术细节

3.1 DLDP 检测流程

DLDP 检测流程 - 图示

3.2 DLDP 报文参数

参数 默认值 可调范围 说明
发送间隔(Interval) 10 秒 5~120 秒 DLDP 报文发送周期
最大丢失次数(Max Lost) 3 次 2~10 次 连续多少次未收到判定为故障
检测超时 30 秒(10×3) 10~1200 秒 Interval × Max Lost
恢复时间 60 秒 - 端口关闭后等待恢复的时间

3.3 DLDP 与 BFD 的比较

维度 DLDP BFD
检测对象 单向光纤/光模块故障 双向链路连通性
检测层级 数据链路层 独立协议层(可承载 IP/以太网)
检测精度 秒级(10~30 秒) 毫秒级(可配置为 1ms~1s)
处理动作 关闭端口 / 告警 通知上層协议(OSPF/BGP 等)
典型场景 光链路单向故障 路由协议快速收敛

四、实战配置/案例分析

4.1 华为设备 DLDP 完整配置

# ========== 全局启用 DLDP ==========
<HUAWEI> system-view
[HUAWEI] sysname Core-SW1

# 全局启用 DLDP 功能
[HUAWEI] dldp enable

# ========== 接口级 DLDP 配置 ==========
[HUAWEI] interface HundredGigE 1/0/1

# 在接口上启用 DLDP
[HUAWEI-HundredGigE1/0/1] dldp enable

# 配置为主动模式(推荐)
[HUAWEI-HundredGigE1/0/1] dldp active-mode

# 配置 DLDP 报文发送间隔为 10 秒(默认值,显式配置便于理解)
[HUAWEI-HundredGigE1/0/1] dldp interval 10

# 配置最大丢失次数为 3 次
# 检测超时 = 10 × 3 = 30 秒
[HUAWEI-HundredGigE1/0/1] dldp max-lost-linkpkg 3

# 检测到单向链路后自动关闭端口
[HUAWEI-HundredGigE1/0/1] dldp shutdown

# 退出接口配置
[HUAWEI-HundredGigE1/0/1] quit

# ========== 验证 ==========
[HUAWEI] display dldp interface HundredGigE 1/0/1
# Interface            : HundredGigE1/0/1
# DLDP Status          : Enabled
# Mode                 : Active
# Interval             : 10 seconds
# Max Lost Link Package: 3
# Action               : Shutdown
# Neighbor State       : Normal

4.2 对端设备配置(被动模式)

# ========== 对端设备配置 ==========
# 如果对端也是华为设备,建议也配置为 Active 模式
# 如果对端不支持 DLDP 或无法配置,可配置为 Passive 模式

[HUAWEI] interface HundredGigE 1/0/2
[HUAWEI-HundredGigE1/0/2] dldp enable
# Passive 模式是默认值,只需启用 DLDP 即可
# 此时设备会接收对端发来的 DLDP 报文
# 但不会主动发送 DLDP 报文

4.3 故障案例:数据中心 100G 链路无声丢包

场景描述

某数据中心两台核心交换机 Core-SW1 和 Core-SW2 之间通过两条 100G 链路互联。某天运维人员接到应用团队反馈,数据库主从同步延迟持续升高,但网络监控显示所有链路 Up 且无错包。经过 4 小时排查,最终发现一条 100G 链路存在单向故障。

排查过程

# 步骤一:检查接口状态
[Core-SW1] display interface HundredGigE 1/0/1
# HundredGigE1/0/1 current state : UP
# Line protocol current state : UP
# 物理层和协议层均显示 Up

# 步骤二:检查光功率
[Core-SW1] display transceiver interface HundredGigE 1/0/1 verbose
#  TxPower :  2.1 dBm  (发送正常)
#  RxPower : -9.8 dBm  (接收正常)
# 对端 Core-SW2 也显示光功率正常

# 步骤三:Ping 测试(发现单向不通)
[Core-SW1] ping -a 10.1.1.1 10.1.1.2
# 从 Core-SW1 ping Core-SW2:成功
[Core-SW2] ping -a 10.1.1.2 10.1.1.1
# 从 Core-SW2 ping Core-SW1:超时!

# 步骤四:确认单向链路故障
# SW1 → SW2 方向正常
# SW2 → SW1 方向异常(SW2 发送,SW1 收不到)
# 根因:SW1 侧的 100G 光模块接收端光衰过大

根因分析

100G 光模块采用 8 根纤芯传输数据,其中 4 根用于发送、4 根用于接收。某根接收纤芯的光衰超过接收灵敏度,导致 SW1 无法正确接收 SW2 发送的数据,但光功率检测仍显示在正常范围内(因其他纤芯正常)。

处理措施

# 临时措施:手动关闭故障端口,流量切至另一条 100G 链路
[Core-SW1] interface HundredGigE 1/0/1
[Core-SW1-HundredGigE1/0/1] shutdown

# 长期措施:配置 DLDP 自动检测
[Core-SW1] dldp enable
[Core-SW1] interface HundredGigE 1/0/1
[Core-SW1-HundredGigE1/0/1] undo shutdown
[Core-SW1-HundredGigE1/0/1] dldp enable
[Core-SW1-HundredGigE1/0/1] dldp active-mode
[Core-SW1-HundredGigE1/0/1] dldp shutdown
[Core-SW1] interface HundredGigE 1/0/2
[Core-SW1-HundredGigE1/0/2] dldp enable
[Core-SW1-HundredGigE1/0/2] dldp active-mode
[Core-SW1-HundredGigE1/0/2] dldp shutdown

后续改进

在数据中心所有 100G/40G 互联端口上统一启用 DLDP Active 模式 + Shutdown 动作,确保未来发生单向链路故障时自动处理,不再依赖人工排查。

4.4 故障案例:DLDP 误判导致端口频繁关闭

场景描述

某运营商接入交换机配置了 DLDP,但端口频繁因 DLDP 超时被关闭。实际光纤链路正常,无单向故障。

排查

# 查看 DLDP 日志
[Access-SW] display logbuffer | include DLDP
# Jan 15 09:00:01 %%01DLDP/4/DLDP_TIMEOUT:DLDP timeout on GigabitEthernet0/0/1.
# Jan 15 09:00:01 %%01DLDP/4/DLDP_SHUTDOWN:Interface GigabitEthernet0/0/1 was shutdown due to DLDP timeout.
# Jan 15 09:01:01 %%01DLDP/4/DLDP_RECOVER:Interface GigabitEthernet0/0/1 recovered.
# Jan 15 09:05:01 %%01DLDP/4/DLDP_TIMEOUT:DLDP timeout on GigabitEthernet0/0/1.
# (周期性超时)

# 检查对端设备
# 对端设备为旧款交换机,不支持 DLDP,不会回复 DLDP 报文

根因

对端设备不支持 DLDP,从不回复 DLDP 报文。本端设备一直收不到 DLDP 回复,判定为单向链路故障。

处理

# 方案一:对端也配置 DLDP Active 模式(推荐)
# 如果对端是华为设备且软件版本支持

# 方案二:本端改为 Passive 模式(仅当对端支持 DLDP Active 时有效)

# 方案三:在对端不支持 DLDP 的端口上禁用 DLDP
[Access-SW] interface GigabitEthernet 0/0/1
[Access-SW-GigabitEthernet0/0/1] undo dldp enable

五、总结

项目 说明
DLDP 本质 通过定期发送检测报文,发现单向光纤/光模块故障
主动模式 双向发送和接收 DLDP 报文,推荐在两端同时配置
被动模式 仅接收 DLDP 报文,依赖对端 Active 模式
故障处理 Shutdown(关闭端口,推荐)或 No-Action(仅告警)
检测超时 默认 30 秒(间隔 10 秒 × 丢失 3 次)
适用场景 高速光链路(10G/40G/100G),对可靠性要求高的场景
不适用场景 对端不支持 DLDP、链路本身质量不稳定
与 BFD 关系 DLDP 检测物理层单向故障,BFD 检测双向连通性,二者互补

思考

  1. DLDP 检测超时默认 30 秒。如果将检测间隔缩短为 5 秒、最大丢失次数保持 3 次,检测超时将变为 15 秒。缩短检测时间是否会增加误判概率?为什么?

  2. DLDP 检测到单向链路后关闭端口。端口关闭后,光纤修复了,端口能否自动恢复?DLDP 的自动恢复机制是如何工作的?

  3. 在 Eth-Trunk(链路聚合)场景下,如果其中一个成员端口出现单向链路故障,DLDP 能否独立检测到该成员端口的故障?还是会影响整个 Eth-Trunk 的状态?

下篇预告:第124篇:LLDP 与 CDP:邻居自动发现协议