MPLS VPN详细整体思路

拓扑图:

5dfe6731c92e4ef3a312e2f843455d05.png

 配置思路

1、CE与PE之间建立EBGP邻居,其中CE使用最基本的EBGP即可,PE属于运营商设备,同时会接入多个私网站点,因此需要VPN-Instance(VRF)进行隔离;PE通过BGP的ipv4 vpn-instance(vrf)地址族建立邻居后,会从CE收到的IPv4路由加上RD值,成为96位的VPN-IPv4路由(或者叫做VPNv4路由)同时附加BGP的扩展团体属性RT;

2、PE、P设备之间使用IGP协议打通路由,互相学习到互联路由和环回接口路由;

3、PE、P设备之间开启MPLS功能,可以使用LDP协议自动为32位的主机路由分配公网标签;(LDP默认只为32位主机路由分发标签)

3d27f82915fd48c3a9252b25f65fb45b.png

4、PE设备在开启BGP IPv4-Instance地址族和MPLS功能后,会为每个VPN-Instance分配一个私网标签来区分不同的VPN-Instance,保证后期传递来的数据能正确地导入对应的VPN-Instance中;同时PE会将该标签发送给BGP VPNv4邻居,用于对端PE传递数据时可以打入对应的私网标签;

5、无RR的情况下,PE之间直接建立BGP的VPNv4地址族邻居,将96位的VPN-IPv4路由携带RT属性中的Export值传递到对端PE设备,对端PE设备根据自身VPN-Instance中RT的Import值选择性的进行接收,接收后的路由去掉原有的RT属性和RD值,换为本端VPN-Instance中设置的RD值变为本端的VPN-IPv4路由并存储到对应VPN-Instance的路由表中;

        在有RR的情况下(P设备)下,两端PE均与RR建立BGP VPNv4邻居,将96位的VPN-IPv4路由携带RT属性中的Export值传递到RR上,RR上可以在BGP VPNv4地址族中关闭通过RT值选择接收路由的策略,这样就接收所有VPN-IPv4路由,但此时的VPN-IPv4路由是不会转换为IPv4路由的,也就不会加入到路由表中(因为没有配置VPN-Instance),只能存在于BGP VPNv4的路由表中,也就无法使用这个路由与没有建立BGP VPNv4邻居的设备通信;当然,可以选择不关闭通过RT值选择接收路由的策略,但这就需要配置对应的VPN-Instance和RD值、RT属性等,并在BGP进程中开启IPv4 VPN-Instance xx地址簇才能正常接收和发送VPN-IPv4路由,此时的路由VPN-IPv4路由会去掉RT属性,改变原有的RD值并加入到相应的BGP VPN-Instance的路由表中。(注意:1、如果RR上的RT值不匹配未能接收到VPN-IPv4路由,那它也就不能发送路由给其他反射器客户端;2、即使RR开启VPN-Instance它在反射路由时携带的RT值依旧是客户端的RT值——反射器不改变路由的属性);

        反射器客户端根据自身VPN-Instance中RT的Import值选择性的进行接收,接收后的路由去掉原有的RT属性和RD值,换为本端VPN-Instance中设置的RD值变为本端的VPN-IPv4路由并存储到对应VPN-Instance的路由表中;

6、PE设备将路由发送给CE时,会将RD值和RT属性全部去掉,从96位的VPN-IPv4路由变为正常的32为IPv4路由;

 路由打通后数据的通信过程:

1、CE1发送数据到PE1设备,PE1设备根据接口所对应的VPN-Intance查找对应的路由表;

2、PE1设备查找到对端CE2的路由与对应的私网标签后,将数据包的2-3层之间封装一层私网标签,下一跳地址为对端PE的环回接口,但2.2.2.2不是直连的下一跳,需要进行路由的下一跳迭代,因此需要将刚才封装的私网标签上再封装一层LDP协议分发的公网标签;(共两层标签)

   如下图:R1上vpn-Instance SC的路由表中192.168.20.0网段下一跳地址为PE2的换回接口2.2.2.2,但2.2.2.2不是直连下一跳,在vpn-Instance SC的fib表中可以看到自动迭代到了下一跳为10.1.1.2,且出标签为公网标签1024,而私网标签则是1026

fe8d149ac7f74534b9d9e73f904db2d4.png

3b9579cb67e0453e8c54b7e199b7ca43.png

86dc150b05a44aa2a75cfb3b377c6a84.png

3、P设备收到PE1发往PE2的数据解封装后发现最上层的公网标签1024后,将数据包弹出公网标签(倒数第二跳弹出—出标签为3)并转发给PE2,底层的私网标签和目的IP不检查;

0ff7880cc86b4323a3a02c6161026798.png

4、PE2设备收到数据后,根据数据包底层的私网标签将数据导入对应的VPN-Instance 中查表转发给CE2

通信过程抓包

使用CE1的192.168.10.1地址PingCE2的192.168.20.1地址,并在P设备的G0/0/1和G0/0/2接口上分别抓包

b820a435559b4204ab64f51660e1a6c0.png

d878c639d9a245dea8bca9d9531c96e1.png

0104e5aac57c4cb1819e755c36e95c31.png