Wallaby 系列发布说明

18.6.0-155

新特性

  • 地址范围现在已添加到北向的所有 OVN LSP 端口寄存器中。Northd 然后将地址范围从北向写入南向,以便可以在那里由 ovn-bgp-agent 使用。

  • OVN 机制驱动程序拒绝将端口绑定到已失效的 agent。

已知问题

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

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

  • 在 OVN bug (https://bugzilla.redhat.com/show_bug.cgi?id=2162756) 修复之前,需要将与 vlan 提供商网络关联的逻辑路由器端口的“reside-on-redirect-chassis”设置为 true。此解决方法使流量集中化,但未进行隧道传输,从而避免 MTU 问题。

  • 如果连接到路由器的所有租户网络都是 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”寄存器。

错误修复

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

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

  • [bug 2003455] 添加了额外的检查,以确保将“reside-on-redirect-chassis”设置为 true,用于与 vlan 提供商网络关联的逻辑路由器端口,无论是否启用了“ovn_distributed_floating_ip”。这是必要的,因为存在一个 OVN bug (https://bugzilla.redhat.com/show_bug.cgi?id=2162756) 导致它无法按预期工作。在修复该 bug 之前,我们需要这些解决方法,使流量集中化,但未进行隧道传输,从而避免 MTU 问题。

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

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

  • 标准化 OVN agent 心跳时间戳格式,以匹配其他 agent 类型。这修复了某些客户端(例如 gophercloud)解析 GET /v2.0/agents 的问题。

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

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

  • 现在 ML2/OVN trunk 驱动程序会防止在父端口已绑定时创建 trunk。同样,如果正在 trunk 中使用的父端口已绑定,则无法删除 trunk。

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

  • [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 应该是唯一的。

  • Neutron 可以使用 OVN 21.12 中引入的与日志相关的功能记录完整的连接。有关更多信息,请参阅 bug LP#<https://bugs.launchpad.net/neutron/+bug/2003706>

其他说明

  • OVN 迁移默认执行验证。此验证意味着在迁移完成后会生成一个实例并由简单的 ping 进行测试。它还尝试在迁移后创建新的工作负载。这对于非常简单的场景测试很有用,但对于生产环境来说并不真正有用,因为生产环境可能已经有正在运行的工作负载。更有意义的是显式要求验证,而不是隐式地将其作为迁移运行,因为迁移主要用于生产环境。VALIDATE_MIGRATION 现在默认为 False,如果需要按需验证,则需要将其更改为 True。

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

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

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

  • 自 OVN 20.06 以来,“Chassis”寄存器配置存储在“other_config”字段中,并复制到“external_ids”。在 OVN 22.09 中停止了此复制。ML2/OVN 插件首先尝试从“other_config”字段检索“Chassis”配置;如果此字段不存在(在 OVN 20.06 之前的版本中),则插件将使用“external_ids”字段。Neutron 将与不同的 OVN 版本(有和没有“other_config”字段)兼容。

18.6.0

新特性

  • 在端口被认为是已配置之后,Nova 端口绑定更新可能未被接收,导致端口未绑定。现在端口配置方法具有主动等待,它将重试多次,等待端口绑定更新。如果收到,则如果设置了 admin state 标志,端口状态将被设置为 active。

  • 添加了一个新的脚本来删除重复的端口绑定。此脚本将列出数据库中的所有 ml2_port_bindings 记录,找到具有相同端口 ID 的记录。然后,该脚本删除状态为 INACTIVE 的记录。此脚本对于删除在失败的实时迁移后保留在数据库中的残留物很有用。重要的是要注意,不应在任何实时迁移过程中执行此脚本。

  • 添加 use_random_fully 设置,允许操作员禁用 iptables 规则上的 iptables random-fully 属性。

已知问题

  • 如果禁用 use_random_fully 设置,它将阻止使用 random fully,如果两个 guest 位于不同的网络中,使用相同的 source_ip 和 source_port,并且它们尝试访问相同的 dest_ip 和 dest_port,由于竞争的元组生成,内核可能会丢弃数据包。 仅当 source_port 非常重要(例如在网络防火墙 ACL 中)并且平台内的 source_ip 绝不重复时,才应禁用此设置。

升级说明

  • 对于 ML2/OVN 驱动程序,metadata_workers 配置选项的默认值已更改为 0。由于 [OVN] 允许在本地线程中执行“MetadataProxyHandler”,OVN 元数据代理处理程序可以在 OVN 元数据 agent 的同一进程中,在本地线程中生成。这减少了 OVN SB 数据库连接的数量到 1。

错误修复

  • 现在,OVN 驱动程序正确地通告了属于 DNS 集成的扩展 dns_domain_portssubnet_dns_publish_fixed_ip。有关更多信息,请参阅 bug 1947127

  • 修复了 ML2/OVN 驱动程序中网络段标签未在 OVN 北向数据库中更新的问题。有关更多信息,请参阅 bug 1944708

18.3.0

错误修复

  • 强制执行浮动 IP 的 ‘qos_policy_id’ 属性的策略,以便只有授权用户才能设置/取消设置它。 有关更多信息,请参阅 bug LP#1957175

  • 对于 IPv4 子网,如果子网中未设置 dns_nameservers,则使用在 ‘ovn/dns_servers’ 配置选项或系统的 resolv.conf 中定义的服务器,但对于 IPv6 子网,则不使用这些服务器。 现在,IPv6 子网也将使用相同的服务器。 此外,在 ‘ovn/dns_servers’ 配置选项或系统的 resolv.conf 中添加的 dns 服务器将根据子网的 IP 版本进行过滤。 有关更多信息,请参阅 bug 报告 1951816

其他说明

  • OVN 机制驱动程序仅允许每个桥接一个物理网络。

18.2.0

错误修复

  • 更改了使用 OVN 驱动程序时的 API 行为,以强制不允许删除路由器端口上的所有 IP。 有关更多信息,请参阅 bug LP#1948457

  • 现在,agent 向服务器报告状态时,将使用设置为 report_interval 配置选项值的 RPC 超时时间。 请参阅 1948676

18.1.1

安全问题

  • 修复 bug 1939733,方法是在传递给 dnsmasq 之前,从 dhcp 额外选项值中删除第一个换行符 (\n) 之后的所有内容。

18.1.0

新特性

  • 当使用 noauth auth_strategy 时,neutron 不再要求资源创建请求在请求主体中包含一个虚拟的“project_id”。在这种情况下,将自动填充默认 project_id fake_project_id,这将使 noauth 的使用更简单。

已知问题

  • 在使用最小带宽 QoS 功能时,由于 bug https://launchpad.net/bugs/1921150,物理 NIC 资源提供程序在一段时间内被创建,其父级不正确(即超visor RP)。 现在已部分修复,新的资源提供程序将使用预期的父级(即 agent RP)创建。 但是,Placement 不允许重新父级已经存在的资源提供程序,因此在修复 bug 1921150 之后,可能需要更新 Placement DB:neutron/tools/bug-1921150-re-parent-device-rps.sql。 在所有资源提供程序都具有正确的父级之前,neutron-server 将重试重新父级更新,每次都会被拒绝,因此预计日志会受到污染,并且 Placement 上会浪费一些负载。 但是,请注意,即使资源提供程序父级不正确,带宽感知调度也应该可以工作。

错误修复

  • 1926693 引入的检测 hypervisor 主机名的逻辑,由 change 69660 引入,已得到修复,现在返回与 libvirt 一致的结果。

  • 添加了新的 resource_provider_defualt_hypervisor 选项,以替换默认的 hypervisor 名称以查找根资源提供程序,而无需在 resource_provider_hypervisors 选项中提供完整的接口或桥接列表。 此选项位于 [ovs] ini 部分用于 ovs-agent[sriov_nic] ini 部分用于 sriov-agent

18.0.0

新特性

  • 安全组规则现在具有一个新的、只读属性 normalized_cidr,其中包含在 remote_ip_prefix 属性中提供的 CIDR 的网络地址。此新属性显示了后端防火墙驱动程序使用的实际 CIDR。

  • 已为 OVN 后端添加基于安全组的网络日志记录支持。有关更多信息,请参阅 bug 1914757

  • 现在可以在使用子网池创建子网时定义网关 IP。如果可以在子网池的可用子网之一中分配网关 IP,则将创建该子网;否则将引发 Conflict 异常。

  • 添加了一种新的子网类型 network:routed。如果使用这种子网,该子网的 IP 将通过提供商网络上的 BGP 进行通告,提供商网络本身可以使用段。这基本上实现了 BGP 到机架的功能,其中 L2 连接可以限制在单个机架内,所有外部路由都由交换机使用 BGP 路由完成。在这种模式下,仍然可以在计算节点之间使用 VXLAN 连接,并且只有浮动 IP 和路由器网关才使用 BGP 路由。

  • OVN 机制驱动程序现在支持 VLAN 类型网络。这需要 OVN 版本为 20.09 或更高版本。

  • 引入了 port_device_profile 属性到端口,用于指定每个端口所需的设备配置文件。此参数是一个字符串。此参数传递给 Nova,Nova 从 Cyborg 检索请求的配置文件:设备配置文件

    操作员可以通过配置选项启用此功能

    [ml2]
    extension_drivers = port_device_profile
    
  • Neutron 现在实验性地支持具有系统范围和默认角色(member、reader、admin)的新 API 策略。

  • 已为 SR-IOV agent 添加了对 accelerator-direct VNIC 类型的支持。此类型表示支持任何类型的硬件加速的端口,并由 Cyborg (https://wiki.openstack.org/wiki/Cyborg) 提供。RFE: 1909100accelerator-direct-physical 仍然不受支持。

  • 引入了一个新的 API 资源 address group 及其 CRUD 操作,用于表示 IPv4 和 IPv6 地址块的组。添加了一个新的选项 --remote-address-groupsecurity group rule create 命令,以允许使用地址块组进行网络连接。后端支持已添加到 openvswitch 防火墙。当地址组中的 IP 地址更新时,更改也将反映在关联安全组规则的防火墙规则中。有关更多信息,请参阅 RFE:1592028

  • 添加了删除 ML2/OVN agent 的支持。 之前,删除 agent 会返回 Bad Request 错误。 除了删除 agent 之外,此更改还大大提高了 ML2/OVN agent 处理代码的可扩展性。

  • 更新已绑定的端口,并带有 QoS minimum_bandwidth 规则,并带有新的 QoS 策略,其中带有 minimum_bandwidth 规则,现在也会更改 placement 中的分配。

    注意

    无法更新附加到绑定到 VM 的端口的 QoS 策略的 minimum_bandwidth 规则。

  • 添加了一种新的 vnic 类型 vdpa,允许请求使用 vHost-vDPA 卸载的端口。ML2/OVS 和 ML2/OVN mech 驱动程序现在支持 vHost-vDPA vnic 类型。vHost-vDPA 类似于 vHost-user 或内核 vhost 卸载,但利用了 Linux 5.7 内核中新引入的 vDPA 总线。vDPA 接口可以在软件或硬件中实现,在硬件中实现时,它们提供与 SR-IOV 或硬件卸载 OVS 相当的性能,同时提供 SR-IOV 和硬件卸载 OVS 无法提供的两个主要优势。与替代方案不同,vHost-vDPA 允许透明地迁移实例,并为客户提供标准的 virtio-net 接口,避免需要在客户中安装特定于供应商的驱动程序。

  • OVN 驱动程序现在支持 VXLAN 类型的网络。这需要 OVN 版本为 20.09 或更高版本。

已知问题

  • 即使 “igmp_snooping_enable” 配置选项表明启用此选项时不会将流量泛洪到未注册的 VM,ML2/OVN 驱动程序也没有遵循该行为。 现在已修复此问题,并且当设置此配置选项为 True 时,ML2/OVN 将不再将流量泛洪到未注册的 VM。

  • Neutron 中对新策略和系统范围上下文的支持是实验性的。当在 Neutron 中启用配置选项 enforce_new_defaults 时,新的默认规则将被强制执行,在某些情况下可能无法正常工作。

升级说明

  • 地址组现在具有标准属性。在 alembic 迁移中,在数据迁移到 standardattributes 表后,address_groups 的原始 description 列将被删除。description 字段也从地址组对象和 DB 模型中移除。此更改需要在 DB 迁移后重启 neutron-server 服务,否则用户在调用地址组 API 时会收到服务器错误。

  • 配置选项 [oslo_policy] policy_file 的默认值已从 policy.json 更改为 policy.yaml。正在使用自定义或先前生成的静态策略 JSON 文件的操作员应生成新的策略文件或将其转换为 YAML 格式。使用 oslopolicy-convert-json-to-yaml 工具以向后兼容的方式将 JSON 策略文件转换为 YAML 格式。

弃用说明

  • JSON 策略文件在 Victoria 开发周期中被 oslo.policy 库弃用。因此,此弃用在 Wallaby 周期中被注意到,预计 oslo.policy 将在未来删除对它的支持。因此,操作员需要转换为 YAML 策略文件。请参阅升级说明以获取有关迁移任何自定义策略文件的详细信息。

  • 弃用 keepalived_use_no_track 配置选项,因为 keepalived 版本检查是决定是否可以在 keepalived 配置文件中使用 no_track 的安全来源。

  • 删除了 Neutron 中的 XenAPI 支持。此驱动程序不再受 Nova 和 Neutron 支持。配置选项已被标记为“已弃用并即将删除”,将在 X 版本中删除。

  • 旧的 API 策略现已弃用。它们将在未来被删除。

错误修复

  • 停止从 ovs agent 发送 agent heartbeat,当它检测到 OVS 已死机时。 这有助于提醒云操作员给定节点上存在问题。

  • 修复了启用 OVS 卸载时的 MAC 学习问题。OVS 防火墙减少了普通动作的使用,以降低 CPU 利用率。这会导致插入一个泛洪规则,因为没有在入站流量上进行 MAC 学习。虽然这对于非卸载情况是可以的,但使用 OVS 卸载时,泛洪规则没有被卸载。这修复了卸载情况下的 MAC 学习,因此我们避免了泛洪规则。有关更多信息,请参阅 bug 1897637

  • 修复了 OVN 驱动程序中的配置问题,该问题阻止了外部 IGMP 查询到达虚拟机。 有关详细信息,请参阅 bug 1918108

其他说明

  • 为 neutron 服务器添加了一个新的配置选项 enable_traditional_dhcp,如果将其设置为 False,neutron 服务器将禁用 DHCP 配置块、DHCP 调度器 API 扩展、网络调度机制以及 DHCP RPC/通知。此选项可以与 OVS 代理的 dhcp 扩展一起使用以启用分布式 DHCP,或者用于需要永久禁用 DHCP 代理相关功能的部署。

  • 为了提高 DHCP agent 的性能,它将不再为 Neutron 中创建的每个端口类型配置 DHCP 服务器。 例如,对于浮动 IP 或路由器 HA 接口,不需要,因为客户端不会为它们发出 DHCP 请求

  • OVN Metadata Agent 现在创建的网络命名空间包括 Neutron 网络 UUID 在其名称中。 以前,使用了 OVN datapath UUID,并且对于操作员和调试来说,很难确定哪个命名空间对应于哪个 Neutron 网络。

  • 从 oslo.rootwrap 迁移到 oslo.privsep 中定义的那样,所有 OpenStack 项目都应从 oslo.rootwrap 迁移到 oslo.privsep,因为“oslo.privsep 提供了一个更高级别的安全模型,更快且更安全”。此迁移将以在多个补丁中顺序执行的方式结束,检查其中任何一个都不会破坏当前的功能。为了便于迁移,以便在 privsep 上下文中执行所有外部命令,将一个新的输入变量“privsep_exec”,默认值为“False”,添加到 neutron.agent.linux.utils.execute 中。这将使代码转到经过 privsep 装饰的执行器。迁移完成后,将删除这个新的输入参数。

  • 当启用 API 策略的新默认值时,一些 API 请求可能不再对项目管理员用户可用,因为它们仅对系统范围用户可用。请注意,系统范围令牌不包含 project_id,因此例如,使用指定的物理网络详细信息创建提供者网络现在需要系统范围管理员用户显式设置 project_id。