第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

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 建立需要额外一轮请求-响应,收敛较慢。

DoD(Downstream on Demand,下游按需模式) - 图示

三、技术细节

3.1 LDP 邻居建立完整流程

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,使流量绕行:

LDP Session 与 IGP 联动机制 - 图示

四、实战配置/案例分析

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,避免转发黑洞

思考

  1. LDP 的 Link Hello 报文 TTL 设置为 1,这有什么意义?如果误将 TTL 设置为 255 会发生什么?
  2. DU 和 DoD 模式可以混用吗?如果一端配置 DU、另一端配置 DoD,LDP Session 能否建立?
  3. LDP 优雅重启(Graceful Restart)的原理是什么?重启期间标签转发表如何维持?

下篇预告:第156篇:MPLS 转发过程:标签压入、交换、弹出