第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 模式 |

2.3 DLDP 故障处理动作
| 处理动作 | 说明 | 推荐程度 |
|---|---|---|
| Shutdown(关闭端口) | 检测到单向链路后,自动关闭本地端口 | ✅ 推荐(彻底杜绝丢包) |
| No-Action(不关闭) | 检测到单向链路后,仅记录日志和告警 | ⚠️ 仅用于无法断链的场景 |
三、技术细节
3.1 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 检测双向连通性,二者互补 |
思考
-
DLDP 检测超时默认 30 秒。如果将检测间隔缩短为 5 秒、最大丢失次数保持 3 次,检测超时将变为 15 秒。缩短检测时间是否会增加误判概率?为什么?
-
DLDP 检测到单向链路后关闭端口。端口关闭后,光纤修复了,端口能否自动恢复?DLDP 的自动恢复机制是如何工作的?
-
在 Eth-Trunk(链路聚合)场景下,如果其中一个成员端口出现单向链路故障,DLDP 能否独立检测到该成员端口的故障?还是会影响整个 Eth-Trunk 的状态?
下篇预告:第124篇:LLDP 与 CDP:邻居自动发现协议