允许 Neutron 端口没有 IP 地址¶
https://blueprints.launchpad.net/neutron/+spec/vm-without-l3-address
允许创建未分配地址的端口,即没有 l3 地址、子网的端口,并使用该端口启动虚拟机。
问题描述¶
目前,仅带有 L2 地址而没有 ipv4/ip6 地址的虚拟机无法创建。实际上,创建没有 IPv4 地址或没有 IPv6 地址的端口是可行的。这意味着 neutron 端口创建的当前实现可以接受请求中为空的子网(你不会被强制指定子网),当然,这里创建的端口的 VIF 类型是未绑定的。
Neutron 和 nova 创建接口时,假定接口的 L2 和 L3 分配的地址是固有属性;L3 地址不是可选的,并且除非流量被寻址到已识别的地址,否则不应在该机器上看到流量。
网络应用程序(例如,路由器)通常会转发并非 intended for 它们 的流量,并且可能实际拥有
没有主 L3 地址的接口,该接口可能正在接收来自众多不同地址的流量,在这种情况下,在 Neutron 本身中配置所有这些地址是没有意义的负担。
一个典型的用例是,当用户希望部署一个接受既不是 IPv4 也不是 IPv6 的流量的虚拟机时,一个接受 v4 和 v6 流量超集的虚拟机,或者一个接受来自非常广泛地址范围的流量(用于转发或终止)的虚拟机,并且该端口没有主地址。在这种情况下,该虚拟机不是传统的应用程序虚拟机。
注意:许多句子是毫不掩饰地从 [nova-l2-net-without-subnet] 抄袭而来
我们还必须注意到,某些 L2 驱动程序,例如 l2-pop,在处理这种类型的端口时可能会出现问题,因为它使用 arp 代理来响应来自已知 ip 地址的 arp 请求。 此外,某些服务,例如 novnc 服务,可能无法用于没有 IP 地址的端口。
提议的变更¶
允许使用没有 l3 地址的端口启动虚拟机。实际上,当前的 neutron 允许创建没有子网的端口。新的典型工作流程如下(当前不起作用)
创建 neutron L2 网络,但任何子网都不与它关联
在该网络上启动虚拟机
或者
创建 neutron L2 网络。子网可以关联也可以不关联
在网络上创建 neutron 端口,不带固定 ip
使用创建的端口启动虚拟机
在 neutron 侧,如果创建了这种类型的端口,应删除安全组,并禁用诸如反欺骗 MAC 地址之类的过滤器。 此外,如果需要,修复依赖于端口具有固定 ip 的 L2/L3 代理代码。
在 nova 侧,应仔细删除固定 ip 和子网检查异常检查,例如 PortRequiresFixedIP 和 NetworkRequiresSubnet。
数据模型影响¶
无
REST API 影响¶
无。因为当前的 neutron API 实现允许在请求中创建没有指定子网或任何固定 ip 的端口。因此,我们不需要新的标志来定义它。
安全影响¶
当然,未分配地址的端口对粗心的人来说是危险的。但是,由于这种端口的操作只是遵循现有的过程,只有网络所有者和管理员才有权操作该端口。安全影响最小。
通知影响¶
L2/L3 代理可能因为没有固定 ip 地址而感到困惑,因为这种代码路径未经测试。
其他最终用户影响¶
无
性能影响¶
无
IPv6 影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
社区影响¶
无
备选方案¶
无
实现¶
负责人¶
- 主要负责人
Yalei Wang Zang Rui Isaku Yamahata(yamahata)
- 其他贡献者
待添加
工作项¶
python neutron 客户端指定不关联任何固定 ip 地址
python nova 客户端指定不关联任何固定 ip 地址
nova neutronv2 网络驱动程序,删除当前验证 PortRequiresFixedIP 和 NetworkRequiresSubnet,修复 bug [nova-l2-net-without-subnet]
删除 neutron 中未分配地址端口的安全组或其他包过滤器。
添加测试
如果需要,修复 neutron 组件。特别是 L2/L3 代理、安全组驱动程序
依赖项¶
Nova neutronv2 网络驱动程序需要修改。
测试¶
将添加必要的 api/功能测试。
Tempest 测试¶
创建没有固定 ip 地址的端口 ** 端口之间的连接测试
使用这些端口启动虚拟机
将这些端口附加/分离到虚拟机
功能测试¶
创建没有固定 ip 地址的端口并测试端口之间的连接
API 测试¶
无
文档影响¶
相关部分将被更新。
用户文档¶
nova boot
neutron 端口创建
开发人员文档¶
无
参考资料¶
创建 Neutron L2 网络(没有子网)的行为不符合预期 https://bugs.launchpad.net/nova/+bug/1039665