当上层为 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