「MPLS」- 报文格式

  CREATED BY JENKINSBOT

当上层为 MPLS 协议时:
1)以太网头部中,Type==0x8847;
2)在 PPP 中,Header.Protocol==0x8281;

报文格式

Label(标签):用于携带标签值,长度 20bit;

EXP(Experimental Use):主要用于 CoS(Class of Service),长度 3bit;
该字段在早期的 MPLS 标准中被定义,意为试验性的字段,但实际上该字段主要被用于 CoS。为了避免歧义,RFC5462 重新定义该字段,命名为流分类(Traffic Class);

S(Bottom of Stack):栈底位,用于指示该标签头部是否为最后一层标签,长度 1bit;
S==1,则表示当前标签头部为栈底;
S==0,则表示当前标签头部之后依然还有其他标签头部;

TTL(Time To Live):用于当网络出现环路时,防止标签报文被无限制转发,与 IP 报文头部中的 TTL 具有相同的意义,长度 8bit;

Label Stack(F:S)

MPLS 支持一层或多层标签头部,针对这些标签头部的有序集合,其被称为标签栈(Label Stack);

当标签栈中存在多个标签时,这些标签的顺序是非常讲究的:
1)最靠近 L2 Header 的标签是栈顶标签,标签中的 S==0;
2)最靠近 L3 Header 的标签是栈底标签,标签中的 S==1;

Label Space(F:Label)

Label-Space(标签空间)就是指标签的取值范围;

标签值的范围及规划如下:
1)0~15:特殊标签值。例如 0 被定义为 IPv4 显式空标签(IPv4 Explicit NULL Label);Label==3 被定义为隐式空标签(Implicit NULL Label);
2)16~1023:用于静态 LSP、静态 CR-LSP 的共享标签空间;
3)1024~1048575:是 LDP、RSVP-TE、MP-BGP 等动态信令协议的标签空间;动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响;

补充说明:
1)Label 只具有本地意义,即说明每台 LSR 间的标签空间是相互独立的,即每台路由器都可以使用完整的标签空间(即可以重复使用);

报文格式示例

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