第155篇:LDP 邻居建立与标签分发方式(DU/DoD)

关键词

LDP 会话、LDP 状态机、DU 模式、DoD 模式、标签通告、平台标签空间、接口标签空间


一、LDP 邻居建立详解

1.1 LDP 的两种发现机制

发现类型 通信方式 作用范围 典型场景
基本发现 UDP 组播 224.0.0.2:646 直接相连的链路 直连邻居的 LDP 会话
扩展发现 UDP 单播到特定 IP 非直连邻居 MPLS TE 的 Targeted LDP 会话

1.2 基本发现的工作原理

RTA 的接口 GE0/0/0 (10.1.1.1/24) ─── RTB 的接口 GE0/0/0 (10.1.1.2/24)

RTA 周期发送 LDP Hello(每 5 秒):
  源 IP  = 10.1.1.1
  目的 IP = 224.0.0.2
  源端口 = 646(UDP)或随机端口
  目的端口 = 646
  LDP Hello 内容:
    - LSR ID: 1.1.1.1
    - Label Space ID: 0
    - Hold Time: 15 秒
    - 传输地址: 1.1.1.1(用于 TCP 连接的目标 IP)

RTB 同时也在发送 Hello 报文:
  源 IP  = 10.1.1.2
  LSR ID: 2.2.2.2
  Transport Address: 2.2.2.2

传输地址(Transport Address) 是关键 TLV。TCP 连接的目标 IP 通常是 Loopback 地址,而非直连接口的 IP。


二、LDP 会话状态机

2.1 状态转换

          ┌──────────────┐
          │    Non Existent │  ← 初始状态
          └──────┬───────┘
                 │ 收到 Hello(发现邻居)
          ┌──────▼───────┐
          │  Initialized   │  ← 准备建立 TCP 连接
          └──────┬───────┘
                 │ TCP 连接建立 + 发 Initialization 报文
          ┌──────▼───────┐
          │  OpenRecv      │  ← 收到对端的 Initialization
          └──────┬───────┘
                 │ 参数协商通过
          ┌──────▼───────┐
          │  OpenSent      │  ← 等待对端确认
          └──────┬───────┘
                 │ 互发 KeepAlive 确认
          ┌──────▼───────┐
          │  Operational   │  ← 会话建立成功,可以分发标签
          └──────────────┘

2.2 各状态的触发条件

当前状态 事件 下一个状态
Non Existent 收到 LDP Hello Initialized
Non Existent 收到 TCP 连接请求 Initialized(发起方)
Initialized TCP 连接建立后发送 Initialization 报文 OpenSent
Initialized 收到对端发送的 Initialization 报文 OpenRecv
OpenSent 收到对端发送的 Initialization 报文 OpenRecv
OpenRecv 参数协商成功,发送 KeepAlive Operational
OpenRecv 参数协商失败,发送 Notification 并断开 Non Existent
Operational 收到 KeepAlive 超时或 Notification Non Existent

三、DU 模式(下游主动分发)

3.1 工作流程

DU(Downstream Unsolicited)模式下,下游 LSR 不需要上游请求,主动为所有已知 FEC 分发标签。

          RTA(上游)                    RTB(下游)
               │                            │
               │    IGP 收敛后,RTB 知道     │
               │    10.0.0.0/24 可通过自己到达 │
               │                            │
               │    Label Mapping            │
               │    FEC: 10.0.0.0/24    ◀────│  RTB 主动推送
               │    Label: 100               │
               │                            │
               │    Label Mapping            │
               │    FEC: 20.0.0.0/24    ◀────│  RTB 主动推送
               │    Label: 200               │
               │                            │
               │    Label Mapping            │
               │    FEC: 30.0.0.0/24    ◀────│  RTB 主动推送
               │    Label: 300               │
               │                            │

3.2 DU 的特点

优点: - LSP 建立快——IGP 收敛后,LDP 即刻分发标签,无需等待请求 - 所有 FEC 的标签提前就绪——转发时不需要同步等待 - 切换延迟低——Liberal 保留模式下,备用路径的标签也早已就绪

缺点: - 标签费——即使某些 FEC 从未被转发,也会分配标签 - 控制面负载高——每增加一个 FEC,每个邻居就会收到一个标签映射 - 网络规模敏感——在大规模网络中,FEC 数量多,标签通告量大

3.3 适用场景

  • 大多数 MPLS 骨干网络
  • 需要快速收敛的场景
  • 标签资源充足的设备

四、DoD 模式(下游按需分发)

4.1 工作流程

DoD(Downstream on Demand)模式下,上游 LSR 需要标签时才发送请求,下游只在请求到达后才分配。

          RTA(上游)                    RTB(下游)
               │                            │
               │   Label Request             │
               │   FEC: 10.0.0.0/24    ─────▶│  RTA 发出请求
               │                            │
               │   Label Mapping             │
               │   FEC: 10.0.0.0/24    ◀────│  RTB 响应
               │   Label: 100               │
               │                            │
               │   Label Request             │
               │   FEC: 20.0.0.0/24    ─────▶│  RTA 针对另一个 FEC 请求
               │                            │
               │   Label Mapping             │
               │   FEC: 20.0.0.0/24    ◀────│
               │   Label: 200               │
               │                            │

4.2 DoD 的特点

优点: - 节省标签资源——只分配实际需要的 FEC - 控制面负载低——减少不必要的标签通告

缺点: - LSP 建立延迟——转发数据前需要先请求并等待标签 - 切换时增加延迟——切换到备用路径时,如果备用路径标签未就绪,需先请求

