網絡虛擬化是一種重要的網絡技術,該技術可在物理網絡上虛擬多個相互隔離的虛擬網絡,從而使得不同用戶之間使用獨立的網絡資源切片,從而提高網絡資源利用率,實現彈性的網絡。SDN的出現使得網絡虛擬化的實現更加靈活和高效,同時網絡虛擬化也成為SDN應用中的重量級應用。本文將介紹SDN與網絡虛擬化的關系以及通過SDN實現網絡虛擬化的方法,其中第二部分內容將從虛擬化平臺,網絡資源虛擬化和網絡隔離三個方面介紹。
SDN與網絡虛擬化由于早期成功的的SDN方案中網絡虛擬化案例較多,有的讀者可能會認為SDN和網絡虛擬化是同一個層面的,然而這是一個錯誤的說法。SDN不是網絡虛擬化,網絡虛擬化也不是SDN。SDN是一種集中控制的網絡架構,可將網絡劃分為數據層面和控制層面。而網絡虛擬化是一種網絡技術,可以在物理拓撲上創建虛擬網絡。傳統的網絡虛擬化部署需要手動逐跳部署,其效率低下,人力成本很高。而在數據中心等場景中,為實現快速部署和動態調整,必須使用自動化的業務部署。SDN的出現給網絡虛擬化業務部署提供了新的解決方案。通過集中控制的方式,網絡管理員可以通過控制器的API來編寫程序,從而實現自動化的業務部署,大大縮短業務部署周期,同時也實現隨需動態調整。
隨著IaaS的發展,數據中心網絡對網絡虛擬化技術的需求將會越來越強烈。SDN出現不久后,SDN初創公司Nicira就開發了網絡虛擬化產品NVP(Network Virtualization Platform)。Nicira被VMware收購之后,VMware結合NVP和自己的產品vCloud Networking and Security (vCNS),推出了VMware的網絡虛擬化和安全產品NSX。NSX可以為數據中心提供軟件定義化的網絡虛擬化服務。由于網絡虛擬化是SDN早期少數幾個可以落地的應用,所以大眾很容易將網絡虛擬化和SDN弄混淆。正如前面所說,網絡虛擬化只是一種網絡技術,而基于SDN的網絡架構可以更容易地實現網絡虛擬化。
SDN實現網絡虛擬化通過SDN實現網絡虛擬化需要完成物理網絡管理,網絡資源虛擬化和網絡隔離三部分工作。而這三部分內容往往通過專門的中間層軟件完成,我們稱之為網絡虛擬化平臺。虛擬化平臺需要完成物理網絡的管理和抽象虛擬化,并分別提供給不同的租戶。此外,虛擬化平臺還應該實現不同租戶之間的相互隔離,保證不同租戶互不影響。虛擬化平臺的存在使得租戶無法感知到網絡虛擬化的存在,也即虛擬化平臺可實現用戶透明的網絡虛擬化。
虛擬化平臺虛擬化平臺是介于數據網絡拓撲和租戶控制器之間的中間層。面向數據平面,虛擬化平面就是控制器,而面向租戶控制器,虛擬化平臺就是數據平面。所以虛擬化平臺本質上具有數據平面和控制層面兩種屬性。在虛擬化的核心層,虛擬化平臺需要完成物理網絡資源到虛擬資源的虛擬化映射過程。面向租戶控制器,虛擬化平臺充當數據平面角色,將模擬出來的虛擬網絡呈現給租戶控制器。從租戶控制器上往下看,只能看到屬于自己的虛擬網絡,而并不了解真實的物理網絡。而在數據層面的角度看,虛擬化平臺就是控制器,而交換機并不知道虛擬平面的存在。所以虛擬化平臺的存在實現了面向租戶和面向底層網絡的透明虛擬化,其管理全部的物理網絡拓撲,并向租戶提供隔離的虛擬網絡。
圖 2 .網絡虛擬化平臺示意圖
虛擬化平臺不僅可以實現物理拓撲到虛擬拓撲“一對一”的映射,也應該能實現物理拓撲“多對一”的映射。而由于租戶網絡無法獨占物理平面的交換機,所以本質上虛擬網絡實現了“一虛多”和“多虛一”的虛擬化。此處的“一虛多”是指單個物理交換機可以虛擬映射成多個虛擬租戶網中的邏輯交換機,從而被不同的租戶共享;“多虛一”是指多個物理交換機和鏈路資源被虛擬成一個大型的邏輯交換機。即租戶眼中的一個交換機可能在物理上由多個物理交換機連接而成。
圖3 .單虛擬節點映射到多物理節點
網絡資源虛擬化為實現網絡虛擬化,虛擬化平臺需要對物理網絡資源進行抽象虛擬化,其中包括拓撲虛擬化,節點資源虛擬化和鏈路資源虛擬化[1]。
拓撲虛擬化拓撲虛擬化是網絡虛擬化平臺最基本的功能。虛擬平臺需要完成租戶虛網中的虛擬節點和虛擬鏈路到物理節點和鏈路的映射。其中包括“一對一”和“一對多”的映射。“一對一”的映射中,一個虛擬節點將會映射成一個物理節點,同理虛擬鏈路也是。而在“一對多”的映射中,一個虛擬節點可以映射成由多個連接在一起的物理節點;一條邏輯鏈路也可能映射成由鏈接在一起的多條鏈路。而對于物理節點而言,一個物理節點可以被多個邏輯節點映射。
節點資源虛擬化節點資源的虛擬化包括對節點Flow tables(流表)、CPU等資源的抽象虛擬化。流表資源本身是交換機節點的稀缺資源,如果能對其進行虛擬化,然后由虛擬化平臺對其進行分配,分配給不同的租戶,那么就可以實現不同租戶對節點資源使用的分配和限制。拓撲抽象僅僅完成了虛擬節點到物理節點的映射,而沒有規定不同用戶/租戶對物理節點資源使用的分配情況。若希望進行更細粒度的網絡虛擬化,節點資源虛擬化非常有必要。
鏈路資源虛擬化和節點資源一樣,鏈路資源也是網絡中重要的資源,而拓撲抽象并沒有規定某些用戶可使用的鏈路資源的多少。所以在進行更細粒度的虛擬化時,有必要對鏈路資源進行虛擬化,從而實現鏈路資源的合理分配。可被抽象虛擬化的鏈路資源包括租戶可使用的帶寬以及端口的隊列資源等等。網絡隔離網絡資源虛擬化僅僅完成了物理資源到虛擬資源的抽象過程,為實現完全的網絡虛擬化,還需要對不同的租戶提供隔離的網絡資源。網絡隔離需要對SDN的控制平面和數據平面進行隔離,從而保證不同租戶控制器之間互補干擾,不同虛網之間彼此隔離。此外,為了滿足用戶對地址空間自定義的需求,虛擬化平臺還需要對網絡地址進行虛擬化。
控制面隔離
控制器的性能對SDN整體的性能產生極大的影響,所以虛擬化平臺需保證租戶的控制器在運行時不受其他租戶控制器的影響,保證租戶對虛擬化平臺資源的使用。虛擬化平臺在連接租戶控制器時需保證該進程可以得到一定的資源保障,比如CPU資源。而虛擬化平臺本身所處的位置就可以輕易實現租戶的控制器之間的相互隔離。
數據面隔離
數據面的資源包括節點的CPU、Flow Tables等資源以及鏈路的帶寬,端口的隊列資源等。為保證各個租戶的正常使用,需對數據面的資源進行相應的隔離,從而保證租戶的資源不被其他租戶所占據。若在數據面上不進行資源的隔離,則會產生租戶數據在數據面上的競爭,從而無法保障租戶對網絡資源的需求,所以很有必要在數據面對資源進行隔離。
地址隔離
為使租戶能在自己的虛擬租戶網中任意使用地址,虛擬化平臺需要完成地址的隔離。實現地址隔離主要通過地址映射來完成。租戶可任意定制地址空間,而這些地址對于虛擬化平臺而言是面向租戶的虛擬地址。虛擬化平臺在轉發租戶控制器南向協議報文時,需要將虛擬地址轉化成全網唯一的物理地址。租戶的服務器的地址在發送到接入交換機時就會被修改成物理地址,然后數據包的轉發會基于修改之后的物理地址進行轉發。當數據到達租戶目的地址主機出端口,控制器需將地址轉換成原來租戶設定的地址,從而完成地址的虛擬化映射。地址的虛擬化映射使得租戶可以使用完全的地址空間,可以使用任意的FlowSpace(流空間:流表匹配項所組成的多維空間),而面向物理層面則實現了地址的隔離,使得不同的租戶使用特定的物理地址,數據之間互不干擾。
本文介紹了SDN與網絡虛擬化的關系以及如何通過SDN實現網絡虛擬化。第二部分內容通過介紹網絡虛擬化平臺,網絡資源虛擬化,網絡隔離等三個方面來介紹如何通過SDN實現網絡虛擬化。隨著SDN和網絡虛擬化的發展,更多基于SDN的網絡虛擬化案例將會誕生,從而為用戶提供更靈活的網絡服務。后續將有文章介紹基于SDN的網絡虛擬化技術的產品和應用案例,敬請期待。
References[1] Blenk A, Basta A, Reisslein M, et al. Survey on Network Virtualization Hypervisors for Software Defined Networking[J]. 2015.