湯 泳,郭 寧(中訊郵電咨詢設計院有限公司,北京 100048)
云計算技術經過十多年發展已經逐漸成熟,由于其能夠給企業IT 運營、業務創新等帶來明顯效用,上云已經成為企業常態。近幾年公有云、私有云、混合云、行業云的建設如火如荼,但是隨著云計算的深入使用,應用規模不斷增加,現有數據中心網絡應用在達到一定規模后遇到性能瓶頸。
虛擬化技術將計算機物理資源如服務器、網絡、內存及存儲等映射為虛擬資源,實現多用戶共享物理資源。虛擬化是實現云計算的基本技術,目前主流VM 的網絡虛擬化都是使用虛擬交換機技術,借助虛擬交換機,可以為服務器上運行的VMs 或容器提供邏輯的虛擬以太網接口,這些邏輯接口都連接到虛擬交換機上。比較流行的虛擬交換機包括VMware virtual switch、Cisco Nexus 1000V 和Open vSwitch。其中Openvswitch(簡稱OVS)是一個優秀的開源軟件交換機,支持絕大多數的交換機功能如二層交換、網絡隔離、QoS、流量監控、3 層路由控制等,同時支持多種Linux 虛擬化技術,包括Xen、KVM 以及VirtualBox,所以在市場上應用較為廣泛。一般基于虛擬交換機技術的典型的數據中心IaaS云計算網絡如圖1所示。

圖1 基于虛擬交換機數據中心網絡組織架構圖
數據中心云計算網絡一般采用分層設計,底層網絡采用Spine-Leaf 兩層扁平化網絡架構,以保證節點內的任意2個端口之間可提供延遲非常低的無阻塞性能;同時考慮數據中心網絡的擴展性會在數據轉發平面引入VxLAN 技術,在控制層面引入EVPN 技術以構建一個全互通的大二層的底層網絡架構。
業務網絡則通過虛擬網絡技術以Overlay 底層網絡的方式來實現網絡的部署。從圖1可以看出網絡業務控制主要由計算資源上部署的軟件虛擬交換機來實現。宿主機除了分配提供虛擬機外,還需要承擔虛擬交換機的任務。通過開啟虛擬交互機服務在服務器端模擬物理交換機的功能,在虛擬機之間、虛擬機和外部網絡之間實現網絡的連通。
隨著管理節點的擴充,相關的網絡管理控制功能會消耗更多的計算資源,導致整個平臺的運行效率下降。有資料表明當管理節點數量超過200 個時,網絡性能開始明顯下降,但底層的網絡利用率卻不是很高,造成資源的浪費。經過分析網絡性能下降的原因主要有以下2方面。
a)采用軟件虛擬交換機方式應用部署比較方便,但是軟件的運行效率比專用的網絡設備差。
b)在傳統網橋模式下,網絡穩定一般是沒有問題的,但網橋模式本身會消耗宿主機的CPU,在實際場景下,隨著節點資源的增加,虛擬化平臺所需的計算資源也會大幅增加,虛機交換機的計算資源也會增加,當宿主機的CPU 壓力(>60%)比較大時,虛擬機內部網卡的發包率(PPS)會下降,極端情況會出現丟包現象。
為了保證云平臺系統的線性擴展能力,將網絡虛擬化能力從計算資源中剝離,采用專用的網絡設備進行替代是一個思路;如何有效保證網絡虛擬化帶來的快速靈活部署能力,高效實現云網結合涉及到多個方面的問題,本文主要關注VM網絡虛擬化的解決方案。
為了解決網絡性能問題,首先可以考慮網卡直通技術,這項技術能讓VM 獨占物理網卡,以達到最優性能,建議在網卡性能要求非常高的場景中使用。然而一臺服務器主板上的空間比較有限,允許添加的PCI和PCIe 設備是有限的,如果一臺宿主機上的VM 數量較多,那主機很難向每臺VM 都分配獨立網卡。另外,分配大量網卡給客戶機獨立使用會增加硬件投資成本。為解決物理網卡數量和成本問題考慮使用虛擬化網絡I/O 的硬件技術方案SR-IOV(Single Root I/O Virtualization)。
SR-IOV 技術是一種基于硬件的網卡虛擬化解決方案,允許在虛擬機之間高效共享PCIe 設備,這樣每個VM 都可訪問唯一的虛擬資源;因此啟用了SRIOV 并且具有適當的硬件和OS 支持的PCIe 設備(如網卡)可以顯示為多個單獨的物理設備。SR-IOV 技術原理如圖2所示。
SR-IOV 技術引入了以下3 個功能(function)類型。
a)物理功能(PF——Physical Function):擁有包含SR-IOV 擴展能力在內的所有完整的PCIe 功能,簡單說PF 就是一個普通的PCIe 設備,可以放在宿主機中配置和管理其他VF,它本身也可以作為一個完整獨立的功能使用。
b)虛擬功能(VF——Virtual Function):由PF衍生而來的“輕量級”的PCIe 功能,包含數據傳送所必需的資源,但是僅擁有最小化的配置資源。簡言之,VF 通過PF的配置之后,可以分配到客戶機中作為獨立功能使用。SR-IOV 為VM 中使用的VF 提供了獨立的內存空間、中斷、DMA 流,從而不需要Hypervisor 介入數據的傳送過程。SR-IOV 架構設計的目的是允許一個設備支持多個VF,同時也盡量減小每個VF的硬件成本。

