BGP MPLS-VPN的更新以及数据转发的过程
先来阐述一下BGP MPLS-VPN的更新以及数据转发的过程:
CE(R1)—–PE(R2)——P(R3)——–PE(R4)——-CE(R5)
控制平面:r1———–r5
1. CE和PE之间运行普通的路由协议(RIPV2,OSPF,EBGP,ISIS),将私网的路由发送到PE这个时候,PE(R2)发现路由更新是从某个接口发过来的,所以它就找出与该接口所绑定的VRF,针对VRF来给其打上RD和RT标识以及私网标签。然后更改自己的地址(通常是LOOPBACK地址)为下一跳。
2. 然后把更新发送到对端的PE,当然一定要确保到对端的TCP可达,如果不可达的话,那么这个更新信息将被丢弃。然后按照正常的LSP进行转发到PE(R4);如果没有启用MPLS,那么会按照正常的IP进行转发的。当对端PE收到这个更新信息之后,会将RT的outport和自己的import进行比较,如果匹配则倒入相应的VRF表中,这个时候私网标签将被保留,用来转发数据的时候使用。然后,针对VRF与接口的绑定关系,将更新消息转发给CE
数据转发过程:r5———r1
1. R5将去往R1,这个时候把数据包发送给R4,这个时候R4一看是从这个接口上来的数据包,所以呢,我就和与该接口相关联的VRF相对应。为该数据封装私网标签(更新的时候R4所保留的),然后查看下一跳地址(R2)。当它找到下一跳地址后(R2的LOOPBACK),就会在LFIB表中查找与该地址相对应的公网标签。
2. 如果没有相对应的标签,那么这个数据包将被丢弃。(因为这个时候的数据已经封上了私网标签,也就是说是一个带标签的数据,所以一定要有公网 进行转发)如果有的话,就会封装第二层标签(公网标签),从而呢,交给MPLS转发。根据LSP的转发到达倒数第二跳后该公网标签被剥去,由该P路由器转发给R1,PC设备根据私网标签来决定该数据属于哪个VRF表,当确定了VRF表之后,就会把私网标签去掉,从而把数据转发到VRF所对应的接口,从而到达CE。
RD:就是和网络地址进行绑定的一个标签,只要打上该标签之后,该数据就会变成VPNV4路由,从而呢来辨别相同网段,不然正常的IPV4路由是不能辨别的。For example: 如果你把两条相同地址的路由redistribute 到BGP中,那么这个BGP在收到之后,BGP只会保留一条,并且发送到对端的PE,从而使另一个路由丢失。所以我们使用RD来区分这两个不同的路由。
RT:就是用来表示我对VPN路由的喜好,如果我的import和你的outport的数值一样,那么我将记录下来。说到这儿了,我们就来说一下BGP协议的no bgp defau rout fil命令的功能,它的意思是说,我要关闭BGP对RT的过滤功能。因为,当一台PE在收到VPNV4的更新后,会对路由器的所有VRF表进行一个查询,看看哪个VRF的INMPORT和我的OUTPORT一样,如果所有的VRF的OUTPORT都和我的不一样或者是我根本就没有VRF(MPLS 跨AS的ASBR上边)那么,我会将该更新消息,而如果你使用了no bgp default route-target filter命令后,不管你是否有VRF或者不管你VRF的OUTPORT是否和我的一样,那么我将都要保存,使用sh ip bgp vpnv4 all将可以看到该信息。
本文出自 Frank's Blog
哥们,这文章我写的吧。。哈哈
你小子什么时候给过我。。。