聊聊VPC

VPC全稱是Virtual Private Cloud,翻譯成中文是虛擬私有云。但是在有些場合也被翻譯成私有網絡或者專有網絡等。這裏其實就有些讓人迷惑,VPC究竟是指雲還是網絡?答案是,VPC即是一種雲,也是一種網絡模式,不過應該從服務和技術的角度分別來看。

一、虛擬私有云

首先從服務的角度來看,VPC指的是一種雲(Cloud),這與它的字面意思相符。對於基礎架構服務(IaaS),雲就是指資源池。你或許聽過公有云(Public Cloud)、私有云(Private Cloud)、混合雲(Hybrid Cloud)。不過,VPC不屬於這三種雲中任一種。這是一種運行在公有云上,將一部分公有云資源爲某個用戶隔離出來,給這個用戶私有使用的資源的集合。VPC是這麼一種雲,它由公有云管理,運行在公共資源上,但是保證每個用戶之間的資源是隔離,用戶在使用的時候不受其他用戶的影響,感覺像是在使用自己的私有云一樣。

從這種意義上看,VPC不是網絡,我們可以對比VPC和它一個字面上相近的概念:VPN(Virtual Private Network)。VPN在公共的網絡資源上虛擬隔離出一個個用戶網絡,例如IPsec VPN可以是在互聯網上構建連接用戶私有網絡的隧道,MPLS VPN更是直接在運營商的PE設備上劃分隔離的VRF給不同的用戶。從提供服務的角度來,說如果VPC指的只是網絡的話,那它跟VPN的概念是重複的。所以,從公有云提供所提供的服務來說,VPC應該理解成,向用戶提供的隔離資源的集合。

VPC最早是由AWS在2009年提出[1],不過VPC的一些組成元素在其提出之前就已經存在。VPC只是將這些元素以私有云的視角重新包裝了一下。在VPC之後,雲主機只能使用VPC內部的對應的元素。從這個角度看,VPC更像是公有云服務商以打包的形式提供服務。

用戶可以在公有云上創建一個或者多個VPC,每個部門一個VPC。對於需要連通的部門創建VPC連接。

同時,用戶也可以通過VPN將自己內部的數據中心與公有云上的VPC連接,構成混合雲。不論哪種用例,VPC都以更加直觀形象讓用戶來設計如何在公有云上存放自己的數據。

二、VPC硬件租用模式

VPC硬件租用模式(Hardware Tenancy)本身也是公有云提供的一種服務模式。VPC的硬件租用模式有兩種,一種是共享(shared),一種是專屬(dedicated)。共享是指VPC中的虛擬機運行在共享的硬件資源上,不同VPC中的虛擬機通過VPC進行隔離。專屬是指VPC中的虛擬機運行在專屬的硬件資源上,不同VPC中的虛擬機在物理上就是隔離的,同時VPC幫助實現網絡上的隔離。專屬模式相當於用戶直接向公有云服務商租用物理主機。專屬模式適合那些對於數據安全比較敏感的用戶,不過這些物理主機還是由公有云服務商管理。

不論是共享模式還是專屬模式,VPC都運行在公有云資源上,由公有云服務商管理。

三、專有網絡

從技術角度來看,VPC是用戶專屬的一個二層網絡。

  1. 經典網絡VS VPC

AWS的網絡產品,在VPC之前稱爲EC2-Classic。去年的一個熱點文章《關於阿里雲的經典網絡問題》說的就是這兩種網絡模式:Classic和VPC。他們之間最核心的區別是:經典網絡提供的是多用戶共享的網絡,而VPC提供的是用戶專屬的網絡。

這裏的網絡就是指二層網絡,經典網絡模型本身有很多問題,其中最大的問題就是安全問題。除非加了特定的防火牆規則去攔截,二層網絡內的所有設備默認是可以通信的。這就好比大家都擠在一個房間裏,彼此的隱私很難保障一樣。稍有不慎,雲主機就可能被同網絡的其他用戶惡意攻擊。而VPC能夠爲每個用戶一個專屬獨立的二層網絡。這樣相當於給每個用戶分了個房間,用戶的隱私更容易得到保障。就算有惡意攻擊,一般也要走到網關或者VPN設備,在這些集中的設備上,網絡流量更可控。

由於每個用戶都有專屬的二層網絡,那說明VPC模式下的可用二層網絡的數量是遠超經典模式的。雖然各家都沒有公佈自己的實現細節,但是這裏有點類似VXLAN和VLAN的關係。VXLAN可以有1600萬個二層網絡,VLAN只有4000多個二層網絡。公有云與私有云的區別在於用戶數量巨大。如果採用VLAN,每個用戶一個二層網絡,那最多隻能帶4000多個用戶,公有云許多用戶還是隻有1-2個雲主機那種,那必然不能滿足公有云的需求,所以在早期的經典網絡模式下,不得不讓多個用戶擠在一個網絡裏面。而如果採用VXLAN之類的技術,則可以保證在一個region裏面爲1600萬個用戶每人分到一個二層網絡。

