Train 系列发布说明

15.3.4-114

新特性

  • dns 分配将反映网络中定义的 dns 域或用户在创建端口时使用 --dns-domain 发送的 dns 域,而不是仅获取 neutron 配置中定义的 dns 域

  • 添加 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 绝不重复时,才应禁用此设置。

安全问题

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

错误修复

  • 1671448 现在使用标准的可配置 RBAC 策略(‘get_quota’、‘update_quota’、‘delete_quota’)管理 Neutron 配额的访问权限。

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

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

15.3.4

其他说明

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

15.3.1

新特性

  • DVR 路由器现在支持 flat 网络。

错误修复

  • 修复了错误 1876092,该错误导致在与 DVR 路由器一起使用的 flat 网络上出现 DUP ICMP 响应。

  • 修复了启用 ovs offload 时的 MAC 学习问题。 OVS 防火墙减少了正常操作的使用量以减少 CPU 利用率。 这导致了泛洪规则,因为没有在入站流量上进行 MAC 学习。 虽然这对于非 offload 情况来说是可以的,但在使用 ovs offload 时,泛洪规则不会被 offload。 此修复程序修复了 offload 中的 MAC 学习,因此我们避免了泛洪规则。 #1897637

15.3.0

新特性

  • 添加了新的配置选项 keepalived_use_no_track。 如果部署中使用的 keepalived 版本不支持其配置文件中的 no_track 标志(例如 keepalived 1.x),则应将此选项设置为 False。 此选项的默认值为 True

15.2.0

新特性

  • 添加了一个新的配置选项 http_retries。 此选项允许配置 nova 或 ironic 客户端在 HTTP 调用失败时重试的次数。

  • 添加新的配置选项 igmp_snooping_enable。 新选项位于 OVS 配置部分,并由 openvswitch 代理使用。 此选项用于启用集成网桥中对互联网组管理协议 (IGMP) 的支持。

错误修复

  • 1875981 Neutron 现在在管理员删除端口、服务器或浮动 IP 时,会正确删除相关的 DNS 记录。

15.1.0