4.3 适用场景

  • 路由器标签资源有限
  • FEC 数量远大于实际转发需求
  • 特殊的 TE 实现场景

五、DU 和 DoD 的对比

对比维度 DU DoD
标签分发时机 只要 LSR 知道了 FEC 就分发 收到请求后才分发
控制面负载 较高 较低
标签资源消耗 较高 较低
LSP 建立速度 有延迟
故障切换速度 快(标签已就绪) 慢(需要请求新标签)
默认配置 华为/Cisco/Juniper 默认 DU 极少使用

六、标签空间(Label Space)

6.1 平台标签空间(Per-Platform Label Space)

  • 整台路由器使用一个统一的标签池
  • 不同接口上为同一 FEC 分配的标签相同
  • 默认模式,配置简单
  • LDP 默认使用平台标签空间

6.2 接口标签空间(Per-Interface Label Space)

  • 每个接口独立分配标签
  • 不同接口为同一 FEC 可以分配不同标签
  • 用于 Frame Relay 等特殊场景
  • 目前在主流网络中几乎不再使用

平台标签空间(默认):

全局标签池 10.0.0.0/24 → Label 100

接口标签空间:

GE0/0/0 标签池 10.0.0.0/24 → Label 100 GE0/0/1 标签池 10.0.0.0/24 → Label 200

6.3 标签空间的选择

标签空间 优点 缺点 适用场景
平台标签空间 配置简单,标签一致 大型网络可能需要做 PHP 大多数网络
接口标签空间 标签粒度更低 维护复杂 Frame Relay 等特殊链路

七、配置示例(华为设备)

7.1 基本 LDP 配置

# 全局使能 MPLS 和 LDP
mpls lsr-id 1.1.1.1                     # LSR ID,通常是 Loopback 地址
mpls                                      # 全局使能 MPLS
 mpls ldp                                # 全局使能 LDP
!
# 接口使能 MPLS 和 LDP
interface GigabitEthernet0/0/0
 mpls                                    # 接口使能 MPLS
 mpls ldp                                # 接口使能 LDP
!
interface GigabitEthernet0/0/1
 mpls
 mpls ldp

7.2 验证命令

# 查看 LDP 邻居
display mpls ldp session                     # 会话状态
display mpls ldp peer                        # 邻居信息

# 查看 LDP 标签信息
display mpls ldp label                       # LDP 标签绑定
display mpls lsp                             # MPLS LSP(包含 LDP 建立的)

# 查看 LDP 运行状态
display mpls ldp parameter                   # LDP 参数
display mpls ldp statistics                  # LDP 统计信息

7.3 输出解读示例

<HUAWEI> display mpls ldp session
 LDP Session(s) in Public Network
 Codes: LAM(Label Advertisement Mode), SsnAge Unit(DD:HH:MM)
 ----------------------------------------------------------------------
 Peer-ID            Status      LAM  SsnRole  SsnAge      KASent/Rcv
 ----------------------------------------------------------------------
 2.2.2.2:0         Operational DU   Passive  000:00:12   34/35
 3.3.3.3:0         Operational DU   Active   000:00:10   28/29
 ----------------------------------------------------------------------

解读: - Peer-ID:邻居 LSR ID(2.2.2.2:0 = LSR ID + 标签空间 0) - Status:Operational 表示会话正常 - LAM:标签通告模式(DU) - SsnRole:Active 表示主动发起 TCP 连接;Passive 表示被动接受 - KASent/Rcv:KeepAlive 发送/接收计数


八、常见排错场景

8.1 LDP 会话无法建立

现象 可能原因 排查方法
未收到 Hello MPLS/LDP 接口未使能 display mpls ldp interface
无法建立 TCP 传输地址不可达 ping 对端 LSR ID
Initialization 失败 参数协商不匹配 display mpls ldp session 查看状态
频繁 Down KeepAlive 超时 检查链路抖动或带宽过高

8.2 传输地址不可达

最常见的问题:LDP 使用 LSR ID(通常是 Loopback 地址) 建立 TCP 连接。如果 Loopback 地址之间的路由不通,LDP 会话就无法建立。

# 确认 LSR ID 与传输地址
display mpls ldp parameter | include Transport

# 确认 Loopback 地址路由可达
ping -a 1.1.1.1 2.2.2.2

九、总结

知识点 核心要点
基本发现 UDP 组播 224.0.0.2:646,直连链路发现邻居
扩展发现 UDP 单播,用于非直连 Targeted LDP
状态机 Non Existent → Initialized → OpenRecv → OpenSent → Operational
DU 下游主动分发标签,快速但资源消耗高
DoD 按需请求标签,节省资源但建路慢
标签空间 平台(Per-platform)或接口(Per-interface)
传输地址 LDP TCP 连接的目标地址,通常是 LSR ID

十、思考

  1. LDP 的基本发现和扩展发现分别用于什么场景?
  2. LDP 会话建立过程中,Initialization 报文协商了哪些参数?
  3. DU 和 DoD 模式的根本区别是什么?各有什么优缺点?
  4. 平台标签空间和接口标签空间的区别是什么?
  5. 如果 LDP 会话一直处于 Initialized 状态无法进入 Operational,可能是什么原因?

下篇预告:第156篇《MPLS 转发过程——标签压入、交换、弹出》——结合数据面,详细拆解一个 IP 包在 MPLS 域内如何被逐跳标签转发的完整过程。