圖2 SR-IOV 技術原理圖
c)交換功能(Layer 2 switch):交換機功能其實是物理網卡內置的。流量進入物理網卡后,經過這個交換機后分發到不同的VF上。
對宿主機來講,網絡虛擬化要解決虛擬網絡在宿主機內/外的隔離和互通2 個問題。引入SR-IOV 技術可以使每個VM 擁有專有網絡硬件資源,可以使網絡層面的隔離更徹底。但如何實現多VM 之間的網絡控制管理就沒有那么簡單了。
傳統的OVS 只有一個虛擬交換機,所以網絡控制比較容易。由于VM 直接操作專屬網卡,可以通過引入外部的物理交換機的方式進行控制,比如可以為每個VM 虛擬網卡創建對應交換機的子端口,然后對每個VM 的流量打上VLAN-ID 標識來區分不同虛擬機的流量,從而實現網絡控制。宿主機內部同網段的VM 的互通可以通過SR-IOV 內置的交換功能實現。虛擬機網絡之間的連接如圖3所示。
目前很多主流的中高端網卡都支持SR-IOV,如Intel 82576 網卡、I350 網卡、82599 網卡、X540 網卡等。在宿主機Linux環境中,可以通過“lspci-v-s$BDF”的命令來查看網卡PCI 信息的“Capabilities”項目,以確定設備是否具備SR-IOV 的能力。同時主流的虛擬化平臺/方案(如KVM、Xen、VMware、Hyper-V 等)都實現了對SR-IOV技術的支持,在平臺中可以將1個或多個VF 分配給1 個客戶機,客戶機通過自身的VF 驅動程序直接操作設備的VF而不需要Hypervisor的參與。

