書接上文,說完了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技術有更多維度的認識。