Linux 中的虛擬網絡

許多人視虛擬化為 CPU,內存和存儲的虛擬化,但是這樣太過簡單化解決方案了。網絡是虛擬化的一個關鍵方面,代表虛擬化設置中第一等的元素。


虛擬化網絡

我們從問題的高層次開始探索,然後深入到 Linux® 構建和支持的網絡虛擬化各種方法。


在傳統環境中(見圖 1 ),一系列物理服務器支持所需的應用程序設置。為了實現服務器間的通信,每個服務器都包含一個或者多個網絡接口卡(NICs),它們連接到一個外部網絡設施上。帶有網絡軟件棧的 NIC 通過網絡設施支持端點間的通信。正如圖 1 所示,這個在功能上表示為一個交換機,它支持參與其中的端點間的高效數據包通信。


圖 1. 傳統網絡基礎架構


Linux 中的虛擬網絡

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

圖 2. 虛擬的網絡設施


Linux 中的虛擬網絡

在這期間最重要的項目之一名為 Open vSwitch, 接下來本文會探討這部分內容。


在服務器中隔離本地流量的一個問題就是流量不是外部可視的(例如,對網絡分析員)。實現通過各種計劃解決了這一問題,例如 OpenFlow,NetFlow 和 sFlow,它們還用於輸出遠程訪問來控制和監控流量。

Open vSwitch

分佈式虛擬交換機的早期實現已經結束,並且受限於管理程序專有設置的操作。但是在今天的雲環境中,支持多管理程序共存的異構環境是很理想的。


Open vSwitch 是一個多層的虛擬交換機,在 Apache 2.0 許可下可用作為開放資源。截止 2010 年 5 月,Open vSwitch 已有版本 1.0.1 可用,並且支持一系列有用的功能。Open vSwitch 支持領先的開源管理程序解決方案,包括基於內核的 VM(KVM),VirtualBox,Xen 和 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 和 TUN。TAP 是一個虛擬網絡內核驅動,該驅動實現 Ethernet 設備,並在 Ethernet 框架級別操作。TAP 驅動提供了 Ethernet “tap”,訪客 Ethernet 框架能夠通過它進行通信。TUN(或者網絡“通道”)模擬網絡層設備,並且在 IP 數據包的較高層進行通信,這些數據包提供一些優化,因為底層 Ethernet 設備能夠管理 TUN 的 IP 數據包的 2 層框架。

I/O 虛擬化

I/O 虛擬化來自在硬件層上支持加速虛擬化的 PCI-Special Interest Group(SIG)的標準化計劃。特別是,Single-root IOV(SR-IOV)提供一個接口,通過它獨立的 PCI Express(PCIe)卡能夠作為多 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

雖然相關,但是虛擬 LANs(VLANs)是網絡虛擬化的物理方法。VLANs 提供創建跨分佈網絡的虛擬網絡的能力,這樣就會出現不同的主機(在獨立的網絡上),如果它們是相同廣播域的一部分。VLANs 通過使用 VLAN 信息標記框架完成這個,用來識別特定 LAN(按照 Institute of Electrical and Electronics Engineers [IEEE] 802.1Q 標準)的成員關係。主機和 VLAN 交換機一起運作,進行物理網絡虛擬化。然而,雖然 VLANs 提供獨立網絡的假象,但它們共享同一個網絡以及可用帶寬,影響阻塞帶來的結果。

硬件加速

許多針對 I/O 的虛擬化加速開始出現,尋址 NICs 和其他設備。Intel® Virtualization Technology for Directed I/O(VT-d)提供隔離 I/O 資源的功能來獲得改進的可靠性和安全性,它包括重映射直接內存訪問(使用多級頁表)和設備相關的中斷重映射,支持未修正的和虛擬化感知的訪客。Intel Virtual Machine Device Queues(VMDq)還通過硬件中的嵌入排序和智能排序,加速了在虛擬化設置中的網絡通信流,實現了管理程序較低的 CPU 利用率和總體系統性能的更大程度改善。Linux 包含對兩者的支持。

網絡虛擬設備

目前為止,本文探討了 NIC 設備和交換機的虛擬化,當前實現的部分內容,通過硬件加速虛擬化的部分方法。現在,我們將這個討論擴大到通常的網絡服務。

虛擬化範圍內的有趣革新之一就是從服務器整合演化而來的生態系統。比起將應用程序投入到特定的硬件版本,服務器的一部分和服務器內擴展服務的強大 VM 相隔離。這些 VMs 被稱為 虛擬設備, 因為它們關注一個特定的應用程序,被部署用於虛擬化設置。

虛擬設備通常連接到管理程序 — 或者有管理程序的良好網絡設置— 來擴展特定的服務。這個之所以獨特是因為,在合併服務器中,處理功能的部分(例如核)和 I/O 帶寬能夠為虛擬設備動態地配置。這個功能使它更成本有效(因為一個獨立的服務器並不會為它而被隔離),並且您能夠根據在服務器上運行的其他應用程序的需求,動態地改變它的功能。虛擬設備還能更易於管理,因為應用程序被綁定在操作系統中(在 VM 內)。無需特殊配置,因為 VM 是作為整體進行預配置的。這對於虛擬設備來說是個值得考慮的好處,這也是今天它一直髮展的原因。

虛擬設備已經為許多企業軟件進行了開發,並且包括 WAN 優化,路由器,虛擬專用網,防火牆,防止/檢測入侵的系統,郵件分類和管理等等。除了網絡服務以外,虛擬設備還用於存儲,安全,應用程序框架以及內容管理。

結束語

曾幾何時一切都可管理還是物理上可實現的。但是今天,在我們不斷虛擬化的世界中,物理設備和服務已經消失不見。物理網絡被虛擬化地分割,允許通信隔離和跨地理實體的虛擬網絡的構建。應用程序消失在虛擬設備中,這些設備在強大服務器的核之間被分割,雖然為管理者添加了很多複雜性,但是也提供了更好的靈活性,改善了可管理能力。當然,Linux 就走在前沿。


分享到:


相關文章: