2023.2 系列发布说明

23.4.0

错误修复

  • 对于 OVN DPDK 端口,不再使用期望由 QEMU 发送的 RARP 帧的实时迁移激活策略。这是因为对于 DPDK 端口,QEMU 不会发送 RARP 帧,这会影响 DPDK 端口在实时迁移完成后恢复网络连接的时间。请注意,由于此更改,在实时迁移期间可能会观察到来自这些端口的一些少量重复数据包。

  • 子网策略已更新,允许其他用户对其进行操作。网络所有者和读取者现在可以检索子网,项目成员现在可以更新和删除子网。有关更多信息,请参阅 bug 2038646

23.3.0

安全问题

  • 具有 status=DOWN 的 ML2/SR-IOV 端口将始终将 VF 链路状态设置为“disable”,而无论端口字段 propagate_uplink_status 的值如何。端口禁用,以停止任何传输,优先于链路状态“auto”值。

错误修复

  • 修复了将浮动 IP 关联到 OVN 负载均衡器时的问题。有关更多详细信息,请参阅 LP#2068644

23.2.0

序言

OVN 更改了对 NAT 规则的支持,包括一个新的列和自动发现逻辑,以了解逻辑路由器网关端口的 NAT。

新特性

  • 添加了一个新的 OVN 驱动程序 Northbound DB 列,以允许配置 NAT 规则的网关端口。 如果 OVN 后端支持 Northbound DB NAT 表中的 gateway_port 列,则将浮动 IP 的网关端口 UUID 配置为任何浮动 IP,以防止南北流量问题。 之前创建的 FIP 规则仅在维护任务期间更新一次,以包含网关端口引用(如果 OVN 后端支持)。 如果所有 FIP 条目已配置,则不会执行任何维护操作。

  • 现在,一个新的 ovn-cms-options 选项 enable-chassis-as-extport-host 被 ML2/OVN 识别,并用于识别有资格调度 OVN 外部端口的节点。 此功能向后兼容,如果没有任何节点包含这个新选项,外部端口将继续使用 enable-chassis-as-gw 选项进行调度,就像以前一样。 此更改还引入了对每个 HA Chassis Group 的成员数量的限制,为 5,与网关路由器端口副本的限制相匹配。 这是因为 OVN 使用 BFD 监控每个成员的连接性,并且拥有无限数量的成员可能会给 OVN 带来很大的压力。

  • 远程地址组支持已添加到基于 iptables 的防火墙驱动程序(IptablesFirewallDriver 和 OVSHybridIptablesFirewallDriver),此前它仅在 OVSFirewallDriver 中可用。有关更多信息,请参阅 bug 2058138

  • 为以下资源添加了标签策略:网络、子网、端口、路由器、浮动 IP、网络段、网络段范围、安全组和安全组规则。这些策略控制资源的标签的创建、更新和删除。

已知问题

  • bug 2048785 的修复仅修复了新创建的 trunk 父端口。 如果需要修复已经存在的 trunk,则需要删除并重新创建受影响的 trunk,或者手动设置 tpt 端口的 vlan_mode 和 tag:ovs-vsctl set Port tpt-... vlan_mode=access tag=0

错误修复

  • [bug 2036423] 现在无法删除具有路由器接口的子网网关 IP;子网网关 IP 的修改已经被禁止。

  • 在同步 OVN 数据库时,无论是运行迁移命令还是在启动期间,负责同步的代码只会清理具有 agent_type OVN Controller agent 的主机的 segment-to-host 映射。 之前,同步会清理(删除)非 OVN 主机的 segment-to-host 映射。修复了 bug:2040172

  • [bug 2045889] 现在绑定到 ML2/OVN 的端口在 VIF 详细信息字典中包含 OVS 网桥名称和数据平面类型。 注意:在 ML2/OVS 到 ML2/OVN 迁移中,本地主机 OVN 网桥(集成网桥)每个端口是未知的;默认情况下将使用“br-int”(该值很少更改)。

  • [bug 2036705] Neutron port.status 字段(“ACTIVE”、“DOWN”)现在基于 ML2/OVN 逻辑交换机端口的 upenabled 标志设置。 用户现在可以设置 port.admin_state_up,该标志会复制到 lsp.enabled 标志,以启用或禁用端口。 如果端口被禁用,则停止流量并将 port.status 设置为“DOWN”。

