个人理解MPLSVPN技术就是通过MP-BGP对私网数据进行封装,然后通过MPLS标签技术进行转发,这个转发过程就是MPLSVPN技术,如下图:

MPLS转发 mpls转发数据包的处理过程_VPN

通过一个实验进一步对私网数据、MP-BGP和MPLS标签转发技术的理解

MPLS转发 mpls转发数据包的处理过程_MPLS转发_02

需求:

1、CE1和CE2模拟两个不同分支机构,lo1模拟私网数据。

2、PE1、P、PE2模拟运营商公网设备,公网中没有1.1.1.1和5.5.5.5的路由,但是我们要实现CE1和CE2的互通。

        这个例子就是典型MPLSVPN,这里CE1和PE1、CE2和PE2之间采用ospf协议互联,PE1、P和PE2之间采用isis协议作为底层路由,PE1和PE2之间使用MP-BGP进行互联。

        如果想要实现CE1和CE2的互通,就需要有对端的路由,如何才能将CE1(1.1.1.1)路由传递给CE2?

        由于CE1和PE1之间为OSPF协议,因此可以将CE1的1.1.1.1的路由通过ospf传递PE1,到达PE1后由于公网设备无法传递私网路由,因此需要将1.1.1.1的路由在公网中进行传输,这时就需要MP-BGP技术。

        什么时MP-BGP技术?MP-BGP就是将传统IP路由转化为VPN-IPv4路由,也就是我们从VPN实例中获得的路由转化为带标记的路由,这里的标记就是我们VPN实例中设置的route-distinguisher值,这个标记用用于区分该路由是哪个VPN实例的,防止不同VPN实例相同路由信息设备无法区分。

MPLS转发 mpls转发数据包的处理过程_MPLS转发_03

 同时MP-BGP路由在传递到对端是还会携带RT值,这个值就是用来区分将该路由发送至哪个VPN实例,RT值有两个, 本端的出方向RT要与对端进方向RT值相同才能将该路由传递到对端的VPN实例中。此时通过MP-BGP技术就会将1.1.1.1的路由告知给对端PE2,此时仅仅是控制层面的路由传递还不是数据层面的转发,如果需要进行数据层面的转发这里就要用到MPLS技术,此时设备启用MPLS功能,MP-BGP就会自动将私网数据外层封装上一层内网标签。此时该条数据需要传递到对端的设备即上图4.4.4.4这个地址,那么如何到达对端这个地址就是通过MPLS技术打上外层标签传递过去,如下图:

MPLS转发 mpls转发数据包的处理过程_网络协议_04

 此时就完成两层标签的封装,当数据包到达P设备时由于MPLS倒数第二跳弹出,会将外层标签弹出,数据包到达PE2时根据RT值进行匹配发送至所要到达的VPN实例,MP-BGP解封去掉最后一层内网标签,最终传递给CE2。反之CE2给CE1传递路由也是如此。

在公网中传递看到的数据包即为2层标签,有图有真相:

MPLS转发 mpls转发数据包的处理过程_数据_05