一、IPv4 L3VPN简介
注意:在IPv4 L3VPN场景中,BGP VPNv4路由交叉到私网后不支持迭代隧道功能,仅支持在私网路由表中迭代下一跳功能,
定义
虚拟专用网络VPN(Virtual Private Network)是指在公用网络上建立专用网络的技术。其之所以被称为虚拟网,主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台。
目的
随着网络规模的扩大,企业内部的互联需求越来越迫切。最初,网络服务商是以租赁专线(Leased Line)的方式为企业提供服务,这种方式的存在较多缺点:建设时间长、价格昂贵、难于管理、安全性差。
VPN的出现解决了上述问题。VPN具有以下两个基本特征:
专用(Private):对于VPN用户,使用VPN与使用传统专网没有区别。VPN与底层承载网络之间保持资源独立,即VPN资源不被网络中非该VPN的用户所使用;且VPN能够提供足够的安全保证,确保VPN内部信息不受外部侵扰。
虚拟(Virtual):VPN用户内部的通信是通过公共网络进行的,而这个公共网络同时也可以被其他非VPN用户使用,VPN用户获得的只是一个逻辑意义上的专网。这个公共网络称为VPN骨干网(VPN Backbone)。
受益
使用VPN技术可以带来以下受益:
降低了企业互联的成本,提高了企业互联的灵活度。
各个私有网络可以使用重叠的地址空间,一方面解决了IP地址不足的问题,另一方面也方便用户自主规划网络。
不同VPN之间数据转发可以相互隔离,互不影响,提升了安全性。
二、IPv4 L3VPN基本概念
Site
在介绍VPN时经常会提到“Site”,Site(站点)的含义可以从下述几个方面理解:
Site是指相互之间具备IP连通性的一组IP系统,并且这组IP系统的IP连通性不需通过服务提供商网络实现。
如图2-1所示,左半边的网络中,A市X公司总部网络是一个Site;B市X公司分支机构网络是另一个Site。Site内部IP设备的互通不需要通过服务提供商网络。
图2-1 Site示意图

Site的划分是根据设备的拓扑关系,而不是地理位置,尽管在大多数情况下一个Site中的设备地理位置相邻。地理位置隔离的两组IP系统,如果它们使用专线互联,不需要通过服务提供商网络就可以互通,那么这两组IP系统也组成一个Site。
如图2-1所示,右半边网络,如果B市的分支机构网络不通过服务提供商网络,而是通过专线直接与A市的总部相连,那么A市的总部网络与B市的分支机构网络构成了一个Site。
一个Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个VPN。
如图2-2所示,X公司位于A市的决策部网络(Site A)允许与位于B市的研发部网络(Site B)和位于C市的财务部网络(Site C)互通。但是不允许Site B与Site C互通。这种情况下,可以构建两个VPN(VPN1和VPN2),Site A和Site B属于VPN1,Site A和Site C属于VPN2。这样,Site A就属于多个VPN。
图2-2 一个Site属于多个VPN

Site通过CE连接到服务提供商网络,一个Site可以包含多个CE,但一个CE只属于一个Site。根据Site的情况,建议CE设备选择方案如下:
如果Site只是一台主机,则这台主机就作为CE设备;
如果Site是单个子网,则使用交换机作为CE设备;
如果Site是多个子网,则使用性能好些的设备作为CE设备。
对于多个连接到同一服务提供商网络的Site,通过制定策略,可以将它们划分为不同的集合(set),只有属于相同集合的Site之间才能通过服务提供商网络互访,这种集合就是VPN。
地址空间重叠
VPN是一种私有网络,不同的VPN独立管理自己的地址范围,也称为地址空间(Address Space)。不同VPN的地址空间可能会在一定范围内重合,例如,VPN1和VPN2都使用10.110.10.0/24网段地址,这就发生了地址空间的重叠(Address Spaces Overlapping)。
注意:
以下两种情况允许VPN使用重叠的地址空间:
两个VPN没有共同的Site;
两个VPN有共同的Site,但此Site中的设备不与两个VPN中使用重叠地址空间的设备互访。
VPN实例
CE(Customer Edge)叫做用户边缘设备,PE(Provider Edge)叫做运营商边缘设备。CE设备属于用户设备,无需感知到公网和其他的私网的存在,因此CE只需要将本地私网路由传输给PE即可。服务提供商的PE设备一般会与多个不同私网的CE相连,所以PE设备会收到来自不同私网的路由。由于各个私网可能会使用重叠的地址空间,导致这些私网路由会携带相同的目的地址。如果PE只维护一张路由转发表,将使这些地址重叠的路由相互覆盖造成路由丢失。因此为了避免这种情况发生,VPN技术中产生了VPN实例(VPN-instance)这个概念。
VPN实例也称为VPN路由转发表VRF(VPN Routing and Forwarding table)。PE上存在多个路由转发表,包括一个公网路由转发表,以及一个或多个VPN路由转发表。也就是说,PE上存在多个实例,包括一个公网实例和一个或多个VPN实例,如图2-3所示。各个VPN实例维护各自VPN的路由,公网实例维护公网路由,这样防止了路由因目的地址重叠而在PE上丢失。
图2-3 VPN实例示意图

