1.1 BGP/MPLS IP VPN基础
BGP/MPLS IP VPN是一种MPLS L3VPN(Layer 3 Virtual Private Network,三层VPN)。它使用BGP在服务提供商骨干网上发布用户的私网VPN路由,并在服务提供商骨干网上转发VPN报文。这里的IP是指VPN承载的是IP报文。
1.1.1 理解BGP/MPLS IP VPN
BGP/MPLS IP VPN这个名称有些长,且包括了多个部分,许多朋友对这个名称的由来都感到难以理解,下面进行具体剖析。
1. 理解BGP部分
在BGP/MPLS IP VPN这个名称中其实每个部分都代表一些特定的含义,其中特别要针对BGP的理解,为什么不是其他路由协议呢?
“BGP”表示在BGP/MPLS IP VPN方案中使用了BGP协议,其实更准确地说是使用MP-BGP(Multi-Protocol BGP,多协议BGP)在MPLS/IP骨干网上发布用户站点的私网IPv4路由。之所以要用到BGP,原因有以下两点。
一是因为BGP/MPLS IP VPN是一种三层VPN,连接的是不同的IP网络,所以必须要有对应的路由解决方案。而在MPLS IP VPN方案中,骨干网的作用仅是用来建立MPLS VPN隧道,其中的P节点是无需保存客户端的IP路由信息,只是直接根据隧道标签进行转发,最终要实现的是隧道两端逻辑的点对点连接,否则就不是VPN。这样就涉及到一个问题,如何使隧道两端的PE能相互学习到对方所连接的用户网络路由信息呢?我们在《华为VPN学习指南》一书中也介绍了多种三层VPN方案,如IPSec VPN、GRE VPN和DSVPN,其实它们基本上都是通过IP重封装来解决路由信息在隧道中传输的,但是在MPLS网络中无需进行IP重封装,且P节点不保存用户网络路由信息(仅保存骨干网路由信息),所以不能采取IP VPN方案中的方法。
如果PE是直接连接的,可以通过学习直连路由了解,但大多数情况下PE之间不是直接连接的,而P节点又不保存用户IP路由信息,这就给PE间相互学习对端所连接用户网络路由信息带来困难。幸好,BGP协议中的IBGP就可以在非直连的设备间建立对等体(邻居)关系,无需直接连接就可以相互学习对方的路由,而其他像RIP、OSPF、IS-IS动态路由协议的邻居关系建立只能是直连的,所以在BGP/MPLS IP VPN中要使用BGP。
二是MP-BGP不仅可以支持单播IPv4地址族,还支持IPv4组播、VPN-IPv4(简称VPNv4),以及IPv6单/组播、L2VPN和VPLS等地址族,而在BGP/MPLS IP VPN就要用到VPNv4地址族。在VPNv4地址族中,VPN路由有一个特点,它是在标准的IPv4路由前缀的基础上增加了一个用于标识VPN实例的RD(路由区分符),而这正好解决了不同VPN实例中IP地址空间重叠的问题,因为通过加上这样一个代表不同VPN实例的RD后,原来相同的IPv4路由也不同了。
2. 其他部分的理解
至于BGP/MPLS IP VPN其他三部分的理解如下。
■ MPLS:表示要使用MPLS协议建立隧道,利用MPLS标签(而不是依据IP路由表)指导用户数据包在运营商网络中的转发,这是MPLS网络的基本特征。
■ IP:指在VPN隧道中承载的是IP报文,所连接的用户网络也是IP网络。
■ VPN:表示这是一个VPN解决方案,可以实现通过服务运营商网络连接属于同一个VPN、位于不同地理位置的用户站点。
1.1.2 BGP/MPLS IP VPN基本组成
BGP/MPLS IP VPN基于BGP对等体模型,这种模型使得服务提供商和用户可以交换路由,但服务提供商转发用户站点间的数据时却不需要用户的参与,直接根据MPLS标签进行。相比较传统的VPN,BGP/MPLS IP VPN更容易扩展和管理,新增一个站点时,只需要修改提供该站点业务的边缘节点的配置。
BGP/MPLS IP VPN通过MG-BGP支持的VPNv4地址族支持地址空间重叠的多个VPN、组网方式灵活、可扩展性好,并能够方便地支持MPLS TE(参见《华为MPLS技术学习指南》),得到越来越多的应用。
BGP/MPLS IP VPN网络的基本组成如图1-1所示,其中包括三个主要组成部分:CE、PE和P。
图1-1 BGP/MPLS IP VPN的基本体系架构
■ CE(Customer Edge):用户网络边缘设备,有接口直接与服务提供商PE相连。CE可以是路由器或交换机,也可以是一台主机。通常情况下,CE“感知”不到VPN的存在,也不需要支持MPLS。
■ PE(Provider Edge):服务提供商网络的边缘设备,与CE直接相连。在MPLS
网络中,对VPN的所有处理都发生在PE上,所以对PE性能要求较高。
■ P(Provider):服务提供商网络中的骨干设备,不与CE直接相连。P设备只需
要具备基本MPLS转发能力,不维护VPN信息。
PE和P设备仅由服务提供商管理,CE设备仅由用户管理,除非用户把管理权委托给服务提供商。一台PE设备可以接入多台CE设备,一台CE设备也可以连接属于相同或不同服务提供商的多台PE设备。
1.1.3 BGP/MPLS IP VPN的基本概念
在BGP/MPLS IP VPN中涉及一些重要的基本概念,在此先进行介绍,以便理解本节后面将介绍的BGP/MPLS IP VPN基本工作原理。
1. Site
■ Site(站点)通俗地讲就是用户内部网络,可以从下述几个方面理解其含义。
Site是指相互之间具备IP连通性的一组IP系统,而且这种IP连通性是不需通过运营商网络来实现。
如图1-2所示左半边的网络中,“A市X公司总部网络”是一个Site,“B市X公司分支机构网络”是另一个Site。这两个网络内部各自的任何IP设备之间不需要通过运营商网络就可以实现互通,且这两个网络之间并没有不经过运营商就可实现的IP连通性(没有直接连接),所以他们彼此属于独立的Site。
图1-2 Site示意
■ Site的划分依据是设备的拓扑关系,而不是地理位置,尽管在大多数情况下一个Site中的设备地理位置相邻。但地理位置隔离的两组IP系统,如果他们使用专线互联,也是不需要通过运营商网络就可以IP互通,此时这两组IP系统也属于一个Site。
如图1-2右半边网络中,“B市的分支机构网络”不通过运营商网络,而是通过专线直接与“A市的总部网络”相连,则“A市的总部网络”与“B市的分支机构网络”就同属一个Site。
■ 一个Site可以属于多个VPN。
一个VPN(也即VPN网络)可以看成是多个要相互通信的Site的集合,但一个Site可能需要通过相同或不同的运营商连接多个彼此不需要互通的Site,所以一个Site中的设备可以属于多个VPN,也就是一个Site可以属于多个VPN。
如图1-3所示,X公司位于A市的决策部网络(Site A)要同时与位于B市的研发部网络(Site B)和位于C市的财务部网络(Site C)互通,但Site B与Site C之间没有建立VPN连接。这种情况下,可以构建两个VPN(VPN1和VPN2)网络来实现,Site A和Site B的连接属于VPN1,Site A和Site C的连接属于VPN2,这样才能使Site B与Site C之间不能互通。很显然,此时Site A就同时属于VPN1和VPN2了。
图1-3 一个Site属于多个VPN的示列
【经验提示】MPLS VPN隧道是点对点的隧道,如果不是采用Hub and Spoke方案(第2章介绍),一条MPLS隧道只有两个端点,只能连接两个Site。要实现两个以上Site间的相互通信,要么每两个Site间独立配置MPLS VPN,要么采用Hub and Spoke方案。
■ Site通过CE连接到运营商网络,一个Site可以包含多个CE(用于连接多个运营商),但一个CE只属于一个Site。一个CE可以构建多个VPN,如图1-3中的Site A上的CE。
根据Site的情况,建议CE设备选择方案如下:
■ 如果Site只是一台主机,则这台主机就作为CE设备;
■ 如果Site是单个IP子网,则使用三层交换机作为CE设备;
■ 如果Site是多个IP子网,则使用路由器作为CE设备,因为路由器所支持
的路由能力更强。
对于连接到同一运营商网络的多个Site(通常是连接的不同的PE上),通过制定策略,可以将他们划分为不同的集合(set),只有属于相同集合的Site之间才能通过运营商网络互访,这种集合就代表一个VPN。
如图1-3中的Site A、Site B、Site C连接到同一运营商网络,但却划分了两个不同的VPN网络,即VPN1和VPN2。
2. VPN实例
我们以前在学习各种路由配置时,经常会看到一个名为“vpn-instance vpn-instancename”参数,以前只知道它是配置VPN实例(VPN-instance)中的路由,但一般不会用到它。其实VPN实例路由就是应用在BGP/MPLS IP VPN网络中PE上配置到达指定Site的路由。如果不指定这个VPN实例参数,则表示所配置的是公网(骨干网)路由,用于公网数据包转发。
VPN实例也称为VRF(VPN Routing and Forwarding table,VPN路由转发表),是PE为直接相连的Site建立并维护的一个专门实体。PE上的各个VPN实例之间相互独立,并与公网路由转发表相互独立。可以将每个VPN实例看成一台虚拟的路由器,维护独立的地址空间,并有连接到对应Site私网的接口。
【经验提示】同一PE上为所连接的各Site配置的VPN实例名必须唯一,但不同PE上配置的VPN实例名可以相同,也可以不同,但为了便于识别,同一VPN网络中各PE为其所连接的Site配置的VPN实例名通常保持一致。在各PE间通过MP-BGP构建IBGP对等体后,每个VPN实例中的路由将包括同一VPN中各Site中的路由。
PE上存在多个路由转发表,其中包括一个公网(骨干网)路由转发表,以及一个或多个为所连接的各Site配置的VPN路由转发表,如图1-4所示。
图1-4 VPN实例示意
公网路由转发表与VPN实例存在以下不同。
■ 公网路由表包括所有PE和P设备的IPv4路由,由骨干网的路由协议或静态路由产生。公网转发表则是根据路由管理策略,从公网路由表提取出来的转发信息,用于骨干网设备的三层连通。
■ VPN路由表包括属于该VPN实例的Site的所有路由,通过CE与PE之间,以及两端PE之间的VPN路由信息交互获得。而VPN转发表是根据路由管理策略,从对应的VPN路由表提取出来的转发信息。
PE通过将与Site连接的接口与VPN实例关联,来实现该Site与VPN实例的关联。同一PE上不同VPN之间的路由隔离是通过VPN实例实现的。总体来说,VPN、Site、VPN实例之间有如下关系。
■ VPN是多个要相互通信的Site的组合(至少包括两个Site),而一个Site可以属于一个或多个VPN。
■ 每个Site在PE上都会关联一个VPN实例,VPN实例综合了他所关联的Site的VPN成员关系和路由规则,多个Site根据VPN实例的配置规则可组合成一个VPN。
■ VPN实例与VPN没有一一对应的关系,因为一个VPN中连接不同PE的各Site所配置的VPN实例名可以相同,也可以不同,但在同一PE上,VPN实例与Site之间是一一对应关系。
VPN实例中包含了对应的Site的VPN成员关系和路由规则等信息。具体来说,VPN实例中的信息包括:IP路由表、标签转发表、与VPN实例绑定的PE接口以及VPN实例的管理信息。VPN实例的管理信息包括RD(Route Distinguisher,路由标识符)、路由过滤策略、成员接口列表(一个CE可以双线甚至多线连接一个或多个PE,对应有多个CE连接PE的接口)等。
3. 地址空间重叠
VPN是一种私有网络,即是通过私有IP地址段进行路由通信的。不同的VPN独立管理自己所使用的网络地址范围,也称为地址空间(Address Space),也是指VPN隧道两端PE所连接的用户Site内网的IP地址空间。不同VPN的地址空间可能会在一定范围内重叠。
如图1-5所示,vpna中的PE1连接CE1的链路上与vpnb中PE1连接CE3都使用了14.1.1.0/24网段地址,vpna中的PE2连接CE2的链路上与vpnb中PE2连接CE4都使用了34.1.1.0/24网段地址,这就发生了地址空间的重叠。
图1-5 地址空间重叠示例
正常情况下,在同一设备上的两个端口上是不能配置同一个IP网段的地址的,但是通过与不同VPN实例的绑定,就可以这样配置,因为来自CE的普通IPv4路由会在IPv4路由前缀前面加上一特定的RD,具体在本节后面介绍。
以下两种情况允许VPN使用重叠的地址空间。
■ 两个VPN没有共同的Site,如图1-5中vpna与vpnb所连接的Site是完全不一样的。
■ 两个VPN有共同的Site,但此Site中的设备不与两个VPN中使用重叠地址空间的设备互访。
4. RD和VPN-IPv4地址
传统BGP无法正确处理地址空间重叠的VPN的路由,因为传统BGP所采用的是标准的IP地址。假设VPN1和VPN2中CE和PE连接的接口上都使用了10.110.10.0/24网段的地址,并各自发布了一条去往此网段的路由。虽然本端PE通过不同的VPN实例可以区分地址空间重叠的VPN的路由,但是这些路由发往对端PE后,由于不同VPN的路由之间不进行负载分担,因此对端PE将根据BGP选路规则只选择其中一条VPN路由,从而导致去往另一个VPN的路由丢失。
在BGP/MPLS IP VPN中,PE之间使用MP-BGP(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)发布VPN路由,并使用VPN-IPv4(简称VPNv4)地址来解决地址空间重叠的问题。VPN-IPv4地址是在标准IPv4地址前缀前面加上一个特定的标识符,即8字节的RD(Route Distinguisher,路由标识符),如图1-6所示。
图1-6 VPNv4地址结构
因为在原来的IPv4地址前缀前面加了一个唯一的RD,所以RD可用于区分使用相同地址空间的IPv4前缀,使各Site的VPN-IPv4路由前缀全局唯一,解决多个VPN的地址空间重叠问题。但RD不用于P节点的IP数据包转发,仅用于PE区分一个IP数据包所属的VPN实例。例如,一个PE连接了两个Site,他们发布的私网路由的前缀都是10.0.0.0,此时我们必须在PE为来自这两个Site的私网路由加上唯一的RD。由此可见,RD并不是与VPN一一对应的,而是与VPN实例一一对应的。
如图1-6所示,RD一共8个字节,包括两个主要部分:Type(类型)子字段2个字节,后面的Administator和Assigned Number两个子字段一共6个字节,都属于Value(值)部分,即是RD的真正赋值。Type子字段的值(只有0、1、2三个取值)决定了RD的格式和取值。
■ Type为0时,Administrator子字段占2字节(16位),必须包含一个公网AS号;Assigned number子字段占4字节(32位),包含由服务提供商分配的一个数字。即RD的最终格式为:16位自治系统号:32位用户自定义数字,例如:100:1。这是缺省的格式。
■ Type为1时,Administrator子字段占4字节,必须包含一个公网IPv4地址;Assigned number子字段占2字节,包含由服务提供商分配的一个数字。即RD的最终格式为:32位IPv4地址:16位用户自定义数字,例如:172.1.1.1:1。
■ Type为2时,Administrator子字段占4字节,必须包含一个4字节的公网AS号;Assigned number子字段占2字节,包含由服务提供商分配的一个数字。即RD的最终格式为:32位自治系统号:16位用户自定义数字,其中的自治系统号最小值为65536,例如:65536:1。
说明
为了保证VPN-IPv4地址全局唯一,建议不要将Administrator子字段的值设置为私网AS号或私网IPv4地址。但这些AS号和IPv4地址没有强制要求,没有规定一定要与哪个AS或接口关联,只要能使为各Site分配的RD在全局保持唯一即可。
VPN-IPv4地址对客户端设备来说是不可见的,因为VPN-IPv4路由只在公网中可见,只用于公网上路由信息的分发。启用了MP-BGP协议后,PE从CE接收到标准的IPv4路由后会通过添加RD转换为全局唯一的VPN-IPv4路由,然后再在公网上发布。RD的结构使得每个服务供应商可以独立地为每个Site分配唯一的RD,但为了在CE双归属(同时连接两个PE)的情况下保证路由正常,就要必须保证PE上的RD全局唯一。
如图1-7所示,CE以双归属方式接入到PE1和PE2。PE1同时作为BGP RR(Route Reflector,路由反射器)。
图1-7 CE双归属组网示意
在该组网中,PE1作为骨干网边界设备发布一条IPv4前缀为10.1.1.1/8的VPN-IPv4路由给PE3。因为PE1同时又作为RR,会反射PE2发布的IPv4前缀为10.1.1.1/8的VPN-IPv4路由给PE3。如果该VPN在PE1和PE2上的RD一样,则到10.1.1.1/8两条VPN-IPv4路由的地址相同,因此PE3从PE1只收到一条到10.1.1.1/8的VPN-IPv4路由,其路径为:CE→PE1→PE3。当PE1与CE之间的直连链路出现故障时,PE3删除到10.1.1.1/8的VPN-IPv4路由,无法正确转发到该目的地址的VPN数据。而实际上PE3应该还有一条到10.1.1.1/8的路由,其路径为:PE3→PE1→PE2→CE。
此时,如果该VPN在PE1和PE2上所分配的RD不同,则到10.1.1.1/8两条VPN-IPv4路由的地址不同,因此PE3从PE1收到两条到10.1.1.1/8的VPN-IPv4路由。当PE1与CE之间的任何一条链路出现故障时,PE3将删除其中对应的一条,仍保留另一条,使得到10.1.1.1/8的数据能正确转发。
5. VPN Target
BGP/MPLS IP VPN使用BGP扩展团体属性—VPN Target(也称为Route Target,路由目标)来控制VPN路由信息的发布和接收。每个VPN实例可配置一个或多个VPN Target属性。VPN Target属性有以下两类。
■ Export Target(导出目标):本地PE从直连Site学到IPv4路由后,转换为VPN-IPv4路由,并为这些路由设置Export Target属性并发布给其他PE。Export Target属性作为BGP的扩展团体属性随BGP路由信息发布。当从VRF表中导出VPN路由时,要用Export Target对VPN路由进行标记。
■ Import Target(导入目标):PE收到其他PE发布的VPN-IPv4路由时,检查其Export Target属性,仅当该Export Target属性值与某VPN实例中配置的Import Target属性值一致时方可把该VPN-IPv4路由加入到对应的VRF中。
通过VPN Target属性的匹配检查,最终使得VPN所连接的两Site间可相互学习对端的私网VPN-IPv4路由,通过BGP/MPLS IP VPN实现三层互通。
与RD类似,VPN Target也有三种表示形式。
■ 16位AS号:32位用户自定义数字,例如:100:1。
■ 32位IPv4地址:16位用户自定义数字,例如:172.1.1.1:1。
■ 32位AS号:16位用户自定义数字,其中的AS号最小值为65536,例如:65536:1。
根据不同的应用场景,不同VPN的VPN Target在唯一性要求方面不一样,具体在1.1.4节介绍BGP/MPLS IP VPN基本组网结构中再介绍。
在BGP/MPLS IP VPN网络中,通过VPN Target属性来控制VPN路由信息在各Site之间的发布和接收。VPN Export Target和Import Target的设置相互独立,并且都可以设置多个值,能够实现灵活的VPN访问控制,从而实现多种VPN组网方案。例如:某VPN实例的Import Target包含100:1,200:1和300:1,当收到的路由信息的Export Target为100:1、200:1、300:1中的任意值时,都可以被注入到该VPN实例中。通常情况下,为了方便设置,是把同一VPN实例的Export Target和Import Target属性值设置成相同值。
表1-1综合了以上所介绍的Site、VPN实例、RD和VPN Target的主要用途和特性,可以方便大家更好地区分这几个概念。
表1-1 几个基本概念的比较
1.1.4 BGP/MPLS IP VPN典型组网结构
BGP/MPLS IP VPN的应用比较广泛,也对应有多种不同的组网结构,本节介绍一些典型组网结构供大家在实际部署中应用。
1. Intranet VPN
典型情况下,一个VPN中的用户相互之间能够进行流量转发,但VPN中的用户不能与任何本VPN以外的用户通信。这种组网方式的VPN叫做Intranet VPN,其站点通常是属于同一个组织。
对于这种组网,需要为每个VPN分配一个VPN Target,同时作为该VPN的Export Target和Import Target,并且各VPN的VPN Target唯一。
如图1-8所示,PE上为VPN1分配的VPN Target值为100:1,为VPN2分配的VPN Target值为200:1。VPN1的两个Site之间可以互访,VPN2的两个Site之间也可以互访,但VPN1和VPN2的Site之间不能互访。
图1-8 Intranet VPN组网结构示意
2. Extranet VPN
如果一个VPN用户希望访问其他VPN中的某些站点,可以使用Extranet组网方案。对于这种组网,如果某个VPN需要访问共享站点,则该VPN的Export Target必须包含在共享站点的VPN实例的Import Target中,其Import Target必须包含在共享站点VPN实例的Export Target中。在这种情形下,不同VPN实例的VPN Target没有唯一性要求。
如图1-9所示,VPN1的Site3能够同时被VPN1和VPN2访问,因为Site3所连接的PE3的Import Target同时包含了VPN1的PE1中的Export Target 100:1和VPN2的PE2中的Export Target 200:1。
图1-9 Extranet组网示意
另外,Site3也可同时访问VPN1的Site1和VPN2的Site2,因为Site3所连接的PE3的Export Target同时包含了VPN1的PE1中的Import Target 100:1和VPN2的PE2中的Import Target 200:1。但VPN1的Site1和VPN2的Site1之间不能够互访,因为他们中一端的Export Target与另一端的Import Target没有任何包含关系。
这样一来,PE3能够同时接收PE1和PE2发布的VPN-IPv4路由;PE3发布的VPN-IPv4路由也能够同时被PE1和PE2接收。但PE3不把从PE1接收的VPN-IPv4路由发布给PE2,也不把从PE2接收的VPN-IPv4路由发布给PE1。
3. Hub and Spoke
如果希望在VPN中设置中心访问控制设备,其他用户的互访都通过中心访问控制设备进行,可以使用Hub and Spoke组网方案。其中,中心访问控制设备所在站点称为Hub站点,其他用户站点称为Spoke站点。Hub站点侧接入VPN骨干网的设备叫Hub-CE,Spoke站点侧接入VPN骨干网的设备叫Spoke-CE。VPN骨干网侧接入Hub站点的设备叫Hub-PE,接入Spoke站点的设备叫Spoke-PE。Spoke站点需要把路由发布给Hub站点,再通过Hub站点发布给其他Spoke站点。Spoke站点之间不直接发布路由。Hub站点对Spoke站点之间的通讯进行集中控制。
对于这种组网情况,需要在各PE上设置两个VPN Target,一个表示“Hub”,另一个表示“Spoke”,如图1-10所示。各PE上的VPN实例的VPN Target设置规则如下。
■ Spoke-PE:Export Target为“Spoke”(代表VPN路由从Spoke发出),Import Target为“Hub”(代表VPN路由来自Hub)。任意Spoke-PE的Import Route Target属性不与其他Spoke-PE的Export Route Target属性相同,其目的是使任意两个Spoke-PE之间不直接发布VPN路由,不让这些Spoke间直接互通。
■ Hub-PE:Hub-PE上需要使用两个接口或子接口分别属于不同的VPN实例,一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为“Spoke”(代表VPN路由来自Spoke);另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为“Hub”(代表VPN路由从Hub发出)。
图1-10 Hub&Spoke组网结构示意
在Hub-and-Spoke组网方案中,最终实现的结果如下。
■ Hub-PE能够接收所有Spoke-PE发布的VPN-IPv4路由。
■ Hub-PE发布的VPN-IPv4路由能够为所有Spoke-PE接收。
■ Hub-PE将从Spoke-PE学到的路由发布给Hub-CE,并将从Hub-CE学到的路由发布给所有Spoke-PE。因此,Spoke站点之间可以通过Hub站点互访。
■ 任意Spoke-PE的Import Target属性不与其他Spoke-PE的Export Target属性相同。因此,任意两个Spoke-PE之间不直接发布VPN-IPv4路由,Spoke站点之间不能直接互访。
下面以图1-10中的Site1向Site2发布路由为例介绍Spoke站点之间的路由发布过程(步骤对应图中的序号)。
(1)Site1中的Spoke-CE 1将站点内的私网路由发布给Spoke-PE 1。
(2)Spoke-PE 1将该路由转变为VPN-IPv4路由后通过MP-BGP发布给Hub-PE。
(3)Hub-PE将该路由学习到VPN 1-in的路由表中,并将其转变为普通IPv4路由发布给Hub-CE。
(4)Hub-CE通过VPN实例路由再将该路由返回发布给Hub-PE,Hub-PE将其学习到VPN 1-out的路由表中。
(5)Hub-PE将VPN 1-out路由表中的私网路由转变为VPN-IPv4路由,通过MP-BGP发布给Spoke-PE 2。
(6)Spoke-PE 2将VPN-IPv4路由转变为普通IPv4路由发布到站点2。
4. 本地VPN互访
因业务需求,连接在同一个PE设备上不同VPN的Site站点需要进行数据互通时,可以采用本地VPN互访组网方案。目前只有S系列交换机部分机型支持,具体参见产品手册说明。
通过VPN Target属性来控制VPN路由信息在各Site之间的发布和接收,可以实现本地VPN互访需求。一般来说,每个VPN都各自规划了属于自己的VPN Target属性。如图1-11的组网为例进行介绍。
图1-11 本地VPN互访组网结构示意
假设最初图1-11中VPNA的Import Target和Export Target都为100:1,VPNB的Import Target和Export Target都为200:1。如果需要VPNA用户和VPNB用户实现互通,可以配置本地VPN互访,将VPNA的Import Target属性增加一条200:1,VPNB的Import Target属性增加一条100:1。这样,VPNA和VPNB的用户就可以互相访问了。
1.1.5 BGP/MPLS IP VPN主要应用
BGP/MPLS IP VPN的应用比较广泛,而且针对不同的应用需求和应用场景,又出现许多不同的组网方式。但总体来说,BGP/MPLS IP VPN的应用主要体现在:基本的BGP/MPLS IP VPN的组网应用、Hub and Spoke组网应用,以及VPN与Internet互联这三个方面。本节会做具体介绍。
1. 基本的BGP/MPLS IP VPN应用
基本的BGP/MPLS IP VPN组网应用主要用于企业用户通过运营商的MPLS/IP骨干网连接两个IP Site。如图1-12所示为此类应用的典型组网,Site1和Site2代表处于不同城市的用户网络,这两个网络可能属于同一家企业的不同分公司,或者属于两个城市各自政府部门的网络。
图1-12 BGP/MPLS IP VPN的组网应用示例
如果这样两个网络之间要相互通信,必须满足安全性的要求,不仅Site的网络需要与其他网络隔离,还要报文在运营商骨干网传输过程中也要对骨干网透明。此时可以使用BGP/MPLS IP VPN技术达到这个目的,即通过MP-BGP协议分发私网标签使报文到达对端PE时能进入正确的VPN Site,使用MPLS协议通过隧道在骨干网上透传报文,实现数据传输的安全性。
为了实现Site1和Site2相互通信,则需要依靠运营商骨干网的PE和P设备为Site1和Site2传输路由和报文。CE是用户网络边缘设备,PE是运营商网络的边缘设备,P是运营商网络中的骨干设备,多数情况下的CE与PE组成CE双归属网络,以保证网络的高可用性。有时运营商还会在网络中部署路由反射器(RR)实现对VPNv4/v6路由进行反射。
在BGP/MPLS IP VPN组网中需要进行如下部署。
■ CE与PE之间需要实现路由信息交换,所以要根据实际需要部署静态路由、RIP、OSPF、IS-IS或BGP路由协议。
■ 所有PE分别与RR1和RR2建立MP-BGP邻居关系,然后RR1和RR2指定所有PE作为客户机,RR1和RR2互为备份,以保证网络的可靠性。
■ PE和P上配置IGP和MPLS,建立MPLS隧道用于流量转发。
调整链路间的IGP cost值,实现如下目的。
■ 确保CE1通往CE2的链路形成主备关系,即确保网络中一条链路故障,网络可以及时调整切换到其他链路。
■ 调整RR与骨干网相连的链路的cost值,确保RR只用于路由反射,不进行流量转发。
■ 对于实时性要求较高的业务,可以配置VPN FRR功能,提高网络可靠性。
2. Hub and Spoke的组网应用
对于银行等金融企业,为了有效地保证了金融数据的安全,可以通过部署Hub and Spoke组网,使所有支行间必须通过总行才能进行数据交换,从而使支行间的数据传输得到有效监控。
在Hub and Spoke组网中,总行的中心访问控制设备所在站点称为Hub站点,其他支行的站点称为Spoke站点。Hub站点侧接入VPN骨干网的设备叫Hub-CE;Spoke站点侧接入VPN骨干网的设备叫Spoke-CE。VPN骨干网侧接入Hub站点的设备叫Hub-PE,接入Spoke站点的设备叫Spoke-PE。
Spoke站点需要把路由发布给Hub站点,再通过Hub站点发布给其他Spoke站点。Spoke站点之间不直接发布路由。Hub站点对Spoke站点之间的通讯进行集中控制。
Hub and Spoke有以下组网方案。
■ Hub-CE与Hub-PE、Spoke-PE与Spoke-CE使用EBGP,即使用BGP路由。
■ Hub-CE与Hub-PE、Spoke-PE与Spoke-CE使用IGP。这时原IGP可以是多种方式了,如静态路由、RIP路由、OSPF路由和IS-IS路由。
■ Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP。
下面详细介绍这几种组网方案。
(1)Hub-CE与Hub-PE间,Spoke-PE与Spoke-CE间使用EBGP
如图1-13所示的Hub-and-Spoke中,来自Spoke-CE的路由需要在Hub-CE和Hub-PE上往返一圈再发给其他Spoke-PE。如果Hub-PE与Hub-CE之间使用EBGP,Hub-PE会对该路由进行AS-Loop(AS环路)检查,这样缺省情况下Hub-PE发现返回的路由已包含自己的AS号会直接丢弃的。所以,如果Hub-PE与Hub-CE之间使用EBGP,为了实现Hub-and-Spoke,在Hub-PE上必须手工配置允许返回的路由信息中包括本地AS编号。
图1-13 Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP组网示意
(2)Hub-CE与Hub-PE间,Spoke-PE与Spoke-CE间使用IGP
如图1-14所示,由于所有的PE-CE之间都使用IGP交换路由信息,IGP路由不携带AS_PATH属性,所以BGP VPNv4路由的AS_PATH都为空,这时就不会出现返回路由被丢弃的现象。其他与Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP组网方案一样。
图1-14 Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用IGP组网示意
(3)Hub-CE与Hub-PE间使用EBGP、Spoke-PE与Spoke-CE间使用IGP
如图1-15所示,与图1-13组网的实现类似,Hub-PE从Hub-CE接收来自Spoke-CE的路由的AS_PATH属性已包含该Hub-PE所在AS的编号。因此,也必须在Hub-PE上手工配置允许返回的路由信息中包括本地AS编号。
3. VPN与Internet互联
一般VPN内的用户只能相互通信,不能与Internet用户通信,也不能接入Internet。但VPN的各个Site可能有访问Internet的需要。为了实现VPN与Internet互联,需要满足以下条件。
■ 要访问Internet的用户设备必须有到达Internet目的地址的路由。
■ 有从Internet返回的路由。
图1-15 Hub-CE与Hub-PE使用EBGP、Spoke-PE与Spoke-CE使用IGP组网示意
■ 与非VPN用户与Internet互联方式相同,必须采用一定的安全机制(如使用防火墙)。
要达到同时访问Internet的目的,有以下三种实现方法。
■ 在骨干网边缘设备PE侧实现。该PE负责区别两种不同的数据流,并分别转发至VPN及Internet。同时,在VPN与Internet两个域之间提供防火墙功能。
■ 在Internet网关侧实现。这里的Internet网关是指接入Internet的运营商设备,必须具备VPN路由管理功能。例如:Internet网关可以是不接入任何VPN用户的PE设备。
■ 在用户侧实现。此时,由私网边缘设备CE区分两种不同的数据流,并分别引到两个不同的域:一个通过PE边缘设备接入VPN,一个通过不包含在VPN内的ISP设备接入Internet。同时,CE设备提供防火墙功能。
下面分别简单介绍这三种实现方法的基本部署。
(1)在骨干网边缘设备PE侧实现
在PE侧实现VPN与Internet互联的典型网络结构如图1-16所示,一般采用静态缺省路由的方式来实现,具体如下。
图1-16 PE侧实现VPN与Internet互联的典型网络结构
■ PE设备向CE发出一条去往Internet的缺省路由。
■ 在VPN实例路由表添加一条缺省路由,指向Internet网关。
■ 要实现从Internet返回的路由,则需要将去往CE接口的静态路由加入到公网路由表中,并发布到Internet。这可以通过在PE公网路由表中添加一条静态路由来实现,其目的地址为VPN用户地址,出接口为PE上连接CE侧的接口;并将该路由通过IGP发布到Internet上。
(2)在Internet网关侧实现
在Internet网关侧实现与Internet互联的典型网络结构如图1-17所示。具体方法是在Internet网关上为每个VPN配置一个VPN实例,且使用单独的接口接入Internet,在该接口上关联VPN实例,就像接入CE设备一样。
图1-17 在Internet网关侧实现与Internet互联的典型网络结构
(3)在用户侧实现
在用户侧实现与Internet互联有两种方法。
■ 直接将CE接入Internet,如图1-18所示。
直接将CE接入Internet又可分为两种方式:
● 将用户其中一个站点(如中心站点)接入Internet。在中心站点的CE上配置到Internet的缺省路由;然后使用VPN骨干网将该缺省路由发布给其他站点。只在中心站点部署防火墙。这种方式中,除中心站点的用户外,其他用户访问Internet的流量都经过VPN骨干网。典型的应用是在Hub-and-Spoke组网中,将Hub站点接入Internet。
● 将每个用户站点单独接入Internet,即每个站点的CE都配置到Internet的缺省路由。在每个站点都部署防火墙进行安全保护。所有用户访问Internet的流量都不需要经过VPN骨干网。
图1-18 直接将CE接入Internet实现VPN与Internet互联的典型网络结构
■ 使用单独的接口或子接口接入PE,由PE将CE上的路由注入到公网路由表中,并发布到Internet,并将缺省路由或者Internet路由发布到CE。此时这个接口不属于任何VPN,即不关联任何VPN实例。也就是说,该用户既以VPN用户的角色接入PE,又以普通非VPN用户接入PE,如图1-19所示。
图1-19 使用独立接口接入PE实现VPN与Internet互联的典型网络结构
建议在接入Internet的VPN骨干网设备与接入CE的PE之间建立隧道,使Internet路由通过隧道传递,P节点不接收Internet路由。
以上介绍的三种与Internet互联的方法中,采用在PE侧实现时的优点是,与VPN接入使用同一个接口,节约接口资源,并且不同的VPN可以共享一个公网IP地址;缺点是在PE上实现复杂,且存在安全隐患:PE设备可能受到Internet的DoS(Denial of Service)攻击,来自Internet的恶意的大流量攻击会使得PE-CE链路饱和,从而使得正常的VPN数据包无法传输。
采用在Internet网关处实现时的优点是,比在PE侧实现安全性高,但Internet网关要创建多个VPN实例,负担重。且Internet网关要使用多个接口接入Internet,每个接口占用一个公网IP地址,每个VPN使用一个接口和一个公网IP地址。
采用在用户侧实现时的优点是,实现方法简单,公网和私网路由隔离,安全可靠;缺点是需使用单独的接口,占用接口资源,并且每个VPN都需要单独使用一个公网IP地址。表1-2是以上三种方法的综合比较。
表1-2 三种VPN与Internet互联的实现方法比较