2011年12月9日 星期五

Linux 中的虛擬網路


現在計算又重新興盛起來。雖然虛擬化出現是在幾十年前,但通過商品硬體的使用,它真正的潛力現在才被認識到。虛擬化加強了伺服器負載的效率,但伺服器生態系統的其他部分也成為了未來加強的選項。許多人視虛擬化為 CPU,記憶體和存儲的鞏固,但是這樣太過簡單化解決方案了。網路是虛擬化的一個關鍵方面,代表虛擬化設置中第一等的元素。
虛擬化網路
我們從問題的高層次開始探索,然後深入到 Linux® 構建和支援的網路虛擬化各種方法。
在傳統環境中(見圖 1 ),一系列物理伺服器支援所需的應用程式設置。為了實現伺服器間的通信,每個伺服器都包含一個或者多個網路介面卡(NICs),它們連接到一個外部網路設施上。帶有網路軟體棧的 NIC 通過網路設施支援端點間的通信。正如圖 1 所示,這個在功能上表示為一個交換機,它支援參與其中的端點間的高效資料包通信。

1. 傳統網路基礎架構
传统网络基础架构  

伺服器合併背後的關鍵改革是物理硬體的抽象,允許多作業系統和應用程式共用硬體(見圖 2)。這一改革名為 hypervisor (或者virtual machine [VM] monitor)。每個 VM(一個作業系統和應用程式設置)視底層硬體為非共用的,一個完整機器,即使它們部分可能並不存在,或者被多個 VM 共用。虛擬的 NICvNIC)就是一個例子。管理程式為每個 VM 創建一個或者多個 vNICs。這些 NICs VM 可以作為物理 NICs,但是它們實際上只表示 NIC 的介面。管理程式也允許虛擬網路的動態構建,由虛擬交換機完成,支援可配置的 VM 端點間的通信。最後,管理程式還允許和物理網路基礎架構的通信,通過將伺服器的物理 NICs 連接到管理程式的邏輯設施,允許管理程式中 VMs 間高效的通信,以及和外部網路的高效通信。在 參考資料 部分,您將會找到更多關於 Linux 管理程式資訊的連結(開源作業系統的豐富區域)。

2. 虛擬的網路設施
虚拟的网络设施  

虛擬網路設施還支援其他有趣的革新,比如虛擬裝置。除了虛擬網路的元素以外,我們還關注這些內容,作為該探索的一部分。
虛擬交換機
虛擬網路設施的關鍵開發之一就是虛擬交換機的開發。虛擬交換機連接 vNICs 到伺服器的物理 NICs,並且更重要的是它將 vNICs 連接到伺服器中的其他 vNICs,進行本地通信。這之所以有趣是因為在一個虛擬交換機中,所受限制和網路速度無關,而是和記憶體頻寬有關,它允許本地 VMs 間的高效通信,並且最小化網路設施的開銷。這個節省是源自物理網路只用於伺服器間的通信,服務期間的跨 VM 通信被隔離。
但是,因為 Linux 已經在內核中包含一個 2 層交換機,所以有人可能會問,為什麼會需要虛擬交換機?答案包括多個屬性,但是最重要之一的是由這些切換類型的新分類定義的。新的類名為 分散式虛擬交換機,它採用使底層伺服器架構更透明的方法,支援跨伺服器橋接。一個伺服器中的虛擬交換機能夠透明地和其他伺服器中的虛擬交換機連接(見  3),使伺服器間(以及它們的虛擬介面)的 VM 遷移更簡單,因為它們可以連接到另一個伺服器的分散式虛擬交換機,並且透明地連接到它的虛擬切換式網路。

3. 分散式虛擬交換機
分布式虚拟交换机 

