MPLS VPN是指利用MPLS在IP骨干网络上构建VPN的技术。VPN的实质就是在公网上像私有专用网一样传输业务数据,这就需要在公网上建立一条隧道,让数据报文通过隧道直达目的地,从而达到私有专用网络的效果。概括地讲,MPLS VPN就是采用MPLS建立的LSP作为公网隧道来传输私网业务数据的。
MPLS VPN网络主要是分为由P路由器和PE路由器组成的互联网服务提供商网络(Provider Network)和由CE路由器以及客户端设备组成的客户站点网络(Customer Network)。
图中给出了MPLS VPN架构所使用的各个网络组件。
在前面的MPLS基本架构中我们提到MPLS的控制层面,通过Control Plane的工作图我们可以看到:在LSR(MPLS VPN体系中,LSR包括PE设备和P设备)中,PE设备Control Plane通过路由协议与客户端CE设备和其他LSR设备进行路由信息交互,建立路由,标签交换信息和路由表的绑定信息,形成LIB标签交换信息表。之后再根据路由表和LIB表生成FIB转发信息表和LFIB标签转发信息库。PE设备与BGP邻居通过MPLS VPN Backbone内路由协议将路由和标签传递到对端CE路由器,同时注入LIB表、FIB表和LFIB表。MPLS VPN核心内部的P路由器不知道客户端的具体路由信息,从而缩小了P路由器的路由表,提高了转发效率。
MPLS VPN的最大亮点在于,它可以有效的隔离客户端网络和客户路由信息,即使这些信息穿越了MPLS VPN Backbone区域,这就使得就算是不同的客户端用户拥有相同的IPV4地址规划也不会产生影响。那么这一功能是如何得以实现的呢?这里就引入了在PE设备上的一个VRF的概念。
VRF:虚拟路由及转发(Virtual Routing and Forwarding),是一种VPN路由转发实例。一台PE设备要实现对不同客户端VPN用户的隔离就需要为每一个VPN用户创建一个VRF,并且同时为其维护一张独立的VRF路由表,并且每一张VRF路由表都是同PE设备的路由表及其他VPN用户的VRF路由表相互隔离的。而在创建了VRF之后,PE设备可以将特定的物理或者逻辑接口放入到这个VRF内,此时被放入的接口将只为该VRF服务,而与其他IP路由和其他VRF相隔离。这就相当于在一台PE设备上拥有了多台虚拟的路由器,可以轻松的实现不同VPN客户端的隔离。
当多个VPN用户的客户信息在MPLS VPN网络内进行传输的过程中,可能会存在着重叠IPV4地址空间的问题,为了保证不同VPN客户地址空间的唯一性,MPLS VPN在VRF中使用了RD值来保障VRF前缀的唯一性。
RD:路由区分符(Route Distinguisher),8个字节(64位)长度;RD的主要作用就是同32位的IPV4地址结合构成一个96位的VPNv4地址前缀,这个地址前缀在MPLS VPN骨干网络中传输。即使不同的VPN客户拥有相同的IPV4地址,那么只要设置不同的RD值就可以进行地址的区分,不会造成地址重叠的问题。此外,一个VPN可以设置多个RD值来规划客户。
RD的表现形式一般有两种:
RT:路由目标(Route Target)是在VRF中进行配置,跟随在VPNv4前缀后面一起在网络中传递,用以区分不同的VPN的客户,进行路由信息的分发;是属于BGP团体的扩展属性。一条路由可以附加多个RT值。它分为以下两种:
(1)Export RTs:是路由信息的导出策略。当我们在VRF中设置Export RT值之后,VRF中生成的VPNv4路由将会协同该RT值,一起以BGP扩展属性团体的方式进行传递。
(2)Import RTs:是路由信息的导入策略。Import RT起到一个识别筛选的作用;当PE设备从其他的对等体PE设备那里收到携带RT值的VPNv4前缀的时候,PE设备并不会马上将这些VPNv4路由以IPV4地址的形式封装到VRF路由表内,只有当收到的VPNv4前缀中的RT和本地的VRF中所配置的Import RTs相匹配的时候,这些VPNv4前缀才会以IPV4的形式被加入到相应的VRF路由表内。RT的这个功能起到了至关重要的作用,在非常多的场景中都有应用,同时,VPNv4路由前缀可能携带了多个RT值,此时,只要有一个可以匹配的Import RT即可。
MPLS VPN数据层面的主要作用同MPLS的DATA Plane一样,主要是基于标签进行数据转发。这里我们主要是通过对MPLS VPN数据传递的整个过程的研究来分析具体额数据转发和标签分发的过程。
过程同(1)一样,通过PE和CE之间的路由协议把PE上的IPV4路由信息传递给CE设备,完成两端通信,至此,MPLS VPN数据传递总体流程就结束了。
由于在P路由器中我们不会去设置VRF,P设备根本就不会存在VRF路由表,所以PE从CE学习到的路由信息无法以纯IP的形式在源端和目的端之间进行转发。此时我们就需要通过MPLS标签报文来解决这个问题。我们会在MPLS VPN Backbone内使所有的P,PE设备运行LDP,使整个MPLS域内建立起LDP邻居关系,从客户端过来的路由信息和数据报文都会被添加上一层标签,在穿越MPLS VPN Backbone区域的时候,P路由器就算没有VRF路由信息,它也可以传递这些信息,因为它只需要对这层标签进行传输和转发就可以了,P设备永远都不用执行目的IP的查找工作。对于这一层标签,我们称之为LDP标签(IGP标签)。这里我们需要注意的是,为了使MPLS VPN Backbone的设备成功建立LDP邻居关系,我们需要在P,PE设备上运行IGP路由协议,使这个区域内的IGP路由都可达,这样才能保证。
LDP标签成功解决了VPN客户端数据在MPLS VPN Backbone区域内传输转发问题,而当数据到了PE设备上时,如何来判断具体的报文是属于PE设备上定义的哪一个VRF?这里我们加入了另外一层标签来说明,称之为VPN标签。由此看来,一个完整的传输报文会有两层标签:LDP标签和VPN标签。LDP标签通过LDP协议在Backbone区域内逐跳转发;VPN标签则是用于单纯的PE设备之间通过MP-BGP来进行通告。我们可以通过图3.5来详细分析。
首先,VPN客户端Customer发来的IP数据报文到达Ingress PE后,Ingress PE会给接收到的原始的IP报文先打上一层VPN标签(图7中的橙色“V”标签),该层标签是由Egress PE为目的地路由前缀分配的并通过MP-BGP告知给Ingress PE的。有了这层标签,当报文传输到对端Egress PE的时候,路由器就知道这个报文应该传输给哪一个CE设备了。
而要想让报文在MPLS VPN Backbone内传输的话还需要一层LDP标签(IGP标签,图中紫色“L1”,“L2”标签),该层标签由LDP发放,有了这层标签,就可以使报文在Backbone区域内正确转发传输,直至引导到正确的Egress PE设备上。
当带有两层标签的数据包传输到Egress PE上时,Egress PE就会把LDP标签移除掉(该标签的工作已经完成了),然后查找数据包内对应的VPN标签具体对应的是哪一个客户端CE设备,然后把VPN标签也移除掉,把IP数据报文通过相应的接口传输给正确的Customer。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。