标签(Label)是一个短而定长的、只有本地意义的标识,用于唯一标识去往同一目的地址的报文分组。
• 理论上,标记栈可以无限嵌套,从而提供无限的业务支持能力。这是MPLS技术最大的魅力所在。
• MPLS标签封装在链路层和网络层之间,可以支持任意的链路层协议,MPLS标签的封装结构如图所示。
• MPLS标签的长度为4个字节,共分4个字段:
• Label:20bit,标签值域;
• Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),当设备发生阻塞时,优先发送优先级高的报文;
• S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签;
• TTL:8bit,和IP报文中的TTL(Time To Live)意义相同。
• 标签空间是指标签的取值范围。标签空间划分如下:
• 0~15:特殊标签。如标签3,称为隐式空标签,用于倒数第二跳弹出;
• 16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched Path)共享的标签空间;
• 1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间。
特殊标签:0 -- 15都是特殊标签(4-13和15都保留,14是MPLS OAM,通过发送OAM报文检测和通告LSP故障)
0——IPv4 Explicit(明确的) NULL Label
• 表示该标签必须被弹出(即标签被剥掉),且报文的转发必须基于IPv4。如果出节点分配给倒数第二跳节点的标签值为0,则倒数第二跳LSR需要将值为0的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为0,则将标签弹出。
1——Router Alert(告警) Label-
• 只有出现在非栈底时才有效。类似于IP报文的“Router Alert Option”字段,节点收到Router Alert Label时,需要将其送往本地软件模块进一步处理。实际报文转发由下一层标签决定。如果报文需要继续转发,则节点需要将Router Alert Label压回标签栈顶。
2——IPv6 Explicit NULL Label
• 表示该标签必须被弹出,且报文的转发必须基于IPv6。如果出节点分配给倒数第二跳节点的标签值为2,则倒数第二跳节点需要将值为2的标签正常压入报文标签值顶部,转发给最后一跳。最后一跳发现报文携带的标签值为2,则直接将标签弹出。
3——Implicit(含蓄;暗示) NULL Label
• 倒数第二跳LSR进行标签交换时,如果发现交换后的标签值为3,则将标签弹出,并将报文发给最后一跳。最后一跳收到该报文直接进行IP转发或下一层标签转发。