其他说明

  • 当同时启用以下配置时

    • OVN L3 服务插件 (ovn-router)

    • 端口转发服务插件 (port_forwarding)

    • 在 ML2 配置变量 tenant_network_types 中配置的“vlan”或“flat”网络类型

    • 启用分布式浮动 IP 流量 (enable_distributed_floating_ip = True)

    Neutron 服务器将在插件初始化期间报告警告,因为这是一个无效的配置矩阵。在这种情况下,浮动 IP 始终需要集中化。有关更多详细信息,请参阅 bug 报告

  • 现在 Neutron 支持 OVN 负载均衡健康监控端口 (ovn-lb-hm:distributed) 的新 ‘device_owner’ 值,为这些端口提供 LOCALPORT 行为。 将这些端口定义为新值而不是旧值 (network:distributed) 的责任在于 OVN-Octavia Provider 驱动程序,它将负责这些端口的数据库转换。

  • 将扩展 subnetpool-prefix-ops 添加到 ML2/OVN 机制驱动程序。

23.1.0

错误修复

  • 修复了 DHCP agent 与 OVN 元数据 agent 结合部署以向 baremetal 节点提供元数据的情况。在这种情况下,DHCP agent 将不会设置 OVN 元数据 agent 服务所需的路由,导致 baremetal 节点无法查询元数据服务。有关更多信息,请参阅 bug 1982569

  • 在端口批量创建期间,如果 IPAM 分配失败(例如,如果 IP 地址超出子网 CIDR),则在引发异常之前,将删除已创建的其他 IPAM 分配。修复了 bug 2039550

23.0.0

新功能

  • 添加了一个新的 API,允许云管理员为每个为项目创建的新默认和/或自定义安全组自动定义一组安全组规则。

  • Neutron 允许云管理员限制虚拟机查询 Nova 元数据服务的速率,以保护 OpenStack 部署免受 DoS 或行为不当的实例的影响。此新功能可以在 neutron.conf 文件中配置。有关更多详细信息,请参阅文档中 Neutron 配置下的“元数据服务查询速率限制”部分。

  • 添加了一个新的 API 扩展 network-ha。此扩展为网络 API 添加了一个新字段:“ha”。该字段不可见,只能在 POST(创建)操作中传递。这将定义此网络是一个高可用性 (HA) 网络,并在同一个数据库事务中创建一个 ha_router_networks 注册表。

  • OVN L3 调度器会将显式配置为网关的 chassis 分配给路由器网关端口(OVN 逻辑路由器端口)。如果没有可用的候选者,则将使用“neutron-ovn-invalid-chassis”,并在日志中打印警告消息。

  • 使用新的 hints 端口属性的第一个提示是 ovs-tx-steering 提示。此可用性由扩展程序标记:port-hint-ovs-tx-steering。此提示特定于 openvswitch 机制驱动程序。它能够控制 Open vSwitch 的 Userspace Tx 数据包转向功能。有关 Open vSwitch 功能的详细信息,请参见:https://docs.openvswitch.org/en/2025.2/topics/userspace-tx-steering/ hints 属性的有效值(由第二个扩展程序引入)为:{"openvswitch": {"other_config": {"tx-steering": "hash|thread"}}}

  • 端口现在具有一个 hints 属性,可以在其中传递特定于后端的调整选项给 Neutron。 hints 属性的可用性由 port-hints 扩展程序发出信号。默认情况下,hints 属性仅供管理员使用。其值是一个字典,以机制驱动程序别名为键。可能的值由机制驱动程序定义。管理员用户可以在端口创建或更新请求中请求一个提示。顾名思义,提示不是一个要求 - Neutron 在可以的情况下应用提示,但如果不能应用,则可以忽略它。

已知问题

  • 当使用 ML2/OVN 后端及其 L3 服务插件 (ovn-router) 并且使用“vlan”或“flat”网络类型作为租户网络类型时,如果启用了分布式浮动 IP (enable_distributed_floating_ip = True),则浮动 IP 端口转发 (FIP PF) 将不起作用。要解决此问题,需要进行以下更改之一

    • 应使用隧道网络(“geneve”或“vxlan”)作为租户网络类型,或者

    • 浮动 IP 应集中化 (enable_distributed_floating_ip = False)。

    有关更多详细信息,请参见 bug 2028846

  • 在隔离网络上,元数据服务的可用性受到限制或根本不存在。 当管理它的 DHCP agent 是冗余时,IPv4 元数据是冗余的,但恢复与 DHCP 租约的续订相关联,这使得大多数恢复非常缓慢。 IPv6 元数据根本不冗余,因为 IPv6 元数据地址只能在同一时间在单个位置配置,因为它是链路本地的。 多个 agent 尝试配置它将生成 IPv6 重复地址检测失败。

    管理员可能会在 DHCP 命名空间中看到 IPv6 元数据地址处于“dadfailed”状态,这是因为上述原因,仅表示它不可用性很高。 在对隔离的元数据服务进行重新设计之前,没有更好的部署选项。 请参阅 bug 1953165 以获取更多信息。

  • 在 OVN 22.09 中,添加了“localnet_learn_fdb”选项,启用 localnet 端口学习 MAC 地址并将它们存储在 FDB 表中。对于这些 MAC 地址没有老化机制(这就是为什么默认情况下不启用此选项的原因),因此需要谨慎使用,尤其是在提供程序网络很大的情况下。建议定期手动清理 FDB 表,以避免可扩展性问题 - 直到 OVN 实现此老化机制,该机制在 https://bugzilla.redhat.com/show_bug.cgi?id=2179942 上跟踪。

  • 如果连接到路由器的所有租户网络都是 VLAN 或 FLAT 类型,则仅使用 redirect-type=bridged 选项。在这种情况下,它们的流量将被分发。但是,如果同一路由器连接了 VLAN/FLAT 和 geneve 网络,则不设置 redirect-type 选项,因此 VLAN/FLAT 网络的流量也将被集中化,但未进行隧道传输。

  • 在使用 ML2/OVN 时,在升级过程中,存储的 OVS system-id 值可能会发生变化。ovn-controller 服务将基于此 OVS system-id 创建“Chassis”和“Chassis_Private”寄存器。如果 ovn-controller 进程未优雅停止,则可能导致 OVN 南向数据库中存在重复的“Chassis”和“Chassis_Private”寄存器。

