第155篇:LDP 邻居建立与标签分发方式(DU/DoD)
关键词:LDP邻居、Link Hello、Targeted Hello、DU模式、DoD模式、标签分发策略、会话保持
一、引言
LDP 邻居的建立和标签分发方式是 MPLS 网络中最基础的运维关注点。LDP 邻居关系决定了哪些 LSR 之间可以进行标签交换,而标签分发方式(DU 或 DoD)则直接影响网络的收敛速度和标签消息的开销。在实际网络部署中,正确配置 LDP 邻居和选择适当的标签分发方式,是确保 MPLS LSP 正确建立的前提。
二、核心概念
2.1 LDP 邻居发现机制
LDP 邻居发现是建立 LDP Session 的第一步。它使用 UDP 646 端口发送 Hello 报文,支持两种发现模式:
| 发现模式 | Hello 目标地址 | TTL | 用途 |
|---|---|---|---|
| Link Hello | 224.0.0.2(IPv4组播) | 1 | 发现直连链路上的 LDP 邻居 |
| Targeted Hello | 对端 LoopBack IP(单播) | 255 | 建立非直连 LDP Session |
2.2 Link Hello 报文内容
Link Hello 报文包含以下关键字段:
| 字段 | 说明 |
|---|---|
| LDP Identifier | 发送方的 LDP Router ID:LabelSpaceID |
| TTL | 固定为 1(链路级 Hello 不穿越路由器) |
| HoldTime | 建议的保持时间,默认 15 秒 |
| Address Family | 支持的地址族(IPv4/IPv6) |
| Transport Address | LDP 传输地址(通常为本端接口 IP) |
2.3 LDP Session 协商参数
在 TCP 连接建立后,双方通过 Initialization 报文协商以下参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| HoldTime | 会话保持时间 | 15 秒 |
| Label DSP | 标签分发方式 | DU 或 DoD |
| Max Label Binding | 最大标签绑定数量 | 65535 |
| KeepAlive Interval | 保活报文间隔 | HoldTime/3(5秒) |
| Graceful Restart | 优雅重启能力 | 可选 |
2.4 标签分发方式详解
DU(Downstream Unsolicited,下游主动模式)
DU 模式下,下游 LSR 主动向上游分发 Label Mapping,无需上游请求。工作流程: 1. 下游 LSR 为 FEC 分配本地标签 2. 下游主动发送 Label Mapping 给上游 3. 上游收到后建立入标签到出标签的映射
优点:LSP 建立快,无需等待上游请求,收敛速度快。 缺点:可能产生多余的标签映射消息(上游可能不需要某些标签)。
DoD(Downstream on Demand,下游按需模式)
DoD 模式下,上游 LSR 首先发送 Label Request,下游收到后才回复 Label Mapping: 1. 上游 LSR 需要某 FEC 的标签 2. 上游发送 Label Request 给下游 3. 下游为 FEC 分配标签并发送 Label Mapping 4. 上游建立映射
优点:标签消息精准,不会产生多余映射。 缺点:LSP 建立需要额外一轮请求-响应,收敛较慢。

三、技术细节
3.1 LDP 邻居建立完整流程

3.2 非直连 LDP Session 建立
在某些场景(如 MPLS TE 隧道的 LDP Over RSVP-TE、LoopBack 之间建立 LDP Session),LDP 邻居之间没有直连接口,需要使用 Targeted Hello:
# 配置非直连 LDP 邻居
<NE40E> system-view
[NE40E] mpls
[NE40E-mpls] mpls ldp
[NE40E-mpls-ldp] discovery targeted-hello 10.1.1.2
[NE40E-mpls-ldp] discovery targeted-hello hold-time 15
Targeted Hello 的关键特点: - TTL 设置为 255(可穿越多台路由器) - 目的地址为对端 LoopBack IP(单播) - 对端也需要配置对应的 Targeted Hello
3.3 LDP 标签保留策略
| 策略 | 说明 |
|---|---|
| 保守保留(Conservative Retained) | 仅保留最优路径(下一跳)的标签绑定 |
| 宽松保留(Liberal Retained) | 保留所有收到的标签绑定(含非最优路径的),路径切换时立即可用 |
华为设备默认采用宽松保留(Liberal)策略,保留所有收到的标签绑定,路径切换时立即可用新标签。
3.4 LDP Session 与 IGP 联动机制
IGP-MPLS 联动确保当 LDP Session 断开时,IGP 自动增大对应链路的 Metric,使流量绕行:

