1
计算机网络技术理论与实践
1.8.3.2 7.3.2 对等VPN工作原理

7.3.2 对等VPN工作原理

从实现原理角度看,对等VPN和重叠VPN有显著区别。如图7-7所示,对等VPN的模型是CE-to-PE,也就是要在CE(用户边缘路由器)与PE(服务提供商边缘路由器)之间交换专用网路由信息,然后由PE将这些专用网路由在公共网中传播,使专用网路由会自动地传播到其他的PE上,再由PE将专用网路由发送给属于同一个VPN的所有其他CE。

img186

图7-7 对等VPN模型

对等VPN会使专用网路由信息泄露到公网上,所以必须通过路由协议确保同一个VPN的CE路由器上只能有本VPN的路由。通常CE与PE之间运行的路由协议,与公共网上运行的路由协议是不同的。典型的对等VPN技术是MPLS VPN,下面以MPLS VPN为例简单介绍对等VPN的工作原理。

MPLS技术提供了标记交换业务,这种基于标记的交换可以提供类似于帧中继、ATM的网络安全性。相对于传统的VPN技术来说,MPLS VPN可以实现底层标记的自动分配,在业务的提供上比传统的VPN技术更廉价,更快速。此外,MPLS VPN还可以充分地利用MPLS技术的一些先进特性,如MPLS流量工程能力、服务质量保证等,使得MPLS VPN可以向客户提供不同服务质量等级的服务。

Internet上的MPLS网络可以为客户提供所需的安全机制,以及组网能力,VPN底层连接的建立、管理和维护主要由ISP负责,客户使用VPN的维护和管理方式都比传统的VPN技术简单,也降低了企业在人员和设备维护上的投资和成本。

根据Internet边界设备PE是否参与客户的路由,在Internet上建立基于MPLS的VPN时有两种方法:

·第三层的解决方案,通常称作MPLS Layer3VPN或BGP/MPLS VPN。

·第二层的解决方案,通常称作MPLS Layer2VPN。

BGP/MPLS VPN是一种基于路由方式的MPLS VPN解决方案,IETF RFC2547中对这种VPN技术进行了描述。

BGP/MPLS VPN采用对等模型,如图7-8所示,其中的路由设备可以分为3类:

(1)骨干路由器(Pl、P2);

(2)服务提供商边缘路由器(PE1、PE2、PE3);

(3)用户边缘路由器(CE1、CE2、CE3、CE4、CE5、CE6)。

用户边缘路由器、服务提供商边缘路由器和骨干路由器之间互相配合完成VPN的功能,各种路由器的功能如下:

img187

图7-8 BGP/MPLS VPN网络结构

·用户边缘路由器(CE),可以为用户提供VPN访问服务。它与直接相连的PE路由器建立邻居关系,可以向邻居PE路由器通告本地VPN路由,并从PE路由器学习远端VPN的路由。

·服务提供商边缘路由器(PE),采用RIP v2、OSPF或EBGP等路由协议与CE路由器交换路由信息,并将获得的VPN路由通过MPLS网络发布给同一VPN中的其他CE。PE路由器能维持多张转发表,一个VPN对应一张转发表,来隔离VPN间的路由信息。

·骨干路由器(P),是提供商MPLS网络中与CE路由器不相连的路由器。骨干路由器通过MPLS转发带有二层标签的业务分组,只维护PE路由器的路由,不会维护VPN中的路由信息。

BGP/MPLS VPN中包括了控制流和数据流,控制流用于分发VPN路由,建立标签交换路径;数据流用于转发用户数据包。

在图7-8中三条虚线是三条VPN隧道。骨干路由器仅通过交换标签转发数据包,并不对数据包的IP报头进行分析。在同一个VPN中,不同的站点之间在骨干网络中采用隧道的方式传递数据。要为不同的用户提供相互独立的VPN,关键在于PE路由器中能够实现VPN路由分离。

服务提供商的边缘路由器上可以配置多个虚拟路由器,即路由转发表(VPN Routing Forwarding,VRF),这样可以分出所需要的若干个逻辑节点,保证每一条BGP/MPLS VPN有一个独立的隧道。在本例中PE1针对三个不同的VPN,分出三个虚拟路由器。