圖3 虛機網絡之間連接模式
SR-IOV技術有以下優點。
a)良好的性能,虛擬機可以繞過虛擬化層和系統,直接訪問硬件,沒有虛擬化層軟件模擬的開銷。
b)降低成本,減少了設備數量,例如網卡的SRIOV 減少了網卡數量、交換機端口和網線。既能提高訪問效率,又能提高網卡的利用率。
1 個設備可支持多個VF,PCI-SIG 的SR-IOV 規范指出每個PF 最多能擁有256 個VF,而實際支持的VF數量是由設備的硬件設計及其驅動程序共同決定的。例如使用“igb”驅動的82576、I350 等千兆以太網卡的每個PF 最多支持7 個VF,而使用“ixgbe”驅動的82599、X540等萬兆以太網卡的每個PF最多支持63個VF。目前的服務器主流配置都是支持63 個VF 的網卡,基本可以滿足虛擬化平臺創建VM的需求。
在SR-IOV 的實際應用中硬件平臺需要支持Intel VT-x 和VT-d(或AMD 的SVM 和IOMMU),另外還需要支持SR-IOV 規范的設備。下面舉例說明如何在Centos7上的KVM 虛擬化環境中用SR-IOV 技術為VM綁定虛擬網卡并打上VLAN-ID。需要說明的是后續配置中使用的網卡是Intel Corporation 82599ES。
首先檢查網卡是否支持SR-IOV,然后通過yum命令進行KVM 虛擬化環境的安裝,開啟libvirtd 服務并設置為開機自啟動模式。
在BIOS 中啟用英特爾VT-d 功能,重新生成配置文件grub2.cfg;運行lspci命令進行網絡信息查看,確保對應網絡設備可以被系統識別。同時根據網卡的驅動參數在/etc/udev/rules.d/目錄下創建以.rules 為后綴的配置文件,完成VF的創建。
首先需要將VF從宿主機中解綁,同時編輯虛擬機的XML 文件,進行參數配置;使用編輯的XML 文件啟動虛擬機。經過以上步驟,一個基于SR-IOV 網卡就與對應的虛擬機綁定成功。
其中網卡部分配置示例如下:

本文對比測試萬兆網絡中SR-IOV 虛擬機和OVS虛擬機在網絡負載較高情況下的虛擬網絡表現,也為后續SR-IOV 虛擬機和其他類型的虛擬機對比給出參考。
3.4.1 測試環境
宿主機配置:2 個Intel(R)Xeon(R)Gold 5218 CPU,內存576 G,1 個Ethernet Connection X722 for 1GbE 網卡用于管理宿主機,2 塊82599ES 10-Gigabit SFI/SFP+Network Connection 網卡用于流量測試,這2塊網卡都接入到同一臺交換機上,交換機配置為CE6855-48S6Q-HI。
3.4.2 網絡吞吐率性能測試
在宿主機上創建2 臺VM 分別發包和收包來進行網絡吞吐的壓力測試。VM 配置均為4 核4G,測試工具為modprobe pktgen,測試包為UDP 包,大小為64 B。測試場景如圖4 所示。場景1 為SR-IOV+VF 直通方式,2臺VM分別使用1塊物理網卡;場景2為SR-IOV+VF 直通方式,2 臺VM 共同使用1 塊物理網卡;場景3為OVS+虛擬網卡方式,2 臺VM 分別使用1 塊物理網卡;場景4 為OVS+虛擬網卡方式,2 臺VM 共同使用1塊物理網卡。

圖4 性能測試場景示意圖
通過測試工具分別統計不同場景下的發包性能和收包性能,結果如表1所示。

