宋衛平 沈磊 佘文魁



摘? 要:為了提升虛擬化環境中網絡模塊的性能,本文在KVM虛擬化平臺上對OpenvSwitch虛擬網絡交換技術和基于DPDK的OpenvSwitch虛擬網絡交換技術進行了分析,并在自研虛擬化軟件中設計并實現了基于OVS-DPDK的網絡虛擬化功能,用戶可以通過交互式界面方便地配置和使用基于OVS-DPDK的高性能網卡,達到了業務系統對虛擬機高性能網絡需求的目的,最后通過實驗證實采用OVS-DPDK技術后虛擬機網絡性能得到了極大提升。
關鍵詞:KVM? DPDK? OpenvSwitch? 云計算
中圖分類號:TP393.01? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? 文章編號:1674-098X(2020)07(b)-0125-07
Abstract: In order to improve the performance of network modules in a virtualized environment, this article analyzes OpenvSwitch virtual network switching technology and DPDK-based OpenvSwitch virtual network switching technology on the KVM virtualization platform, and designs and implements it in self-developed virtualization software With the network virtualization function based on OVS-DPDK, users can easily configure and use the high-performance network card based on OVS-DPDK through the interactive interface to achieve the purpose of the business system's demand for high-performance network of virtual machines. Finally, the experiment confirmed the adoption After OVS-DPDK technology, virtual machine network performance has been greatly improved.
Key Words: KVM; DPDK; OpenvSwitch; Cloud computing
隨著信息技術的飛速發展,各種業務應用都以云的方式來承載運行,云計算越來越受到重視,企業數據中心建設過程中虛擬化發揮著重大作用。隨著網絡流量劇烈增長,對虛擬化平臺的網絡性能要求越來越高,基礎的虛擬網絡性能已經不能滿足業務系統的需求。于是Intel提出了一種數據報文轉發處理技術DPDK,紅帽團隊結合OpenvSwitch把該技術應用到了虛擬機的網絡中,簡稱OVS-DPDK技術,通過目前開源項目實驗表明,OVS-DPDK確實能極大地提升虛擬機的網絡性能。但是,由于開源項目在虛擬化模塊上的差異性,導致該功能的兼容性很差,比如對Libvirt、Qemu、OpenvSwitch和DPDK的版本都有嚴格的要求,導致生產項目使用該技術非常復雜,而且達不到理論上的優勢效果。因此,本文在虛擬化軟件中設計并實現了基于OVS-DPDK的網絡虛擬化功能。
1? 網絡虛擬化相關技術分析
為了更好的實現基于OVS-DPDK網絡虛擬化功能,本節將簡要的介紹一下OpenvSwitch和DPDK兩種技術。
1.1 OpenvSwitch虛擬交換技術
在KVM虛擬化平臺上[1],為了保證虛擬機之間,虛擬機和外部網絡之間進行通信,是通過網絡間的橋接技術來實現的,應用比較廣泛的橋接技術是OpenvSwitch技術。
OpenvSwitch是一種支持OpenFlow協議的多層虛擬交換機軟件,旨在通過編程擴展,實現大規模網絡的自動化配置、管理、維護功能。
OpenvSwitch主要由三大模塊構成:內核模塊openvswitch.ko、用戶空間守護進程ovs-vswitchd以及輕量級數據庫服務器ovsdb-server。Open vSwitch軟件架構如圖1所示:
其中,ovs-vswitchd是用戶空間的守護進程,通過OpenFlow協議與本地或遠端 Controller 通信,負責解析協議、執行命令。ovsdb-server 是一個輕量級數據庫服務器,用于保存OpenvSwitch相關的配置信息,如端口、網橋相關信息,通過JSON-RPC 協議與ovs-vswitchd通信。openvswitch.ko是一個支持流交換的linux內核模塊,負責查找流表項,轉發、修改數據包,以及實現隧道的封裝、解封裝等操作。
每條datapath也就是內核中的fastpath,都會關聯多個端口,當端口上接收到數據包時,會交給datapath模塊進行處理,datapath提取報文頭部信息以及元數據信息,通過 hash 函數產生一個 key 值,通過 key 來查找該datapath所關聯的流表,若找到流表項,則根據流表項所定義的規則進行操作,如轉發、丟棄等,更新數據包計數器;若沒有查找到相應流表項,則將數據包傳遞給用戶空間ovs-vswitchd進行處理,更新 miss 計數器,轉發流程進入慢速路徑(slowpath)。ovs-vswitchd重新根據報文頭部信息、元數據信息計算 key值,然后根據 key值查找ovs-vswitchd所關聯的OpenFlow流表。若找到流表項,則將流表項下發給內核中的datapath,datapath按照流表項定義的規則處理該數據包,若沒有找到流表項,則用OpenFlow協議封裝報文發送給OpenFlow Controller,由 controller 決定如何處理該數據包。
虛擬化控制系統雖然完成對網絡XML文件的組裝,但實際上Centos7.1系統并不支持DPDK模式,因此需要對Libvirt、Qemu、OpenvSwitch及DPDK模塊進行開發和移植。
2.2.2 在Centos7.1系統上完成對虛擬機DPDK網卡的支持
由于OVS-DPDK對OpenvSiwtch、Qemu的版本要求比較高,因此,本文采用在Centos7.1上升級OpenvSwitch和Qemu的方式,而對于Libvirt來說開源還不支持該模式,因此,需要在Libvirt上設計并實現虛擬機網卡對DPDK的支持。具體實現流程如圖9所示。
(1)組合各個設備的XML信息,如果選擇使用OVS-DPDK網卡,則需要按照給定的兩種XML配置方式進行配置;
(2)調用virsh模塊的cmdCreate()接口來接收用戶輸入,調用libvirt模塊中的virDomainCreateXML接口進行各虛擬化平臺分發;
(3)libvirt會依據當前的虛擬化平臺調用到具體實現的qemu-driver模塊中,在qemu-driver模塊中調用qemuDomainCreateXML()接口進行具體實現。
(4)將傳入的配置文件信息進行解析,將各設備信息組合成qemu可執行命令,將qemu可執行命令發送到kvm模塊執行,此時,基于OVS-DPDK網卡的虛擬機啟動完成。
3? 測試結果分析
上一節在Centos7.1系統上實現了對虛擬機DPDK網卡的支持,本節將通過實驗測試采用DPDK網卡的虛擬機與普通Virtio網卡虛擬機的性能區別,主要在網絡的吞吐量和延遲兩個方面進行比較。
下面將詳細闡述實驗過程。
3.1 實驗平臺配置
戴爾R720服務器構成實驗的硬件平臺,該服務器包含兩個intel萬兆以太網口,服務上安裝Centos 7.1操作系統支持KVM虛擬化平臺,在服務器上創建兩臺Centos 7.1虛擬機。虛擬機配置信息為4CPU、4G內存。服務器詳細配置信息如表1所示,虛擬機詳細配置信息如表2所示。
3.2 實驗設計
實驗環境一如圖10所示,兩臺虛擬機Vm1和Vm2運行在同一臺物理主機上,使用OVS的普通網橋方式將虛擬機之間的網絡進行連接。
實驗環境二如圖11所示,兩臺虛擬機Vm1和Vm2運行在同一臺物理主機上,使用OVS-DPDK的網橋方式將虛擬機之間的網絡進行連接。
本節使用Iperf工具對以上兩種環境的虛擬機網絡性能進行測試,Iperf是一個網絡性能測試工具,可以測試TCP、UDP模式下網絡帶寬、丟包及延遲。可以配合不同的參數進行網絡特性的測試,主要參數使用說明如表3所示。
為了全面地驗證虛擬機網卡使用OVS-DPDK后的性能,本節設計了如下兩個測試場景。
(1)分別對使用OVS網絡的虛擬機和OVS-DPDK網絡的虛擬機進行網絡吞吐量測試。
(2)分別對使用OVS網絡的虛擬機和OVS-DPDK網絡的虛擬機進行網絡丟包率測試。
3.3 實驗結果與分析
使用Iperf提供的命令分別對使用OVS網絡的虛擬機和OVS-DPDK網絡的虛擬機進行網絡性能測試,兩個場景測試結果如下所示:
場景一:通過Iperf命令對OVS網絡的虛擬機和OVS-DPDK網絡的虛擬機進行網絡吞吐量測試,測試結果如圖12所示。
圖11中,橫軸表示TCP窗口大小分別為1K、2K、4K、8K、64K、512K及1024K字節的包,縱軸表示網絡吞吐量單位kbps,從圖14中可以看出虛擬機采用OVS-DPDK技術后網卡吞吐量明顯優于采用OVS技術。
場景二:通過Iperf命令,使用UDP方式對OVS網絡的虛擬機和OVS-DPDK網絡的虛擬機進行網絡延時測試,測試結果如圖13所示。
圖12中,橫軸表示緩沖大小分別為512K、1024K、10240K、102400K及1024000K,縱軸表示網絡延遲情況,單位為毫秒,從圖中可以看到虛擬機采用OVS-DPDK技術后網卡延遲明顯優于采用OVS技術。
綜上,實驗表明虛擬機使用OVS-DPDK的虛擬化網卡技術后網卡性能提升明顯。因此,通過對CentOS7.1系統引入OVS-DPDK技術及對虛擬化控制系統的改造,可以有效地提升虛擬機網絡性能。另外,對于網絡要求比較高的虛擬化環境來說,可以建議用戶采用該方案,這樣可以保證虛擬機的網絡性能。
4? 結語
本文重點研究了OVS-DPDK的網絡虛擬化技術,并在現有虛擬化控制系統上設計并實現了該功能,另外基于CentOS7.1系統完成了基于OVS-DPDK網絡虛擬化技術設計與實現。通過實驗驗證,得到以下結論:使用OVS-DPDK網絡虛擬化技術后,能有效地提升虛擬機的網絡性能。
參考文獻
[1] 何佳偉,江舟.基于Intel DPDK的高性能網絡安全審計方案設計[J].電子測試,2016(Z1):87-91.
[2] 余思陽,楊佑君,李長連.基于DPDK的DDoS攻擊防御技術分析與實現[J].郵電設計技術,2020(1):70-74.
[3] 吳克河,王冬冬.基于PF_RING的高速網絡數據捕獲方法[J].計算機與數字工程,2019,47(3):598-604.
[4] 周末. DPDK結構下類Socket接口研究與設計[D].成都:電子科技大學,2016.
[5] 李凱. 基于DPDK的流量動態負載均衡技術研究[D].哈爾濱:哈爾濱工業大學,2017.
[6] 趙寧,謝淑翠.基于dpdk的高效數據包捕獲技術分析與應用[J].計算機工程與科學,2016,38(11):2209-2215.