本文作爲指南,解釋如何使用帶有DPDK數據路徑功能的OVS虛擬交換機,作爲Mitaka發佈版中的網絡服務部分的功能。
基礎
Open vSwitch (OVS) 在2.2版本後,開始支持Data Plane Development Kit (DPDK)數據路徑,並在2.4版本後,支持DPDK提供的vhost-user
虛擬接口。DPDK數據路徑相較標準內核的OVS數據路徑可提供低延遲,高性能,DPDK支持的vhost-user
接口可將客戶機連接到此數據平面。更多關於DPDK的信息,可參見DPDK官網.
OVS 與 DPDK, 或 OVS-DPDK,可用於在OpenStack計算節點的實例間提供高性能的網絡連接。
前提條件
在OVS中使用DPDK要求以下的最低軟件版本:
- OVS 2.4
- DPDK 2.0
- QEMU 2.1.0
- libvirt 1.2.13
對vhost-user
接口多隊列的支持可使能virtio-net
和igb_uio
驅動的多隊列功能,此功能的支持要求軟件的以下新版本:
- OVS 2.5
- DPDK 2.2
- QEMU 2.5
- libvirt 1.2.17
以上兩種情況下,在每個節點上安裝和配置支持DPDK的Open vSwitch。更多信息,參見OVS-DPDK安裝指南, (在Branch
下拉菜單中選擇合適的OVS版本)。
參考OpenStack官方文檔/contributor/internals/ovs_vhostuser
,獲取關於Neutron OVS agent的配置信息。
如果你打算配置多隊列(multiqueue)支持,參考QEMU文檔:OVS 配置中關於vhost-user的章節。
多隊列的技術背景解釋在相關的藍皮書中.
另外,OpenStack自Ocata發佈版之後支持vhost-user
接口的重連特性,作爲bug 1604924的修復實現。從OpenStack Ocata版本開始,無需任何配置,此特性默認開啓,確保使用以下的最低版本軟件:
- OVS 2.6
- DPDK 16.07
- QEMU 2.7
此特性的支持還沒有添加到ML2 OVN 和 ODL機制驅動(mechanism drivers)中。
使用vhost-user接口
一旦OVS和Neutron正確配置了DPDK支持,vhost-user
接口對客戶機是完全透明的(以下描述的多隊列配置除外)。但是,客戶機必須請求了巨頁資源。這可以通過flavor
來實現。例如:
$ openstack flavor set m1.large --property hw:mem_page_size=large
更多關於hw:mem_page_size
參數的語法,請參見Flavors 指南.
注:
vhost-user
接口需要文件描述符支持的共享內存。目前,唯一的實現方法是請求巨型頁面。這就是爲什麼客戶機實例在具有OVS-DPDK的主機上生成時必須請求巨頁的原因。聚合flavor
親核過濾器可用來將帶有巨頁支持的flavor
與帶有OVS-DPDK支持的主機關聯。
在客戶機實例中創建並添加vhost-user
網絡接口與添加傳統接口方法一致。這些接口可以使用客戶機中內核的virtio-net
驅動程序或與DPDK兼容的驅動程序。
$ openstack server create --nic net-id=$net_id ... testserver
使用 vhost-user 多隊列
要使用此功能,應在flavor
附加規範(flavor keys
)中設置以下內容:
$ openstack flavor set $m1.large --property hw:vif_multiqueue_enabled=true
如果在額外規範extra specs
中啓用了該功能,則image
鏡像元數據屬性可以覆蓋此設置:
$ openstack image set --property hw_vif_multiqueue_enabled=true IMAGE_NAME
需要在客戶機虛擬機的內核中提供對virtio-net
多隊列的支持,Linux內核是從3.8版本開始提供對此功能的支持。
檢查網卡通道配置中組合通道數量的預設最大值。
成功配置OVS和flavor
應導致組合通道的最大值超過1
):
$ ethtool -l INTERFACE_NAME
要增加當前組合通道的數量,請在客戶機虛擬機中運行以下命令:
$ ethtool -L INTERFACE_NAME combined QUEUES_NR
隊列數量通常應與客戶機實例定義的vCPUs數量匹配。爲實例定義。在更新的內核版本中這是自動配置的。
已知限制
-
只有在使用Libvirt計算驅動程序和KVM/QEMU Hypervisor時支持。
-
在使用OVS-DPDK的宿主機上運行的每個實例都需要巨頁支持。如果客戶機中沒有巨頁,那麼接口存在,但是不起作用。
-
使用TAP設備的服務的性能預期會降低:這些設備不支持DPDK。示例服務包括DVR、FWaas或LBaas。