【MPLS】PHP倒数第二跳弹出机制
2013-07-09 15:35阅读:
》如果没有PHP机制:
-
关于30.0/24这个前缀,C分配的标签是23,这个映射传递给了B;B本地给30.0/24分配的标签是22,这个映射传递给了A。
-
现在A下面有用户发送数据到30.0网络,A将数据压上标签头,标签值为22。标签包到了B,B将标签替换成23,然后传递给C。
-
C上,先查找LFIB表,发现要将标签弹出,于是它将标签弹出,弹出后发现是个IP报文,于是又去查FIB表,最终将这个IP数据包转发出去。C进行了两次查找。这降低了转发效率。
- 标签可以在(倒数第二跳)上弹出,C只需查找FIB表将收到的IP报文进行转发
》有了PHP机制:
- 有了PHP倒数第二跳弹出机制的话,C为本地的直连的前缀分配POP标签并通告给其他LDP邻居
-
如此一来,B收到一个A发送过来的标签值为22的标签包,会将标签弹出得到IP包,再转发给C,则C仅需对IP包进行FIB表的查找和转发。
》小结
LDP 在帧模式(Frame
Mode)下,LSR会为每一条路由分配一个标签;而为本地的直连路由分配的是POP标签。
倒数第二跳弹出机制有两种标签,一是POP或implicit
null,在LDP中标签值为3;另一个是explicit
null,在LDP中标签值为0。如果收到邻居发送来的关于某条路由分配的标签值为3,则我发送数据给该邻居时,我会将该标签弹出,再将内层数据转给邻居。而如果邻居关于某条路由分配的标签值为0,那么本地在转数据给邻居时,会带上标签(为0的),一并发给邻居。
这里要留意的是,如果收到一个标签包,标签为0,则直接将数据交给FIB进行查找,不会有两次查找的损耗。标签为0的标签包,为什么不干脆将标签去掉(分配个13值给路由下一跳让下一跳将标签去掉啊),为什么还要保留这个为0的标签头呢?这是为了在某种情况下保持网络规划的统一性,例如部署了MPLS的QoS,则需使用标签包中的EXP字段,那么就需要有标签。在实施QoS时,最后一跳必须携带exp位,因此标签不能被弹出,需配置mpls
ldp explicit-null,此时分配给特定路由的标签值为0并传递给LDP邻居(如倒数第二跳)。
附:关于LDP的保留标签请参考:
http://blog.sina.cn/dpool/blog/s/blog_5ec353710101ecjv.html?vt=4
(红茶三杯http://weibo.com/vinsoney版权所有,转载请注明出处)
红茶三杯
网络工程 | 项目管理 | IT服务管理 | CCIE培训
学习 沉淀 成长 分享
微博:
http://weibo.com/vinsoney
博客:
http://blog.sina.com.cn/vinsoney
站点:
http://ccietea.com