在這期間最重要的項目之一名為 Open vSwitch 接下來本文會探討這部分內容。
在伺服器中隔離本地流量的一個問題就是流量不是外部可視的(例如,對網路分析員)。實現通過各種計畫解決了這一問題,例如 OpenFlowNetFlow sFlow,它們還用於輸出遠端存取來控制和監控流量。
Open vSwitch
分散式虛擬交換機的早期實現已經結束,並且受限於管理程式專有設置的操作。但是在今天的雲環境中,支援多管理程式共存的異構環境是很理想的。
Open vSwitch 是一個多層的虛擬交換機,在 Apache 2.0 許可下可用作為開放資源。截止 2010 5 月,Open vSwitch 已有版本 1.0.1 可用,並且支援一系列有用的功能。Open vSwitch 支援領先的開源管理程式解決方案,包括基於內核的 VMKVM),VirtualBoxXen XenServer。它還是當前 Linux 橋模組的下拉替換。
Open vSwitch 由交換機守護,管理基於流的交換機的配套內核模組組成。還存在各種其他的守護程式和實體,用於管理交換機(特別是從 OpenFlow 方面)。您可以在用戶空間完全運行 Open vSwitch,但是這麼做會導致性能的下降。
除了為 VM 環境提供一個生產品質的交換機,Open vSwitch 還有令人印象深刻的功能路線圖,和其他相似的、專有的解決方案競爭。
網路設備虛擬化
NIC 硬體的虛擬化以各種形式已經存在了一段時間在虛擬交換機出現之前。本節將說明實現和硬體加速的部分內容,它們可用於改善網路虛擬化的速度。
QEMU
雖然 QEMU 是一個平臺模擬器,但它還提供各種硬體設備的軟體類比,包括 NICs。此外,QEMU 還提供了用於 IP 地址分配的內部 Dynamic Host Configuration Protocol 伺服器。QEMU KVM 一起運作,提供平臺類比和獨立的設備類比,為基於 KVM 的虛擬化提供平臺。您可以在 參考資料 部分瞭解更多關於 QEMU 的內容。
virtio
virtio 是一個 Linux 的輸入/輸出(I/O)准虛擬化框架,它簡化並加快了 VM 到管理程式的 I/O 通信。virtio 創建了 VM 和用於虛擬塊設備,通用的周邊元件連接(PCI)設備,網路設備等的管理程式間 I/O 的標準化傳輸機制。您可以在 參考資料 部分瞭解更多virtio 的內容。
TAP TUN
虛擬化在網路棧中實現已經有一段時間了,允許 VM 訪客網路棧訪問主機網路棧。計畫之二就是 TAP TUNTAP 是一個虛擬網路內核驅動,該驅動實現 Ethernet 設備,並在 Ethernet 框架級別操作。TAP 驅動提供了 Ethernet “tap”,訪客 Ethernet 框架能夠通過它進行通信。TUN(或者網路通道)類比網路層設備,並且在 IP 資料包的較高層進行通信,這些資料包提供一些優化,因為底層 Ethernet 設備能夠管理 TUN IP 資料包的 2 層框架。
I/O 虛擬化
I/O 虛擬化來自在硬體層上支援加速虛擬化的 PCI-Special Interest GroupSIG)的標準化計畫。特別是,Single-root IOVSR-IOV)提供一個介面,通過它獨立的 PCI ExpressPCIe)卡能夠作為多 PCIe 卡出現在眾多用戶面前,允許多個獨立的驅動連接到 PCIe 卡,無需相互瞭解。SR-IOV 通過將虛擬功能擴展到各種用戶來實現,這是作為 PCIe 空間的物理功能,但是在卡中作為共用功能表示。
SR-IOV 帶給網路虛擬化的好處就是性能。比起實現物理 NIC 共用的管理程式,卡自身實現複合,允許從訪客 VM I/O 介面直接到卡的通路。
Linux 今天包含對 SR-IOV 的支持,這對 KVM 管理程式很有好處。Xen 也包括對 SR-IOV 的支援,允許它高效地向訪客 VMs 顯示 vNIC。對 SR-IOV 的支持在 Open vSwitch 的路線圖上。
虛擬 LANs
雖然相關,但是虛擬 LANsVLANs)是網路虛擬化的物理方法。VLANs 提供創建跨分佈網路的虛擬網路的能力,這樣就會出現不同的主機(在獨立的網路上),如果它們是相同廣播域的一部分。VLANs 通過使用 VLAN 資訊標記框架完成這個,用來識別特定 LAN(按照 Institute of Electrical and Electronics Engineers [IEEE] 802.1Q 標準)的成員關係。主機和 VLAN 交換機一起運作,進行物理網路虛擬化。然而,雖然 VLANs 提供獨立網路的假像,但它們共用同一個網路以及可用頻寬,影響阻塞帶來的結果。
硬體加速
許多針對 I/O 的虛擬化加速開始出現,定址 NICs 和其他設備。Intel® Virtualization Technology for Directed I/OVT-d)提供隔離 I/O 資源的功能來獲得改進的可靠性和安全性,它包括重映射直接記憶體存取(使用多級頁表)和設備相關的中斷重映射,支援未修正的和虛擬化感知的訪客。Intel Virtual Machine Device QueuesVMDq)還通過硬體中的嵌入排序和智慧排序,加速了在虛擬化設置中的網路通信流,實現了管理程式較低的 CPU 利用率和總體系統性能的更大程度改善。Linux 包含對兩者的支持。
網路虛擬裝置
目前為止,本文探討了 NIC 設備和交換機的虛擬化,當前實現的部分內容,通過硬體加速虛擬化的部分方法。現在,我們將這個討論擴大到通常的網路服務。
虛擬化範圍內的有趣革新之一就是從伺服器整合演化而來的生態系統。比起將應用程式投入到特定的硬體版本,伺服器的一部分和伺服器內擴展服務的強大 VM 相隔離。這些 VMs 被稱為 虛擬裝置, 因為它們關注一個特定的應用程式,被部署用於虛擬化設置。
虛擬裝置通常連接到管理程式或者有管理程式的良好網路設置來擴展特定的服務。這個之所以獨特是因為,在合併伺服器中,處理功能的部分(例如核)和 I/O 頻寬能夠為虛擬裝置動態地配置。這個功能使它更成本有效(因為一個獨立的伺服器並不會為它而被隔離),並且您能夠根據在伺服器上運行的其他應用程式的需求,動態地改變它的功能。虛擬裝置還能更易於管理,因為應用程式被綁定在作業系統中(在 VM 內)。無需特殊配置,因為 VM 是作為整體進行預配置的。這對於虛擬裝置來說是個值得考慮的好處,這也是今天它一直發展的原因。
虛擬裝置已經為許多企業軟體進行了開發,並且包括 WAN 優化,路由器,虛擬私人網路,防火牆,防止/檢測入侵的系統,郵件分類和管理等等。除了網路服務以外,虛擬裝置還用於存儲,安全,應用程式框架以及內容管理。
結束語
曾幾何時一切都可管理還是物理上可實現的。但是今天,在我們不斷虛擬化的世界中,物理設備和服務已經消失不見。物理網路被虛擬化地分割,允許通信隔離和跨地理實體的虛擬網路的構建。應用程式消失在虛擬裝置中,這些設備在強大伺服器的核之間被分割,雖然為管理者添加了很多複雜性,但是也提供了更好的靈活性,改善了可管理能力。當然,Linux 就走在前沿。


