启用 SR-IOV 端口的 spoofchk 控制

https://blueprints.launchpad.net/neutron/+spec/sriov-spoofchk

允许用户控制 SR-IOV 端口的 MAC 欺骗检查设置。

问题描述

SR-IOV 端口的支持出现在 Neutron Juno 中,允许虚拟机通过 SR-IOV VF 访问虚拟网络。Linux 中的 SR-IOV 端口允许指定是否应该为它们启用或禁用源 MAC 欺骗检查。这可以通过例如使用 ip-link(8) 工具来完成

ip link set eth0 vf 2 spoofchk off

此命令为物理设备 ‘eth0’ 上的虚拟功能 2 禁用欺骗检查。

此功能对于客户机内的绑定配置非常有用。例如,对于 802.3ad(动态链路聚合)绑定,应禁用 MAC 欺骗检查。有关更多详细信息,请参阅 ‘Configuring QoS Features with Intel Flexible Port Partitioning’ 白皮书,链接位于 ‘参考文献’ 部分。

提议的变更

建议利用端口安全扩展。具体来说,对于 ‘direct’ 类型的端口,port_security_enabled = False 将意味着应禁用欺骗检查。

VF 的实际设置将由 sriovnicagent 使用 ip-link(8) 工具完成。

欺骗检查的默认值将启用,因此更改不会影响默认行为。

数据模型影响

REST API 影响

安全影响

如果用户禁用特定端口的欺骗检查,这可能会产生安全影响,但是这是预期的,并且用户可以手动决定是否适用于其配置。

由于欺骗检查默认启用,因此默认设置不会产生安全影响。

通知影响

其他最终用户影响

并且用户将拥有控制特定 Neutron 端口上欺骗检查设置的设施。

  • python-neutronclient 不需要修改

性能影响

这将对 sriovagent 产生轻微影响,因为它将不得不运行一个额外的外部命令 (ip-link(8))。

IPv6 影响

其他部署者影响

开发人员影响

社区影响

这些更改尚未讨论过。

备选方案

另一种提供用户控制的方式是引入一个专用的欺骗检查属性,而不是端口安全扩展中的 ‘port_security_enabled’。它可以命名为 ‘spoofchk’ 并放置在端口安全扩展或端口绑定扩展中。

实现

负责人

主要负责人

novel

工作项

  • 修改 sriovagent 以能够根据用户设置启用或禁用欺骗检查

  • 在 API 级别和绑定处理例程中验证 sriovagent 是否未被禁用,因为将其关闭将无法满足用户的期望。

依赖项

测试

目前不计划 Tempest 测试,因为 SR-IOV 硬件并非始终可用。可以考虑第三方 CI 测试,但该功能可能相对较小。

Tempest 测试

功能测试

API 测试

将添加 API 测试以涵盖 ‘direct’ 类型端口的 port_security 的具体内容。

文档影响

用户文档

用户文档将更新为包含有关 ‘direct’ 端口的欺骗检查控制及其安全注意事项的信息。

开发人员文档

参考资料