目 录
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
为保证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。
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) Site1发出一个目的地址为1.1.1.2的IP报文,由CE1将报文发送至PE1。
(2) PE1根据报文到达的接口及目的地址查找VPN-instance表项,匹配后将报文转发出去,同时打上内层和外层两个标签。
(3) MPLS网络利用报文的外层标签,将报文传送到PE2(报文在到达PE2前一跳时已经被剥离外层标签,仅含内层标签)。
(4) PE2根据内层标签和目的地址查找VPN-instance表项,确定报文的出接口,将报文转发至CE2。
(5) CE2根据正常的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上为VPN1分配的VPN Target值为100:1,为VPN2分配的VPN Target值为200:1。VPN1的两个Site之间可以互访,VPN2的两个Site之间也可以互访,但VPN1和VPN2的Site之间不能互访。
如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可以使用Hub&Spoke组网方案,从而实现中心设备对两端设备之间的互访进行监控和过滤等功能。
对于这种组网,需要设置两个VPN Target,一个表示“Hub”,另一个表示“Spoke”。
各Site在PE上的VPN实例的VPN Target设置规则为:
l 连接Spoke站点(Site1和Site2)的Spoke-PE:Export Target为“Spoke”,Import Target为“Hub”;
l 连接Hub站点(Site3)的Hub-PE:Hub-PE上需要使用两个接口或子接口,一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为“Spoke”;另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为“Hub”。

图5 Hub&Spoke组网方案
在图5中,Spoke站点之间的通信通过Hub站点进行(图中箭头所示为Site2的路由向Site1的发布过程):
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中,VPN1的Site3能够被VPN1和VPN2访问:
l PE3能够接受PE1和PE2发布的VPN-IPv4路由;
l PE3发布的VPN-IPv4路由能够为PE1和PE2接受;
l 基于以上两点,VPN1的Site1和Site3之间能够互访,VPN2的Site2和VPN1的Site3之间能够互访。
PE3不把从PE1接收的VPN-IPv4路由发布给PE2,也不把从PE2接收的VPN-IPv4路由发布给PE1(IBGP邻居学来的条目是不会再发送给别的IBGP邻居),因此,VPN1的Site1和VPN2的Site2之间不能互访。
在基本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的路由信息交换相同。
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路由。如图7所示。

二级运营商是MPLS L3VPN服务提供商时,其PE也需要运行MPLS,与CE之间运行IGP和LDP。PE-3和PE-4之间通过MP-IBGP会话交换二级运营商的VPN路由。如图8所示。

图8 二级运营商是MPLS L3VPN服务提供商
实际组网应用中,某用户一个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路由信息。

图9 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扩展方式。

图10 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路由。

图11 PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由组网图
为提高可扩展性,可以在每个AS中指定一个路由反射器RR(Route Reflector),由RR保存所有VPN-IPv4路由,与AS的PE交换VPN-IPv4路由信息。两个AS的RR之间建立跨域VPNv4连接,通告VPN-IPv4路由。如图12所示。

图12 采用RR的跨域VPN OptionC方式组网图
从CE进入PE的报文的VPN属性由入接口绑定的VPN决定,这就决定了由同一入接口经PE转发的所有CE设备都必须属于同一VPN。但在实际组网中,一个CE设备可能需要经过一个物理接口访问多个VPN,这可以通过设置不同的逻辑接口来实现,但会增加额外的配置负担,使用起来也有局限性。
多角色主机,是通过在PE上配置策略路由,使来自CE的报文可以访问多个VPN。
为使其它VPN的信息能够从PE发送到CE,需要在其它VPN上配置静态路由,并指定连接CE的接口作为下一跳。
& 说明:
配置多角色主机时需要注意:应保证与PE路由器关联的所有IP地址都是唯一的,以实现多角色主机特性。
在实际应用中,应合理进行地址规划,使每个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的基本结构

图13 HoVPN的基本结构
在图13中,直接连结用户的设备称为下层PE(Underlayer PE)或用户侧PE(User-end PE),简写为UPE;连结UPE并位于网络内部的设备称为上层PE(Superstratum PE)或运营商侧PE(Sevice Provider-end PE),简写为SPE。
多个UPE与SPE构成分层式PE,共同完成传统上一个PE的功能。
& 说明:
HoVPN把PE的功能分层实现,因此,这种解决方案有时也被称为分层PE(Hiberarchy of PE,HoPE)。
SPE与UPE的分工是:
l UPE主要完成用户接入功能。UPE维护其直接相连的VPN Site的路由,但不维护VPN中其它远程Site的路由或仅维护它们的聚合路由;UPE为其直接相连的Site的路由分配内层标签,并通过MP-BGP随VPN路由发布此标签给SPE;
l SPE主要完成VPN路由的管理和发布。SPE维护其通过UPE连接的VPN所有路由,包括本地和远程Site的路由,但SPE不发布远程Site的路由给UPE,只发布VPN实例的缺省路由(或聚合路由)给UPE,并携带标签。
由于分工的不同,对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无限扩展与延伸。

图14 分层式PE的嵌套
图14是一个三层的分层式PE,称中间的PE为MPE(Middle-level PE)。SPE和MPE之间,以及MPE