參考資料
學習
  • Linux 代表了良好的作業系統和虛擬化解決方案的平臺。您可以在 虛擬 LinuxdeveloperWorks2006 12 月)和 剖析 Linux hypervisordeveloperWorks2009 5 月)瞭解到更多關於 Linux 和虛擬化的內容。
  • Linux 實現了名為 virtio  I/O 虛擬化框架(由 KVM 使用)。virtio 為高效的准虛擬化驅動開發提供了通用框架。您可以在 Virtio針對 Linux I/O 虛擬化框架developerWorks2010 1 月)瞭解更多關於 virtio 及其內在的內容。
  • SR-IOV 提供了對被多個訪客 VM 使用的物理適配器進行虛擬化的方法。您可以在 Linux 虛擬化和 PCI 透傳技術developerWorks2009 10 月)讀到更多關於設備類比和 I/O 虛擬化的內容。
  • SR-IOV 允許多訪客作業系統共用 PCIe 設備。您可以從 Intel 硬體設計網站 瞭解更多關於 SR-IOV 的內容。PCI-SIG 提供了各種 IOV 技術的規格。
  • 虛擬裝置是軟體設備傳輸的相對較新形式。虛擬裝置中的重要目標就是共用的能力,而不是一個管理程式的最大便攜性。在這個方向上的一個方法就是 Open Virtualization FormatOVF),它定義了虛擬裝置中繼資料的格式。您可以在 虛擬裝置和 Open Virtualization FormatdeveloperWorks2009 10 月)瞭解更多關於虛擬裝置和 OVF 的內容。
  • QEMU 是全電腦系統的開源模擬器,還提供完全的虛擬化解決方案(通過模擬)。您可以在 使用 QEMU 進行系統模擬developerWorks2007 9 月)瞭解更多關於 QEMU 的內容。
  • IEEE 802.1Q 標準提供了 VLAN 標記的網路標準,定義了設備虛擬隔離中位於 MAC 層的 VLAN 的概念。
  •  developerWorks Linux 專區 尋找為 Linux 開發人員(包括 Linux 新手入門)準備的更多參考資料,查閱我們 最受歡迎的文章和教程 
  • developerWorks 上查閱所有 Linux 技巧  Linux 教程 
  • 隨時關注 developerWorks 技術活動網路廣播 
  • 觀看 developerWorks 演示中心,包括面向初學者的產品安裝和設置演示,以及為經驗豐富的開發人員提供的高級功能。
獲得產品和技術
  • OpenSolaris 實現了作為名為 Crossbow 項目一部分的 NIC 和交換機虛擬化。Project Crossbow 將虛擬化和頻寬資源控制帶入到網路棧中,最小化複雜性和開銷。
  • Open vSwitch 是第一個開源多層交換機,用於服務虛擬化的生態系統。在最近發佈的版本 1.0 中,Open vSwitch 提供良好的功能清單,支援許多開源管理程式(包括 KVMXenXenServer VirtualBox)。
  • Xen Cloud Platform 是結合了作為其部分棧的 Open vSwitch 虛擬交換機資料包的虛擬化設施。
  • 以最適合您的方式 IBM 產品評估試用版軟體:下載產品試用版,線上試用產品,在雲環境下試用產品,或者在 IBM SOA Sandbox for People 中花費幾個小時來學習如何高效實現面向服務架構。

沒有留言: