书接上文,说完了VLAN,该VPN隆重登场了。相比于VLAN这种简单的局域网技术,VPN可是要复杂的多。VPN并不是一种协议或者标准,而是一类技术的统称,或者更准确地说,是用户跨越广域网进行私有网络互联这样一种业务形态。
早期租用DDN专线或者通过ISDN拨号来实现私有网络互联是可行的,缺点是站点间的带宽是固定的,所用电路资源是独占的,不够灵活而且费用昂贵。之后,出现了ATM/FR/IP这类基于分组的广域网技术,克服了由资源独占引发的问题,VPN的概念也不过由于ATM/FR因为种种原因最后败给了IP,因此现在的VPN技术基本上都是基于IP的VPN了(MPLS也算是IP的一个变种)。当然,有实力的话可以自建光纤进行互联,不过可能也只有像Google这种级别的公司才玩得转。这个小节我们主要来讲一讲基于IP的VPN,如不特殊说明,以下简称IP VPN为VPN。
这段历史告诉我们,VPN并不是网络大牛们一时兴起,心血来潮搞的技术花花肠子,而是因为这是实打实的需求,是巨大的市场,是兵家必争的利益至高点。这十几年来,VPN为运营商带来了不可估量的效益,几乎靠一己之力支撑着运营商的Internet对公业务。如果说VLAN是网络虚拟化的鼻祖,那么VPN则真正把网络虚拟化作为一个领域推广开来了。
VPN的技术可谓五花八门,从这个大类技术的层面上来说,谈不到什么具体的帧格式或者包头,倒是以前面提到的“封装—寻址”通用技术模型来分析VPN技术非常的贴切,因为想要跨越公网进行私网的组网,只能通过封装后再寻址的方法。图中,CE是客户网络的边缘设备,PE是运营商网络的边缘设备,P是核心网中的转发设备。Payload可能是二层的帧也可能使三层的数据包,这取决于客户的目标数据业务。Tag就比较灵活了,QinQ中是S-Tag,PBB中是B-MAC + B-VLAN,MPLS VPN中是MPLS Label,IP GRE中是PE的公网IP地址。从这张图抽象出来VPN的实现非常好理解,客户通过CE把Payload送出来,PE根据特定的逻辑确定对端PE的Tag,进行封装后传给P网络,P网络根据Tag寻址到对端PE,该PE解封装后将Payload原封不动地转发给相关的CE。
在上述VPN技术模型中,又可以分为基于标签和基于隧道的技术。通常来说,基于标签的技术中,标签只负责打标记而不负责转发,如QinQ。而基于隧道的技术中,转发需要依赖于PE封装的数据帧头/数据包头,如MPLS类VPN、GRE等等。其中MPLS类技术较为特殊,是带有标签技术外在特征的隧道技术,而GRE这类需要PE封装完整的外层包头的技术,一般称为Overlay隧道。
讲完了技术模型,概括地讲讲一些具有代表性的VPN技术。之所以说概括性,是因为作者对一些技术里面的细节确实也不是很清楚,VPN的技术种类实在是太繁杂了,光是给VPN类技术的分类方法就能说出七八种来,而每种VPN技术的细节都能够讲上个几十页的。这里,我们将按照应用形式来对常见的VPN技术进行梳理和对比,分为站点对站点VPN以及远程接入VPN。
a)站点对站点
按照业务场景细分,站点对站点VPN还可以再具体分为内联网(Intranet) VPN和外联网(Extranet)VPN。两者的区别主要在前者联的是同一家公司的总部与分支,后者是指公司与外部利益相关群体。不过两者的区别主要是在与一些访问策略和地址规划上的不同,从网络虚拟化的角度来说区别并不大。故此这里的讲解将对两者等同看待,首先简单地介绍一下接下来会涉及到的VPN技术。
QinQ(802.1ad,PB,Provider Bridge),VLAN堆栈技术。通过将公网VLAN 标签(S-Tag)封装在用户私网VLAN 标签(C-Tag)前,使报文带着两层VLAN Tag穿越公网。PE负责增加/剥除4个字节的S-Tag,P要求支持802.1q中的Trunk概念,根据用户的MAC地址和S-VLAN在公网进行2层自学习转发。
PBB(802.1ah,Provider Backbone Bridge),运营商骨干网桥接技术,属于一种MACinMAC的隧道技术,可配合QinQ使用。通过定义双层MAC地址的帧结构,PE将B-MAC和B-Tag封装在CE数据帧前,以P要求支持Trunk概念,根据B-MAC和B-VLAN在公网进行2层自学习转发。
配一张VLAN,QinQ和PBB的格式图吧,一目了然。
GRE(RFC 2784),通用路由封装技术,是最早的Overlay隧道技术。PE封装外层网络层协议包头,P为外层网络层协议路由器,根据外层网络目的地址进行转发。
IPSec(RFC 4031)VPN,支持加密的VPN技术。IPsec VPN工作在IPsec隧道模式,PE封装外层IP包头,P可为任意IP路由器,根据外层公网目的IP进行转发。
BGP/MPLS IP VPN(RFC 2547),使用BGP协议在公网上发布VPN路由,使用MPLS在公网上转发VPN报文。PE负责BGP交互,封装MPLS头,P为支持MPLS的路由器,根据MPLS Label进行转发。
VPWS和VPLS,都属于MPLS VPN(RFC 4664)。VPWS由有Martini VPWS和Kompella VPWS两种实现方式,VPWS由有VPLS-LDP和VPLS-BGP两种实现方式。IPLS,是一种特殊的VPLS,只支持对IP分组的传输,CE为主机或者路由器。
这么多技术,看起来都眼花,技术细节作者确实讲不动了。下面直接从网络虚拟化的设计原则出发来对这些技术进行对比。
首先是连通性,包括两个方面,一是技技术所支持的数据业务类型,二是所支持的流量类型。多说无益,直接上表格。
VPN技术 |
数据业务 |
流量类型 |
QinQ |
二层数据帧 |
点对点、点对多点 |
PBB |
二层数据帧 |
点对点、点对多点 |
GRE |
三层数据包 |
点对点、支持伪广播 |
IPsec VPN |
三层数据包 |
点对点 |
BGP/MPLS IP VPN |
三层数据包 |
点对点、支持伪广播 |
VPWS |
二层数据帧 |
点对点、伪广播(有待确认) |
VPLS |
二层数据帧 |
点对点、支持伪广播 |
IPLS |
二层数据帧,但是网络层只支持IP分组 |
点对点,支持伪广播 |
其次是安全性。从控制平面和转发平面的安全性考虑。
VPN技术 |
控制平面 |
数据平面 |
QinQ |
无控制平面 |
依赖于公网配置 |
PBB |
无控制平面 |
依赖于公网配置 |
GRE |
无控制平面 |
不依赖于公网配置,提供Key值进行认证,但不提供加密 |
IPsec VPN |
无控制平面 |
不依赖于公网配置,提供认证和加密 |
BGP/MPLS IP VPN |
路由发布认证,VRF关联,路由RT等机制 |
依赖于公网配置 |
VPWS |
Martini方式无控制平面,Kompella方式同BGP/MPLS IP VPN |
依赖于公网配置 |
VPLS |
VPLS-LDP方式无控制平面,VPLS-BGP方式同BGP/MPLS IP VPN |
依赖于公网配置 |
IPLS |
无控制平面(有待确认) |
依赖于公网配置 |
然后是服务质量。广域网传输是VPN技术转发速率的瓶颈,这里主要考虑上述VPN技术在广域网的传输保障机制。
VPN技术 |
公网QoS |
QinQ |
S-Tag中的PRI |
PBB |
B-Tag中的PRI |
GRE |
无 |
IPsec VPN |
专用广域网加速设备 |
BGP/MPLS IP VPN |
MPLS/RSVP TE |
VPWS |
MPLS/RSVP TE |
VPLS |
MPLS/RSVP TE |
IPLS |
MPLS/RSVP TE |
至于可扩展性,VPN支持的虚网数理论上限取决于标识虚网的字段位数,实际上受限于PE、P设备上资源的共享和分配。
VPN技术 |
虚网数量 |
其他因素 |
QinQ |
S-VLAN标签, 4K*4K |
CE为交换机时,P需要学习用户MAC地址,限制了用户规模 |
PBB |
I-SID标签,16million |
P根据运营商MAC转发,不需要学习用户MAC地址,比QinQ用户规模大 |
GRE |
一般为特定用户内部自用 |
无明确因素 |
IPsec VPN |
一般为特定用户内部自用 |
无明确因素 |
BGP/MPLS IP VPN |
理论上无上限 |
PE数量,VPN接口数量,路由条目数量,LSP数量等等 |
VPWS |
同上 |
同上 |
VPLS |
同上 |
同上 |
IPLS |
同上 |
同上 |
运维自动化方面,有控制平面的VPN技术相对好一些,没有控制平面的VPN技术一般为纯静态配置,自动化较差,见表2。
b)远程接入
远程接入这种VPN应用形式,常见的业务场景有两种。一种是移动办公人员接入企业私网,另一种是用户希望绕开默认的网络出口以获得完整的访问权限,俗称“翻墙”。大众所熟知的VPN基本上等同于“翻墙”,其实这只是VPN技术的冰山一角。
相比于站点对站点VPN,远程接入VPN的个人用户数量多而且位置分散。因此,远程接入VPN的技术基本上都是基于隧道的——具有标签性质的技术,大多依赖有限的标签资源和公网的配置,而基于Overlay方式的隧道技术对于公网来说是完全透明的,具备较强的可扩展性和灵活性。
根据隧道承载的数据业务,远程接入VPN可分为二层隧道,三层隧道和高层隧道。其中二层隧道以L2TP(RFC 2661),三层隧道以IPsec(RFC 4031)VPN,高层隧道以SSL(RFC 6101) VPN为目前的主流技术。下面仍然从网络虚拟化的几个基本设计原则出发,对三种技术进行对比。
首先是连通性。老规矩,直接上表格。其中Overlay隧道的特征决定了这些技术基本上都是点对点的,L2TP Multihop(RFC 2661)扩展了L2TP点对多点的能力。
VPN技术 |
数据业务 |
流量类型 |
L2TP |
二层数据帧 |
点对点,点对多点 |
IPsec VPN |
三层数据包 |
点对点 |
SSL VPN |
主要为web应用 |
点对点 |
其次是安全性。远程接入的VPN技术需要直接或者间接地提供对身份验证和数据加密的支持,这同样是出于业务场景的需求。
VPN技术 |
身份验证 |
数据加密 |
L2TP |
依赖于PPP实现PAP/CHAP |
依赖于PPP/IPsec实现 |
IPsec VPN |
AH/ESP |
ESP,通过IKE协商加密算法 |
SSL VPN |
SSL握手协议 |
通过SSL握手可协商加密算法 |
然后是服务质量。远程接入VPN,在公网上传输质量的保证只能靠专用设备加速。另外,L2TP扩展了在VPN接入服务器本地网络上的QoS机制(RFC 2661)。
VPN技术 |
公网QoS |
本地QoS |
L2TP |
无 |
区分服务AVP |
IPsec VPN |
专用广域网加速设备 |
无直接支持 |
SSL VPN |
专用广域网加速设备 |
无直接支持 |
相比于站点对站点VPN技术的复杂性,远程接入VPN技术一般都为Overlay方式,属于公司内部的业务,运营商是不可见的。其可扩展性主要取决于VPN接入服务器的性能,接运维需要通过手工配置,但不需要经常变动。
c)其它VPN分类
除了根据应用形式来对VPN技术进行分类,还有很多其它的分类方式,下面列出其中常见的几种分类,以便读者对VPN技术有更多维度的认识。
分类方式 |
类型名称 |
举例/说明 |
|
VPN数据业务类型 |
L3VPN |
为用户提供数据包的传输服务,GRE、IPsec、BGP/MPLS VPN等等 |
|
|
L2VPN |
VPWS |
点对点链路仿真 |
|
|
VPLS |
LAN仿真 |
|
|
IPLS |
LAN仿真,但是只用于承载IP数据包 |
VPN隧道协议层次 |
二层 |
在数据链路层封装用户数据,如L2TP、MPLS VPN、QinQ/PBB等 |
|
|
三层 |
在网络层封装用户数据,如GRE、IPsec VPN等 |
|
|
高层 |
在高层封装用户数据,如传输层的SSL VPN |
|
VPN设备归属权 |
基于PE |
由运营商提供并管理,由运营商端设备完成封装/解封装 |
|
|
基于CE |
技术、运维面向用户,由用户端设备完成封装/解封装 |
|
VPN承建运维主体 |
自建 |
同前面基于CE |
|
|
运营商实施 |
基于PE |
同前面基于PE |
|
|
基于CE |
VPN设备位于用户一侧,运营商负责运维 |
作者简介:
张晨,北京邮电大学未来网络理论与应用实验室研究生
主要研究方向:SDN、虚拟化、数据中心
个人博客:http://sdnv.xyz/
个人邮箱:zhangchen9211@126.com