表1 網絡吞吐數據統計表
本次測試得出以下結論。
a)采用SR-IOV+VF 直通方式可以顯著提升轉發率,相同配置條件下,發包提升865%,收包提升470%。
b)SR-IOV+VF 直通方式在1 塊物理網卡和2 塊物理網卡的表現基本一致,證明VF性能可以實現線性增長。
c)OVS+虛擬網卡方式下,同一物理網卡的轉發性能相比于不同物理網卡的轉發性能有略微提升。
對1 臺宿主機上的1 對或多對VM 進行網格吞吐測試,對比SR-IOV 及OVS 方式在主機CPU 占用率和網絡吞吐率方面的表現。
在宿主機上創建12 臺VM(配置均為2 核4G),每臺VM 一塊網卡,2 臺VM 一組共6 組,組內分A、B 兩端,其中A 端的VM 發包,B 端的VM 收包,每組A 端的VM 使用同一塊網卡,每組B 端的VM 使用另一塊網卡。依據使用的技術和網卡分配方式不同分以下2個場景分別進行測試。測試包規格為UDP包256 B。
a)場景1:12 臺VM 都使用SR-IOV+VF 直通方式,第1 次使用1 組VM 收發包(共涉及VM 2 臺),第2次使用2組VM 收發包(共涉及VM 4臺),第3次使用3組VM 開始收發包,依次類推直到6 組VM 都開始收發包,分別觀察流量及宿主機CPU使用率。
b)場景2:12 臺VM 都使用OVS+虛擬網卡方式,第1次使用1組VM收發包(共涉及VM 2臺),第2次使用2 組VM 收發包(共涉及VM 4 臺),第3 次使用3 組VM 收發包,依次類推直到6 組VM 都開始收發包,分別觀察流量及宿主機CPU使用率。
具體采集數據如表2所示。
由表2 可以看出使用SR-IOV+VF 直通方式可以明顯減少CPU 使用率;同時SR-IOV+VF 直通方式每增加1 組VM,宿主機CPU 使用率增長9.5%左右,而OVS+虛擬網卡方式每增加1 組VM,宿主機CPU 使用率增長12%左右。

表2 主機CPU資源占用率統計表
同時采用SR-IOV+VF直通方式網絡吞吐率更高,1 組VM 時流量為4 602.5 Mbit/s;在3 組VM 時流量已達到9 006 Mbit/s 左右,接近萬兆網卡的最大帶寬,此時CPU 負載為28.2%,網卡吞吐能力成為了瓶頸。OVS+虛擬網卡方式1 組VM 時,流量僅為875 Mbit/s,直到6 組VM 時,流量為4 643.5 Mbit/s,而此時宿主機CPU使用率已達70.95%。
從以上測試中可以發現,相比OVS 方式,SR-IOV對網絡性能的提升更明顯,同時SR-IOV 方式可以減少對主機CPU的占用。
引入SR-IOV 技術后可以實現為每一個虛機創建一個獨立的網卡,數據中心的網絡初步具備了以傳統網絡設備為基礎進行整個IaaS層網絡管理的條件。數據中心的網絡架構可以調整為如圖5所示的模式。

圖5 基于網絡設備數據中心網絡組織架構圖
從圖5可以看出,網絡的組織架構變化很小,但是網絡運行發生了實質的改變。傳統網絡的具體業務處理都是由虛擬化平臺(IT 方式)進行處理,有較為成熟的解決方案但IT 方案標準化程度低,多虛擬化平臺網絡互通一直是困擾數據中心建設的一個問題。而網絡設備的規范性高,設備互通性好,通過以網絡設備為核心的方式可以徹底解決多個虛擬化平臺的網絡互通問題。用專用的網絡設備實現數據包的轉發、控制可以進一步提高數據中心網絡的效率,同時可以省去宿主機的計算資源,提供給業務應用,從而進行一步提升服務器資源的利用率。
但以網絡設備為核心的架構中,需要使用網絡設備實現業務網絡的管理控制,為了保證業務開通的靈活性和業務開通的效率,必須引入SDN 等技術。本文提出一個分層的數據中心的整體結構,把計算資源與網絡資源分層,云管平臺負責管理計算資源,并且可以通過網絡接口調用SDN 網絡控制器,從而在實現數據中心高效管理的同時保持網絡的彈性和性能,具體架構如圖6所示。

圖6 數據中心分層組織架構示意圖
本文通過對數據中心網絡現狀進行分析,總結數據中心網絡虛擬化在實際應用中所面臨的問題,提出通過SR-IOV 技術實現VM 網絡虛擬化的思路,并給出了SR-IOV 技術具體應用示例及性能測試結果,驗證了SR-IOV 技術應用的效果,最后提出云網一體分層的網絡構建思路。