Windows 上 Neutron OVS agent¶
https://blueprints.launchpad.net/neutron/+spec/hyper-v-ovs-agent
由于 Open vSwitch 已成功移植到 Hyper-V,现在 Neutron OVS L2 agent 也可以在 Linux 和 Windows 上运行。大部分移植工作包括将 Linux 特定的依赖项替换为可移植的替代方案,特别考虑到 agent 主要执行 OVS CLI 命令,并且 OVS 在 Linux 和 Windows 上具有相同的命令行界面。
问题描述¶
当前 OVS agent 的实现包含一些 GNU/Linux 特定的组件
使用 rootwrap。这在 Windows 上是不必要的。
fcntl 在 agent.linux.utils 中使用,该模块被 agent.linux.ovs_lib 导入。它也被 eventlet 用于设置非阻塞 I/O。fcntl 在 Windows 上不可用,因此任何对此的依赖都将被替换为 Windows 兼容的替代方案。
ovsdb_monitor.SimpleInterfaceMonitor 目前仅在 GNU/Linux 上工作。原因是 agent.linux.async_process.AsyncProcess() 使用平台特定的组件,例如 kill 命令。将创建一个 Windows 替代方案来解决这个问题。
提议的变更¶
考虑到 OVS agent 当前使用一系列 exec 调用来调用 ovs-vsctl 和 ovs-ofctl,ovs_lib 和部分(如果不是全部)utils 将在 Linux 和 Windows 上几乎相同。这意味着它们需要从 neutron.agent.linux 移动到公共位置,例如:neutron.agent.common。将创建一个基类,并抽象平台特定的差异(例如,rootwrap 的需要)。
数据模型影响¶
无
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
无。
性能影响¶
无。
IPv6 影响¶
无。
其他部署者影响¶
此更改需要用户在部署 neutron ovs agent 之前安装 Hyper-V 上的 Open vSwitch,并使二进制文件在 PATH 中可用。
开发人员影响¶
无。
社区影响¶
无
备选方案¶
Neutron Hyper-V agent 已经支持 ML2 插件,反过来允许与其他机制驱动程序互操作,包括 Open vSwitch。此选项的主要限制是,由于 Hyper-V 本身不支持 VXLAN 或 GRE 封装,因此网络仅限于 VLAN 和 flat 选项。
实现¶
负责人¶
- 主要负责人
gabriel-samfira
工作项¶
将 neutron.agent.linux.ovs_lib 和 neutron.agent.linux.utils 的部分内容移动到 neutron.agent.common
创建一个用于与 Open vSwitch 交互的基类,并抽象平台特定的差异。
移除对 roowrap 的需求。仅在 GNU/Linux 上启用它
相应地更新/添加单元测试
依赖项¶
此更改不直接依赖于任何其他蓝图。但是,它与以下内容相关
测试¶
此功能将由 Hyper-V CI 进行测试。
Tempest 测试¶
当前的 tempest 测试已经足够。
功能测试¶
将根据需要添加功能测试。
API 测试¶
无。
文档影响¶
用户文档¶
文档应反映 OVS agent 现在也适用于 Hyper-V。
开发人员文档¶
无。
参考资料¶
[1] https://blueprints.launchpad.net/nova/+spec/hyper-v-ovs-vif [2] https://github.com/openvswitch/ovs [3] http://www.cloudbase.it/open-vswitch-on-hyper-v [4] https://github.com/gabriel-samfira/neutron/tree/windows-ovs-agent-poc