次末跳弹出机制(Penultimate Hop Poping)

      在实际应用当中(如MPLS VPN),对于Egress LSR在弹出最外层Label后还需要进行其他较为复杂的三层工作,而事实上最外层标签的作用在MPLS VPN的应用中只是为了将报文送到Egress LSR。因此,在倒数第二跳LSR已知报文下一跳的情况下,可以将最外层的标签弹出后转发到最后一跳Egress LSR,而不必进行标签替换。这样使得最后一跳LSR的工作相对简单了一些。因此,最后一跳LSR发给倒数第二跳LSR的标签为隐式空标签“3”。据此,收到标签“3”的上游LSR就知道自己是该FEC的倒数第二跳,就知道自己在用该LSP转发Label报文时,应执行倒数第二跳弹出。


首先明确一点:PHP是对MPLS的一种改进和补充,没有PHP,MPLS的标签交换和数据转发也能正常完成。

  首先说没有PHP有什么缺点:egress PE会做两次查找。

  第一次是查找本地的标签表。因为没有次末跳弹出,对于PE路由器本身直连的路由前缀(或者是汇总路由),路由器也会正常分配标签并发布给TDP/LDP邻居。于是上游路由器就进行正常标签查找和置换,转发给PE的数据也是tagged了的。PE路由器收到该tagged包之后就进行本地标签查找,最终将顶层标签弹出,裸露出本身的IP数据包。

  第二次就是正常的layer-3查找,根据正常的IP数据包里面的layer-3信息查找转发表并进行转发。 可以看出来,两次查找这种动作无谓地耗费了PE的资源,因为PE总归是要进行layer-3查找的,但是标签查找就可以省略。 那么通过什么方法使得egress PE的标签查找可以省略呢?最好是上游路由器直接发过来的就是不带标签的IP包。那么上游路由器怎样才能直接将IP包发给egress PE呢?答案就是:PHP(Penultimate Hop Poping)。在上游路由器(次末跳路由器)上面就将顶层标签弹出而裸露出原始IP包。这样次末跳路由器发给egress PE的就是原始的IP包了。 那么次末跳路由器从何而知某个数据包应该进行PHP呢?答案就是implicit-null这种特殊的标签。对于egress PE,它将会为所有直连或者汇总路由前缀分配这个imp-null标签并发送给LDP/TDP邻居。那么次末跳路由器的标签绑定表里面针对这个前缀的remote标签就是imp-null。针对所有带有imp-null的remote标签的包,次末跳路由器就执行pop动作,将顶层标签弹出从而暴露出原始的IP包。 大家可能已经注意到我上面一直在说的都是弹出“顶层标签”。为什么要强调“顶层”呢?这是因为对于MPLS VPN环境来讲,压入的标签实际上是“标签栈”,除了顶层的MPLS标签之外,下面还有一层VPN标签。这样对于MPLS VPN环境,PHP之后的数据包仍然不是原本的IP包,而是带有VPN标签的标签包。这样egress PE收到这个标签包之后,进行的不是IP的layer-3查找而仍然是标签查找,只不过查找的是VPN标签所对应的VRF实例而已。查找完成之后就弹出VPN标签包并放入对应的VRF实例里面发送给CE。

1,我们明确1个概念,楼长说的,“没有次末端弹出,MPLS照样在工作”。是因为,次末端弹出,是针对MPLS-VPN设计的方法,而不是一般的MPLS工作需要的。

首先,MPLS与MPLS-VPN是2个不同概念。MPLS是路由器端口之间互联时候,交换数据报的一种方式,而到了路由器与用户系统连接时候,一般就不是MPLS,而是IP了。

其次,MPLS-VPN是给用户提供1种连接方式,目的是让客户觉得,ISP是透明的,与客户没有关系的。因此客户并不希望从连接ISP的链路获得MPLS包,而是获得IP包,就像以往他们在使用DDN等专用网时候一样。也就是说,无论如何,从ISP端口出来的,就不能用标签了。

那么,次末端弹出的结果,就是提供给用户站点的数据报,是IP包,而不是标签包。顺便说1句,ISP 也不希望承载所有客户的内部路由,因此,在从PE进入ISP内部网络后,ISP设备只是采用了标签+CEF转发表的快速交换方式,而不用去查找路由表,这也是ISP采用MPLS方式的一个原因。


2,楼长花了很多篇幅,说的另外1个机制,就是次末端弹出如何工作,以及,PE路由器上游那个路由器,给PE的路由器到底是不是真正的IP包。

首先,PE上游路由器发给PE路由器的,不是纯IP包,它还是标签包。这个标签,就是该用户属于哪个VPN的标识。从PE去往用户的包,才是真正的IP包。

其次,此末端弹出如何工作的。一般的认为是,ISP内部路由器,使用入-出 标签对应表,根据这个表,来判断下一跳路径,以及执行标签转发操作。而所谓标签,隐含的意思是,不是单独的1个标签加在IP包头。

实际的工作方式是,用了1个堆栈,来表示至少2个方面的信息。堆栈底的标签,标识了某个固定的VPN,这是在整个LSP(标签交换路径)建立的时候,协商固定下来的。 加入该标签是在该路径的入口PE,在该路径对端的出口PE上消去。那么,在ISP内部传播时候,在这条LSP路径上的其他ISP 路由器,根据出-入对应表,加上预定义的标签,标识 进-出 端口。

因此,这时候来看次末端弹出。当该包到达PE上游那个路由器时候,出去时候,不再标上相应的出站标签,而是就把VPN的标签留下,让出口PE路由器,去掉这最后1个标签,把纯IP包给用户路由器。


讲的比较罗索,不过慢慢看下来,应该可以有点明白了。

还有,我要说一句,关于MPLS-VPN的TRACE,那个ICMP,都是在VRF里的,P只能根据该LSP的出入站标签来向前转发,而且他根本不知道该VPN内部路由,当然只能把ICMP交给对端来发送,而且PE对接CE那个端口,其实就是用户的边缘,当然是从对端PE来发回了,我觉得这个是理论体系决定的。也算是MPLS的1个缺点。


QUESTION 1
Which of these statements about penultimate hop popping are true? (Choose three)
A. It is used only for directly connected subnets or aggregate routes
B. It can only be used with LDP.
C. It is only used when two or more labels are stacked.
D. It enables the Edge LSR to request a label pop operation from Its upstream neighbors
E. It is requested through TDP using a special label value that is also called the implicit-null value.
F. It is requested through LDP using a special label value that is also called the implicit-null value.
Correct Answer: ADF

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值