在BGP/MPLS VPN中通过VPN路由转发表和MPLS中的标签交换路径(LSP)来实现VPN间的路由隔离和信息隔离,在PE路由器上,存在有多个VRF表,这些VRF表和PE路由器上的一个或多个接口相对应,用于存放这些接口所属VPN的路由信息。通常情况下,VRF表中只包含一个VPN的路由信息。对于每一个VRF表,都具有路由区分符(Route Distinguisher,RD)和路由目标(Route Target,RT)两大属性。

VPN中客户可以选择私有IP地址作为主机地址,这样不同的VPN中可能会出现相同的地址,产生地址重叠现像。这会导致BGP无法区分来自不同VPN的重叠路由,从而导致某些站点不可达。为了解决这个问题,引入了RD标识符。每个VPN具有全局唯一的8个字节长度的RD,通过将RD作为IPv4的地址前缀,可以使多个VPN中不唯一的IPv4地址转化为唯一的VPN-IPv4地址。VPN-IPv4地址对客户端设备是不可见的,只用于骨干网络上的路由信息分发。

RT分为Import RT和Export RT,分别用于路由信息的导入和导出策略。当从VRF表中导出VPN路由时,要用Export RT对VPN路由进行标记;在往VRF表中导入VPN路由时,如果路由所带的RT标记与VRF表中某一个Import RT相同,则将其导入到VRF表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有VPN的路由,从而节省了PE路由器的资源,提高了网络扩展性。

在MPLS网络中传输的VPN数据采用外标签(隧道标签)和内标签(VPN标签)两层标签栈结构。外标签转发表由PE路由器和P路由器通过标签分发协议或资源预留协议建立,用于VPN分组外层标签的交换。内标签转发表是由PE路由器之间通过运行MP-IBGP协议建立,该协议跨越骨干网的P路由器分发VPN标签。在PE路由器上除VRF表外,还有MPLS路由表,该表用于存放VPN标签和接口的对应关系。

在BGP/MPLS VPN中,数据转发过程如下:

(1)当CE路由器通过某个接口将一个VPN分组发给入口PE路由器后,PE路由器查找该接口对应的VRF表,从VRF表中得到VPN标签、初始外层标签以及到出口PE路由器的输出接口。

(2)当VPN分组被打上两层标签之后,就通过输出接口发送到某个P路由器。

(3)骨干网中P路由器根据外层标签逐跳转发VPN分组,当到达最后一个P路由器时会去除外层标签,将只含有VPN标签的分组转发给出口PE路由器。

(4)出口PE路由器根据VPN标签,查找MPLS路由表得到对应的输出接口,去除掉数据包的VPN标签,通过该接口将VPN分组发送给正确的CE路由器,由CE路由器查找其路由表,完成在内部网络中的分组转发。

在MPLS VPN中采用了两层标签栈结构,P路由器不参与VPN路由信息的交互,客户路由器是通过CE和PE路由器之间、PE路由器之间的路由交互得到某个VPN网络的整个拓扑信息。

CE路由器与PE路由器之间通过采用静态/默认路由,或采用RIP v2、OSPF等动态路由协议进行路由信息的交互。PE路由器从某个接口接收到来自CE路由器的路由信息后,将该路由导入对应的VRF表,并为其分配一个VPN标签,用以识别接收路由信息的接口,因此从同一个接口接收到的路由信息将被分配同样的VPN标签,使PE路由器能将收到的VPN分组转发到此VPN所连的接口。

PE路由器与PE路由器之间通过采用MP-IBGP进行VPN路由信息的交互。PE路由器通过维持IBGP网状连接或使用路由反射器来确保VPN路由信息被分发给所有的PE路由器。当PE路由器分发路由信息时,将携带路由所在VRF表的RD,即将路由的IPv4地址转化为VPN-IPv4地址。其他PE路由器收到路由信息时,将查看该路由的RT,如果RT和某个VRF表中某项Import RT相同,就将该路由存入对应的VRF表。