四、实战配置/案例分析
4.1 LDP 邻居详细配置
# 华为 NE40E LDP 完整邻居配置
[NE40E] mpls
[NE40E-mpls] mpls ldp
# 配置 LDP Router ID
[NE40E-mpls-ldp] router-id LoopBack 0
# 配置 Hello 间隔和保持时间
[NE40E-mpls-ldp] discovery hello-interval 5
[NE40E-mpls-ldp] discovery hello-hold-time 15
# 配置 LabelDSP 为 DU 模式
[NE40E-mpls-ldp] label-distribution-mode du
# 启用优雅重启
[NE40E-mpls-ldp] graceful-restart
[NE40E-mpls-ldp] graceful-restart restart-time 120
[NE40E-mpls-ldp] graceful-restart communication-time 360
# 接口配置
[NE40E] interface 10GE 1/0/1
[NE40E-10GE1/0/1] mpls
[NE40E-10GE1/0/1] mpls ldp
# 接口级 Hello 参数
[NE40E-10GE1/0/1] mpls ldp discovery hello-interval 5
[NE40E-10GE1/0/1] mpls ldp discovery hello-hold-time 15
4.2 验证 LDP 邻居状态
# 查看 LDP 邻居摘要
<NE40E> display mpls ldp peer
Peer count: 3
Peer: 10.1.1.2 (Local Interface: 10GE1/0/1)
State: Operational
LabelDSP: DU
KeepAlive: 5/15
Peer: 10.1.1.3 (Local Interface: 10GE1/0/2)
State: Operational
LabelDSP: DU
KeepAlive: 5/15
Peer: 10.1.1.4 (Local Interface: 10GE1/0/3)
State: Init
LabelDSP: N/A
KeepAlive: 0/15
# 查看 LDP Session 详细信息
<NE40E> display mpls ldp session
LDP Session: 10.1.1.1 <-> 10.1.1.2
Session State: Operational
Local LDP Identifier: 10.1.1.1:0
Remote LDP Identifier: 10.1.1.2:0
Local Interface: 10GE1/0/1
TCP/UDP Connection: 10.0.0.1 -> 10.0.0.2
HoldTime: 15 seconds
KeepAlive Interval: 5 seconds
LabelDSP: DU
Address Family: IPv4 Unicast
Graceful Restart: Enabled
4.3 故障排查:LDP Session 停留在 Init 状态
故障现象:LSR-A 与 LSR-B 之间的 LDP Session 长时间停留在 Init 状态,LSP 未建立。
排查过程:
# Step 1: 检查 LDP Session 状态
<LSR-A> display mpls ldp session
LDP Session: 10.1.1.1 <-> 10.1.1.2
Session State: Init
# Init 状态表示 TCP 连接建立但 Initialization 报文未交互成功
# Step 2: 检查 TCP 连接
<LSR-A> display tcp connection brief | include 646
10.0.0.1:45678 -> 10.0.0.2:646 ESTABLISHED
# Step 3: 开启 LDP 调试
<LSR-A> debugging mpls ldp notification
<LSR-A> terminal debugging
# 发现输出:
# LDP Notification: Error code 6 (Session Abort)
# Value: 1 (Incompatibility in Initialization Message)
# 根因: 两端 LabelDSP 参数不匹配
# LSR-A 配置了 DoD, LSR-B 配置了 DU
# Step 4: 修正配置
[LSR-A] mpls ldp label-distribution-mode du
# 或者
[LSR-B] mpls ldp label-distribution-mode dod
# Step 5: 重启 LDP Session
[LSR-A] reset mpls ldp session peer 10.1.1.2
# Session 恢复正常: Operational
五、总结
| 项目 | 要点 |
|---|---|
| 邻居发现 | Link Hello(组播,直连)+ Targeted Hello(单播,非直连) |
| Session 建立 | TCP 646 连接 → Initialization 参数协商 → KeepAlive 保活 |
| DU 模式 | 下游主动推送标签映射,收敛快,华为默认使用 |
| DoD 模式 | 上游请求后才下发标签,消息精准但收敛慢 |
| IGP 联动 | LDP Session 断开时自动增大 IGP Metric,避免转发黑洞 |
思考
- LDP 的 Link Hello 报文 TTL 设置为 1,这有什么意义?如果误将 TTL 设置为 255 会发生什么?
- DU 和 DoD 模式可以混用吗?如果一端配置 DU、另一端配置 DoD,LDP Session 能否建立?
- LDP 优雅重启(Graceful Restart)的原理是什么?重启期间标签转发表如何维持?
下篇预告:第156篇:MPLS 转发过程:标签压入、交换、弹出