Technorati 标签: MPLS,BGP,CCIE,标签,LDP网络
LDP是否会为BGP路由分配标签?为何?ide
---以前咱们说LDP都是为IGP分配标签,历来都没有说为BGP分配标签.oop
下面用一个实验来讲明一下LDP+BGP的工做方式.学习
纯IP网络的转发方式:spa
该拓扑图中,R1和R4创建EBGP邻居. R3和R5创建EBGP邻居.3d
R1和R3之间创建IBGP邻居.blog
R1-R2-R3之间的IGP协议是OSPF.接口
R4 bgp中network 44.1.1.1 mask 255.255.255.255ip
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转发一致.
在这种状况下,R4 network 44.1.1.1/32进入BGP. R5 network 55.1.1.1/32进入bgp.
问:是否R4能ping通R5,为何?
-------经过实验发现,能通.
结论:在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会由于核心路由表没有条目而丢包.
下面来看看这个数据流如何走:
在R4上面, ping 55.1.1.1 source loo0.
1, 首先R4须要有55.1.1.1的前缀路由信息.
这里在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.
3, 当MPLS报文,携带label=17,进入了R2的e0/0.
R2的标签转发表以下:
对于进来的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上面的路由表:
在R3上面,到达55.1.1.1,下一跳是直连路由35.1.1.5. 是可达的。因此数据包转发到R5.
5, 数据包到R5上面,最后成功转发。
=============================================
思考:若是R1和R3不用loopback做为bgp的source, 而用物理接口,R4和R5还能通信吗?
以前的应用是R1和R3用环回口创建的IBGP.
思考,若是用直连创建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才能进行路由查询转发数据.