Ussuri 系列发布说明¶
16.4.2-138¶
新特性¶
dns 分配将反映网络中定义的 dns 域或用户在创建端口时使用 --dns-domain 发送的 dns 域,而不是仅获取 neutron 配置中定义的 dns 域
添加了删除 ML2/OVN agent 的支持。 之前,删除 agent 会返回 Bad Request 错误。 除了删除 agent 之外,此更改还大大提高了 ML2/OVN agent 处理代码的可扩展性。
添加
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 绝不重复时,才应禁用此设置。
错误修复¶
1671448 现在使用标准的可配置 RBAC 策略(‘get_quota’、‘update_quota’、‘delete_quota’)管理 Neutron 配额的访问权限。
强制执行浮动 IP 的 ‘qos_policy_id’ 属性的策略,以便只有授权用户才能设置/取消设置它。 有关更多信息,请参阅 bug LP#1957175。
更改了使用 OVN 驱动程序时的 API 行为,以强制不允许删除路由器端口上的所有 IP。 有关更多信息,请参阅 bug LP#1948457
对于 IPv4 子网,如果子网中未设置 dns_nameservers,则使用在 ‘ovn/dns_servers’ 配置选项或系统的 resolv.conf 中定义的服务器,但对于 IPv6 子网,则不使用这些服务器。 现在,IPv6 子网也将使用相同的服务器。 此外,在 ‘ovn/dns_servers’ 配置选项或系统的 resolv.conf 中添加的 dns 服务器将根据子网的 IP 版本进行过滤。 有关更多信息,请参阅 bug 报告 1951816。
修复了 OVN 驱动程序中的一个问题,即使是意外删除,网络元数据也可能变得不可用。 要重新创建端口,用户现在可以使用 Neutron API 禁用然后启用与网络关联的一个子网的 DHCP。 这将尝试创建端口,类似于 ML2/OVS 中 DHCP agent 中发生的情况。 有关更多信息,请参阅 bug 2015377。
其他说明¶
将缺失的扩展
uplink-status-propagation添加到 ML2/OVN 机制驱动程序。 此扩展由 ML2/SR-IOV 机制驱动程序使用,可以与 ML2/OVN 一起加载。 现在可以创建定义了“uplink-status-propagation”标志的端口。
OVN 机制驱动程序仅允许每个桥接一个物理网络。
16.4.1¶
安全问题¶
修复 bug 1939733,方法是在传递给 dnsmasq 之前,从 dhcp 额外选项值中删除第一个换行符 (
\n) 之后的所有内容。
16.4.0¶
错误修复¶
1926693 引入的检测 hypervisor 主机名的逻辑,由 change 69660 引入,已得到修复,现在返回与 libvirt 一致的结果。
添加了新的
resource_provider_defualt_hypervisor选项,以替换默认的 hypervisor 名称以查找根资源提供程序,而无需在resource_provider_hypervisors选项中提供完整的接口或桥接列表。 此选项位于[ovs]ini 部分用于ovs-agent和[sriov_nic]ini 部分用于sriov-agent。
16.3.2¶
其他说明¶
为了提高 DHCP agent 的性能,它将不再为 Neutron 中创建的每个端口类型配置 DHCP 服务器。 例如,对于浮动 IP 或路由器 HA 接口,不需要,因为客户端不会为它们发出 DHCP 请求
OVN Metadata Agent现在创建的网络命名空间包括 Neutron 网络 UUID 在其名称中。 以前,使用了 OVN datapath UUID,并且对于操作员和调试来说,很难确定哪个命名空间对应于哪个 Neutron 网络。
16.3.1¶
错误修复¶
修复了 OVN 驱动程序中的配置问题,该问题阻止了外部 IGMP 查询到达虚拟机。 有关详细信息,请参阅 bug 1918108。
16.3.0¶
已知问题¶
即使 “igmp_snooping_enable” 配置选项表明启用此选项时不会将流量泛洪到未注册的 VM,ML2/OVN 驱动程序也没有遵循该行为。 现在已修复此问题,并且当设置此配置选项为 True 时,ML2/OVN 将不再将流量泛洪到未注册的 VM。
错误修复¶
修复了启用 ovs offload 时的 MAC 学习问题。 OVS 防火墙减少了正常操作的使用量以减少 CPU 利用率。 这导致了泛洪规则,因为没有在入站流量上进行 MAC 学习。 虽然这对于非 offload 情况来说是可以的,但在使用 ovs offload 时,泛洪规则不会被 offload。 此修复程序修复了 offload 中的 MAC 学习,因此我们避免了泛洪规则。 #1897637。
16.2.0¶
新特性¶
添加了新的配置选项
keepalived_use_no_track。 如果部署中使用的 keepalived 版本不支持其配置文件中的no_track标志(例如 keepalived 1.x),则应将此选项设置为False。 此选项的默认值为True。
16.1.0¶
新特性¶
添加了一个新的配置选项
http_retries。 此选项允许配置 nova 或 ironic 客户端在 HTTP 调用失败时重试的次数。
DVR路由器现在支持flat网络。
添加了对 OVN 中路由器可用性区域的支持。 OVN 驱动程序现在可以从路由器的 availability_zone_hints 字段读取,并根据给定的可用性区域相应地调度路由器端口。
弃用说明¶
neutron.agent.linux.interface.LinuxInterfaceDriver 类的抽象方法
plug_new现在接受一个可选参数link_up。 未使用link_up的此方法(该方法接受 5 到 9 个位置参数)的使用现在已被弃用,并且在 W 版本中将不再可能。 继承自此基类的第三方驱动程序应更新其plug_new方法的实现。
错误修复¶
1875981 Neutron 现在在管理员删除端口、服务器或浮动 IP 时,会正确删除相关的 DNS 记录。
修复了错误 1876092,该错误导致在与
DVR路由器一起使用的flat网络上出现 DUP ICMP 响应。
修复了一个问题,即在双栈(IPv4 + IPv6)网络上的客户端无法从 dnsmasq DHCP 服务器获取配置。 请参阅错误:1876094。
16.0.0¶
序言¶
16.0.0 版本包含许多错误修复和新特性。
最重要的改进包括:
Neutron 不再支持 Python 2,支持 Python 3.6 和 3.7。
地址范围和子网池现在可以使用基于角色的访问控制(
RBAC)机制与其他租户共享。安全组现在可以设置为
stateful(有状态)。Conntrack 不会用于此类组的任何规则。当前仅iptables和iptables_hybrid驱动程序支持此功能。Neutron API 现在允许在
POST请求中直接标记资源。IGMP 侦听(多播)现在可以在
OVS和OVN驱动程序中启用。可以在 dnsmasq DHCP 代理驱动程序中配置 dhcp-host 条目的 IPv6 地址列表。这解决了在只有一个 IP 地址可用时启动过程失败的问题。有关该问题的详细信息,请参阅 #1861032。
networking-ovn 机制驱动程序已合并到 neutron 存储库中,现在是 ML2 的树内驱动程序。
添加了对创建无状态安全组的支持。
新特性¶
地址范围现在通过网络 RBAC 机制支持。请参阅管理员指南了解更多详细信息。
为
PortForwarding资源添加了一个新的字段description。
添加新的配置选项
igmp_snooping_enable。新选项位于OVS配置部分,并由 openvswitch 代理使用。此选项用于在集成桥接中启用对互联网组管理协议 (IGMP) 的支持。
子网池现在通过网络 RBAC 机制支持。请参阅管理员指南了解更多详细信息。
默认情况下,dnsmasq 代理会在创建、删除或更新每个端口时重新启动。如果同一网络上有许多端口更改,那么所有端口更改的实现都需要很长时间。此增强功能添加了一个新的配置变量,该变量将启用批量更新。这意味着 dnsmasq 将仅在一段时间内重新启动一次,而不是 N 次。新的选项“bulk_reload_interval”指示应多久重新加载一次代理。默认值为 0,这意味着原始功能是默认值。
添加了对在 dnsmasq DHCP 代理驱动程序中为 dhcp-host 条目配置 IPv6 地址列表的支持。对于在同一子网中具有多个 IPv6 固定 IP 的端口,所有地址都将写入 dnsmasq dhcp-hostsfile 中的单个 dhcp-host 条目。
为主机保留多个地址可以缓解与网络和链式启动相关的问题,在启动过程的每个步骤中使用不同的 DUID/IAID 组合请求地址。使用单个地址,只有其中一个会获得“静态”地址,并且启动过程将在后续步骤中失败。通过为启动过程的所有阶段保留足够的地址,可以解决此问题。(请参阅错误:#1861032)
注意
这需要 dnsmasq 版本 2.81 或更高版本。某些发行版可能会将此功能作为打包的一部分回溯到较早的 dnsmasq 版本,请查看发行版的发布说明。
由于新的配置格式在 dnsmasq 的早期版本中无效,因此默认情况下禁用此功能。要启用该功能,请将 DHCP 代理配置中的选项
dnsmasq_enable_addr6_list设置为True。
OVN 驱动程序现在使用 Core OVN 引入的“外部”端口概念。例如,使用此工作,连接了 SR-IOV 端口(VNIC 类型为“direct”且没有“switchdev”功能)的 VM 现在将被转换为“外部”端口,该端口能够回复来自另一个主机的包(例如 DHCP),这些包之前在 hypervisor 中被绕过。请注意,对于第一次交互,所有外部端口都属于同一 HA 组,并将安排在同一节点上。
在 L3 代理中添加了一个新的配置选项
cleanup_on_shutdown。如果设置为 True,L3 代理将显式删除所有路由器。对于 L3 HA 路由器,包括 keepalived 和状态更改监视器的正常关闭,这将在某些情况下允许更快的故障转移。cleanup_on_shutdown的默认值为 False,以保持向后兼容性。设置为 True 可能会影响在停止或重新启动 L3 代理时的数据平面。
添加了对 OVN 驱动程序中 IGMP 侦听(多播)的支持。默认为 False。IGMP 侦听需要 OVN 版本 2.12 或更高版本。
添加了对实现 iptables 驱动程序的无状态安全组 api 扩展的支持。
subnet-dns-publish-fixed-ip扩展为子网资源的定义添加了一个新的属性。如果设置为true,它将允许发布来自该子网的固定 IP 的 DNS 记录,而无需受到 DNS 与外部服务的集成 文档中描述的限制。
已实现
tag_ports_during_bulk_creationML2 插件扩展,以支持在批量创建期间标记端口。作为副作用,此扩展还允许在非批量创建期间标记端口。
升级说明¶
已删除 Python 2.7 支持。Neutron 现在支持的 Python 最低版本是 Python 3.6。
对于受 bug 1853840 影响的用户,现在可以为每个物理网络设备在配置选项
resource_provider_hypervisors中设置 hypervisor 名称,该选项位于ovs-agent的[ovs]ini 部分和sriov-agent的[sriov_nic]ini 部分。Hypervisor 名称默认为socket.gethostname(),即使将DEFAULT.host配置选项设置为非默认值,它也可以与libvirt一起正常工作。
网络
mtu属性设置为不可为空。如果mtu为空(在 Pike 版本之前创建),则将其设置为默认值 1500。
自 Mitaka 以来已弃用的配置选项
agent_type现在已被删除。代理现在应使用硬编码值来确定代理类型。
为整个端口范围添加的安全组规则,例如 TCP 端口 1-65535,对于实现该规则的后端而言不是最优的。像这样的规则现在将自动转换为应用于协议本身,换句话说,所有 TCP - 将忽略端口范围。有关更多详细信息,请参阅错误 1848213。
SR-IOV 代理代码不再支持旧内核(<3.13)的 MacVtap 端口。此更改预计不会影响现有部署,因为大多数操作系统发行版已经具有相关的内核补丁。此外,所有受支持发行版的最新主要版本已经具有较新的内核。
当前现有的安全组将在 alembic 迁移期间全部设置为有状态。
弃用说明¶
弃用
ovs_integration_bridge。此配置选项是OVS:integration_bridge的重复。当前这两个选项必须相同才能避免配置冲突。以前用于 DHCP 代理。它将在下一个版本中删除。
函数 neutron.plugins.ml2.db.get_binding_levels 已被弃用,取而代之的是 neutron.plugins.ml2.db.get_binding_level_objs,现在已被删除。
安全问题¶
对元数据代理进行了一项更改,以不允许用户覆盖标头值,它现在将始终插入正确的信息并在将请求发送到元数据代理之前删除不必要的字段。有关更多信息,请参阅错误 1865036。
stateless security group功能不适用于 OVS 或 OVN 驱动程序,因为驱动程序不知道安全组中的stateful属性。如果提供stateful属性且值为False,则将忽略该属性值,并且安全组将表现为有状态。
错误修复¶
错误 https://bugs.launchpad.net/neutron/+bug/1732067 描述了 neutron-ovs-agent 集成桥接上的泛洪问题。而错误 https://bugs.launchpad.net/neutron/+bug/1841622 提出了解决方案。接受的出口数据包将在最终出口表中处理(如果未启用 openflow 防火墙,则为表 61,否则为表 94),并使用直接输出流进行单播流量,对现有云网络的干扰最小。添加了一个新的配置选项
explicitly_egress_direct,默认值为 False,目的是区分运行网络节点与计算服务的混合云,上游 neutron CI 是一个示例。在这种情况下,应将explicitly_egress_direct设置为 False,因为存在许多无法覆盖的 HA 路由器的情况,尤其是在具有集中式浮动 IP 的混合主机中。否则,将explicitly_egress_direct设置为 True 以避免泛洪。还有一个说明,如果您的网络节点仅用于网络服务,我们建议禁用所有安全组以获得更高的性能。
使用
openstack port list --mac-address A:B:C:D:E:F命令列出端口时,如果大小写不同,我们可能无法返回任何结果。此修复使基于 MAC 地址的搜索不区分大小写。有关更多信息,请参阅 bug 1843428。
修复了一个问题,即 IPv6 无状态子网的 IP 分配会在无效子网上分配,当使用段时。自动寻址现在在分配 IP 地址时会过滤段 ID。请参阅错误:#1864225、#1864333、#1865138。
当更新驻留在路由提供商网络上的端口的固定IP时,如果未设置host,端口更新将始终失败。请参阅bug:1844124。
Neutron现在使用hypervisor名称而不是主机名来定位其创建的资源提供程序树的根资源提供程序。在极少数情况下,这两者是不同的。Hypervisor名称可以在
resource_provider_hypervisors配置选项中为每个物理网络设备设置,该选项位于[ovs]ini部分,用于ovs-agent,以及[sriov_nic]ini部分,用于sriov-agent。Hypervisor名称默认为socket.gethostname(),即使将DEFAULT.host配置选项设置为非默认值,也能与libvirt开箱即用。我们相信此更改修复了bug 1853840。
Neutron当前未完全尊重network-auto-schedule配置选项。如果将network-auto-schedule选项设置为False,则网络会在创建时仍然在DHCP代理上进行调度,并且如果用户/管理员删除了旧的DHCP映射,则网络会在新的DHCP代理上进行调度。这在网络后端直接提供DHCP时尤其必要。现在已修复此问题,如果将network-auto-schedule设置为False,网络将不会自动调度到DHCP代理。如果需要映射/调度,可以手动进行或将network-auto-schedule设置为True。
安全组的所有者现在可以看到属于安全组的所有安全组规则,即使该规则是由admin用户创建的。修复了bug 1824248。
其他说明¶
为neutron中的直接端口添加了QoS支持。该支持需要Open vSwitch 2.11.0或更高版本,并且基于Linux内核5.4.0或更高版本。 [bug 1843165]。
当
enable_distributed_routing(DVR)配置选项设置为True并且启用了隧道时,arp_responder选项将被强制设置为True,因为现在它对于ARP的正常工作是必需的。有关更多信息,请参阅bug 1774459。
为L3代理的l3_agent.ini添加了一个新的配置选项
radvd_user。此选项定义了传递给radvd的用户名,用于放弃“root”权限并将用户ID更改为用户名和组ID更改为用户的基本组。如果未指定用户(默认情况下),将传递执行L3代理的用户。如果指定“root”,因为radvd以root身份启动,将不会传递“username”参数。(有关更多信息,请参阅bug 1844688。)