目 录
MPLS L3VPN是服务提供商VPN解决方案中一种基于PE的L3VPN技术,它使用BGP在服务提供商骨干网上发布VPN路由,使用MPLS在服务提供商骨干网上转发VPN报文。
MPLS L3VPN组网方式灵活、可扩展性好,并能够方便地支持MPLS QoS和MPLS TE,因此得到越来越多的应用。
MPLS L3VPN模型由三部分组成:CE、PE和P。
l CE(Customer Edge)设备:用户网络边缘设备,有接口直接与SP(Service Provider,服务提供商)相连。CE可以是路由器或交换机,也可以是一台主机。CE“感知”不到VPN的存在,也不需要必须支持MPLS。
l PE(Provider Edge)路由器:服务提供商边缘路由器,是服务提供商网络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上。
l P(Provider)路由器:服务提供商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力。
图 1是一个MPLS L3VPN组网方案的示意图。
CE和PE的划分主要是根据SP与用户的管理范围,CE和PE是两者管理范围的边界。
CE设备通常是一台路由器,当CE与直接相连的PE建立邻接关系后,CE把本站点的VPN路由发布给PE,并从PE学到远端VPN的路由。CE与PE之间使用BGP/IGP交换路由信息,也可以使用静态路由。
PE从CE学到CE本地的VPN路由信息后,通过BGP与其它PE交换VPN路由信息。PE路由器只维护与它直接相连的VPN的路由信息,不维护服务提供商网络中的所有VPN路由。
P路由器只维护到PE的路由,不需要了解任何VPN路由信息。
当在MPLS骨干网上传输VPN流量时,入口PE做为Ingress LSR(Label Switch Router,标签交换路由器),出口PE做为Egress LSR,P路由器则做为Transit LSR。
在介绍VPN时经常会提到“Site”,Site(站点)的含义可以从下述几个方面理解:
l Site是指相互之间具备IP连通性的一组IP系统,并且,这组IP系统的IP连通性不需通过服务提供商网络实现;
l Site的划分是根据设备的拓扑关系,而不是地理位置,尽管在大多数情况下一个Site中的设备地理位置相邻;
l 一个Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个VPN;
l Site通过CE连接到服务提供商网络,一个Site可以包含多个CE,但一个CE只属于一个Site。
对于多个连接到同一服务提供商网络的Sites,通过制定策略,可以将它们划分为不同的集合(set),只有属于相同集合的Sites之间才能通过服务提供商网络互访,这种集合就是VPN。
VPN是一种私有网络,不同的VPN独立管理自己使用的地址范围,也称为地址空间(Address Space)。
不同VPN的地址空间可能会在一定范围内重合,比如,VPN1和VPN2都使用了10.110.10.0/24网段的地址,这就发生了地址空间重叠(Overlapping Address Spaces)。
在MPLS VPN中,不同VPN之间的路由隔离通过VPN实例(VPN-instance)实现。
PE为每个直接相连的Site建立并维护专门的VPN实例。VPN实例中包含对应Site的VPN成员关系和路由规则。如果一个Site中的用户同时属于多个VPN,则该Site的VPN实例中将包括所有这些VPN的信息。
为保证VPN数据的独立性和安全性,PE上每个VPN实例都有相对独立的路由表和LFIB(Label Forwarding Information Base,标签转发表)。
具体来说,VPN实例中的信息包括:标签转发表、IP路由表、与VPN实例绑定的接口以及VPN实例的管理信息。VPN实例的管理信息包括RD(Route Distinguisher,路由标识符)、路由过滤策略、成员接口列表等。
传统BGP无法正确处理地址空间重叠的VPN的路由。假设VPN1和VPN2都使用了10.110.10.0/24网段的地址,并各自发布了一条去往此网段的路由,BGP将只会选择其中一条路由,从而导致去往另一个VPN的路由丢失。
PE路由器之间使用MP-BGP来发布VPN路由,并使用VPN-IPv4地址族来解决上述问题。
VPN-IPv4地址共有12个字节,包括8字节的RD和4字节的IPv4地址前缀,如图 2所示。
图 2 VPN-IPv4地址结构
PE从CE接收到普通IPv4路由后,需要将这些私网VPN路由发布给对端PE。私网路由的独立性是通过为这些路由附加RD实现的。
SP可以独立地分配RD,但必须保证RD的全局唯一性。这样,即使来自不同服务提供商的VPN使用了同样的IPv4地址空间,PE路由器也可以向各VPN发布不同的路由。
建议为PE上每个VPN实例配置专门的RD,以保证到达同一CE的路由都使用相同的RD。RD为0的VPN-IPv4地址相当于全局唯一的IPv4地址。
RD的作用是添加到一个特定的IPv4前缀,使之成为全局唯一的VPN IPv4前缀。
RD或者是与自治系统号(ASN)相关的,在这种情况下,RD是由一个自治系统号和一个任意的数组成;或者是与IP地址相关的,在这种情况下,RD是由一个IP地址和一个任意的数组成。
RD有三种格式,通过2字节的Type字段区分:
l Type为0时,Administrator子字段占2字节,Assigned number子字段占4字节,格式为:16bits自治系统号:32bits用户自定义数字。例如:100:1
l Type为1时,Administrator子字段占4字节,Assigned number子字段占2字节,格式为:32bitsIPv4地址:16bits用户自定义数字。例如:172.1.1.1:1
l Type为2时,Administrator子字段占4字节,Assigned number子字段占2字节,格式为:32bits自治系统号:16bits用户自定义数字,其中的自治系统号最小值为65536。例如:65536:1
为保证RD的全局唯一性,建议不要将Administrator子字段的值设置为私有AS号或私有IP地址。
MPLS L3VPN使用BGP扩展团体属性——VPN Target(也称为Route Target)来控制VPN路由信息的发布。
PE路由器上的VPN实例有两类VPN Target属性:
l Export Target属性:在本地PE将从与自己直接相连的Site学到的VPN-IPv4路由发布给其它PE之前,为这些路由设置Export Target属性;
l Import Target属性:PE在接收到其它PE路由器发布的VPN-IPv4路由时,检查其Export Target属性,只有当此属性与PE上VPN实例的Import Target属性匹配时,才把路由加入到相应的VPN路由表中。
也就是说,VPN Target属性定义了一条VPN-IPv4路由可以为哪些Site所接收,PE路由器可以接收哪些Site发送来的路由。
与RD类似,VPN Target也有三种格式:
l 16bits自治系统号:32bits用户自定义数字,例如:100:1。
l 32bits IPv4地址:16bits用户自定义数字,例如:172.1.1.1:1。
l 32bits自治系统号:16bits用户自定义数字,其中的自治系统号最小值为65536。例如:65536:1。
MP-BGP(Multiprotocol extensions for BGP-4)在PE路由器之间传播VPN组成信息和路由。MP-BGP向下兼容,既可以支持传统的IPv4地址族,又可以支持其他地址族(比如VPN-IPv4地址族)。使用MP-BGP既确保VPN的私网路由只在VPN内发布,又实现了MPLS VPN成员间的通信。
在通过入口、出口扩展团体来控制VPN路由发布的基础上,如果需要更精确地控制VPN路由的引入和发布,可以使用入方向或出方向路由策略。
入方向路由策略根据路由的VPN Target属性进一步过滤可引入到VPN实例的路由,它可以拒绝接收引入列表中的团体选定的路由,而出方向路由策略则可以拒绝发布输出列表中的团体选定的路由。
VPN实例创建完成后,可以选择是否需要配置入方向或出方向路由策略。
隧道策略用于选择给特定VPN实例的报文使用的隧道。
隧道策略是可选配的,VPN实例创建完成后,就可以配置隧道策略。缺省情况下,选择LSP做为隧道,不进行负载分担(负载分担条数为1)。另外,隧道策略只在同一AS域内生效。
在基本MPLS L3VPN应用中(不包括跨域的情况),VPN报文转发采用两层标签方式:
l 第一层(外层)标签在骨干网内部进行交换,指示从PE到对端PE的一条LSP。VPN报文利用这层标签,可以沿LSP到达对端PE;
l 第二层(内层)标签在从对端PE到达CE时使用,指示报文应被送到哪个Site,或者更具体一些,到达哪一个CE。这样,对端PE根据内层标签可以找到转发报文的接口。
特殊情况下,属于同一个VPN的两个Site连接到同一个PE,这种情况下只需要知道如何到达对端CE。
以图 3为例,说明VPN报文的转发:
图 3 VPN报文转发示意图
(1) Site 1发出一个目的地址为1.1.1.2的IP报文,由CE 1将报文发送至PE 1。
(2) PE 1根据报文到达的接口及目的地址查找VPN实例表项,匹配后将报文转发出去,同时打上内层和外层两个标签。
(3) MPLS网络利用报文的外层标签,将报文传送到PE 2(报文在到达PE 2前一跳时已经被剥离外层标签,仅含内层标签)。
(4) PE 2根据内层标签和目的地址查找VPN实例表项,确定报文的出接口,将报文转发至CE 2。
(5) CE 2根据正常的IP转发过程将报文传送到目的地。
在MPLS L3VPN网络中,通过VPN Target属性来控制VPN路由信息在各Site之间的发布和接收。VPN Export Target和Import Target的设置相互独立,并且都可以设置多个值,能够实现灵活的VPN访问控制,从而实现多种VPN组网方案。
最简单的情况下,一个VPN中的所有用户形成闭合用户群,相互之间能够进行流量转发,VPN中的用户不能与任何本VPN以外的用户通信。
对于这种组网,需要为每个VPN分配一个VPN Target,作为该VPN的Export Target和Import Target,并且,此VPN Target不能被其他VPN使用。
图 4 基本的VPN组网方案
在图 4中,PE上为VPN 1分配的VPN Target值为100:1,为VPN 2分配的VPN Target值为200:1。VPN 1的两个Site之间可以互访,VPN 2的两个Site之间也可以互访,但VPN 1和VPN 2的Site之间不能互访。
如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可以使用Hub&Spoke组网方案,从而实现中心设备对两端设备之间的互访进行监控和过滤等功能。
对于这种组网,需要设置两个VPN Target,一个表示“Hub”,另一个表示“Spoke”。
各Site在PE上的VPN实例的VPN Target设置规则为:
l 连接Spoke站点(Site 1和Site 2)的Spoke-PE:Export Target为“Spoke”,Import Target为“Hub”;
l 连接Hub站点(Site 3)的Hub-PE:Hub-PE上需要使用两个接口或子接口,一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为“Spoke”;另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为“Hub”。
图 5 Hub&Spoke组网方案
在图 5中,Spoke站点之间的通信通过Hub站点进行(图中箭头所示为Site 2的路由向Site 1的发布过程):
l Hub-PE能够接收所有Spoke-PE发布的VPN-IPv4路由;
l Hub-PE发布的VPN-IPv4路由能够为所有Spoke-PE接收;
l Hub-PE将从Spoke-PE学到的路由发布给其他Spoke-PE,因此,Spoke站点之间可以通过Hub站点互访。
l 任意Spoke-PE的Import Target属性不与其它Spoke-PE的Export Target属性相同。因此,任意两个Spoke-PE之间不直接发布VPN-IPv4路由,Spoke站点之间不能直接互访。
如果一个VPN用户希望提供部分本VPN的站点资源给非本VPN的用户访问,可以使用Extranet组网方案。
对于这种组网,如果某个VPN需要访问共享站点,则该VPN的Export Target必须包含在共享站点的VPN实例的Import Target中,而其Import Target必须包含在共享站点VPN实例的Export Target中。
图 6 Extranet组网方案
在图 6中,VPN 1的Site 3能够被VPN 1和VPN 2访问:
l PE 3能够接受PE 1和PE 2发布的VPN-IPv4路由;
l PE 3发布的VPN-IPv4路由能够为PE 1和PE 2接受;
l 基于以上两点,VPN 1的Site 1和Site 3之间能够互访,VPN 2的Site 2和VPN 1的Site 3之间能够互访。
PE 3不把从PE 1接收的VPN-IPv4路由发布给PE 2,也不把从PE 2接收的VPN-IPv4路由发布给PE 1(IBGP邻居学来的条目是不会再发送给别的IBGP邻居),因此,VPN 1的Site 1和VPN 2的Site 2之间不能互访。
在基本MPLS L3VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。PE路由器也只维护与它直接相连的VPN的路由信息,不维护所有VPN路由。因此,MPLS L3VPN网络具有良好的可扩展性。
VPN路由信息的发布过程包括三部分:本地CE到入口PE、入口PE到出口PE、出口PE到远端CE。完成这三部分后,本地CE与远端CE之间将建立可达路由,VPN私网路由信息能够在骨干网上发布。
下面分别对这三部分进行介绍。
CE与直接相连的PE建立邻接关系后,把本站点的VPN路由发布给PE。
CE与PE之间可以使用静态路由、RIP、OSPF、IS-IS或EBGP。无论使用哪种路由协议,CE发布给PE的都是标准的IPv4路由。
PE从CE学到VPN路由信息后,为这些标准IPv4路由增加RD和VPN Target属性,形成VPN-IPv4路由,存放到为CE创建的VPN实例中。
入口PE通过MP-BGP把VPN-IPv4路由发布给出口PE。出口PE根据VPN-IPv4路由的Export Target属性与自己维护的VPN实例的Import Target属性,决定是否将该路由加入到VPN实例的路由表。
PE之间通过IGP来保证内部的连通性。
远端CE有多种方式可以从出口PE学习VPN路由,包括静态路由、RIP、OSPF、IS-IS和EBGP,与本地CE到入口PE的路由信息交换相同。
实际组网应用中,某用户一个VPN的多个Site可能会连接到使用不同AS号的多个服务提供商,或者连接到一个服务提供商的多个AS。这种VPN跨越多个自治系统的应用方式被称为跨域VPN(Multi-AS VPN)。
RFC 2547bis中提出了三种跨域VPN解决方案,分别是:
l VRF-to-VRF:ASBR间使用子接口管理VPN路由,也称为Inter-Provider Option A;
l EBGP Redistribution of labeled VPN-IPv4 routes:ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为Inter-Provider Option B;
l Multihop EBGP redistribution of labeled VPN-IPv4 routes:PE间通过MP-EBGP发布标签VPN-IPv4路由,也称为Inter-Provider Option C。
下面逐一对这些方案进行介绍。
这种方式下,两个AS的PE路由器直接相连,PE路由器同时也是各自所在自治系统的边界路由器ASBR。
作为ASBR的PE之间通过多个子接口相连,两个PE都把对方作为自己的CE设备对待,使用传统的EBGP方式向对端发布IPv4路由。报文在AS内部作为VPN报文,采用两层标签转发方式;在ASBR之间则采用普通IP转发方式。
理想情况下,每个跨域的VPN都有一对子接口与之对应,用来交换VPN路由信息。
图 7 ASBR间使用子接口管理VPN路由组网图
使用子接口实现跨域VPN的优点是实现简单:两个作为ASBR的PE之间不需要为跨域进行特殊配置。
缺点是可扩展性差:作为ASBR的PE需要管理所有VPN路由,为每个VPN创建VPN实例。这将导致PE上的VPN-IPv4路由数量过于庞大。并且,为每个VPN单独创建子接口也提高了对PE设备的要求。
这种方式下,两个ASBR通过MP-EBGP交换它们从各自AS的PE路由器接收的标签VPN-IPv4路由。
路由发布过程可分为以下步骤:
(1) AS 100内的PE先通过MP-IBGP方式把标签VPN-IPv4路由发布给AS 100的边界路由器PE,或发布给为ASBR PE反射路由的路由反射器;
(2) 作为ASBR的PE通过MP-EBGP方式把标签VPN-IPv4路由发布给AS 200的PE(也是AS 200的边界路由器);
(3) AS 200的ASBR PE再通过MP-IBGP方式把标签VPN-IPv4路由发布给AS 200内的PE,或发布给为PE反射路由的路由反射器。
这种方式的ASBR需要对标签VPN-IPv4路由进行特殊处理,因此也称为ASBR扩展方式。
图 8 ASBR间通过MP-EBGP发布标签VPN-IPv4路由组网图
在可扩展性方面,通过MP-EBGP发布标签VPN-IPv4路由优于ASBR间通过子接口管理VPN。
采用MP-EBGP方式时,需要注意:
l ASBR之间不对接收的VPN-IPv4路由进行VPN Target过滤,因此,交换VPN-IPv4路由的各AS服务提供商之间需要就这种路由交换达成信任协议;
l VPN-IPv4路由交换仅发生在私网对等点之间,不能与公网交换VPN-IPv4路由,也不能与没有达成信任协议的MP-EBGP对等体交换VPN-IPv4路由。
前面介绍的两种方式都能够满足跨域VPN的组网需求,但这两种方式也都需要ASBR参与VPN-IPv4路由的维护和发布。当每个AS都有大量的VPN路由需要交换时,ASBR就很可能成为阻碍网络进一步扩展的瓶颈。
解决上述可扩展性问题的方案是:ASBR不维护或发布VPN-IPv4路由,PE之间直接交换VPN-IPv4路由。
两个ASBR通过MP-IBGP向各自AS内的PE路由器发布标签IPv4路由。
ASBR上不保存VPN-IPv4路由,相互之间也不通告VPN-IPv4路由。
ASBR保存AS内PE的带标签的IPv4路由,并通告给其它AS的对等体。另一个自治系统中的ASBR也通告带标签的IPv4路由。这样,在入口PE和出口PE之间建立起一条LSP。
不同AS的PE之间建立Multihop方式的EBGP连接,交换VPN-IPv4路由。
图 9 PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由组网图
为提高可扩展性,可以在每个AS中指定一个路由反射器RR(Route Reflector),由RR保存所有VPN-IPv4路由,与AS的PE交换VPN-IPv4路由信息。两个AS的RR之间建立跨域VPNv4连接,通告VPN-IPv4路由。如图 10所示。
图 10 采用RR的跨域VPN OptionC方式组网图
MPLS L3VPN服务提供商的用户可能也是一个服务提供商。这种情况下,前者称为提供商运营商(Provider Carrier)或一级运营商(First Carrier),后者称为客户运营商(Customer Carrier)或二级运营商(Second Carrier)。这种组网模型称为运营商的运营商(Carriers’ carriers),低级别的SP作为更高级别SP的CE。
为保持良好的可扩展性,一级运营商并不引入二级运营商的外部路由,只引入为不同站点的二级运营商交换报文的路由。二级运营商维护的外部路由通过在相关二级运营商路由器间建立BGP会话交换。这可以大大减少一级运营商网络中需要维护的路由数量。
与普通MPLS L3VPN相比,配置运营商的运营商的主要区别在于一级运营商PE接入二级运营商CE这一部分:
l 如果一级运营商PE与二级运营商CE位于同一个AS内,则它们之间配置IGP和LDP;
l 如果一级运营商PE与二级运营商CE位于不同的AS,则它们之间配置MP-EBGP。MP-EBGP为PE与CE之间交换的路由分配标签。
无论哪种情况,CE上都需要使能MPLS。并且,CE上虽然有二级运营商的VPN路由,但它们并不把这些路由发布给一级运营商的PE,只在二级运营商PE之间交换。
二级运营商可能只是普通ISP,也可能是MPLS L3VPN服务提供商。
二级运营商是普通ISP时,其PE不需要运行MPLS,与CE之间运行IGP。PE 3和PE 4之间通过IBGP会话交换二级运营商的VPN路由。如图 11所示。
二级运营商是MPLS L3VPN服务提供商时,其PE也需要运行MPLS,与CE之间运行IGP和LDP。PE 3和PE 4之间通过MP-IBGP会话交换二级运营商的VPN路由。如图 12所示。
如果一级运营商和二级运营商之间存在等价路由,则建议在一级运营商和二级运营商之间建立对应的等价LSP。
在基本的MPLS L3VPN模型中,由运营商经营MPLS VPN骨干网,通过PE设备提供VPN服务。VPN用户通过CE设备与运营商的PE设备互连,接入MPLS VPN网络,实现属于用户VPN的不同Site之间的通信。在这种情况下,用户网络是普通的IP网络,VPN用户不能再划分子VPN。
实际组网中,VPN用户网络复杂多样,繁简不同。当VPN用户内部需要进一步划分多个VPN时,传统的解决方案是直接在运营商的PE设备上配置用户内部的VPN。这种方案实现简单,缺点是将导致PE上承载的VPN数量急剧增加,并且,如果用户内部需要调整VPN关系,也必须通过运营商操作。这不仅增加了网络的运营成本,也带来了管理和安全方面的问题。
嵌套VPN是一种更为完善的解决方案,它的主要思想是在普通MPLS L3VPN的PE和CE之间传递VPNv4路由,由用户管理自己内部的VPN划分,运营商不参与用户内部VPN的管理。如图 13所示,用户在运营商MPLS VPN网络上所属的VPN为VPN A,在用户网络内部划分子VPN:VPN A-1和VPN A-2。运营商PE设备把用户网络当作普通VPN用户对待,不参与子VPN的划分。VPN用户的CE设备(CE 1、CE 2、CE 7和CE 8)和运营商PE设备之间传递包括子VPN路由信息的VPNv4路由,从而实现用户网络内部子VPN路由信息的传递。
图 13 嵌套VPN组网应用
嵌套VPN中,路由信息的传播过程为:
(1) 运营商的PE设备与VPN用户的CE设备交互VPNv4路由,VPNv4路由携带用户内部的VPN信息。
(2) 运营商的PE设备收到VPNv4路由后,保留用户内部的VPN信息,并附加用户在运营商网络上的MPLS VPN属性,即将该VPNv4路由的RD更换为用户所处运营商网络VPN的RD,同时将用户所处运营商网络VPN的ERT(Export Route-target,引出路由标识)添加到路由的扩展团体属性列表中。运营商的PE设备维护用户内部的VPN信息。
(3) 运营商的PE设备向其他运营商PE设备发布这些携带综合VPN信息的VPNv4路由。
(4) 其他的运营商PE设备收到VPNv4路由后,与本地的VPN进行匹配,每个VPN接收属于自己的路由,然后将路由扩散到自己连接的子VPNCE设备(如1. 图 13中的CE 3、CE 4、CE 5和CE 6):如果运营商PE和CE设备之间是IPv4连接,直接扩散IPv4路由;如果和CE设备之间是VPNv4连接,表示通过私网连接的是一个用户MPLS VPN网络,向CE扩散VPNv4路由。
嵌套VPN技术的主要优点是:
l 实现了VPN聚合功能,可以把用户的多个内部VPN聚合成一个用户VPN,接入运营商的MPLS VPN网络;
l 支持对称组网方式和非对称组网方式,即属于同一VPN用户的不同Site包括的用户内部VPN数目可以相同,也可以不同;
l 支持用户内部VPN的多层嵌套。
嵌套VPN技术降低了用户接入VPN网络的复杂度和成本,为用户提供多样化的VPN组网方式,实现了用户对内部VPN以及多层VPN之间的互访权限控制管理。
从CE进入PE的报文的VPN属性由入接口绑定的VPN决定,这就决定了由同一入接口经PE转发的所有CE设备都必须属于同一VPN。但在实际组网中,一个CE设备可能需要经过一个物理接口访问多个VPN,这可以通过设置不同的逻辑接口来实现,但会增加额外的配置负担,使用起来也有局限性。
多角色主机,是通过在PE上配置策略路由,使来自CE的报文可以访问多个VPN。
为使其它VPN的信息能够从PE发送到CE,需要在其它VPN上配置静态路由,并指定连接CE的接口作为下一跳。
在实际应用中,应合理进行地址规划,使每个VPN的地址段相对集中,以提高PE的转发效率。
(1) 分层模型与平面模型
在MPLS L3VPN解决方案中,PE设备最为关键,它完成两方面的功能:首先是为用户提供接入功能,这需要PE具有大量接口;然后是管理和发布VPN路由,处理用户报文,这需要PE设备具有大容量存储和高转发能力。
目前的网络设计大多采用经典的分层结构,例如,城域网的典型结构是三层模型:核心层、汇聚层、接入层。从核心层到接入层,对设备的性能要求依次下降,网络的规模则依次扩大。
而MPLS L3VPN是一种平面模型,对网络中所有PE设备的性能要求相同,当网络中某些PE在性能和可扩展性方面存在问题时,整个网络的性能和可扩展性将受到影响。
由于MPLS L3VPN的平面模型与典型的分层网络模型不相符,在每一个层次上部署PE都会遇到扩展性问题,不利于大规模部署VPN。
(2) HoVPN
为解决可扩展性问题,MPLS L3VPN必然要从平面模型转变为分层模型。
在MPLS L3VPN领域,分层VPN(Hierarchy of VPN,简称HoVPN)解决方案的提出,实现了将PE的功能分布到多个PE设备上,多个PE承担不同的角色,并形成层次结构,共同完成一个PE的功能。
HoVPN对处于较高层次的设备的路由能力和转发性能要求较高,而对处于较低层次的设备的相应要求也较低,符合典型的分层网络模型。
(1) HoVPN的基本结构
图 14 HoVPN的基本结构
在图 14中,直接连结用户的设备称为下层PE(Underlayer PE)或用户侧PE(User-end PE),简写为UPE;连结UPE并位于网络内部的设备称为上层PE(Superstratum PE)或运营商侧PE(Sevice Provider-end PE),简写为SPE。
多个UPE与SPE构成分层式PE,共同完成传统上一个PE的功能。
SPE与UPE的分工是:
l UPE主要完成用户接入功能。UPE维护其直接相连的VPN Site的路由,但不维护VPN中其它远程Site的路由或仅维护它们的聚合路由;UPE为其直接相连的Site的路由分配内层标签,并通过MP-BGP随VPN路由发布此标签给SPE;
l SPE主要完成VPN路由的管理和发布。SPE维护其通过UPE连接的VPN所有路由,包括本地和远程Site的路由,SPE将路由信息发布给UPE,并携带标签。SPE发布的路由信息可以是VPN实例的缺省路由(或聚合路由),也可以是通过路由策略的路由信息。通过后者可以实现对同一VPN下不同站点之间互访的控制。
由于分工的不同,对SPE和UPE的要求也不同:SPE的路由表容量大,转发性能强,但接口资源较少;UPE的路由容量和转发性能较低,但接入能力强。HoVPN充分利用了SPE的性能和UPE的接入能力。
需要说明的是,SPE和UPE是相对的概念。在多个层次的PE结构中,上层PE相对于下层就是SPE,下层PE相对于上层就是UPE。
分层式PE从外部来看同传统上的PE没有区别,可以同普通PE共存于一个MPLS网络。
(2) SPE-UPE
SPE和UPE之间运行MP-BGP,可以是MP-IBGP,也可以是MP-EBGP,这取决于UPE和SPE是否属于同一个AS。
采用MP-IBGP时,为了在IBGP对等体之间通告路由,SPE将作为路由反射器,把来自IBGP对等体UPE的VPN路由发布给IBGP对等体SPE,但SPE不作为其它PE的路由反射器。
(3) HoVPN的嵌套与扩展
HoVPN支持分层式PE的嵌套:
l 一个分层式PE可以作为UPE,同另一个SPE组成新的分层式PE;
l 一个分层式PE可以作为SPE,同多个UPE组成新的分层式PE;
l 以上这种嵌套可以多次进行。
通过分层式PE的嵌套,理论上可以将VPN无限扩展与延伸。
图 15 分层式PE的嵌套
图 15是一个三层的分层式PE,称中间的PE为MPE(Middle-level PE)。SPE和MPE之间,以及MPE和UPE之间,均运行MP-BGP。
MP-BGP为上层PE发布下层PE上的所有VPN路由,为下层PE发布上层PE的VPN实例缺省路由或通过路由策略的VPN路由。
SPE维护了这个分层式PE接入的所有Site的VPN路由,路由数目最多;UPE只维护它所直接连接的Site的VPN路由,路由数目最少;MPE的路由数目介于SPE和UPE之间。
OSPF是应用广泛的一种IGP协议,很多情况下,VPN客户端通过BGP对等体连接,客户端内部则经常以OSPF作为内部路由协议。如果能够在PE-CE之间使用OSPF,则CE上就不需要再为到PE的连接支持其它路由协议,从而简化CE的管理和配置。并且,如果客户需要通过传统的OSPF骨干区域提供MPLS L3VPN服务,在PE和CE之间使用OSPF可以简化这种转换。
为了在PE-CE间运行OSPF,PE必须支持OSPF多实例,每个OSPF实例与一个VPN实例对应,使用自己的接口、路由表。
下面具体介绍在PE-CE间配置OSPF需要了解的知识。
(1) PE和CE间的OSPF区域配置
PE与CE之间的OSPF区域可以是非骨干区域,也可以是骨干区域。
在OSPF VPN扩展应用中,MPLS VPN骨干网被看作是骨干区域area 0。由于OSPF要求骨干区域连续,因此,所有VPN站点的area 0必须与MPLS VPN骨干网相连。
即:如果VPN站点存在OSPF area 0,则CE接入的PE必须通过area 0与这个VPN站点的骨干区域相连(可以通过Virtual-link实现逻辑上的连通)。
(2) BGP/OSPF交互
在PE-CE间运行OSPF后,PE与PE通过BGP发布VPN路由,PE通过OSPF向CE发布VPN路由。
对于普通OSPF,即使两个不同站点属于同一VPN,它们也会被看作属于不同的自治系统。这样,在一个站点学到的路由,将被作为外部路由传送给另一站点。这种处理方式导致了比较高的OSPF路由协议流量,并带来了一些原本可以避免的网络管理问题。
目前的OSPF可以解决上述问题。通过适当配置,运行OSPF的不同站点之间彼此看作是直接相连的。这样,PE路由器交换OSPF路由信息时就好像是通过一条专线相连。改善了网络管理并使OSPF的应用更为有效。
以图 16为例,PE 1和PE 2通过MPLS骨干网相连,CE 11、CE 21和CE 22都属于VPN 1。假设图中所有路由器属于同一个域,即,CE 11、CE 21、CE 22属于同一个OSPF域(OSPF domain)。
VPN 1路由的发布过程可以描述为:首先在PE 1上将CE 11的OSPF路由引入BGP;然后通过BGP将这些VPN路由发布给PE 2;在PE 2上将BGP的VPN路由引入到OSPF,再发布给CE 21和CE 22。
图 16 OSPF在VPN中的使用
如果使用标准的BGP/OSPF交互过程,PE 2将把BGP VPN路由通过Type5 LSAs(即ASE LSAs)发布给CE 21和CE 22。但CE 11与CE 21、CE 22是同一个OSPF域,它们之间的路由发布应该使用Type3 LSAs,即区域间路由。
为了解决上述问题,PE使用一种经过修改的BGP/OSPF交互过程(简称为BGP/OSPF互操作功能),发布从一个Site到另一个Site的路由,将这种路由与真正的AS-External路由进行区分。这一过程需要BGP使用扩展团体属性,携带可以标识OSPF属性的信息。
在实现中,要求每个OSPF域有一个可配置的域ID(Domain ID)。一般建议:与每个VPN实例相关的网络中的所有OSPF实例要么配置一个相同的域ID,要么都使用缺省的域ID。这样在收到BGP的VPN路由时,域ID相同的是来自同一VPN实例的路由。
(3) 路由环的检测
假设PE与CE之间通过OSPF骨干区域相连,且同一个VPN站点(Site)连接到多个不同PE。这种情况下,当一个PE通过LSA向VPN站点发布从MPLS/BGP学的BGP VPN路由时,LSA可能被另一个PE接收到,造成路由环。
为了防止产生路由环,对于从MPLS/BGP学到的BGP VPN路由,无论PE与CE间是否通过OSPF骨干区域相连,PE在生成Type3 LSA时,都会设置标志位DN。PE路由器的OSPF进程在进行路由计算时,忽略DN置位的Type3 LSAs。
如果PE需要向CE发布一条来自其它OSPF域的路由,则PE应表明自己是ASBR,并将该路由作为Type5 LSA发布。
通常情况下,BGP对等体之间通过BGP扩展团体属性在MPLS VPN骨干网上承载路由信息。另一端PE上运行的OSPF可利用这些信息来生成PE到CE的Type3 summary LSA,这些路由是区域间路由。
如图 17所示:在OSPF的PE-CE连接中,同一个OSPF区域中有两个Site连接到不同的PE,两个Site属于同一个VPN,它们之间存在一条区域内OSPF链路(backdoor link)。这种情况下,通过PE连接两个Site的路由将作为区域间路由(Inter-Area Route),由于其优先级低于经过backdoor链路的区域内路由(Intra-Area Route),不会被OSPF优选。
图 17 Sham-link应用示意图
上述情况导致VPN流量总是通过后门路由转发,而不走骨干网。为了避免这一问题,可以在PE路由器之间建立OSPF伪连接(Sham-link),使经过MPLS VPN骨干网的路由也成为OSPF区域内路由。
Sham-link作为区域内的一条点到点链路,包含在Type1 LSA中发布。用户可以通过调整度量值在Sham-link和backdoor之间进行选路。
Sham-link被看成是两个VPN实例之间的链路,每个VPN实例中必须有一个Sham-link的端点地址,它是PE路由器上VPN地址空间中的一个有32位掩码的Loopback接口地址。同一个OSPF进程的Sham-link可以共用端点地址,但不同OSPF进程不能拥有两条端点地址完全相同的Sham-link。
Sham-link的端点地址被BGP作为VPN-IPv4地址发布。如果路由经过了Sham-link,它就不能再以VPN-IPv4路由的形式被引入到BGP。
Sham-link可以在任何区域配置。Sham-link需要手工配置,并且,本端VPN实例中必须有到Sham-link目的地址的路由。
OSPF多实例通常运行在PE路由器上,在局域网内部运行OSPF多实例的路由器称为Multi-VPN-Instance CE,即多实例CE。与PE上的OSPF多实例相比,Multi-VPN-Instance CE不需要支持BGP/OSPF互操作功能。
Multi-VPN-Instance CE主要用于以较低的成本解决局域网的安全问题。
单纯使用传统路由器很难实现局域网中不同业务的完全隔离。目前,在一台路由器上可以运行多个OSPF进程,这些OSPF进程可以是公网进程,也可以是某个VPN实例的进程。因此,在一台路由器上可以运行多个OSPF进程,将不同的进程绑定到不同的VPN实例。
在实际应用中,通过为不同的业务建立各自的OSPF实例,可以实现不同业务的隔离,保证各自的安全性。
在MPLS L3VPN中,如果PE和CE之间运行EBGP,由于BGP使用AS号检测路由环路,为保证路由信息的正确发送,需要为物理位置不同的站点分配不同的AS号。
如果物理分散的CE复用相同的AS号,就应该在PE上配置BGP的AS号替换功能。此功能是BGP的出口策略,在发布路由时有效。
使能了BGP的AS号替换功能后,当PE向指定对等体中的CE发布路由时,如果路由的AS_PATH中有与CE相同的AS号,将被替换成PE的AS号后再发布。
图 18 BGP AS号替换应用示意图
在图 18中,CE 1和CE 2都使用AS号800,在PE 2上使能针对CE 2的AS号替换功能。当CE 1发来的Update信息从PE 2发布给CE 2时,PE 2发现AS_PATH中存在与CE 2相同的AS号800,就把它替换为自己的AS号100,这样,CE 2就可以正确接收CE 1的路由信息。
对于PE使用不同接口连接多个CE的情况,如上图中的CE 2和CE 3,也可以使用BGP的AS号替换功能。
BGP/MPLS VPN以隧道的方式解决了在公网中传送私网数据的问题,但传统的BGP/MPLS VPN架构要求每个VPN实例单独使用一个CE与PE相连,如图 1所示。
随着用户业务的不断细化和安全需求的提高,很多情况下一个私有网络内的用户需要划分成多个VPN,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将加大用户的设备开支和维护成本;而多个VPN共用一台CE,使用同一个路由表项,又无法保证数据的安全性。
使用以太网交换机提供的MCE功能,可以有效解决多VPN网络带来的用户数据安全与网络成本之间的矛盾,它使用CE设备本身的VLAN接口编号与网络内的VPN进行绑定,并为每个VPN创建和维护独立的路由转发表(Multi-VRF)。这样不但能够隔离私网内不同VPN的报文转发路径,而且通过与PE间的配合,也能够将每个VPN的路由正确发布至对端PE,保证VPN报文在公网内的传输。
下面以图 19为例介绍MCE对多个VPN的路由表项进行维护,并与PE交互VPN路由的过程。
图 19 MCE工作原理示意图
如图 19所示,左侧私网内有两个VPN站点:Site1和Site2,分别通过MCE设备接入MPLS骨干网,其中VPN1和VPN2的用户,需要分别与远端Site2内的VPN1用户和Site1内的VPN2用户建立VPN隧道。
通过配置MCE功能,可以在MCE设备上为VPN1和VPN2创建各自的路由转发表,并使用Vlan-interface2接口与VPN1进行绑定、Vlan-interface3与VPN2进行绑定。在接收路由信息时,MCE设备根据接收接口的编号,即可判断该路由信息的来源,并将其维护到对应VPN的路由转发表中。
l 同时,在PE1上也需要将连接MCE的接口(子接口)与VPN进行绑定,绑定的方式与MCE设备一致。MCE与PE1之间通过Trunk链路连接,并允许VLAN2和VLAN3的报文携带VLAN Tag传输,从而使PE1在接收时可以根据报文所属VLAN判别该报文属于哪一个VPN,将报文在指定的隧道内传输。