支持 SRIOV 接口的连接和断开¶
https://blueprints.launchpad.net/nova/+spec/sriov-interface-attach-detach
Nova 支持使用 SRIOV 接口启动服务器。但是,将 SRIOV 接口连接和断开到现有服务器并不受支持,因为连接和断开代码路径中缺少 PCI 设备管理。
问题描述¶
SRIOV 接口无法连接或断开到现有的 nova 服务器。
用例¶
作为最终用户,我需要通过 SRIOV 接口将我的服务器连接到另一个 neutron 网络,以获得该网络方向的高吞吐量连接。
作为最终用户,我希望断开现有的 SRIOV 接口,因为我不再使用该网络访问,并且我想释放稀缺的 SRIOV 资源。
提议的变更¶
在计算管理器中,在接口连接期间,如果端口的 vnic_type 指示 SRIOV 接口,则计算需要为请求的端口生成 InstancePCIRequest。然后对生成的 PCI 请求运行 PCI 声明,以检查是否有空闲的 PCI 设备,声明它,并获取 PciDevice 对象。如果成功,则将 PCI 请求连接到 RequestedNetwork 对象,并使用该 RequestedNetwork 调用 Neutron,就像今天一样。然后调用今天的 virt 驱动程序。
如果 PCI 声明失败,则接口连接实例操作将失败,但实例状态不会设置为 ERROR。
在断开连接期间,我们必须从正在销毁的 VIF 中恢复 PCI 请求,然后从中获取我们需要在 PCI 跟踪器中释放的 PCI 设备。
请注意,从 API 用户角度来看,今天断开 SRIOV 接口是成功的。但是,断开的 PCI 设备未从资源跟踪中释放,因此直到删除或实时迁移 nova 服务器才会泄漏。当当前规范实现时,此问题将消失。此外,作为单独的错误修复,SRIOV 断开连接将在稳定分支上被阻止,以防止资源泄漏。
由于 libvirt 域 XML 的生成方式,SRIOV PF 断开连接存在一个单独的问题。虽然该修复对于当前规范是必需的,但它也需要用于现有的 SRIOV 实时迁移功能,因为该功能在迁移期间也会断开 SRIOV 接口。因此,SRIOV PF 断开连接问题将作为 SRIOV 实时迁移功能和本规范实施的独立错误修复来解决。
备选方案¶
无
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
在接口连接期间,还将进行额外的 neutron 调用以及额外的 DB 操作。interface_attach RPC 方法今天同步,因此这将是最终用户可见的更改。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
balazs-gibizer
功能联络人¶
- 功能联络人
gibi
工作项¶
更改连接和断开代码路径
添加单元和功能测试
添加文档
依赖项¶
无
测试¶
由于上游 CI 没有 SRIOV 设备,因此无法添加 Tempest 测试。相反,将添加使用 libvirt 驱动程序的功能测试。
文档影响¶
删除 API 文档中的限制
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
Victoria |
引入 |