升级说明

  • 在升级过程中,将会在 Neutron 数据库中创建一组四个默认安全组规则。这些规则与到目前为止添加到每个新安全组的相同默认规则。

    • 允许所有传出 IPv4 流量的规则(对于所有默认和自定义安全组),

    • 允许所有传出 IPv6 流量的规则(对于所有默认和自定义安全组),

    • 允许所有来自同一安全组的传入 IPv4 流量的规则(对于每个项目的默认安全组),

    • 允许所有来自同一安全组的传入 IPv6 流量的规则(对于每个项目的默认安全组)。

    现在,云管理员可以使用 default-security-group-rules API 修改这些规则。

  • Neutron 服务默认启用 API 策略(RBAC)的新默认值和范围。配置选项 [oslo_policy] enforce_scope[oslo_policy] oslo_policy.enforce_new_defaults 的默认值已更改为 True

    这意味着,如果您使用系统范围令牌访问 Neutron API,则请求将因 403 错误代码而失败。 此外,默认值将默认强制执行。 要了解每个策略规则的新默认值,请参阅 策略新默认值。 有关 Neutron API 策略更改的更多详细信息,请参阅 策略概念

    如果您想禁用它们,请修改 neutron.conf 文件中的以下配置选项值

    [oslo_policy]
    enforce_new_defaults=False
    enforce_scope=False
    
  • 在 ML2/OVN 中,任何新的路由器网关端口(OVN 逻辑路由器端口)都将仅安排在配置为网关的 chassis 上。任何现有的路由器网关端口将保留当前的 chassis 分配。

弃用说明

  • 自 2023.2 版本起,Neutron 在 Windows 操作系统上的支持已被弃用,并将于 2024.2 中删除。

  • “ipv6_pd_enabled”已被标记为已弃用并标记为实验性。要继续使用它,部署者必须在 neutron.conf 的“experimental”部分将“ipv6_pd_enabled”选项设置为 True。 请参阅 Dibbler 项目已完成

  • 该工具 neutron-debug 已被删除。由于删除了 neutron 客户端 shell 代码,因此该工具不再可用。它自 Newton(9.0)周期以来已被弃用且未维护。

