大概在10多年前,在台北慶城街附近的某間咖啡館,筆者某位後來舉家搬到美國加州灣區的友人,正聚精會神的面對著ThinkPad X61。不學無術的筆者一踏進屋內,就問他到底悶著頭在幹嘛,一看才知道他正在VMware上跑個好幾個Juniper的路由器作業系統JunOS,模擬公司內幾個跨國資料中心的路由連結架構,想也知道又是一堆難搞的路由協定,像BGP OSPF IS-IS IGRP之類的。
時至今日,隨著電腦運算效能的急速成長,與虛擬化技術的快速普及,昔日需要動用大量硬體設備的應用環境,像用來測試驗證IT環境的實驗室,現在只要1台伺服器甚至1台個人電腦,就可輕鬆搞定。在20年前,很多人還需要研究如何讓個人電腦可以雙作業系統開機,自從Windows 8開始內建從Windows Virtual PC演進而來的Hyper-V,這種需求也幾乎銷蹤匿跡了。
硬科技:為何x86的虛擬化這麼難搞(上)
硬科技:為何x86的虛擬化這麼難搞(中)
硬科技:為何x86的虛擬化這麼難搞(下)
硬科技:x86虛擬化由內到外還是繼續難搞(上)
硬科技:x86虛擬化由內到外還是繼續難搞(中)
硬科技:x86虛擬化由內到外還是繼續難搞(下)
對於一般個人電腦和單一實體伺服器來說,虛擬機的網路部份,不外乎每個虛擬機都有自己的虛擬網卡、虛擬MAC和IP位址,對外連網時,這些虛擬機共享所屬硬體的物理網路卡,對內虛擬機之間的通信,則透過Hypervisor的虛擬交換器。但如果科科就以為這就叫做「網路虛擬化」,那就太有違科科們站在時代浪頭的身份了。
就問一個最簡單的問題:資料中心和企業網路,不同實體伺服器之間的虛擬機,也需要互通有無,這時候該怎麼辦?
硬科技:在了解Smart NIC和DPU前科科需要知道的軟體定義網路(上)
硬科技:在了解Smart NIC和DPU前科科需要知道的軟體定義網路(下)
在2012年,由3位軟體定義網路先驅者 (OpenFlow發明者Martin Casado、他的導師Nick McKeown和Scott Shenker) 成立才剛4年都還沒獲利的Nicira公司,靠著NVP (Network Virtualization Platform) 網路虛擬化平台、自有OpenFlow控制器、與功能凌駕於Cisco Nexus 1000V的虛擬交換器OpenvSwitch (OVS),被VMware以12.6億美元的天價所併購。
1年之後,VMware整合自家的vDS (vSphere Distributed Switch) 和買來的NVP,推出無人不知無人不曉的NSX平台,而這也充分彰顯了網路虛擬化的價值:將邊緣交換器「推入」到伺服器內,不同實體伺服器的虛擬機可相互通訊,簡化伺服器和虛擬機的佈署。
那問題又來了,那麼「網路虛擬化」究竟是什麼?說穿了就讓虛擬機之間的連接,透過Tunnel技術實做,將L2乙太網路的框訊 (Frame),包裝在L3協定的封包 (Packet)。
Tunnel可運行於實體物理網路,而實體網路對於虛擬機來說是「透明」的。如此一來,遷移虛擬機時,僅需調整Tunnel,無須修改Mac和IP,更動不到實體網路設備,一切都是軟體層面的自動化作業。此外,如同VLAN,Tunnel都會附帶獨立虛擬網路的標示,不同虛擬網路不能直接通信,形同天然的安全隔離。一個完整的網路虛擬化平台,自然也免不了負載平衡、VPN和防火牆等傳統網路管理需要的必備功能。
目前網路虛擬化領域主要有3種Tunnel技術,分別是VMware的VxLAN (Virtual eXtensible Local Area Network)、微軟的NvGRE (Network virtualization GRE) 和Nicira的STT (Stateless Transport Tunnel),然後還有由IEFT (Internet Engineering Task Force) 所提出、號稱「集前三者之大成」並「考慮到所有應用場景」的GENEVE (Generic Network Virtualization Encapsulation)。筆者直接整理成表,科科們只要大略了解這些東西在幹嘛就可以了。
VxLAN |
NvGRE |
STT |
GENEVE |
|
提出者 |
VMware Cisco Arista |
微軟 |
Nicira |
IETF |
最早問世時間 |
2011年8月 |
2011年9月 |
2012年2月 |
2019年5月 |
實現方式 |
L2 over UDP |
L2 over GRE |
偽裝成一般TCP |
L2 over UDP |
實做方式 |
24位元VNI |
24位元VSI |
64位元ID |
可擴展 |
Hash負載平衡 |
現有網路L2-L4 |
GRE須升級網路 |
現有網路L2-L4 |
現有網路L2-L4 |
應用場景 |
物理或虛擬環境 |
物理或虛擬環境 |
限定虛擬環境 |
物理或虛擬環境 |
優勢 |
更好做負載平衡 |
大家都支援GRE (因為它叫微軟) |
可靠著網路卡做TCP報文分片,降低CPU負擔 |
號稱面面俱到 |
劣勢 |
須升級網路設備 |
部份網路設備不支援GRE Key的負載平衡 |
因為並非真正的TCP協定,無法穿透實體網路 |
軟硬體廠商們不見得會願意買單 |
當然,網路虛擬化和虛擬交換器的額外價值,不外乎可因應虛擬網路的實際連接架構,精簡掉一大堆根本用不到的物理層的功能與協定,如自動計算產生L2連接路徑的STP (Spanning Tree Protocol),並搭配其他廠商的軟體,擴展出原本並未具備的安全防護與網路管理機能。也因此,這些年來,網路虛擬化一直是各路英雄好漢的兵家必爭之地。
回到軟體定義網路 (SDN) 的觀點,網路虛擬化刺激了SDN的蓬勃發展,而SDN替網路虛擬化提供了更強大的自動化手段,兩者相得益彰。請各位科科務必牢記在心,科科。