因爲VPC是一個用戶專屬的網絡,用戶可以任意定義VPC內雲主機的IP地址。二層隔離了,IP地址想怎麼玩就怎麼玩。而在經典網絡模式下,大家擠在一個二層網絡裏面,IP地址首先要保證不要重合,這對用戶和服務商來說都不是一件心情愉快的事情。

2. VPC的網絡overlay

從AWS公佈的資料[2] 看,VPC的數據封裝與VXLAN這類網絡Overlay技術也很像。從下圖可以看出,桔色的VPC中,10.0.0.2發往10.0.0.3的網絡數據,最終被封裝成主機之間的通信報文。

原始的二層幀,被VPC標籤封裝,之後封裝在另一個IP報文裏面。這與VXLAN的封裝方式可以說是一模一樣。不過需要澄清的是,AWS在2010年就已經開始應用VPC,而VXLAN標準是2014年[3]才終稿。AWS的VPC或許和VXLAN不一樣,但是按照VXLAN理解VPC的overlay會更容易些。

VPC使用網絡Overlay之後,可以構建一個L3之上的L2。這樣一個VPC內的虛機,可以任意的在數據中心分佈。實際中雲主機肯定不是任意分佈的,會有一些主機的調度優化算法,但是至少,網絡不會成爲限制雲主機部署的因素。舉個反例,如果使用VLAN,虛機必須部署在支持相應VLAN的設備上,哪怕這個設備已經接近飽和,而其他的設備卻是空置的。如下圖,因爲左邊的機架不支持相應的網絡,對應的雲主機只能往右邊的機架塞,直到塞滿。而同時,左邊的機架負載還不到50%。

Overlay使得VPC不再受網絡硬件的限制,VPC內的雲主機可以部署在整個機房。

四、VPC與SDN

AWS在2017年提出,VPC是構建在軟件(代碼)之上,VPC就是SDN[4]。我們前面說過,VPC是一個二層網絡,是一個構建在L3之上的L2 Overlay網絡。這裏說VPC就是SDN,實際上是指,VPC受SDN所控制。AWS的VPC依靠一個叫Mapping Service的組件工作。當虛機之間要通信的時候,請求先發到Mapping Service,再由它找到目的虛機對應的信息(例如目的虛機所在的主機IP地址),Mapping Service用對應的信息,封裝成Overlay數據(類似於封裝成VXLAN數據),再進行傳輸。

如果是一個三層通信,傳統上是要發到網關,由網關轉發到目的虛機。而對於AWS的VPC,Mapping Service同樣也會完成三層通信的信息查找,數據封裝。這樣連路由器都省了。

這裏的Mapping Service,與SDN控制器的作用可以說是一樣的。SDN控制器掌握了所有的網絡信息,當需要進行二層,三層通信時,SDN控制器會根據網絡數據包下發OpenFlow流表,使得虛機之間直接通信。

如果說Mapping Service是SDN控制器,那麼更具體點,它還是一個分佈式SDN控制器,因爲每個主機上都有一個Mapping Service的緩存。通過這種分佈式,可以實現高速運算處理。

1. VPC相關的網絡資源

VPC雖然指的是專有網絡,但是跟網絡配套的資源有很多,這些網絡資源都是以VPC爲單位來劃分。也就是說,定義在一個VPC內的網絡資源,只能被這個VPC內的虛機所使用。這在前面講服務的時候提到過。這些資源[5]可以概括如下:

Security Group, Subnet, Network ACL, Routing Table, Router,這些都是老生常談了。以VPC爲單位來劃分這些資源,可以更好的突出私有的感覺。但是實際上這些資源大多是虛擬的,每個用戶佔有一份也不會增加公有云運營商的成本。

需要注意的是,VPC儘管是一個二層網絡,但是AWS仍然是通過路由器連接一個VPC下的兩個Subnet。

2. VPC邊緣設備

前面講服務的時候說過,VPC從服務的角度來看是虛擬私有云,表示的公有云運營商提供給用戶的隔離資源的集合。它相當於是漂浮在公有云上的孤島。真正讓VPC變得強大的是它各式各樣的連接技術。AWS提供了一個Edge設備(Blackfoot Edge Device),VPC通過這個Edge設備可以:

與別的VPC相連

與互聯網相連

與用戶的私有云建立VPN連接

與AWS的其他服務建立連接

這纔是公有云服務商在構建VPC網絡時,真正的競爭力所在。有了這樣的Edge設備,VPC不再是孤島,而是有了連接其他陸地的橋樑。這裏的Edge設備,可以看成是VNF,AWS需要用戶在VPC內部手動配置路由來引流到這個Edge設備。

五、總結

不論是對用戶還是公有云服務商,VPC都是一個更好的選擇。對於用戶來說,首先可以任意定義VPC內的IP地址。其次VPC像是一個容器,裝載着所有的雲主機,同時又與其他的VPC隔離。第三,用戶還可以用各種連接服務(VPN,NAT等)將VPC與現有的網絡連接起來。這樣對用戶來說,既保證了網絡隔離,又能提供按需的網絡連通。對公有云服務商來說,VPC實際上就是SDN在公有云的應用。軟件可控,Overlay使得服務商的硬件利用率提高,對硬件廠商的依賴程度降低。在這個基礎上,公有云服務商還能夠提供更好的網絡服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章