标签栈与转发动作
MPLS 报文在二层头与 IP 头之间插入一个或多个 32 位标签项。单个标签项由 20 位标签值、3 位 EXP(现多称 TC,用于 QoS)、1 位 S(栈底标志)、8 位 TTL 组成。节点查 LFIB(标签转发表)决定对栈顶标签做 push、swap 还是 pop,整个转发过程只看标签,不再逐跳查 IP 路由表。
基本信息
| 标签长度 | 每项 32 位:20 位标签值 + 3 位 EXP + 1 位 S + 8 位 TTL |
|---|---|
| S 位含义 | 1 表示该项是栈底,紧跟在后面的就是 IP 报文 |
| TTL 处理 | 默认逐跳递减,与 IP TTL 行为一致,可用配置改成统一值 |
| 适用平台 | Cisco IOS/IOS-XE、华为 VRP、Juniper 等支持 MPLS 的设备 |
| 查询依据 | LFIB(入标签 + 出接口决定出标签与下一跳) |
三种标签操作
| 操作 | 发生位置 | 说明 |
|---|---|---|
| Push | LER(入标签边缘路由器)或隧道入口 | 压入一层或多层标签,进入 LSP |
| Swap | LSR(核心转发节点) | 替换栈顶标签值后转发,标签值逐跳变化 |
| Pop | 倒数第二跳或出口 LER | 弹出栈顶标签;PHP 场景由倒数第二跳完成弹出 |
常用保留标签值
| 标签值 | 名称 | 用途 |
|---|---|---|
| 0 | IPv4 Explicit NULL | 出标签为 0 时对端显式弹出后按 IPv4 转发,保留 EXP 信息 |
| 2 | IPv6 Explicit NULL | IPv6 报文对应的显式空标签 |
| 3 | Implicit NULL | 本机通告该标签表示上一跳可直接弹出(PHP 的基础) |
查转发行为
查转发行为
show mpls forwarding-table
# 典型列:Local(入标签) / Outgoing(出标签) / Prefix or Tunnel Id
# Outgoing interface / Next Hop
# 16 Pop Label 10.1.1.0/24 Gi0/1 10.0.0.2 # 本机为倒数第二跳
# 17 18 10.2.2.0/24 Gi0/1 10.0.0.2 # 核心节点做 swap
#
show mpls forwarding-table 10.1.1.0 # 按前缀精查
show mpls interfaces # 确认接口是否启用 MPLS
!
# 华为:display mpls lsp / display mpls lsp verbose抓包看标签栈
抓包看标签栈
# Wireshark 过滤器:只看带 MPLS 头的帧
mpls
# 展开 MPLS 段可看到逐层标签值、EXP/TC、S 标志与 TTL
# 普通单层 LSP 只有一个标签项,S 位应为 1
# VPN 场景通常外层为隧道标签、内层为 VPN 标签「标签 3(Implicit NULL)」出现在邻居的通告里是正常现象,表示该邻居希望上游直接弹出标签;如果某条 LSP 全程都是显式标签,通常是 PHP 未启用或设备平台行为不同,先对照两端转发项再判断。