启用 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’ 端口的欺骗检查控制及其安全注意事项的信息。
开发人员文档¶
无