公网路由转发表与VPN路由转发表存在以下不同:
公网路由表包括所有骨干网设备的IPv4路由,由骨干网的路由协议或静态路由产生。
VPN路由表包括属于该VPN实例的所有Site的路由,通过CE与PE之间或者两个PE之间的VPN路由信息交互获得。
公网转发表是根据路由管理策略从公网路由表提取出来的最小转发信息;而VPN转发表是根据路由管理策略从对应的VPN路由表提取出来的最小转发信息。
可以看出,PE上的各VPN实例之间相互独立,并与公网路由转发表相互独立。
可以将每个VPN实例看作一台虚拟的设备:维护独立的地址空间并有连接到该设备的接口。
在相关标准中,VPN实例被称为per-site forwarding table,顾名思义,VPN实例与Site对应。更准确的描述是:每条CE与PE的连接对应一个VPN实例(但不是一一对应关系),实现这种对应关系的方法是将VPN实例和PE上与CE直接相连的接口关联(或称为绑定),这需要手工设置。
VPN实例通过路由标识符RD(Route Distinguisher)实现地址空间独立,通过VPN Target属性实现直连Site及远端Site的VPN成员关系和路由规则控制。
VPN、Site和VPN实例的关系
VPN、Site、VPN实例之间的关系如下:
VPN是多个Site的组合。一个Site可以属于多个VPN。
每一个Site在PE上都关联一个VPN实例。VPN实例综合了它所关联的Site的VPN成员关系和路由规则。多个Site根据VPN实例的规则组合成一个VPN。
RD和VPN-IPv4地址
传统BGP无法正确处理地址空间重叠的VPN的路由。假设VPN1和VPN2都使用了10.110.10.0/24网段的地址,并各自发布了一条去往此网段的路由。虽然本端PE通过不同的VPN实例可以区分地址空间重叠的VPN的路由,但是这些路由发往对端PE后,由于不同VPN的路由之间不进行负载分担,因此对端PE将根据BGP选路规则只选择其中一条VPN路由,从而导致去往另一个VPN的路由丢失。
产生上述问题的原因是BGP无法区分不同VPN中相同的IP地址前缀,为解决这一问题,IPv4 L3VPN使用了VPN-IPv4地址族。
VPN-IPv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀,如图2-4所示。
图2-4 VPN-IPv4地址结构

其中RD用于区分使用相同地址空间的IPv4前缀。RD的结构使得每个服务供应商可以独立地分配RD,但为了在CE双归属的情况下保证路由正常,必须保证RD全局唯一。增加了RD的IPv4地址称为VPN-IPv4地址。PE从CE接收到IPv4路由后,转换为全局唯一的VPN-IPv4路由,并在公网上发布。
VPN Target
VPN使用64位的BGP扩展团体属性-VPN Target(也称为Route Target)来控制VPN路由信息的发布。
每个VPN实例关联一个或多个VPN Target属性。有两类VPN Target属性:
Export Target(ERT):本地PE从直接相连Site学到IPv4路由后,转换为VPN-IPv4路由,并为这些路由设置Export Target属性。Export Target属性作为BGP的扩展团体属性随路由发布。
Import Target(IRT):PE收到其他PE发布的VPN-IPv4路由时,检查其Export Target属性。当此属性与PE上某个VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例的路由表。
也就是说,VPN Target属性定义了一条VPN路由可以为哪些Site所接收,以及PE可以接收哪些Site发送来的路由。
当收到直连CE传过来的路由时,PE将该路由与一个或多个Export Target属性关联。Export Target属性将和VPN-IPv4路由一起由BGP发布给其他相关的PE。当这些相关的PE收到该VPN-IPv4路由时,将其Export Target属性与本设备所有的VPN实例的Import Target属性值比较。如果相等,就将该路由注入到该VPN路由表。
使用VPN Target而不直接用RD作为BGP扩展团体属性的原因在于:
一条VPN-IPv4路由只能有一个RD,但可以关联多个VPN Target属性;BGP如果携带多个扩展团体属性,可以提高网络的灵活性和可扩展性。
VPN Target用于控制同一PE上不同VPN之间的路由发布。即,同一PE上的不同VPN之间可以设置匹配的VPN Target来实现路由的互相引入。
在同一PE上,不同VPN具有不同的RD,而BGP携带的扩展团体属性是有限的,如果直接用RD作为BGP扩展团体属性来实现路由的互相引入,势必影响网络的扩展。
在VPN网络中,通过VPN Target属性来控制VPN路由信息在各Site之间的发布和接收。VPN Export Target和Import Target的设置相互独立,并且都可以设置多个值,能够实现灵活的VPN访问控制,从而实现多种VPN组网方案。