配置就不说了,看前面的博文吧!

1.CE与PE VRF私网路由的传播

CE全局路由表中的IPV4路由,经过PE-CE间的路由协议(可以是RIP、OSPF、EIGRP、BGP等)传播到PE相应的VRF路由表中。在PE上,与CE进行路由交换的路由协议(路由协议进程或路由协议实例)都需要绑定到相应的VRF;在绑定的VRF的接口上,只能启动本VRF的路由协议;因此 ,在PE上,CE通告过来的路由信息将交给相应的VRF路由进程或路由实例处理,并将计算出来的IPV4路由加入到该进程或该实例相对应的VRF路由表中。

2.PE VRF路由导出到MP_BGP表

   VRF路由表中的IPV4路由,通过network/redistribute发布至MP_BGP的时候,打上RD和RT(export),变成×××v4路由,并分布MPLS私网标签(由MP_BGP从全局标签空间中随机分发,不会与公网标签有重叠),加入到MP_BGP表。同时,将这些MPLS私网标签存入本PE的MPLS标签转发表。

3.PE-PE MP_BGP ×××v4路由传播

PE将MP_BGP表中的×××v4路由形成MP_BGP路由更新,通过PE-PE之间的MP_IBGP邻居传播给远端的PE,远端PE收到路由更新后,将这此×××v4路由加入到MP_BGP表。

4.MP_BGP ×××v4路由匹配导入VRF

在PE上,MP_BGP表中的×××v4路由自动与VRF的RT(import)进行匹配,匹配上的×××v4路由,去掉RD、RT,变成ipv4路由,导入到相应的VRF路由表中;同时,将这些×××v4路由所携带的MPLS私网标签存入该VRF路由表或VRF标签转发表中.

5.PE VRF-CE私网路由传播

VRF路由表中的从MP_BGP ×××v4导入的路由,通过redistribute重发布至本VRF的路由进程或路由实例的数据库中(PE-CE EBGP除外),经过PE-EC间路由协议(RIP、OSPF、BGP等)通告给CE,CE进行路由计算后,将这些路由加入到全局路由表中,如上图。

LDP分发标签:

首先PE1全局路由表中有1.1.1.1/32的直连路由,然后LDP为所有的IGP路由分发标签,因为是倒数第一跳,所以分发一个特殊标签3(大家注意一下,在MPLS转发表中不能看到我上面写的那个表,

因为标签3是不会加入到MPLS中的,也就不会形成转发表了),P2收到后,保存至MPLS转发表中,同时P2通过IGP路由协议也能学习到1.1.1.1的路由,也为它分发标签为25,所以P2的MPLS转发表如上图(当然P2能收到这条路由的多个标签,会进行优选选跟IGP路由表中的下一跳相同的)。同理P3和PE4,都会收到标签和分发标签,然后进行优选进转发表中!见上图!

MPLS ×××数据转发

结合上面两张图,分析CE5访问CE6的过程(注意:数据流与路由流是相反的,下面的路由流传播与上面分析类似):

1.CE收到IP数据包,查找全局路由表转发,转发至PE的VRF接口

CE5收到IP数据包,查找全局路由表,查到出接口为S8,下一跳为S7,将IP数据包转发至PE4的VRF接口

2.PE VRF接口收到IP数据包,查找VRF路由表,压入私网标签和公网标签

  在PE4上,绑定了VRF的接口收到IP数据包,查找本VRF的VRF路由表或标签转发表,查到该数据包匹配的路由的私网OUT标签为33,下一跳为远端PE1的LOOPBACK地址1.1.1.1。该下一跳不是PE4直连的,需要进行递归查找,以1.1.1.1为目标地址查找本PE的全局路由表和MPLS标签转发表,查到1.1.1.1的公网OUT标签26,及出接口和下一跳。PE4将IP数据包先打上私网标签33再打上公网标签26(注意公网标签在最外面,栈底位为0,最里面的私网标签栈底位为1),再转发给下一个LSR也就是P3.

3.P设备收到MPLS数据包,查找标签转发表,交换公网标签

PE3收到数据包,查转发表,交换公网标签,用25替代26,TTL-1将数据转发给下一个LSR。

4.倒数第二跳收到MPLS数据包,查找标签转发表,弹出公网标签

  P2收到MPLS数据包,查MPLS转发表,发现出标签为3,弹出公网标签,然后转发给倒数第一跳。

5.远端PE收到MPLS数据包,查找标签转发表,弹出私网标签

PE1收到MPLS数据包,查找标签转发表,发现OUT标签是Untagged,删除标签根据下一跳转发,将数据发送出去。(如果OUT标签是Aggregate,则删除标签,查IP路由表完成转发,因为在MPLS转发表中没有出接口和下一跳)

6.远端CE收到IP数据包,查找全局路由表转发

  CE6收到PE1发来的IP数据包,查找全局路由表进行数据转发,然后发回应答报文,以上过程逆过程!

补充:MPLS标签操作

PUSH  向IP或MPLS报文中,压入一层或几层MPLS标签,并把该MPLS报文直接转发到下一个LSR

SWAP  把MPLS报文的最外层MPLS标签,交换成下一个LSR需要的MPLS标签,并把该MPLS报文直接转发到下一个LSR

POP       删除MPLS报文的最外层MPLS标签,并把该报文直接转发到下一个LSR

Untag     删除MPLS标签,并把该IP报文直接转发到下一跳路由器

Aggreate  删除MPLS标签,查找IP路由表,并把该报文转发到下一跳路由器