OpenStack 使用OVS的DPDK數據路徑

本文作爲指南,解釋如何使用帶有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-netigb_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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章