错误修复

  • 配置选项 agent_down_time 现在限制为最大值 2147483,因为如果配置更高,neutron-server 将无法启动。有关更多信息,请参阅 bug 2028724

  • 1986003 修复了并发请求激活相同的端口绑定时,其中一个请求返回 500 内部服务器错误的问题。 使用修复后,一个请求将成功返回,而另一个将返回 409 Conflict(绑定已激活)。 这修复了 nova 实时迁移中可能发送这些并发请求时出现的错误。 Nova 可以正常处理 409/Conflict 响应。

  • [bug 1999209] Neutron-API 现在防止更改浮动 IP 的内部 IP。 如果固定的 IP 地址与浮动 IP 关联,则它将引发错误。

  • [bug 2022914] Neutron-API 支持在 ML2/OVN 设置中使用中继作为南向连接。在此之前,API 的维护工作者需要一个仅限 leader 的连接,该连接已被删除。

  • 默认情况下,localnet 端口不会学习 MAC 地址,因此它们不会存储在 OVN SB DB 的 FDB 表中。 这会导致当目标流量由 OpenStack 识别为未知 IP 时出现泛洪问题。 在 OVN 22.09 中,添加了“localnet_learn_fdb”选项,启用这些端口学习 MAC 地址并将它们存储在 FDB 表中。 请注意,这些 MAC 地址没有老化机制,因此默认情况下未启用此选项,需要谨慎使用,尤其是在提供程序网络很大的情况下,以及/或随着时间的推移手动清理 FDB 表以避免可扩展性问题,直到 OVN 在 https://bugzilla.redhat.com/show_bug.cgi?id=2179942 上实现它。

  • 对于 OVN 版本 v22.09.0 及更高版本,mcast_flood_reports 选项现在设置为 false,适用于除“localnet”类型以外的所有端口。过去,此选项设置为 true,作为核心 OVN 多播实现中一个 bug 的解决方法。

  • 修复了 OVN 驱动程序中的一个问题,即使是意外删除,网络元数据也可能变得不可用。 要重新创建端口,用户现在可以使用 Neutron API 禁用然后启用与网络关联的一个子网的 DHCP。 这将尝试创建端口,类似于 ML2/OVS 中 DHCP agent 中发生的情况。 有关更多信息,请参阅 bug 2015377

  • [bug 2003455] 作为先前提交的一部分 (https://review.opendev.org/c/openstack/neutron/+/875644),redirect-type=bridged 选项已设置为所有路由器网关端口(cr-lrp ovn 端口)。但是,这破坏了通过这些路由器连接到提供商网络的 geneve 租户网络的 N/S 流量,而这些路由器启用了 redirect-type 选项。为了解决此问题,我们确保仅当连接到路由器的所有网络都是 VLAN 或 FLAT 类型时,才设置 redirect-type 选项,否则我们将回退到默认选项。这意味着如果同一路由器连接了 VLAN 和 geneve 租户网络的混合网络,VLAN 流量将被集中化(但未进行隧道传输)。如果需要分发 VLAN/FLAT 流量,则应使用不同的路由器。

  • 添加了一个新的 OVN 维护方法 remove_duplicated_chassis_registers。此方法将定期检查 OVN 南向“Chassis”和“Chassis_Private”表,查找重复的寄存器。较旧的寄存器(基于“Chassis_Private.nb_cfg_timestamp”值)将在多个寄存器具有相同的 hostname 时被删除,hostname 应该是唯一的。

其他说明

  • NAT 表中的 external_mac 条目用于分发/集中化 FIP 的流量。如果设置了 external_mac,则流量将被分发(DVR)。如果为空,则流量将通过网关端口集中化(无 DVR)。在端口状态过渡到 down 时,无论 DVR 是否启用,external_mac 都会被删除,从而导致 DVR 的 FIP 流量被集中化——尽管这对于不会接受流量的 down 端口来说无关紧要。

  • 引入了一个数据库约束,以将每个项目的 ha_router_networks 注册表数量限制为仅一个。 此注册表用于绑定项目和网络,从而定义相应的网络作为高可用性 (HA) 网络。 从定义上讲,每个项目只能存在一个 HA 网络。

  • PluginReportStateAPI 有一个新版本 (1.3),其中 has_alive_neutron_server() 不再始终返回 True,而是执行 DB 连接检查并相应地返回 True/False。 这样,代理不仅可以检查 MQ,还可以检查服务器的 DB 连接。

  • 添加了一个每天运行一次的维护任务,负责清理 5 天或更长时间未更新的 Hash Ring 节点。有关更多信息,请参阅 LP #2033281。

  • 在 DEFAULT 部分添加了一个新的配置选项,名为 my_ip。 此新的配置选项默认设置为配置为到达默认网关的本地 IPv4。 此新设置对于需要在其配置的另一部分(例如 OVS/local_ip)中配置此 IP 的运营商而无需依赖任何外部模板系统可能很有用。

  • 在 DEFAULT 部分添加了一个新的配置选项,名为 my_ipv6。 此新的配置选项默认设置为配置为到达默认网关的本地 IPv6。 此新设置对于需要在其配置的另一部分(例如 OVS/local_ip)中配置此 IP 的运营商而无需依赖任何外部模板系统可能很有用。

  • 将缺失的扩展 uplink-status-propagation 添加到 ML2/OVN 机制驱动程序。 此扩展由 ML2/SR-IOV 机制驱动程序使用,可以与 ML2/OVN 一起加载。 现在可以创建定义了“uplink-status-propagation”标志的端口。

  • ML2/OVN 虚拟端口无法绑定到虚拟机。 如果将端口 IP 地址作为允许的地址对分配给另一个端口,则第一个端口被视为虚拟端口。 如果第二个端口(非虚拟端口)绑定到 ML2/OVN,则虚拟端口无法绑定到虚拟机;仅创建虚拟端口以保留一组 IP 地址供其他端口使用。 OVN 机制驱动程序防止虚拟端口具有设备 ID;在绑定端口时提供设备 ID。