www.chinacloud.cn/upload/2014-07/14070408156867.pdf
與服務器虛擬化類似,網絡虛擬化旨在在一個共享的物理網絡資源之上創建多個虛擬網絡(VN),同時每個虛擬網絡可以獨立地部署以及管理[4]。網絡虛擬化概念及相關技術的引入使得網絡結構的動態化和多元化成為可能,被認為是解決現有網絡體系僵化問題,構建下一代互聯網最好的方案[1-3]。然而網絡虛擬化技術體系龐大,涉及領域眾多,易於讓人產生認識上的困惑,因此對於網絡虛擬化的合理定義就顯得尤為重要。作為虛擬化技術的分支,網絡虛擬化本質上還是一種資源共享技術。有鑒於此,網絡虛擬化應當泛指任何用於抽象物理網絡資源的技術,這些技術使物理網絡資源功能池化,達到資源任意的分割或者合並的目的,用以構建滿足上層服務需求的虛
擬網絡。
網絡虛擬化的一般結構如圖1 所示。在這種架構之下,用戶可以根據需要定制自己的網絡,用戶的需求會被一個虛擬網絡層接納,虛擬網絡層完成需求到底層資源的映射,再將網絡以服務的形式返回給用戶。這種模式很好地屏蔽了底層的硬件細節,簡化了網絡管理的復雜性,提升了網絡服務的層次和質量,同時也提高網絡資源的利用率。
網絡虛擬化過程中主要誕生過 4 類過渡技術:虛擬局域網絡(VLAN)、虛擬專用網絡(VPN)、主動可編程網絡(APN)、覆蓋網絡。網絡虛擬化的研究現在主要集 中於 3 個領域:雲計算應用、平台化實現、軟件定義網絡。認為網絡虛擬化的未來在 性能保障、可靠性、易用性和完備性等方面需要加強,為此未來的網絡虛擬化需要 優化自身服務結構,並向無線網絡、光網絡等領域推廣,此外還需要提供更加友好 的可編程接口(API)以及網絡功能。
http://qing.blog.sina.com.cn/tj/88ca09aa33000833.html
引子
接觸網絡虛擬化純屬偶然。作為研究院微博五毛小分隊的成員,撰出一條微博是每天的任務。那天無意中抓取了一條新聞:Xsigo公司推出了業界第一個數據中心網絡全虛擬化解決方案。巧的是Xsigo公司的方案是基於Infiniband技術的,而我最近的項目使我對Infiniband略懂,所以就重點關注了一下。這一關注不要緊,才發現里面水很深。不管是傳統IT豪強還是網絡巨人都對這一領域虎視眈眈,謀篇定局,更有無數的創業者們在此展開深耕。 抱着對技術要略懂的心態,我入水一探究竟。這篇博文算是對我這次涉水的總結,網絡虛擬化發展到現在牽涉的技術非常多,每種技術都可以單獨寫一篇文章來介紹,限於我的精力和知識水平只能給大家做個整體的簡單介紹,不足之處還請各位批評指正。如果讀者對某種技術感興趣可以搜索相關資料做更詳細的了解。
什么是網絡虛擬化
首先我們需要明確一個問題,什么是網絡虛擬化,網絡虛擬化簡單來講是指把邏輯網絡從底層的物理網絡分離開來。這個概念產生的比較久了,VLAN,VPN, VPLS等 都可以歸為網絡虛擬化的技術。近年來,雲計算的浪潮席卷IT界。幾乎所有的IT基礎構架都在朝着雲的方向發展。在雲計算的發展中,虛擬化技術一直是重要的推動因素。作為基礎構架,服務器和存儲的虛擬化已經發展的有聲有色,而同作為基礎構架的網絡卻還是一直沿用老的套路。在這種環境下,網絡確實期待一次變革,使之更加符合雲計算和互聯網發展的需求。雲計算的大環境下,網絡虛擬化的定義沒有變,但是其包含的內容卻大大增加了。
雲計算環境下的網絡虛擬化需要解決端到端的問題,筆者將其歸納為三個部分:
(一)第一部分是服務器內部。隨着越來越多的服務器被虛擬化,網絡已經延伸到Hypervisor內部,網絡通信的端已經從以前的服務器變成了運行在服務器中的虛擬機,數據包從虛擬機的虛擬網卡流出,通過Hypervisor內部的虛擬交換機,在經過服務器的物理網卡流出到上聯交換機。在整個過程中,虛擬交換機,網卡的I/O問題以及虛擬機的網絡接入都是研究的重點。
(二)第二部分是服務器到網絡的連接。10Gb以太網 和Infiniband等技術的發展使一根連接線上承載的帶寬越來越高。為了簡化,通過一種連接技術聚合互聯網絡和存儲網絡成為了一個趨勢。
(三)第三部分是網絡交換,需要將物理網絡和邏輯網絡有效的分離,滿足雲計算多租戶,按需服務的特性,同時具有高度的擴展性。
下面我就圍繞這三個方面來講述網絡虛擬化中的一些主要技術和標准。
服務器內部
I/O虛擬化
多個虛擬機共享服務器中的物理網卡,需要一種機制既能保證I/O的效率,又要保證多個虛擬機對用物理網卡共享使用。I/O虛擬化的出現就是為了解決這類問題。I/O虛擬化包括了從CPU到設備的一攬子解決方案。
從CPU的角度看,要解決虛擬機訪問物理網卡等I/O設備的性能問題,能做的就是直接支持虛擬機內存到物理網卡的DMA操作。Intel的 VT-d技術及 AMD 的IOMMU技術通過DMARemapping 機制來解決這個問題。DMARemapping機制主要解決了兩個問題,一方面為每個VM創建了一個DMA保護域並實現了安全的隔離,另一方面提供一種機制是將虛擬機的GuestPhysical Address翻譯為物理機的HostPhysical Address。
從虛擬機對網卡等設備訪問角度看,傳統虛擬化的方案是虛擬機通過Hypervisor來共享的訪問一個物理網卡,Hypervisor需要處理多虛擬機對設備的並發訪問和隔離等。這樣Hypervisor容易行成一個性能瓶頸。為了提高性能,一種 做法是虛擬機繞過Hypervisor直接操作物理網卡,這種做法通常稱作PCIpass through,VMware,Xen和KVM都支持這種技術。但這種做法的問題是虛擬機通常需要獨占一個PCI插槽,不是一個完整的解決方案,成本較高且擴展性不足。 另一種做法是設備如網卡直接對上層操作系統或Hypervisor提供虛擬化的功能,一個以太網卡可以對上層軟件提供多個獨立的虛擬的PCIe設備並提供虛擬通道來實現並發的訪問。這種方法也是業界主流的做法和發展方向,目前已經形成了標准,主要包括SR-IOV(SingleRoot IO Virtualization)和MR-IOV(Multi-RootIO Virtualization)。這方面的技術在網上已有很好的文章來做介紹,推薦想進一步了解的同學讀一讀:
虛擬接入
在傳統的服務器虛擬化方案中,從虛擬機的虛擬網卡發出的數據包在經過服務器的物理網卡傳送到外部網絡的上聯交換機后,虛擬機的標識信息被屏蔽掉了,上聯交換機只能感知從某個服務器的物理網卡流出的所有流量而無法感知服務器內某個虛擬機的流量,這樣就不能從傳統網絡設備層面來保證QoS和安全隔離。虛擬接入要解決的問題是要把虛擬機的網絡流量納入傳統網絡交換設備的管理之中,需要對虛擬機的流量做標識。在解決虛擬接入的問題時,思科和惠普分別提出了自己的解決方案。思科的是VN-Tag, 惠普的方案是VEPA(VirtualEthernet Port Aggregator)。為了制定下一代網絡接入的話語權,思科和惠普這兩個巨頭在各自的方案上都毫不讓步,紛紛將自己的方案提交為標准,分別為802.1Qbh和802.1Qbg。關於虛擬接入也有一篇很好的文章來介紹,想深入了解的可以看看:http://t.cn/hGWnOQ
網絡連接
網絡連接技術一直都在追求更高的帶寬中發展。比如Infiniband和10Gb以太網。在傳統的企業級數據中心IT構架中,服務器到存儲網絡和互聯網絡的連接是異構和分開的。存儲網絡用光纖,互聯網用以太網線(ISCSI雖然能夠在IP層上跑SCSI,但是性能與光纖比還是差的很遠)。數據中心連接技術的發展趨勢是用一種連接線將數據中心存儲網絡和互聯網絡聚合起來,使服務器可以靈活的配置網絡端口,簡化IT部署。以太網上的FCOE技術和Infiniband技術本身都使這種趨勢成為可能。
Infiniband
Infiniband 技術產生於上個世紀末,是由Compaq、惠普、IBM、戴爾、英特爾、微軟和Sun七家公司共同研究發展的高速先進的I/O標准。最初的命名為SystemI/O,1999年10月,正式改名為InfiniBand。InfiniBand是一種長纜線的連接方式,具有高速、低延遲的傳輸特性。基於InfiniBand技術的網卡的單端口帶寬可達20Gbps,最初主要用在高性能計算系統中,近年來隨着設備成本的下降,Infiniband也逐漸被用到企業數據中心。為了發揮Infiniband設備的性能,需要一整套的軟件棧來驅動和使用,這其中最著名的就是OFED(OpenFabrics Enterprise Distribution) ,它基於Infiniband設備實現了RDMA(remote direct memoryaccess). RDMA的最主要的特點就是零拷貝和旁路操作系統,數據直接在設備和應用程序內存之間傳遞,這種傳遞不需要CPU的干預和上下文切換。OFED還實現了一系列的其它軟件棧:IPoIB(IP over Infiniband), SRP(SCSI RDMA Protocol)等,這就為Infiniband聚合存儲網絡和互聯網絡提供了基礎。OFED由OpenFabrics聯盟負責開發。OpenFabrics最初叫做OpenIB,從2006年開始OpenIB在Infiniband之外也開始支持以太網,業務做的大了名字也從OpenIB改為OpenFabrics。OFED現已經被主流的Linux發行版本支持,並被整合到微軟的windowsserver中。

