SR-IOV 网络支持

SR-IOV 是一种将硬件虚拟化网络功能 (VF) 或完整物理功能 (PF) 直接传递到 KVM 实例的机制;OpenStack charms 应该更新以支持此功能。

问题描述

使用 Open vSwitch 和桥接链、veth 对以及 tap 设备会给网络吞吐量和延迟带来开销,这在某些 OpenStack 用例中是不可接受的。

SR-IOV 允许通过 libvirt 提供的虚拟化层将 SR-IOV 支持的网络卡的全部 (PF) 或部分 (VF) 直接连接到 KVM 实例。

在 Mitaka 版本中完全实现了对这两种类型的直通的支持。

提议的变更

支持 SR-IOV 需要对三个 charms 进行更改;具体来说

  • neutron-api:启用 SR-IOV 的 ML2 机制驱动程序

  • nova-cloud-controller:启用适当的调度器过滤器,用于管理 PCI 直通设备

  • nova-compute:白名单 PCI 设备,供计算实例使用。

SR-IOV 将使用 neutron-api charm 上的配置选项 ‘enable-sriov’ 启用;nova-cloud-controller charm 将通过 nova-cloud-controller charm 和 neutron-api charm 之间的关系收到此选项的状态通知。

在首次实现中,nova-compute charm 将提供一个 pci-device-whitelist 配置选项,以允许将特定的 PCI 设备分配给计算实例。这是直接传递到 Nova 配置选项。此功能的后续版本可能会使用 Juju 中尚未实现的功能,以在单元级别管理 PCI 设备分配。

初始 SR-IOV 支持将是无代理的(即不使用 neutron-sriov-agent)。

将支持 Flat 和 VLAN 网络模式。

备选方案

实现

负责人

主要负责人

james-page

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题 “sriov-support”。

git-review -t sriov-support

工作项

SR-IOV 的初始 charm 支持

  • neutron-api:添加 enable-sriov 配置选项,启用机制驱动程序,将详细信息传递给 nova-cloud-controller charm。

  • nova-cloud-controller:当 neutron-api charm 启用 enable-sriov 时,将 PciPassthroughFilter 添加到调度器过滤器。

  • nova-compute:添加 pci-device-whitelist 配置选项,直接传递到 nova.conf 配置文件模板。

SR-IOV 基本启用的 Mojo 规范

  • 部署启用了 SR-IOV 的 OpenStack Cloud 的功能测试规范。

SR-IOV VF/PF 调度测试

  • 专注于测试,以确保在云中使用 SR-IOV 时调度行为得到适当调整。

Juju 设备绑定支持

  • Newton 周期中的 Stretch 目标;取代 nova-compute charm 上的 pci-device-whitelist 选项

仓库

不需要新的 git 仓库。

文档

作为此更改的一部分,将更新受影响的 charms 中的 README 文件。

安全性

没有额外的安全问题。

测试

代码更改将由单元测试覆盖;功能测试将使用 Mojo 规范完成。

依赖项

  • OpenStack Mitaka。

  • 用于功能测试的 Ubuntu OpenStack QA 实验室中的 SR-IOV 支持的硬件

  • Juju 设备管理支持