新特性

  • 添加了对在 dnsmasq DHCP 代理驱动程序中为 dhcp-host 条目配置 IPv6 地址列表的支持。 对于在同一子网中具有多个 IPv6 固定 IP 的端口,将包含所有地址的单个 dhcp-host 条目写入 dnsmasq dhcp-hostsfile。

    为宿主机保留多个地址可以缓解与网络和链式启动相关的问题,在启动过程的每个步骤中使用不同的 DUID/IAID 组合请求地址。 如果只保留一个地址,只有其中一个会获得“静态”地址,并且启动过程将在后续步骤中失败。 通过为启动过程的所有阶段保留足够的地址,可以解决此问题。(请参阅 bug:#1861032

    注意

    这需要 dnsmasq 版本 2.81 或更高版本。 某些发行版可能会将此功能作为打包的一部分回移植到较早的 dnsmasq 版本,请检查发行版的发布说明。

    由于较旧版本的 dnsmasq 无法识别新的配置格式,因此默认情况下禁用此功能。 要启用此功能,请在 DHCP 代理配置中将选项 dnsmasq_enable_addr6_list 设置为 True

升级说明

  • SR-IOV 代理代码不再支持旧内核(<3.13)的 MacVtap 端口。 此更改预计不会影响现有部署,因为大多数操作系统发行版已经具有相关的内核补丁。 此外,所有支持的发行版的最新主要版本已经具有较新的内核。

弃用说明

  • neutron.agent.linux.interface.LinuxInterfaceDriver 类的抽象方法 plug_new 现在接受一个可选参数 link_up。 未使用 link_up 的此方法(该方法接受 5 到 9 个位置参数)的使用现在已被弃用,并且在 W 版本中将不再可能。 继承自此基类的第三方驱动程序应更新其 plug_new 方法的实现。

安全问题

  • 对元数据代理进行更改,不允许用户覆盖标头值,现在它将始终插入正确的信息并在将请求发送到元数据代理之前删除不必要的字段。 有关更多信息,请参阅 bug 1865036

错误修复

  • 修复了一个问题,即在双栈(IPv4 + IPv6)网络上的客户端无法从 dnsmasq DHCP 服务器获取配置。 请参阅错误:1876094

  • 修复了一个问题,即对于使用段的 IPv6 无状态子网,IP 分配会在无效的子网上分配。 自动寻址现在在分配 IP 地址时会过滤段 ID。 请参阅 bug:#1864225#1864333#1865138

  • 修复了一个问题,即 OVS 防火墙驱动程序无法正确配置使用远程组的安全组规则,当相应的远程组在本地 hypervisor 上没有端口时。 有关更多信息,请参阅 bug:18627031854131

15.0.2

升级说明

  • 对于受 bug 1853840 影响的用户,现在可以为物理网络设备在配置选项 resource_provider_hypervisors 中设置 hypervisor 名称,该选项位于 ovs-agent[ovs] ini 部分和 sriov-agent[sriov_nic] ini 部分。 Hypervisor 名称默认为 socket.gethostname(),即使将 DEFAULT.host 配置选项设置为非默认值,它也可以与 libvirt 正常工作。

错误修复

  • bug https://bugs.launchpad.net/neutron/+bug/1732067 描述了 neutron-ovs-agent 集成网桥上的泛洪问题。 bug https://bugs.launchpad.net/neutron/+bug/1841622 提出了解决方案。 接受的出口数据包将在最终出口表中处理(如果未启用 openflow 防火墙,则为表 61,否则为表 94),对现有云网络的最小影响为直接输出流,用于单播流量。 添加了一个新的配置选项 explicitly_egress_direct,默认值为 False,目的是区分运行网络节点与计算服务的混合云。 上游 neutron CI 应该是一个例子。 在这种情况下,应将 explicitly_egress_direct 设置为 False,因为存在许多无法覆盖的情况,尤其是在运行集中式浮动 IP 的混合宿主机中。 否则,将 explicitly_egress_direct 设置为 True 以避免泛洪。 还有一个说明,如果您的网络节点仅用于网络服务,我们建议您禁用所有安全组以获得更高的性能。

  • Neutron 现在通过使用 hypervisor 名称而不是主机名来定位其创建的资源提供者树的根资源提供者。 只有在极少数情况下它们才不同。 Hypervisor 名称可以在配置选项 resource_provider_hypervisors 中为每个物理网络设备设置,该选项位于 ovs-agent[ovs] ini 部分和 sriov-agent[sriov_nic] ini 部分。 Hypervisor 名称默认为 socket.gethostname(),即使将 DEFAULT.host 配置选项设置为非默认值,它也可以与 libvirt 正常工作。 我们相信此更改修复了 bug 1853840

  • 安全组的所有者现在可以看到属于安全组的所有安全组规则,即使该规则是由管理员用户创建的。 修复了 bug 1824248

其他说明

  • enable_distributed_routing (DVR) 配置选项设置为 True 并且启用了隧道时,arp_responder 选项将被强制设置为 True,因为现在它对于 ARP 的正常工作是必需的。 有关更多信息,请参阅 bug 1774459

15.0.1

错误修复

  • [bug 1812168] 在关联端口删除时删除浮动 IP DNS 记录。

其他说明

  • 已在 l3_agent.ini 中为 L3 代理添加了一个新的配置选项 radvd_user。 此选项定义传递给 radvd 的用户名,用于放弃“root”权限并将用户 ID 更改为用户名和组 ID 更改为用户的初级组。 如果未指定用户(默认情况下),将传递执行 L3 代理的用户。 如果指定“root”,因为 radvd 以 root 身份启动,将不会传递“用户名”参数。(有关更多信息,请参阅 bug 1844688。)

15.0.0

新特性

  • 添加了对用于杀死 neutron 代理管理的外部进程(例如 dnsmasqkeepalived)的自定义脚本的支持。 如果定义了此类自定义脚本,将使用它们而不是默认的 kill 命令来杀死此类外部进程。

  • 为 ML2/OVS 机制驱动程序添加对智能网卡的支持,通过扩展 Neutron OVS 机制驱动程序和 Neutron OVS 代理将 Neutron 端口绑定到裸机宿主机与智能网卡。

  • 提供程序网络的段 ID 即使在绑定 OVS 端口时也可以修改。 请注意,在此过程中,绑定到前段 ID(外部 VLAN)的端口的流量将被映射到新的段 ID。 这可能会在迁移外部网络 VLAN 到新标签时导致流量中断。

  • 引入了新的 API 扩展 extraroute-atomic,它在服务器端以原子方式添加/删除路由器上的路由的两个新成员操作。 使用这些新的成员操作(PUT /v2.0/routers/ROUTER-ID/add_extraroutesPUT /v2.0/routers/ROUTER-ID/remove_extraroutes)始终优于旧方法(PUT /v2.0/routers/ROUTER-ID),因为旧方法容易受到并发客户端之间的竞争条件,因此可能导致更新丢失。

  • 已在 neutron.agent.l3.L3AgentExtensionAPI 中添加了一个新的参数 router_factory。 开发人员可以注册 neutron.agent.l3.agent.RouterInfo 类并将其委托给 RouterInfo 创建。

    扩展可以扩展 RouterInfo 本身,这对应于每个功能(ha、分布式、ha + 分布式)。

  • 添加了对 L3 conntrack 助手程序的支持。

    用户现在可以配置要为 Router 设置的 conntrack 助手目标规则。 通过将 conntrack_helper 子资源与路由器关联来实现。 要创建 conntrack_helper,用户指定:路由器 ID、协议(例如 TCP 或 UDP)、端口号和 conntrack 助手模块别名(例如 tftp 或 ftp)。 通过 Neutron API 扩展和服务插件实现 conntrack_helpers 的 CRUD 操作。 请参阅 Neutron API 参考文档以获取详细信息。 路由器可以有多个 conntack_helpers

    新的配置选项 [l3-conntrack-helpers]/allowed_conntrack_helpers 允许操作员配置允许的助手程序以及助手协议约束。

  • 引入了对 Openstack Baremetal 服务(ironic)的通知程序。 启用后,将在相关的资源事件/更改上向 Baremetal 服务发送通知。 默认情况下,向 Baremetal 服务发送通知被 禁用。 要 启用 向 Baremetal 服务发送通知,请在 Networking 服务配置 (neutron.conf) 中将 [ironic]/enable_notifications 设置为 True

  • 添加了对 OVS DPDK 端口表示器的支持,将直接连接到 netdev 数据路径的端口视为 DPDK 表示器端口。

  • 当不同的子网池参与到相同的地址范围内时,放宽了禁止从同一网络的不同池中分配子网的限制。只要子网池参与到相同的地址范围内,就可以在网络上创建多个子网时,从不同的子网池创建子网。如果不使用地址范围,则同一网络上的具有相同 ip_version 的子网仍然必须从相同的子网池分配。有关更多信息,请参阅 bug 1830240

升级说明

  • IPv6 网络中的第一个地址现在是路由器的一个有效且可用的 IP。此前它已被保留,但现在可以分配给路由器,以便以“::”结尾的 IPv6 地址可以成为有效的默认路由。

  • 移除了 gateway_external_network_id 配置选项。设置了此选项的系统现在可以支持路由器上的多个外部网络。

  • 已移除已弃用的 L2 填充 agent_boot_time 配置选项,并且从 Stein 版本开始不再需要它。

  • 移除了已弃用的 of_interface 选项。Neutron 将始终使用 native 驱动程序,该驱动程序自 Pike (11.0) 以来一直是默认驱动程序。如果在升级前使用了旧的驱动程序 ovs-ofctl,自动更改为 native 驱动程序可能会在 neutron-ovs-agent 升级期间导致数据平面连接的短暂中断。

  • 使用旧协议名称 icmpv6icmp 创建的现有 IPv6 ICMP 安全组规则现在将在 API GET 调用中返回为 ipv6-icmp

弃用说明

安全问题

  • OVS 防火墙目前会阻止没有 IPv4 或 IPv6 ethertype 的流量。与 iptables_hybrid 防火墙相比,这是一个行为变化,后者仅对 IP 数据包进行操作,因此不处理其他 ethertype。现在,在 neutron openvswitch 代理配置文件中有一个配置选项用于允许的 ethertype,然后在初始化时确保允许请求的 ethertype。

错误修复

  • 利用协调锁来处理资源处理和通知线程函数,以最大限度地减少锁粒度。

  • [bug 1811166] 更改 API 行为,以强制路由器管理状态必须处于关闭状态 (router.admin_state_up==False) 才能修改其分布式属性。如果尝试更改 distributed 属性时路由器 admin_state_up==True,将抛出 BadRequest 异常。

  • 之前的错误修复更改了 DHCP 代理的行为,以使用网络的 dns_domain 作为提供给实例的搜索路径,从而覆盖了 DHCP 代理和主服务器进程在生成端口 DNS 分配时使用的 dns_domain 配置选项。这破坏了网络 dns_domain 属性的原始设计意图,该属性用于与外部 DNS 系统(如 Designate)集成,而不是用于 Neutron 的内部 DNS 支持。现在已恢复此不正确的行为更改 - DHCP 代理将仅使用 dns_domain 配置选项。

  • 修复了一个问题,即删除提供程序网络可能会导致 ML2 机制驱动程序未收到有关网络提供程序字段的信息。这取决于所使用的机制驱动程序,但可能会导致事件被忽略,从而导致网络配置不正确。有关详细信息,请参阅 bug 1841967

  • 当更新位于路由提供程序网络上的端口的固定 IP 时,如果未设置 host,则端口更新将始终失败。请参阅 bug:1844124

  • 安全组规则代码已更改,以通过将 ipv6-icmp 标准化为 IPv6 ICMP 规则的协议字段值,从而更好地检测重复规则。旧名称 icmpv6icmp 仍然可以在 API POST 调用中使用,但 API GET 调用将返回 ipv6-icmp。部分修复了 bug 1582500

  • 为 OpenFlow 防火墙流量识别机制,向 TRANSIENT 表添加基于物理 VLAN 标签的新匹配规则。这修复了 VLAN 类型网络之间的分布式路由器东西向流量。有关更多信息,请参阅 bug 1831534

其他说明

  • neutron-keepalived-state-change 守护程序添加日志文件。

  • 为了提高高负载 ovs 代理重启的成功率,不再使用重试或 fullsync,而是将 native 驱动程序的 of_connect_timeoutof_request_timeout 现在设置为 300s。该值对常规压力 ovs 代理没有副作用。

  • 在 neutron.conf 中添加了一个新的配置选项 host_dvr_for_dhcp,用于 DVR 以确定是否将 DVR 本地路由器托管到计划的 DHCP 节点。

  • 添加了一种新的协调锁机制,用于各种场景。此装饰器允许使用参数和底层函数名称灵活的锁名称。为了实现与 python2.7 的向后兼容性,已经从旧版本的 python inspect 复制了一些函数。一旦 python2.7 停用,我们可以删除这种重复。

  • 添加了一个新的选项 [ovs] of_inactivity_probe,允许更改在使用 OVS ML2 代理和 native OpenFlow 驱动程序时的不活动探测间隔。如果遇到 OpenFlow 超时,操作员可以增加此值。默认值为 10 秒。