PCI 直通白名单正则表达式

https://blueprints.launchpad.net/nova/+spec/pci-passthrough-whitelist-regex

增强 PCI 直通白名单,以支持地址属性的正则表达式。

问题描述

当前的 PCI 直通白名单地址条目定义为:[“address”: “[[[[<domain>]:]<bus>]:][<slot>][.[<function>]]”,其中地址使用与 lspci 或使用 ‘*’ 的 PCI 设备聚合声明中相同的语法。因此,无法从 PCI 直通白名单地址中排除特定的 VF(s)。

用例

部署者可能希望排除特定的 VF(s) 以用于其他目的。例如,VF 可用于通过运行 iSER(RDMA 的 iSCSI 扩展)传输将计算节点连接到存储节点。

项目优先级

提议的变更

增强 PCI 直通白名单,以支持地址属性的正则表达式语法。将为 address 键引入新的语法:“address”:{ “domain”: <domain>, “bus”: <bus>, “slot”: <slot>, “function”: <function> } 传统的 glob 风格仍然受支持:“address”: “<domain>:<bus>:<slot>.<function>”

正则表达式语法的示例

这允许分配函数从 2 向上开始的 VF:pci_passthrough_whitelist= {“address”:{“domain”: “.*”, “bus”: “02”, “slot”: “01”, “function”: “[2-7]”}, “physical_network”:”net1”}

这允许分配函数从 2 向下开始的 VF:pci_passthrough_whitelist= {“address”:{“domain”: “.*”, “bus”: “02”, “slot”: “01”, “function”: “[0-2]”}, “physical_network”:”net1”}

这允许分配槽位在 1 到 2 之间的 VF:pci_passthrough_whitelist= {“address”:{“domain”: “.*”, “bus”: “02”, “slot”: “0[1-2]”, “function”: “.*”}, “physical_network”:”net1”}

备选方案

  • 我们可以为每个主机添加多个 PCI 直通白名单条目,而不是白名单正则表达式。这些条目包括所有可用的 VF。这已经受支持。

  • 我们可以添加 PCI 直通黑名单与白名单一起使用,以排除特定的 PCI 地址,而不是白名单正则表达式。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人:moshele (moshele@mellanox.com)

工作项

  • 在 devspec.py 中为 PciAddress 添加正则表达式语法支持。

依赖项

测试

文档影响

已将正则表达式语法添加到 pci_passthrough_whitelist 条目,如上文所述。

参考资料

[1] https://review.openstack.org/#/c/99043/ [2] https://wiki.openstack.org/wiki/SR-IOV-Passthrough-For-Networking