MPLS + BGP高级特性-阿里云开发者社区

开发者社区> 开发与运维> 正文

MPLS + BGP高级特性

简介:

Technorati 标签: MPLS,BGP,CCIE,标签,LDP

LDP是否会为BGP路由分配标签?为什么?

clip_image002

---之前我们说LDP都是为IGP分配标签,从来都没有说为BGP分配标签.

下面用一个实验来说明一下LDP+BGP的工作方式.

纯IP网络的转发方式:

clip_image004

该拓扑图中,R1和R4建立EBGP邻居. R3和R5建立EBGP邻居.

R1和R3之间建立IBGP邻居.

R1-R2-R3之间的IGP协议是OSPF.

R4 bgp中network 44.1.1.1 mask 255.255.255.255

R5 bgp中network 55.1.1.1 mask 255.255.255.255

问题:

最终,R4和R5通过BGP都会学习到对端的BGP路由. 首先有一个问题,就是R4 ping 55.1.1.1 source loo0,或者是R5 ping 44.1.1.1 sou loo0,会通吗?

-------------答案是不通. 通过做实验就能证明. 原因就在于R2上面.如果纯IP的话,R2就是一个路由黑洞.

在R2上面,既没有44.1.1.1的路由,也没有55.1.1.1的路由. 如果要想让R4和R5两个路由器通,除非,让R2也参与到BGP中来,方法很多。R2作为RR路由反射器。R1和R3都是R2的客户端.再或者用联盟.总之一定要让R2也能学习到相关44.1.1.1/55.1.1.1的路由,那么在纯IP环境中才能进行通讯.

否则R2就是一个路由黑洞.

 

 

MPLS标签转发方式:

拓扑图依旧,只是中间AS 100区域,R1,R2和R3之间运行MPLS IP.

这个时候,R2依然没有运行BGP.

其他条件和上面纯IP转发一致.

clip_image006

在这种情况下,R4 network 44.1.1.1/32进入BGP. R5 network 55.1.1.1/32进入bgp.

是否R4pingR5为什么

-------通过实验发现,能通.

clip_image008

结论:在ASBR上面,收到了一个IP数据包。

对于R1来说,该报文源是44.1.1.1.目的是55.1.1.1, 从R1的e0/1进IP,从R1的e0/0 MPLS出.

目的地是去往一个bgp条目的.那么这个时候会打上一个标签,这个时候会给bgp路由的下一跳打上一个标签.

这就是为什么R2没有去往55.1.1.1或者44.1.1.1的路由,依然会有标签,因为标签是针对于11.1.1.1或者33.1.1.1的。R2有路由前缀,并且有相关的标签映射.

所以,一定要保证ASBR上面有明细的路由。否则数据包到了ASBR会因为核心路由表没有条目而丢包.

下面来看看这个数据流如何走:

clip_image010

在R4上面, ping 55.1.1.1 source loo0.

1, 首先R4需要有55.1.1.1的前缀路由信息.

clip_image012

这里在R4的核心路由表中,对于该路由,下一跳是14.1.1.1.可达.那么数据包就送到了R1上面去.

2, 当该IP报文送到R1的时候,是IP--->MPLS,应该查看CEF表.

下面是R1所有的相关表项.

首先,R1有核心路由表的路由:

show ip route

B 55.1.1.1 [200/0] via 33.1.1.1, 02:40:13

这里,R1要到55.1.1.1,bgp路由下一跳是33.1.1.1.

其次,show ip cef表,发现55.1.1.1的前缀,被远端R2分配了一个label=17.

再次,在LFIB中,发现17这个标签,其实是对33.1.1.1(刚好是bgp前缀下一跳)进行分配的标签.

最后该数据包会PUSH进一个17的标签通过R1的e0/0转发给R2.

clip_image014

3, 当MPLS报文,携带label=17,进入了R2的e0/0.

R2的标签转发表如下:

clip_image016

对于进来的17的MPLS报文,在R2上面会将该标签弹出,因为33.1.1.1/32是R3的直连,R3会分配一个隐式空标签给33.1.1.1前缀,并且分发给R2.当数据包到了R2以后,剥离标签,pop label(PHP倒数第二条弹出机制).然后IP报文转发给R3.

4, R3收到这个报文以后. 发现报文目是55.1.1.1.查找路由表:

R3上面的路由表:

clip_image018

在R3上面,到达55.1.1.1,下一跳是直连路由35.1.1.5. 是可达的。所以数据包转发到R5.

5, 数据包到R5上面,最后成功转发。

=============================================

思考:如果R1和R3不用loopback作为bgp的source, 而用物理接口,R4和R5还能通讯吗?

之前的应用是R1和R3用环回口建立的IBGP.

clip_image020

思考,如果用直连建立IBGP邻居的话,是否R4和R5依然可以通过MPLS域进行通讯,为什么?

-----------答案是否定的。

原因:数据包到了R1以后,R1上面的路由表会变成:

show ip route

B 55.1.1.1 [200/0] via 23.1.1.3,

R2会认为,23.1.1.0/24是自己的直连路由,那么R2会分配一个空标签给23.1.1.0/24.分发给R1和R3.

R1上面对于23.1.1.0是没有标签的.

等IP数据包到了R2以后,R2查询,无标签,那么查询路由表,因为R2根本就没有启用bgp,也没有44.1.1.1/55.1.1.1的路由,所以R2又变成了路由黑洞. 主要的目的是利用标签将数据包使用标签交换发送到R3上面,这样R3才能进行路由查询转发数据.



本文转自 hny2000 51CTO博客,原文链接:http://blog.51cto.com/361531/1699261


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章