使用 OVN 网络

概述

OVN 在很大程度上被认为是 OVS 的演进。虽然建议操作员继续使用 OVS 与 Ironic,但 OVN 具有更强大的功能集,并将一些网络配置从配置文件转移到服务模型,从而提供更具可扩展性的软件定义网络体验。然而,与所有较新的技术一样,也存在一些注意事项和问题。本文档旨在传达 OVN 的状态、功能,并为操作员提供前进所需的上下文。

警告

OVN 正在积极开发中,这些信息可能会很快过时。我们提供了链接以帮助传播信息并使操作员了解当前状态。

挑战

DHCP

历史上,虽然 OVN 包含一个 DHCP 服务器,但该 DHCP 服务器没有能力处理需要自定义属性的客户端,例如 PXE 和 iPXE 用于启用网络启动操作的那些属性。

通常,这导致使用 OVN 的裸机操作员继续运行 neutron-dhcp-agent 服务,并设置适当的 OVN 配置以禁用 OVN 对裸机端口的 DHCP 请求的响应。请参阅 路由网络 以获取有关此设置的更多信息。

截至 Ironic 2023.2 版本,Ironic 项目可以确认 OVN 的 DHCP 服务器在使用 IPv4、OVS 版本 3.11 和 OVN 版本 23.06.0 时适用于 PXE 和 iPXE 操作。

目前 IPv6 的支持取决于 Neutron 的更改,因为 IPv6 需要额外的配置选项和不同的行为模式,因此尚未经过测试。如果您此时需要 IPv6,建议您继续使用 neutron-dhcp-agent。目前 Neutron 正在进行这项支持的工作 变更 890683bug 20305201

警告

Ironic 项目尚未明确测试 OVN 与 HTTPBoot 接口的使用情况,并且在 Neutron 集成 IPv6 支持准备好使用之前,不太可能进行测试。该项目预计不会出现任何特定问题,但 OVN DHCP 服务器与接口经过测试的服务器完全不同。

最大传输单元

OVN 已经确定其处理 MTU 的方式是不完整的。实际上,它假设 MTU 不会受到网关以外的进一步限制,这在某些虚拟机的情况下可能有效,但可能不适用于裸机,因为您的流量可能通过较低或较高的 MTU 传输。

理想情况下,您的环境应该具有一致的 MTU。如果您无法拥有一致的 MTU,我们建议使用前端路由器来限制 MTU 和最大段大小 (MSS),以确保入站流量的大小和分片适当。出站流量应根据 DHCP 服务配置继承其 MTU 大小。

您可以跟踪有关 MTU 处理的一些事项

要在基于 Linux 的路由器上限制 MTU 和 MSS,可以使用以下命令

ip route add $network via $OVN_ROUTER advmss $MAX_SEGMENT_SIZE mtu lock $MTU

TFTP 的 NAT

由于 NAT 和连接跟踪层在 OVN 中应用的方式不同,因为路由器不会像命名空间或本地 OS 内核那样出现,因此您将无法为直接由 OVN 管理的裸机网络的 NAT 转换启用 NAT,除非您在网络内运行单独的 TFTP 服务。

这是因为 OVN 网关的内核无法将返回数据包与连接跟踪层直接关联和处理。目前尚不清楚有直接的解决方法,但通常 Ironic 鼓励尽可能使用虚拟媒体来避免此类问题,并确保部署具有更高的操作安全性。使用 redfish 硬件类型的用户可以在我们的 Redfish 文档中了解 虚拟媒体启动

警告

创建 FIP,例如可能用于授予对网络上内部节点 SSH 访问权限的 FIP(例如 Tempest 可能使用的 FIP),会建立 1:1 NAT 规则。在这种情况下,TFTP 数据包无法通过 OVN 传输,并且网络启动操作将失败。

救援

由于上述 NAT 问题,我们知道救援操作可能无法正常工作。

这正在跟踪为 bug 2033083

GRUB 的 PXE 启动

初步测试表明,通过 OVN 启动 EFI Grub2 似乎不起作用。由于某种原因,Grub2 认为网络掩码不正确,基于 DHCP 交互,并认为 TFTP 服务器本地连接。

例如,如果为客户端分配 10.1.0.13/28,默认网关为 10.1.0.1,tftp 服务器为 10.203.101.230,那么 grub2 认为其默认路由为 10.0.0.0/8。

这正在跟踪为 bug 2033430,直到我们能够更好地理解根本原因并向适当的项目提交错误报告。

所需配置

OVN 旨在以分布式方式为云中虚拟机的每个计算超visor提供数据包处理。但是,对于裸机实例,您可能需要一个专门的“网络节点”池来处理 OVN 流量。

作为网关的 Chassis

必须配置网络节点 chassis 以充当网关。

可以手动配置,但应该(据 Ironic 所知)由 Neutron 配置并设置在与桥接映射匹配的接口上。至少,它在 Devstack 中以这种方式工作。

出站 SNAT

由于外部端口优先级处理方式与 Chassis 网关不同的方式,因此已知通过 Neutron/OVN 路由器进行的出站连接存在问题,正如之前提到的相同问题。最终,这可能会导致端口之间的不匹配,并导致间歇性流量丢失。一种已知的解决方法是手动更新 HA Chassis 组和网关 Chassis 优先级,以便它们与给定的 Neutron 网络和关联的路由器同步。

这正在跟踪为 bug 1995078

ML2 插件

Neutron 提供的 ovn-routertrunk ml2 插件必须启用。

如果您需要连接到网络…

例如,如果您需要将某些内容绑定到网络以供裸机使用,而不仅仅是专用接口,则需要在 br-ex 集成桥接上进行连接,而不是像使用 OVS 时那样在 br-int 上进行连接。

VTEP 交换机支持

Ironic 在 API 版本 1.90 中添加了对 OVN VTEP 交换机的 Alpha 质量支持。当将密钥 vtep-logical-switchvtep-physical-switchport_id 设置在 port.local_link_connection 中时,Ironic 会将其传递给 Neutron,以便将其包含在绑定配置文件中以启用 OVN 支持。

报告称这种方法有效,但 Ironic 开发人员无法访问物理硬件来完全测试此功能。如果您对该功能有任何反馈,请联系 Ironic 社区。

未知

目前尚不清楚 OVN 是否可以执行并启用集成设备的物理端口上的 VXLAN 附件,因此建议操作员继续使用 vlan 网络与现有的 ML2 集成。