2.5.0 PHP的定义:

PHP(Penultimate Hop Popping)倒数第二跳弹出,可以使得标签在倒数第二跳LSR上弹出。

次末跳是针对LSP或FEC,而不是针对设备的。使用倒数第二跳弹出时,倒数第二个LSR依然根据上游LSR标签决定向哪里转发报文,然后直接去掉标签,进行转发,那么当最后一跳LSR(即Egress LER)收到这个报文时,就是传统的IP报文了,这时直接进行传统的IP转发。那么LSR如何知道自己是倒数第二跳呢?倒数第一跳的交换机将为其分配一个特殊的标签3。

2.5.1 配置PHP

LER可以配置3种不同的标签分发方式,以通知倒数第二跳LSR是否应该弹出标签。

[SWD-mpls]label advertise ?                                                    

  explicit-null  explicit-null                                                 

  implicit-null  implicit-null                                                 

  non-null       non-null

explicit-null:为显式空标签,显式空标签值为0。这个值只有出现在标签栈底时才有效,表示报文的标签在分配该标签的这个LSR(即Egress LER)上必须被弹出,然后对此报文进行IP转发;

implicit-null:标签值3表示隐式空标签(implicit-null),这个值不会出现在标签栈中。当一个LSR (倒数第二跳LSR)发现自己被分配了隐式空标签时,它并不用这个值替代栈顶原来的标签,而是直接执行Pop操作。

non-null:表示不使用PHP特性,Egress节点向倒数第二跳正常分配标签。

缺省情况下,Egress节点向倒数第二跳节点分配隐式空标签implicit-null。

2.5.2 配置explicit-null

可以看出,SWD给SWC分配了显式空标签0,SWD收到入标签为0的报文后,由于标签0只在栈底出现,所以弹出该标签,然后进行IP转发。

在MPLS域部署了QoS的情况下,需要在整个MPLS域都进行基于标签的MPLS报文的转发。正常情况下,SWD收到了标签为0的报文后,先查找LFIB表,再查找FIB表,但是华为设备对此做了优化,只要收到了标签为0的报文后,直接把标签去掉,去做IP的查询(直接查询FIB),而不需要做两表的查询如果是其他普通标签还要判断是否是在栈底,如果不是还要取内层标签通过Mpls转发。(如果是普通的非PHP标签,是需要判断是否为栈底标签的,因为需要考虑Label多层嵌套的情况,也就是说,Label为0时就肯定不是嵌套,所以也不需要判断该标签是否为栈底标签)

2.5.3 配置non-null

表示不使用PHP特性,Egress节点向倒数第二跳正常分配标签。可以看出,SWD给SWC分配了标签1031。

2.5.4 特殊标签固定值

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。