「MPLS/LDP」- 显式空标签与隐式空标签

  CREATED BY JENKINSBOT

PHP, Penultimate Hop Popping

PHP(Penultimate Hop Popping,次末跳弹出),如果激活 PHP 特性,那么 Egress-LSR 在为本地路由分配标签的时候(注意,这里的分配标签是用于向“次末跳(即上游)”发布的报文,将通告给上游设备),会分配一个特殊标签,3,该标签被称为隐式空标签(Implicit NULL Label);

当 LSR 转发一个标签报文时,如果发现对应的 Out-Label=3,则 LSR 不会再打标签,而是将栈顶标签弹出,并将里面所封装的数据转发给下游 LSR;

PHP 特性存在的目的是为了提高转发效率,否则:最后一跳将进行 ILM 查询得到 Pop 行为,两次查询的第二次是多余的;

开启 PHP 特性:
1)在标签发布时,R3 为作为 192.168.3.0/24 这条 FEC 的 Egress LSR,其在分配标签时,R3 为该 FEC 分配 Label=3,并将该标签绑定信息通告给 R2;
2)在数据转发时,R2 作为到达 192.168.3.0 的次末跳(倒数第二跳),发现 Out-Label=3,于是将标签头部弹出,将 IP 报文转发给 R3,
3)而 R3 则仅需执行一次查询操作(查询 FIB 表)即可获得相应的转发信息,转发效率得到提升;

Explicit Null

缺省情况,开启 PHP 特性,Egress-LSR 向倒数第二跳分配隐式空标签(implicit-null),即特殊标签,Label==3;
但在部署 MPLS QoS 的场景下,标签被弹出后,其中的优先级也会一并丢失,无法进一步进行 QoS 相关的处理;

解决方案

可以部署 IP QOS 来解决,但是过于复杂;还有一种方法是显式空标签(Label=0)

1)显式空标签机制,Egress-LSR 向倒数第二跳分配特殊标签,Label=0;
2)当 R3 在转发标签报文时,若出标签封装为 0,则不会将标签头部弹出,标签头部中的 QoS 信息得以保存;
3)R4 在收到带 Label=0 的报文的时候,直接弹出标签,不用去查找 ILM 表项;

华为设备,缺省,Egress-LSR 分配的是隐式空标签,通过 label advertise explicit-null 使能 Egress 节点向倒数第二跳分配显式空标签;