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。

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