当上层为 MPLS 协议时:
1)以太网头部中,Type==0x8847;
2)在 PPP 中,Header.Protocol==0x8281;
报文格式
Label | 标签
用于携带标签值,长度 20 bit;
EXP | Experimental Use
其主要用于 CoS(Class of Service),长度 3bit;
该字段在早期的 MPLS 标准中被定义,意为试验性的字段,但实际上该字段主要被用于 CoS。为了避免歧义,RFC5462 重新定义该字段,命名为流分类(Traffic Class);
S(Bottom of Stack)
栈底位,指示该标签头部是否为最后一层标签,长度 1-bit;
S==1,则表示当前标签头部为栈底,指示设备该标签为最后一个标签;
S==0,则表示当前标签头部之后依然还有其他标签头部;
TTL(Time To Live)
用于当网络出现环路时,防止标签报文被无限制转发,与 IP-Header.TTL 具有相同的意义,长度 8bit;
IP TTL
- 若在 Ingress LSR 使用 IP TTL 复制功能,则报文在 LSP 中经过的每一跳都体现为 IP TTL 逐跳递减,tracert 的结果将反映报文实际经过的路径;
- 若在 Ingress LSR 禁用 IP TTL 复制功能,则报文在 LSP 中经过的跳数不会导致 IP TTL 递减,tracert 的结果不包括 MPLS 骨干网络中每一跳,就好像 Ingress LSR 与 Egress LSR 是直连的;
ICMP 响应报文
Label Stack | 标签栈
MPLS 支持一层或多层标签头部,针对这些标签头部的有序集合,其被称为标签栈(Label Stack);
当标签栈中存在多个标签时,这些标签的顺序是非常讲究的:
- 最靠近 L2 Header 的标签是栈顶标签,标签中的 S==0;
- 最靠近 L3 Header 的标签是栈底标签,标签中的 S==1;
栈顶也被称为外层标签。栈底也被称为内层标签。
Label Space | 标签空间
Label-Space,标签空间,指标签的取值范围;
注,MPLS Label 仅具有本地意义,即说明每台 LSR 间的 Label Space 是相互独立的,即每台 Router 都可以使用完整的标签空间(即标签值可以重复使用);
标签值的范围及规划如下:
0~15
特殊标签值;
Label==0 被定义为 IPv4 显式空标签(IPv4 Explicit NULL Label)。表示该标签必须被弹出(即标签被剥掉),且报文的转发必须基于 IPv4。如果出节点分配给倒数第二跳节点的标签值为 0,则倒数第二跳 LSR 需要将值为 0 的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为 0,则将标签弹出;
Label==2 被定义为 IPv6 显式空标签(IPv6 Explicit NULL Label)。表示该标签必须被弹出,且报文的转发必须基于IPv6。如果出节点分配给倒数第二跳节点的标签值为2,则倒数第二跳节点需要将值为2的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为2,则直接将标签弹出。
Label==3 被定义为隐式空标签(Implicit NULL Label)。倒数第二跳LSR进行标签交换时,如果发现交换后的标签值为3,则将标签弹出,并将报文发给最后一跳。最后一跳收到该报文直接进行IP转发或下一层标签转发。
https://support.huawei.com/enterprise/zh/doc/EDOC1100127146/b5b946d#tab_dc_fd_mpls_000501
16~1023
用于 Static LSP、Static CR-LSP 的共享标签空间;
1024~1048575
是 LDP、RSVP-TE、MP-BGP 等动态信令协议的标签空间;动态信令协议的 Label Space 不是共享的,而是独立且连续的,互不影响;
报文示例
Frame 1317: 78 bytes on wire (624 bits), 78 bytes captured (624 bits) on interface -, id 0 Ethernet II, Src: HuaweiTe_1b:39:12 (00:e0:fc:1b:39:12), Dst: HuaweiTe_2e:74:4f (00:e0:fc:2e:74:4f) MultiProtocol Label Switching Header, Label: 200, Exp: 0, S: 1, TTL: 126 0000 0000 0000 1100 1000 .... .... .... = MPLS Label: 200 (0x000c8) .... .... .... .... .... 000. .... .... = MPLS Experimental Bits: 0 .... .... .... .... .... ...1 .... .... = MPLS Bottom Of Label Stack: 1 .... .... .... .... .... .... 0111 1110 = MPLS TTL: 126 Internet Protocol Version 4, Src: 1.1.1.3, Dst: 3.3.3.4 Internet Control Message Protocol
ICMP Request
Frame 171: 102 bytes on wire (816 bits), 102 bytes captured (816 bits) on interface -, id 0 Ethernet II, Src: HuaweiTechno_52:7c:e2 (00:e0:fc:52:7c:e2), Dst: HuaweiTechno_b9:05:85 (00:e0:fc:b9:05:85) MultiProtocol Label Switching Header, Label: 1027, Exp: 0, S: 1, TTL: 254 0000 0000 0100 0000 0011 .... .... .... = MPLS Label: 1027 (0x00403) .... .... .... .... .... 000. .... .... = MPLS Experimental Bits: 0 .... .... .... .... .... ...1 .... .... = MPLS Bottom Of Label Stack: 1 .... .... .... .... .... .... 1111 1110 = MPLS TTL: 254 Internet Protocol Version 4, Src: 2.2.2.2, Dst: 7.7.7.7 Internet Control Message Protocol
ICMP Reply
Frame 172: 102 bytes on wire (816 bits), 102 bytes captured (816 bits) on interface -, id 0 Ethernet II, Src: HuaweiTechno_b9:05:85 (00:e0:fc:b9:05:85), Dst: HuaweiTechno_52:7c:e2 (00:e0:fc:52:7c:e2) MultiProtocol Label Switching Header, Label: 1024, Exp: 0, S: 1, TTL: 254 0000 0000 0100 0000 0000 .... .... .... = MPLS Label: 1024 (0x00400) .... .... .... .... .... 000. .... .... = MPLS Experimental Bits: 0 .... .... .... .... .... ...1 .... .... = MPLS Bottom Of Label Stack: 1 .... .... .... .... .... .... 1111 1110 = MPLS TTL: 254 Internet Protocol Version 4, Src: 7.7.7.7, Dst: 2.2.2.2 Internet Control Message Protocol
参考文献
MPLS 对 TTL 的处理 – 竞予科技
HuaWei ❀ MPLS 对 TTL 的处理_乐学善思的技术博客_51CTO 博客