圖1 OFED 軟件棧
FCOE
就在大家認為Infiniband就是數據中心連接技術的未來時,10Gb以太網的出現讓人看到了其它選擇,以太網的發展好像從來未有上限,目前它的性能已經接近Infiniband(詳見http://www.cisco.com/en/US/prod/collateral/ps10265/le_32804_pb_hpc10ge.pdf),而從現有網絡逐漸升級到10Gb以太網也更易為用戶所接受。FCOE的出現則為數據中心互聯網絡和存儲網絡的聚合提供了另一種可能。FCOE是將光纖信道直接映射到以太網線上,這樣光纖信道就成了以太網線上除了互聯網網絡協議之外的另一種網絡協議。FCOE能夠很容易的和傳統光纖網絡上運行的軟件和管理工具相整合,因而能夠代替光纖連接存儲網絡。雖然出現的晚,但FCOE發展極其迅猛。與Infiniband技術需要采用全新的鏈路相比,企業IT們更願意升級已有的以太網。在兩者性能接近的情況下,采用FCOE方案似乎性價比更高。
網絡交換
在這一層面上要解決的問題則是要對現有的互聯網絡進行升級,使之滿足新業務的需求,網絡虛擬化則是這一變革的重要方向。在這一方向上目前有兩種做法,一種是在原有的基礎設施上添加新的協議來解決新的問題;另一種則完全推倒重來,希望設計出一種新的網絡交換模型。
當虛擬數據中心開始普及后,虛擬數據中心本身的一些特性帶來對網絡新的需求。物理機的位置一般是相對固定的,虛擬化方案的一個很大的特性在於虛擬機可以遷移。當虛擬機的遷移發生在不同網絡,不同數據中心之間時,對網絡產生了新的要求,比如需要保證虛擬機的IP在遷移前后不發生改變,需要保證虛擬機內運行在第二層(鏈路層)的應用程序也在遷移后仍可以跨越網絡和數據中心進行通信等等。在這方面,Cisco連續推出了OTV,LISP和VXLAN等一系列解決方案。
OTV
OTV的全稱叫做OverlayTransport Virtualization。通過擴展鏈路層網絡,它可以使局域網跨越數據中心。很多應用需要使用廣播和本地鏈路多播。通過擴展鏈路層網絡,OTV技術能夠跨地域的處理廣播流和多播,這使得這些應用所在的虛擬機在數據中心之間遷移后仍然能夠正常工作。OTV擴展了鏈路層網絡實際上也擴展了其相關的IP子網,需要IP路由同樣的做改變,這就引出了新的問題,這個問題就由LISP來解決了。
LISP
LISP的全稱是Locator/ID Separation Protocol。傳統的網絡地址IP蘊含了兩個含義,一個是你是誰(ID),另一個是你在哪里(Locator)。這樣帶來的一個問題就是如果你的位置變了(Locator變了),IP必須跟着變化。LISP的目標是將ID和Locator分開,再通過維護一個映射系統將兩者關聯。這樣虛擬機和服務器在網絡不同位置進行遷移時可以保持相同的IP地址。

圖2 OTV和LISP的應用
VXLAN
VXLAN的目的是在雲計算環境中創建更多的邏輯網絡。在雲計算的多租戶環境中,租戶都需要一個邏輯網絡,並且與其它邏輯網絡能夠進行很好的隔離。在傳統網絡中,邏輯網絡的隔離是通過VLAN技術來解決的。不幸的是在IEEE802.1Q標准中,VLAN的標識號只有12位,這就限制了在一定范圍內虛擬網絡最多只能擴展到4K個VLANs。為了解決這個問題,思科聯合VMware在今年推出了VXLAN技術,通過MACin User Datagram Protocol(MAC-in-UDP)封裝技術,加入了一個24位的段標識符。用UDP的多播代替廣播,將數據包限定在目標網段內。VXLAN技術極大的擴充了雲計算環境中所能支持的邏輯網絡的數量,同時通過邏輯段可以將邏輯網絡擴展到不同的子網內,使虛擬機能夠在不同的子網間做遷移。

圖3 VXLAN 幀格式

圖4 通過VXLAN來擴展網絡
NVGRE
對於雲計算環境中的下一代網絡,各大IT廠商們都不想隨便就丟掉話語權,就在Cisco推出VXLAN不久,Microsoft就聯合Intel, HP& Dell 提出了NVGRE標准。NVGRE的全稱是NetworkVirtualization using Generic Routing Encapsulation。它和VXLAN解決相同的問題,只是用了稍微不同的方式,使用GRE (Generic Routing Encapsulation) key的低24位作為網絡租戶的標識符。
前面我們講的都是在原有的基礎設施上添加新的協議來解決新出現的問題,而近年來SoftwareDefined Networking (SDN) 的興起則期待從根本上改變目前的網絡交換模式。SDN中最著名的就是OpenFlow。
OpenFlow
0penFlow論壇起源於斯坦福大學的“Clean slate”計划,開始主要是為了設計一種新的互聯網實驗環境。在目前的實驗網上沒有實際足夠多的用戶或者足夠大的網絡拓撲來測試新協議的性能和功能,最好的方法是將運行新協議的實驗網絡嵌入實際運營的網絡,利用實際的網絡環境來檢驗新協議的可行性和存在的問題。OpenFlow的切入點是目前已有的互聯網上的交換設備。無論是交換機還是路由器,最核心的信息都保存在flowtable里面,這些flowtable用來實現諸如轉發、統計、過濾等各種功能。雖然不同生產廠家有不同格式的flowtable,但可以抽取出絕大多數switch和router都有的一些通用的功能。OpenFlow試圖提出一種通用的flowtable設計,能被所有廠家的設備所支持。通過控制flowtable能夠實現網絡流量的分區,將網絡流量划分為不同的數據流,這些數據流能被歸於不同的組且相互隔離,能夠按照需要來處理和控制。更重要的是flowtable支持遠程的訪問和控制。OpenFlow的flowtable中每一個entry支持3個部分:規則,操作與狀態。規則是用來定義flow;操作就是轉發、丟棄等行為;狀態部分則是主要用來做流量的統計。
有了OpenFLow,我們可以在正常運行的網絡中自己定義一些特殊的規則,通過定義不同的flowentry讓符合規則的流量按照我們的需求走任意的路徑,可以達到把物理網絡切成若干不同的虛擬邏輯網絡目的。所以,OpenFlow將傳統的互聯網改造成為了動態可變的軟件定義互聯網(SoftwareDefined Networking )。OpenFlow的發展異常迅猛,就連Cisco如今也開始擁抱OpenFlow。
總結
網絡虛擬化當前IT發展最熱門的方向之一,是雲計算基礎架構的核心技術。網絡虛擬化涉及的面非常的廣,本文也只根據筆者的認識做了粗淺的介紹。
備注
在網絡虛擬化方面不僅很多大公司在搶占話語權,很多初創公司也在努力開拓機會,這里把我所知道的中小公司稍微做下總結,供大家參考:
Nicira:專注於OpenFlow的神秘公司。
Big Switch:提供基於OpenFlow的網絡虛擬化解決方案
Juniper Networks:支持OpenFlow
Open vSwitch: 一個開源的虛擬switch ,它是一個軟件switch能運行在Hypervisor里, 目前已是XenServer 6.0 的缺省switch。
ConteXtream:借鑒Grid的思想,通過DHT(Distributed Hash Table)在傳統的網絡之上建立一個虛擬的抽象的網絡,解決雲主機服務提供商們在網絡靈活性,多租戶和擴展性方面的挑戰。
Embrane: 提供一種on-demand的虛擬化網絡服務,比如服務的負載均衡,防火牆,VPN。
Xsigo: 提供基於Infiniband技術的數據中心全虛擬化方案。
NextIO:提供基於PCIe技術 的I/O虛擬化產品。