2023.1 系列发布说明

2023.1-eom

安全问题

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

错误修复

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

22.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

已知问题

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

升级说明

  • 在 ML2/OVN 中,任何新的路由器网关端口(OVN 逻辑路由器端口)都将仅在配置为网关的主机上进行调度。任何现有的路由器网关端口将保留当前的宿主机分配。

错误修复

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

  • [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 机制驱动程序。

22.1.0

已知问题

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

错误修复

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

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

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

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

  • 添加了一个新的 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 端口来说无关紧要。

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

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

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

22.0.1

已知问题

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

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

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

错误修复

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

  • 修复了 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 流量,则应使用不同的路由器。

23.0.0.0b1

新特性

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

  • Manila 拥有的端口现在可以关联多个端口绑定,以便支持跨物理网络的非破坏性 Manila 共享服务器迁移。

  • 扩展路由提供商网络,以允许为每个物理网络配置多个段。

  • 引入 clean_devices,一个新的 DHCP 驱动程序 API,可以调用它来清理过时的设备。

  • 添加了一个新的代理:OVN 代理。这个新的代理将在使用 OVN 作为网络后端的计算节点或控制器节点上运行,类似于其他 ML2 机制驱动程序,如 ML2/OVS 或 ML2/SRIOV。这个新的代理将执行 ovn-controller 服务无法执行的操作。代理功能将是可插拔的,并通过配置旋钮添加。

  • 添加了一个新的 OVN Neutron 代理扩展:硬件卸载端口的 QoS。此扩展将强制执行具有硬件卸载(DevLink 端口)的端口的最小和最大带宽出站 QoS 规则。此扩展使用“ip-link”命令在相应的虚拟功能上设置“ceil”和“rate”参数。

  • ML2/OVS 和 ML2/OVN 现在支持在 Placement API 中建模隧道网络。“tunnelled_network_rp_name”配置选项定义了用于在计算节点中表示所有隧道网络的资源提供商名称(默认值为“rp_tunnelled”)。如果此字符串存在于“resource_provider_bandwidths”字典中,则相应的机制驱动程序将为覆盖流量创建一个资源提供商。

  • Neutron 现在支持具有新的默认角色 project_memberproject_reader 的 API 策略。角色 admin 的工作方式与旧策略相同。

已知问题

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

升级说明

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

  • 已弃用的配置选项 keepalived_use_no_track 已删除。

  • 新的默认 API 策略默认情况下未启用。云运营商可以通过在 Neutron 配置文件中将 oslo_policy/enforce_new_defaults 设置为 true 来启用它们。也可以将 oslo_policy/enforce_scope 配置选项切换为 true,但目前 Neutron 不支持任何系统范围的 API。所有 Neutron API 策略当前都是项目范围的,因此将 oslo_policy/enforce_scope 设置为 true 将导致使用系统范围令牌发出的任何 API 调用返回 Forbidden 响应。

弃用说明

  • 配置选项 allow_stateless_action_supported 已被弃用并将在 2023.2 (Bobcat) 版本中删除。

错误修复

  • 1996677 当 metadata 端口的 fixed_ips 被修改时,metadata 代理中 tap 设备的 IP 地址被修改。

  • [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 问题。

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

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

其他说明

  • 自 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”字段)兼容。

  • OVN 机制驱动程序现在具有配置选项 allow_stateless_action_supported,该选项允许手动禁用 stateful-security-group API 扩展,以防使用低于 21.06 的 OVN 版本,因为 OVN 21.06 中添加了对 OVN ACL 中 allow-stateful 操作的支持。默认情况下,此选项设置为 True,因此启用了 stateful-security-group API 扩展。如果此选项设置为 True 并且使用的 OVN 低于 21.06,Neutron 将回退到状态化的 ACL,即使在 Neutron 数据库中将 SG 设置为无状态。

  • ProcessManager 类现在默认情况下,在启动新进程时会添加一个环境变量。此默认标签名为“PROCESS_TAG”,并将包含此特定进程的唯一标识符。例如,TripleO 可以使用它来唯一标记任何新生成的容器,并使用相同的标签找到它。

21.0.0.0rc1

序言

引入实验特性框架。

新特性

  • 由于缺乏资源或技术专长来维护它们,一些 Neutron 特性不受支持。当这些特性出现时,Neutron 核心团队将把它们标记为实验性。部署者可以通过在 neutron.conf 的“experimental”部分中显式启用它们来继续使用实验性特性。ML2 linuxbridge 驱动程序是第一个被标记为实验性的特性。要继续使用它,部署者必须将“linuxbridge”选项设置为 True 在 neutron.conf 的“experimental”部分。

  • 添加了对端口转发规则中端口范围的支持。支持的范围是 N:M,其中 N <= M。此外,内部和外部端口关系必须是:内部范围 = 外部范围或内部范围 = 1。

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

  • 已添加对 IPv6 NDP 代理的支持。有关更多详细信息,请参阅相关的 规范

  • 已添加了使用 OVN 的内置 DHCP 服务器进行裸机配置的支持,适用于 IPv4。

  • 在 ML2/OVN 中添加了 QoS 最小带宽规则(仅出站)的支持。OVN 从 release 22.06.0 开始支持在逻辑交换机端口上设置这些规则类型。

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

  • 核心 OVN 现在可以在实时迁移期间在逻辑交换机端口上设置目标主机。这使得能够提前准备目标主机,从而实现更快的实时迁移和主机之间切换期间的更短停机时间。Neutron 将此信息包含在端口选项中。

  • 为 OVN 后端添加了路由器网关 IP QoS 支持。L3 OVN 路由器插件现在可以对路由器网关端口应用路由器 QoS 策略规则。

  • Ovn 配置项“ovn_nb_connection”和“ovn_sb_connection”可以设置多个用逗号分隔的地址。设置 NB/SB “connection”不活动探测也可以很好地工作,如果指定了多个连接。

  • 添加了一个新的配置变量,在 [OVS] 部分,用于控制使用 OVS 本机防火墙驱动程序(securitygroup.firewall_driver=openvswitch)时 OVS OpenFlow 规则处理操作。

    • openflow_processed_per_port:默认值为“False”。如果启用,与端口关联的所有 OpenFlow 规则将一次性处理,在一个事务中。如果禁用,则流程将按“AGENT_RES_PROCESSING_STEP=100”数量的 OpenFlow 规则进行批处理。

  • 如果启用了 uplink-status-propagation 扩展,则在启用它之前,所有现有的端口默认情况下都将启用“propagate_uplink_status”标志。这与管理员启用此扩展的目的相符。现在只有新端口才能被创建,并且禁用此标志。

  • 网关网络继承现在适用于 OVN L3 插件 QoS 扩展。如果路由器外部网络(网关网络)具有关联的 QoS 策略,则网关 IP 端口将继承网络 QoS 策略。

  • QoS 规则类型列表接受两个过滤器标志

    • all_supported:如果为 True,则列出调用将打印至少一个已加载机制驱动程序支持的所有 QoS 规则类型。

    • all_rules:如果为 True,则列出调用将打印 Neutron 服务器支持的所有 QoS 规则类型。

    这两个过滤器标志是互斥的,并且不是必需的。

  • 启用了 DbQuotaDriverNull 作为生产就绪的数据库配额驱动程序。此驱动程序没有访问数据库的权限,并将向请求查询返回空值。此驱动程序可用于覆盖 Neutron 配额引擎。

  • 添加了一个新的脚本来删除重复的端口绑定。此脚本将列出数据库中的所有 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 绝不重复时,才应禁用此设置。

升级说明

  • 先前弃用的配置选项 allow_overlapping_ips 已删除。

  • 已停止对 Python 3.6 和 3.7 的支持。现在支持的 Python 最低版本是 Python 3.8。

  • 已添加一个新的配置选项,名为 [ovn]/disable_ovn_dhcp_for_baremetal_ports,用于 ML2/OVN 的 IPv4。由于 PXE 启动节点可能根据硬件非常敏感,并且一些运营商可能更喜欢使用功能齐全的 DHCP 服务器而不是 OVN 的 DHCP 服务器,因此此选项允许在设置为 True 时禁用 OVN 的内置 DHCP 服务器,用于裸机端口(vnic 类型“baremetal”)。默认值为 False。

弃用说明

  • ML2 linuxbridge 代理已被标记为实验性的,因为缺乏资源来维护它。要继续使用它,部署者必须将“linuxbridge”选项设置为 True 在 neutron.conf 的“experimental”部分。

错误修复

  • 1942329 已扩展直接物理端口的端口绑定逻辑,以允许通过绑定配置文件提供物理设备的 MAC 地址。如果提供,则 Neutron 会用来自活动绑定配置文件的值覆盖数据库中端口对象的 device_mac_address 字段的值。如果在 部署 nova 侧的修复程序 之前存在绑定的端口,则使用该端口的 VM 需要移动,或者端口需要分离并重新连接,以强制 nova 提供直接物理端口的 MAC 地址。

  • 禁止创建相同的路由器上的重复 NDP 代理条目,因为路由器的 IP 地址是唯一的,并且 IPv6 地址只需要一个 NDP 代理。

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

其他说明

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

  • 从现在开始,无论其状态如何(活动或待机),HA 路由器上所有节点上的网关接口都将保持启动状态。有关更多信息,请参阅错误 1952907

  • OVN 驱动程序已恢复为使用状态化 NAT 进行浮动 IP 实现。先前的切换到无状态化并没有实现预期的性能优势,反而引入了潜在硬件卸载的问题。

20.0.0.0rc1

新特性

  • 将共享字段添加到安全组 API 响应中,并支持使用共享作为查询过滤器。有关更多信息,请参阅错误 1942615

  • Neutron 现在支持使用直接物理 vnic_type 的保证最小带宽 QoS 规则类型的 Placement 强制执行。数据平面对这种规则和 vnic_type 组合的强制执行仍然不受支持。

  • 添加了 request_body 字段到路由器回调事件有效负载中。该字段记录了用户原始请求体。

  • 添加了路由器网关的 BEFORE_UPDATE 回调事件。

  • 本地 IP - 可以在多个端口/VM 之间共享的虚拟 IP(类似于 anycast IP),并且保证只能在相同的物理服务器/节点边界内访问。此特性主要侧重于非常大规模的云和/或具有高网络吞吐量需求的云的网络数据平面的高效性和性能。

  • 添加了两个新的 API 方法到 QuotaDriverAPI 类。get_resource_usage 返回当前的资源使用情况。quota_limit_check 检查当前资源使用情况与一组 delta(资源名称和资源计数词典)的对比。

  • 在 OVN 中添加了对 VNIC 类型 remote-managed 的支持。OVN 驱动程序现在可以将远程管理的端口绑定到 SmartNIC DPU。SmartNIC DPU 端口绑定需要 OVN 版本 21.12 或更高版本,并编译了 OVN VIF 版本 21.12 或更高版本。

  • 从这个版本开始,对无状态安全组的支持是强制性的。最低 OVN NB schema 版本必须是 5.17。

  • 虚拟端口从版本 2.12 开始在 OVN 中受支持。从 Yoga 开始,此支持是强制性的。最低 OVN SB schema 版本必须是 2.5。

  • 报告 OVS 代理资源提供商上的数据包处理能力作为新的 NET_PACKET_RATE_KILOPACKET_PER_SECNET_PACKET_RATE_EGR_KILOPACKET_PER_SECNET_PACKET_RATE_IGR_KILOPACKET_PER_SEC 资源库存。这类似于今天报告带宽资源的方式。前者用于非硬件卸载的 OVS 部署,其中来自入站和出站方向的数据包由相同的 CPU 核心处理。其余库存用于硬件卸载的 OVS,其中传入和传出的数据包由独立的硬件资源处理。

  • 添加了 port-resource-request-groups API 扩展,为端口的 resource_requestbinding:profile.allocation 属性的新格式提供支持。 新格式允许从同一个 RP 子树请求多组资源和特征。

    将新的 QoS 策略 赋给 已绑定的端口,并带有 minimum_packet_rate 规则,会更新 Placement 中的分配。 注意:如果原始 QoS 策略没有 minimum_packet_rate 规则,则不支持 Placement 分配更新。 将无方向的 minimum_packet_rate 规则更改为有方向的 minimum_packet_rate 规则也不受支持。

  • neutron-ovs-agent 在 [ovs] 部分下新增配置选项:resource_provider_packet_processing_without_directionresource_provider_packet_processing_with_directionresource_provider_packet_processing_inventory_defaultsresource_provider_packet_processing_without_direction 控制 OVS 后端每秒可以保证的最小数据包速率,单位为千(1000)个数据包。 resource_provider_packet_processing_with_direction 与第一个选项类似,但用于 OVS 后端具有硬件卸载功能时。 最后一个选项可用于调整资源提供程序库存的其他字段(allocation_ratiomin_unitmax_unitreservedstep_size)。

  • 对于 OVN L3 插件 QoS 扩展,现在可用浮动 IP QoS 网络继承。 如果托管浮动 IP 的网络关联了 QoS,则浮动 IP 地址将继承网络 QoS 策略,并在 OVN 后端应用。

  • 添加了 qos-pps-minimum-rule-alias API 扩展,以支持在不指定策略 ID 的情况下对 QoS 最小数据包速率规则执行 GET、PUT 和 DELETE 操作。

  • 在 OVS 后端启用了 QoS 最小数据包速率规则的 placement 强制执行。

  • 为 QoS 服务插件添加了新的 API 扩展,以支持在 Neutron 服务器中对最小数据包速率规则执行 CRUD 操作。

  • 添加了一个检查,以验证 DB 中 ml2_port_bindings 表的所有行是否使用 profile 列的新格式。 此检查是升级检查的一部分,可以使用 neutron-status upgrade check 命令执行。 如果某些行使用过时的格式,可以使用可以与 neutron-sanitize-port-binding-profile-allocation 命令一起执行的脚本对其进行清理。

升级说明

  • 已向 networksegments 表添加一个 (network_id, network_type, physical_network) 的唯一约束。 这是为了防止动态段分配上的竞争条件。 具有多个段的网络的操作员(例如,在使用分层端口绑定时)应检查此约束是否使用包含的升级检查被违反。

弃用说明

  • 配置选项 allow_overlapping_ips 现在已弃用并将被删除。 该选项的默认值现在已更改为 Neutron 的默认 IPAM 模块中的 True,因为将其默认设置为 False 的唯一原因是为了与已删除的 Nova 安全组代码保持兼容。 该配置选项将在 Z 版本中删除。

  • ML2 OVS 机制驱动程序配置的 [agent] veth_mtu 参数已被弃用。 此参数自 Wallaby 版本以来一直无效。

错误修复

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

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

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

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

其他说明

  • neutron.agent.linux.interface.LinuxInterfaceDriver 中的抽象方法 plug_new 现在具有额外的位置参数 link_up。 现在,在没有 link_up 的情况下使用此方法是不可能的。 从此基类继承的第三方驱动程序现在必须更新其 plug_new 方法的实现。

  • 类“PortBindingMixin”已被删除。 该类在树内的最后一次使用是在 Kilo 版本中,在“N1kvNeutronPluginV2”和“SdnvePluginV2”类中。 没有活动项目正在使用它。 数据库中的表“portbindingports”已被删除;它仅在“PortBindingMixin”中使用。

  • 任何 L3 代理扩展都必须继承自 neutron_lib.agent.l3_extension.L3AgentExtensionL3AgentExtensionsManager 在初始加载期间会进行此检查。 如果未满足条件,将引发 L3ExtensionException

  • 新的服务插件和 openvswitch 代理扩展可以配置为启用 Local IP 功能:local_ip

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

  • 现在假设 OVN 默认支持 Northbound 表 Port_Group。 此表已添加到 DB 模式版本 5.11 中。 如果 OVN 在 ml2.mechanism_drivers 配置选项中定义,则包含一个健全性检查。

  • OVN 驱动程序现在使用无状态 NAT 实现浮动 IP。 这可以避免命中 conntrack,从而可能提高性能,并允许将 NAT 规则卸载到硬件。

19.0.0.0rc1

新功能

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

  • Neutron 支持创建具有前缀长度 /31 和 /32 的 IPv4 子网,方法是禁用子网上的 dhcp。 有关更多信息,请参阅 bug 1580927

  • 添加了一个新的 OVS 代理扩展 dhcp,以直接在计算节点上支持分布式 DHCP,用于虚拟机。 要启用此功能,只需将 extensions=dhcp 设置为 OVS 代理配置文件下的 [agent] 部分。 我们还添加了一个新的配置部分 [dhcp],其中包含选项 enable_ipv6 = True/False,用于指示是否为 VM 端口启用 DHCPv6。

  • 特殊关键字 <project_id><project_name><user_name><user_id> 可用于网络的、端口的和浮动 IP 的 dns_domain 属性。 这些特殊关键字将被请求上下文中的相应数据替换。 这样,云管理员可以为共享网络和属于其他项目的端口定义 dns_domain,以便每个项目可以使用用户需要预先创建的单独 DNS 区域。 要启用此功能,必须在 Neutron 配置中启用 dns_domain_keywords ML2 插件扩展。 同时启用多个 dns_integration 扩展会导致错误。

  • Neutron 现在支持 ECMP 路由,通过此更改,neutron 将合并具有相同目标地址的多个路由到一个 ECMP 路由中。 有关更多信息,请参阅 bug 1880532

  • 添加了一个新的配额驱动程序:DbQuotaNoLockDriver。 与 DbQuotaDriver 不同,此驱动程序不会为每个 (resource, project_id) 创建唯一的锁。 这可能导致数据库死锁状态,如果服务器请求的数量超过已解决的资源创建数量,如 LP#1926787 中所述。 此驱动程序依赖于数据库事务隔离性,并计算已使用和保留的资源数量,如果可用,则在一个数据库事务中创建新的资源保留。

  • 添加了对 OVN 驱动程序的支持网络可用区。 当使用网络 AZ 时,OVN 的“external”端口现在将安排到属于该端口所属网络的 AZ 中的节点。 此功能还消除了“external”端口都绑定到单个 HA Chassis Group(意味着它们都绑定到单个主机)的限制,现在“external”端口将更好地分布在不同的主机上。

  • 支持使用最新的 OVN 21.06+ 的无状态安全组。 无状态的 security groups 映射到新的 OVN ACL 动词“allow-stateless”。

  • 添加了新的 API 扩展到 QoS 服务插件,以支持在 Neutron 服务器端对数据包速率限制(每秒数据包)规则执行 CRUD 操作。

  • 端口的 port.mac_address 字段经过清理,具有通用格式“xx:xx:xx:xx:xx:xx”。 可以执行提供的脚本 neutron-sanitize-port-mac-addresses 来清理数据库中存储的值(如果需要)。 此脚本将读取所有 port 注册信息并修复存储的 MAC 地址格式(如果需要)。 端口 API 也已修改为清理用户输入。 此更改是在 neutron-lib 2.12.0 中 788300 中添加的。

  • SR-IOV 代理现在可以处理来自不同网络的具有相同 MAC 地址的端口。 此功能意味着代理和服务器 RPC 版本的升级(参见 neutron.plugins.ml2.rpc.RpcCallbacks 版本 1.9)。 一些代理 RPC 方法已更新为不仅传递设备 MAC 地址,还传递 PCI 插槽。 在具有相同 MAC 地址的多个端口的情况下,PCI 插槽将区分请求的端口。

  • 拒绝任何路由器路由或网关更新,如果并非所有路由下一跳都与任何网关子网 CIDR 具有连接性;换句话说,所有路由下一跳 IP 地址都应属于一个网关子网 CIDR。

已知问题

  • 在使用最小带宽 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 上会浪费一些负载。 但是,请注意,即使资源提供程序父级不正确,带宽感知调度也应该可以工作。

  • 在使用较新的操作系统中的 Linux Bridge 机制驱动程序时,这些操作系统默认使用 nftables,需要切换回旧工具,如 Linux bridge mechanism driver 的管理文档中所述。

升级说明

  • ML2 插件过滤出 API 扩展的方式,这些扩展不受加载的机制驱动程序支持的方式已更改。 以前,如果至少有一个机制驱动程序支持 API 扩展,则该扩展将位于列表中,但现在需要所有机制驱动程序都支持该扩展。 如果至少有一个机制驱动程序将其过滤掉,它将被从最终的已启用 API 扩展列表中删除。 目前,只有 OVN 机制驱动程序会过滤掉一些 ML2 API 扩展,因此如果将 OVN 机制驱动程序与 Neutron 中的任何其他机制驱动程序一起加载,则已启用的 API 扩展列表可能比以前小。

  • XenAPI 支持的配置选项已被删除,因为这些选项已经无效。

  • 服务器和代理 RPC 版本都已升级到 1.9;为了提供平滑的升级过渡,应遵循 升级过程,先升级服务器,然后再升级代理。 代理 RPC 方法返回的值未进行修改,以保持与其它代理的兼容性(Linux Bridge、Open vSwitch)。 服务器 RPC 端能够处理来自代理 API < 1.9 的调用,以便提供向后兼容性。 如果未提供设备 PCI 插槽,则行为将与以前相同。

弃用说明

  • 以下 designate 部分中的参数已被弃用,并在未来的版本中删除。 应使用 [designate] auth_type 参数和所需的 keystoneauth 参数代替。

    • admin_username

    • admin_password

    • admin_tenant_id

    • admin_tenant_name

    • admin_auth_url

安全问题

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

错误修复

  • 将外部 DNS 服务 OverQuota 异常报告为新的 neutron ConflictException (409),即 ExternalDNSOverQuota。将失败报告为“资源:recordset 的外部 DNS 配额已超出”。

  • 确保 OVN 的机制驱动程序在 [ml2_type_geneve]/max_header_size 设置低于所需的 38 时不会启动。 LP#1868137

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

  • 引入了 RPC 代理步长自定义配置选项:rpc_resources_processing_step - neutron 将大型 RPC 调用数据集划分为多少个资源。如果发生 RPC 超时,可以减少此值。默认值为 20。最佳值可以在您的环境中通过经验确定。

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

其他说明

  • Neutron 资源标签现在可以有 255 个字符长,之前资源标签限制为 60 个字符。

18.0.0.0rc1

新功能

  • 安全组规则现在具有新的只读属性 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-transparent 的支持。

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

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

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

  • 在 SR-IOV 代理中添加了对 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 规则,并使用具有 minimum_bandwidth 规则的新 QoS 策略,现在也会更改 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。

17.0.0.0rc1

序言

添加了对 OVN 中浮动 IP 端口转发的支持。

新功能

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

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

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

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

  • 已为 OVN 后端添加了浮动 IP 端口转发的支持。

  • 使元数据服务可通过 IPv6 链路本地地址 fe80::a9fe:a9fe 提供。IPv6 元数据在隔离网络和连接到 Neutron 路由器的 IPv6 子网的网络上以及双栈网络和仅 IPv6 网络上工作。没有新的配置选项。通常的配置选项(enable_isolated_metadataforce_metadataenable_metadata_proxy)现在控制 IPv4 和 IPv6 上的元数据服务。此更改仅影响客户通过租户网络访问元数据服务。此功能不会更改元数据代理与 Nova 的元数据服务通信的方式。预计客户操作系统从路由器通告中获取路由,以便此功能工作。至少以下 IPv6 子网模式有效

    • --ipv6-ra-mode slaac --ipv6-address-mode slaac

    • --ipv6-ra-mode dhcpv6-stateless --ipv6-address-mode dhcpv6-stateless

    • --ipv6-ra-mode dhcpv6-stateful --ipv6-address-mode dhcpv6-stateful

    请注意,元数据 IPv6 地址(是链路本地地址)在没有区域标识符的情况下是不完整的(在 Linux 客户中,通常是接口名称与百分号连接)。请注意,在 URL 中,您应该对百分号本身进行 URL 编码。例如,假设客户的主要网络接口是 eth0,基本元数据 URL 是 http://[fe80::a9fe:a9fe%25eth0]:80/

  • 添加了对 OVN 中路由器可用性区域的支持。 OVN 驱动程序现在可以从路由器的 availability_zone_hints 字段读取,并根据给定的可用性区域相应地调度路由器端口。

  • 之前更改为设置 neutron-server 子进程名称也修改了 neutron 代理的名称。这可能会影响依赖于 /proc/PID/environ 格式或 ps -e 输出的监控系统。现在 neutron 代理的所有进程名称都以这种格式设置(显示旧样式的进程名称和可见于最新版本中的完整进程名称) neutron-agent-name (original process name including interpreter)

    有关更多详细信息,请参阅 bug 1881297

升级说明

  • 配置选项 firewall_driver 不再被 neutron-server 使用,它仅适用于 L2 代理。这需要用于混合插件的向后兼容性,但自 Newton 版本发布以来,L2 代理已能够报告混合插件是否需要在其报告消息中返回给服务器。

  • 将 ML2 VLAN 分配限制为数据库引擎中的 [1, 4094] 值。数据库引擎尚未支持此约束。在这种情况下,它将被忽略。有关更多信息,请参阅 neutron.db.migration.alembic_migrations.versions.victoria.expand.dfe425060830_limit_vlan_allocation_id_values.py 中的说明。

  • IPv6 元数据功能使得每次 dhcp-agent 重启都会触发对 dhcp-agent 控制的元数据代理的快速重启,以便它们可以获取新的配置,从而也绑定到 fe80::a9fe:a9fe。这些重启会使元数据服务短暂不可用。这样做是为了在升级期间为预先存在的隔离网络启用元数据服务。请注意,对于此功能开始工作,预先存在的实例可能需要重新获取通过路由器发现和/或 DHCP 获取的所有信息。

  • 对于 ML2/OVN 驱动程序,metadata_workers 配置选项的默认值已更改为 2。对于 ML2/OVS,默认值保持不变。每个驱动程序在向实例提供元数据时采用不同的方法,并且之前的默认值“<CPU 数量> / 2”对于 ML2/OVN 没有意义,因为 OVN 元数据代理在 Compute 节点上分布式运行,而不是在 Controller 节点上。事实上,之前的默认值可能会导致 ML2/OVN 的可伸缩性问题,并被部署工具覆盖以避免问题。

  • 升级后应检查依赖于精确进程名称的监控工具,并在必要时进行修改。

弃用说明

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

  • 弃用计费标签规则中的 remote_ip_prefix 的使用,它将在未来的版本中删除。应该使用 source_ip_prefix 和/或 destination_ip_prefix 参数。有关更多详细信息,请参阅规范:https://review.opendev.org/#/c/744702/

  • 诸如 masterslave 之类的术语已被更具包容性的词语取代,例如 primarybackup,尽可能地进行替换。

    对于 OpenvSwitch 和 SRIOV 机制驱动程序,配置选项 vnic_type_blacklist 已被弃用,并替换为 vnic_type_prohibit_list。它们将在未来的版本中删除。

错误修复

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

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

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

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

其他说明

  • 当启用 uplink-status-propagation 扩展时,新创建的端口将默认将 propagate_uplink_status 的值设置为 True。

16.0.0.0rc1

序言

添加了对创建无状态安全组的支持。

新功能

  • 现在可以通过网络 RBAC 机制支持地址范围。请参阅管理员指南以获取更多详细信息。

  • 现在可以通过网络 RBAC 机制支持子网池。请参阅管理员指南以获取更多详细信息。

  • 添加了对在 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 组,并将被调度到同一个节点上。

  • 为 OVN 驱动程序添加了对 IGMP 侦听(多播)的支持。默认值为 False。IGMP 侦听需要 OVN 版本 2.12 或更高版本。

  • 添加了对新的 stateful-security-group api 扩展的支持,该扩展为 iptables 驱动程序实现无状态安全组。

升级说明

  • 当前现有的安全组将在 alembic 迁移期间全部设置为有状态。

安全问题

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

  • stateless security group 功能不适用于 OVS 驱动程序或 OVN 驱动程序,因为驱动程序不知道安全组中的 stateful 属性。如果提供带有 False 值的 stateful 属性,则该属性值将被忽略,并且安全组将表现为有状态。

错误修复

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

16.0.0.0b1

新功能

  • PortForwarding 资源添加了一个新的字段 description

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

  • 默认情况下,dnsmasq 代理会在每次创建、删除或更新端口时重启。当同一网络上发生许多端口更改时,所有端口更改都将需要很长时间才能实现。此增强功能添加了一个新的配置变量,该变量将启用批量更新。这意味着 dnsmasq 将仅在一个周期内重启一次,而不是 N 次。新的选项“bulk_reload_interval”指示应多久重新加载一次代理。默认值为 0,这意味着原始功能是默认值。

  • 在 L3 代理中添加了一个新的配置选项 cleanup_on_shutdown。如果设置为 True,L3 代理将显式删除所有路由器,并在关闭时进行操作。对于 L3 HA 路由器,包括对 keepalived 和状态更改监视器的优雅关闭,这将在某些情况下允许更快的故障转移。为了保持向后兼容性,cleanup_on_shutdown 的默认值为 False。设置为 True 可能会影响在停止或重新启动 L3 代理时的数据平面。

  • subnet-dns-publish-fixed-ip 扩展为子网资源的定义添加了一个新的属性。如果设置为 true,它将允许发布来自该子网的固定 IP 的 DNS 记录,而无需受到 DNS 与外部服务的集成 文档中描述的限制。

  • 已实现 tag_ports_during_bulk_creation ML2 插件扩展,以支持在批量创建期间标记端口。作为副作用,此扩展还允许在非批量创建期间标记端口。

升级说明

  • 已放弃对 Python 2.7 的支持。Neutron 现在支持的 Python 的最低版本是 Python 3.6。

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

  • 网络 mtu 属性设置为不可为空。如果 mtu 为空(在 Pike 版本之前创建),则将其设置为默认值 1500。

  • 自 Mitaka 以来已弃用的配置选项 agent_type 现在已被删除。代理现在应使用硬编码值来确定代理类型。

  • 为整个端口范围添加的安全组规则,例如 TCP 端口 1-65535,对于实现该规则的后端而言不是最优的。像这样的规则现在将自动转换为应用于协议本身,换句话说,所有 TCP - 将忽略端口范围。有关更多详细信息,请参阅 bug 1848213

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

弃用说明

  • 弃用 ovs_integration_bridge。此配置选项是 OVS:integration_bridge 的重复。当前这两个选项必须相同,以避免配置冲突。以前用于 DHCP 代理。它将在下一个版本中删除。

  • 函数 neutron.plugins.ml2.db.get_binding_levels 已被弃用,取而代之的是 neutron.plugins.ml2.db.get_binding_level_objs,现在已被删除。

错误修复

  • https://bugs.launchpad.net/neutron/+bug/1732067 描述了 neutron-ovs-agent 集成桥上的泛洪问题。而 https://bugs.launchpad.net/neutron/+bug/1841622 提出了一种解决方案。接受的出口数据包将在最终出口表中处理(如果未启用 openflow 防火墙则为表 61,否则为表 94),并对单播流量进行直接输出流处理,对现有云网络的影响最小。添加了一个新的配置选项 explicitly_egress_direct,默认值为 False,目的是区分运行网络节点与计算服务的混合云,upstream 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

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

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

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

  • Neutron 当前未完全尊重 network-auto-schedule 配置选项。如果 network-auto-schedule 选项设置为 False,则网络 - a) 在创建时仍会在 DHCP 代理上进行调度 b) 如果用户/管理员删除了旧的 DHCP 映射,则会在新的 DHCP 代理上进行调度。这对于直接提供 DHCP 的网络后端尤其必要。现在已修复此问题,如果 config 文件中将 network-auto-schedule 设置为 False,则网络将不会自动调度到 DHCP 代理。如果需要映射/调度,可以手动进行或将 network-auto-schedule 设置为 True。

  • 安全组的所有者现在可以看到属于安全组的所有安全组规则,即使该规则是由管理员用户创建的。 修复了 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_agent.ini 中为 L3 代理添加了一个新的配置选项 radvd_user。 此选项定义传递给 radvd 的用户名,用于放弃“root”权限并将用户 ID 更改为用户名和组 ID 更改为用户的初级组。 如果未指定用户(默认情况下),将传递执行 L3 代理的用户。 如果指定“root”,因为 radvd 以 root 身份启动,将不会传递“用户名”参数。(有关更多信息,请参阅 bug 1844688。)

15.0.0.0rc1

新功能

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

弃用说明

15.0.0.0b1

新特性

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

  • 通过扩展 Neutron OVS 机制驱动程序和 Neutron OVS Agent,为 ML2/OVS 机制驱动程序添加对 Smart NIC 的支持,以将裸机主机的 Neutron 端口与 Smart NIC 绑定。

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

  • 已向 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 扩展和 service plugin 实现对 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 升级期间数据平面连接中断。

  • 现有 IPv6 ICMP 安全组规则(通过旧协议名称 icmpv6icmp 创建)现在将在 API GET 调用中作为 ipv6-icmp 返回。

安全问题

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

错误修复

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

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

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

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

  • 安全组规则代码已更改,以通过将 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 秒。

14.0.0

序言

添加了新的工具 neutron-status upgrade check

添加了对网络段范围管理的支持。这引入了管理员通过 Neutron API 控制全局或基于租户的网络段范围的能力。

支持 QoS API 中规则的别名端点。

可以移动或“入板”在子网池外部创建的现有子网。这提供了一种将子网置于子网池管理之下并开始参与地址范围的方法。启用入板后,现有子网可以与依赖于子网池和地址范围的功能一起使用。子网入板受当前子网池和地址范围强制执行的所有相同限制和保证的约束。

新特性

  • 添加了新的框架 neutron-status upgrade check 命令。此框架允许添加各种检查,这些检查可以在 Neutron 升级之前运行,以确保可以安全地执行升级。Stadium 和第三方项目可以使用 neutron.status.upgrade.checks 命名空间中的入口点向此新的 neutron-status CLI 工具注册自己的检查。

  • 添加了对 L3 插件中浮动 IP 池(子网)的列表的支持。引入了一个新的 API 资源 floatingip-pools。此 API 端点可以返回浮动 IP 池的列表,这些池本质上是网络 UUID 和子网 CIDR 之间的映射。用户可以使用此 API 来查找创建浮动 IP 的池。

  • 在 Stein 之前,网络段范围配置为 ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini 中的一个条目,该条目是静态定义的用于租户网络分配,因此必须作为主机部署和管理的一部分进行管理。引入了新的 network-segment-range API 扩展,该扩展将网络段范围暴露给 API 进行管理。这允许具有管理员权限的用户能够动态管理共享和/或租户特定的网络段范围。引入了带有标记支持的标准属性到新的资源。该功能由新添加的 service plugin network_segment_range 控制。将从主机 ML2 配置文件 /etc/neutron/plugins/ml2/ml2_conf.ini(例如 network_vlan_ranges、用于 ml2_type_vxlan 的 vni_ranges、用于 ml2_type_gre 的 tunnel_id_ranges 和用于 ml2_type_geneve 的 vni_ranges)中定义的范围创建一组 default 网络段范围。

  • L3 代理现在支持 QoS 带宽限制功能,用于转发浮动 IP。如果浮动 IP 具有绑定 QoS 策略(具有带宽限制规则),则流量带宽将受到限制。

  • 引入了端口的 propagate_uplink_status 属性。目前,SRIOV 机制驱动程序利用此属性来决定 VF 链路是否应遵循 PF 的状态。例如,如果 PF 处于 down 状态,则 VF 链路状态会自动设置为 down。操作员可以通过配置选项启用此功能

    [ml2]
    extension_drivers = uplink_status_propagation
    

    引入了 API 扩展 uplink_status_propagation 来指示是否已启用此功能。

  • 添加了配置选项 rpc_response_max_timeout 以配置等待 RPC 响应的最大时间。

  • 现在通过网络 RBAC 机制支持安全组。有关更多详细信息,请参阅管理员指南。

  • Neutron-ovs-agent 下的 [ovs] 部分中的新配置选项:resource_provider_bandwidthsresource_provider_inventory_defaults。前者控制物理网络接口资源提供程序库存的 total(可用带宽)字段。默认情况下,它不会在 Placement 中创建资源提供程序。后者可用于调整其他字段(allocation_ratiomin_unitmax_unitreservedstep_size)的资源提供程序库存。

  • Neutron-sriov-agent 下的 [sriov_nic] 部分中的新配置选项:resource_provider_bandwidthsresource_provider_inventory_defaults。前者控制物理网络接口资源提供程序库存的 total(可用带宽)字段。默认情况下,它不会在 Placement 中创建资源提供程序。后者可用于调整其他字段(allocation_ratiomin_unitmax_unitreservedstep_size)的资源提供程序库存。

  • 为 Neutron DHCP 代理添加了一个新的配置选项 resync_throttle。此新选项允许限制本地 DHCP 状态与 Neutron 之间的 resync 状态事件的数量,仅每 resync_throttle 秒一次。此新选项的默认值为 1,应根据用户的特定场景进行配置,即用户希望系统对这些 DHCP resync 状态事件做出响应的速度。该选项与 DHCP 代理的事件驱动的定期任务一起引入。这增强了代理程序,使其对 resync 请求的反应更快,但确保它们之间有最小间隔,以避免过于频繁的 resync。有关更多信息,请参阅 bug 1780370

  • Neutron L3 和 DHCP 代理现在会根据它们管理的对象的数量动态调整它们运行的处理 green 线程的数量,当前范围内的值为八到三十两个线程,这比以前的静态值八个线程有所增加。 这应该有助于解决代理中的一些扩展性问题。 有关更多信息,请参阅 bug 1813787

  • 向 L3 路由器网关添加了一个新的属性 qos_policy_id

    • 它允许用户将 QoS 策略与 L3 路由器网关关联,以控制相关 SNAT 流量的传输速率。

    • 目前,QoS 策略中仅支持带宽限制规则。

    • 要启用此功能,必须在 Neutron 服务器中配置 qos 服务插件,并且必须在 L3 代理中配置 gateway_ip_qos 扩展。 请参阅 OpenStack Networking Guide 中的 QoS 部分,了解更多详细信息。

  • 将 get_standard_device_mappings 添加到 SriovNicSwitchMechanismDriver 和 OpenvswitchMechanismDriver,以便它们可以以标准方式返回接口或网桥映射。 常见的格式是字典,例如:{‘physnet_name’: [‘device_or_bridge_1’, ‘device_or_bridge_2’]}。

  • 实现了 qos-rules-alias API 扩展,以允许用户执行 QoS 规则的 GET、PUT 和 DELETE 操作,就像它们是第一级资源一样。 换句话说,用户不必指定 QoS 策略 ID。

  • Neutron 子进程现在将其进程标题设置为与其角色匹配(‘api worker’、‘rpc worker’、‘periodic worker’、‘services worker’,或由树外插件中的 workers 定义的任何其他角色)。 可以通过将 setproctitle 配置选项设置为 off 在 neutron.conf 的 [default] 部分中禁用此行为。 原始进程字符串也附加到末尾,以帮助查找旧字符串的脚本。 还有一个名为 brief 的选项,它会产生更短且更易于阅读的进程名称。 此选项的默认设置为 on,兼顾了向后兼容性和易于识别不同进程。 推荐设置为 brief,一旦部署者确认他们的工具不依赖于旧字符串。

  • 现有的子网现在可以移动到子网池中,从而可以移动到它们最初未参与的地址范围中。

升级说明

  • 操作员现在可以使用新的 CLI 工具 neutron-status upgrade check 来检查 Neutron 部署是否可以从 N-1 升级到 N 版本。

  • 将浮动 IP 端口转发表列 protocol 添加到唯一约束中。 在一个扩展脚本中,我们首先删除原始唯一约束,然后创建带有列 protocol 的新唯一约束。

  • 移除了 external_network_bridge 配置选项。 现有使用此选项的用户现在将会在集成网桥中创建其路由器的网关接口,并且将会被 L2 代理接管。

  • API 和 RPC worker 的数量可能会在升级时发生变化。 强烈建议所有部署者在他们的 Neutron 配置文件中设置这些值,而不是使用默认值。

  • 已弃用的 ovsdb_interface 配置选项已被删除,默认 native 驱动程序现在始终使用。 此外,已弃用的 ovs_vsctl_timeout 选项,该选项在 Queens 中已重命名为 ovsdb_timeout,也已被删除。

  • 在依赖关系解析过程中,加载服务插件的代码被重构,不再在配置了多次的插件时引发异常,以最后一次配置为准。这是与先前行为的变化。

  • 通过新的 setproctitle 配置选项,默认情况下会发生进程标题的更改。 旧字符串仍然是新进程标题的一部分,但任何查找旧字符串确切匹配的脚本可能需要进行修改。

  • Neutron API 现在强制执行端口是否是基于给定协议的安全组规则的有效选项,而不是依赖于后端防火墙驱动程序来执行此操作,通常会默默地忽略规则中的端口选项。 支持端口的有效协议集是 TCP、UDP、UDPLITE、SCTP 和 DCCP。 与其他协议一起使用的端口现在将生成 HTTP 400 错误。 有关更多信息,请参阅 bug 1818385

弃用说明

  • 扩展了资源 agent 的事件 after_createafter_update 的通知签名。 添加了一个新的关键字参数:status。 这是为了使与在 AgentDbMixin 类中发送通知时相同的状态信息可供通知消费者使用。 有效状态值在 neutron_lib.agent.constants 中定义。 使用旧签名消费通知已被弃用。 除非将参数作为 **kwargs 传递,否则树外通知消费者需要进行调整。

  • 来自 neutron.plugins.ml2.db 模块的函数 get_binding_levels 已被弃用,将来将被删除。 应该使用新的函数 get_binding_levels_objs 代替。 此新函数返回 PortBindingLevel OVO 对象。

  • L2 填充 agent_boot_time 配置选项已被弃用,转而使用直接的 RPC 代理重启状态传输。 它将在 Train 版本中删除。

关键问题

  • neutron-openvswitch-agent有时会花费过多的时间来处理大量端口,超过其超时值`agent_boot_time`,用于L2填充。因此,某些流更新操作将不会被触发,导致在代理重启期间丢失流,特别是对于主机到主机vxlan隧道流,导致原始隧道流由于不同的cookie ID而被视为陈旧。代理的第一个RPC循环也会执行陈旧流清理过程并删除它们,导致连接丢失。请确保所有neutron-server和neutron-openvswitch-agent二进制文件都已升级,以使更改生效,之后L2填充`agent_boot_time`配置选项将不再使用。

错误修复

  • 具有不同协议的浮动 IP 端口转发不能将相同的内部或外部端口号转发到同一个 VM 端口。 在此修复之后,我们将允许在不同协议中使用相同的内部或外部端口号创建端口转发。

  • 修复了bug 1501206。这确保了运行dnsmasq作为DNS服务器的DHCP代理实例不能被用作DNS放大器,当租户网络使用公共路由IP地址时,通过添加一个选项,使其仅为本地网络提供DNS请求。

  • 将`resource_type`添加到日志对象查询中,以区分安全组和防火墙组日志对象。有关更多信息,请参阅bug 1787119

  • 修复了一个问题,导致在初始IP分配由于缺少绑定信息而延迟时,端口更新上的IP分配失败。如果端口mac_address和绑定信息(binding_host_id)在同一个请求中更新,则fixed_ips字段会在内部添加到请求中。完成延迟分配的代码在那种情况下未能执行。(有关更多信息,请参阅bug 1811905。)

  • Neutron API worker 默认设置为 CPU 核心数。 这可能导致 CPU/低内存盒子出现问题。 默认值经过调整,试图对默认值设置上限,即核心数或系统内存的一半,以较低者为准。 此外,默认的 RPC worker 数量已从 1 更改为 API worker 数量的一半。

  • neutron-openvswitch-agent已更改为在第一个RPC循环中通知neutron-server已重启。这会向neutron-server发出信号,以提供更新的L2填充信息,以正确编程FDB条目,确保实例的连接不会中断。这修复了以下bug:17949911799178181370318137141813715

  • 拒绝 QoS 最小带宽规则在没有 physnet 的端口和网络上的操作,请参阅 bug 1819029

其他说明

  • 支持获取 OVO 中的特定数据库列。 添加了一种新的方法 get_values 到 Neutron 对象类。 可以利用此方法来获取对象的特定字段。

  • 如果实例端口位于dvr路由器下,并且端口已经有绑定端口转发。Neutron将不再允许将浮动IP再次绑定到该端口,因为dvr浮动IP流量规则会破坏现有的端口转发功能。

  • 添加了新的配置组 ovs_driver 和新的配置选项 vnic_type_prohibit_list,以使 OpenvswitchMechanismDriver 之前硬编码的 supported_vnic_types 参数可配置。 列表中列出的 vnic_types 将从 supported_vnic_types 列表中删除。

  • 添加了新的配置组 sriov_driver 和新的配置选项 vnic_type_prohibit_list,以使 SriovNicSwitchMechanismDriver 之前硬编码的 supported_vnic_types 参数可配置。 列表中列出的 vnic_types 将从 supported_vnic_types 列表中删除。

  • 计量代理iptables驱动程序现在可以使用`metering_agent.ini`文件中的stevedore别名加载其接口驱动程序。例如,`interface_driver = openvswitch`而不是`interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver`

  • Neutron 服务器现在拒绝(作为 NotImplementedError)对已在绑定端口上生效的 minimum_bandwidth QoS 规则的更新。 实现更新需要更新 Placement 分配,并可能迁移服务器,以便可以满足新的 minimum_bandwidth

  • Neutron现在支持服务插件需要其他插件作为依赖项。例如,`port_forwarding`服务插件需要`router`服务插件才能实现完全功能。一个新的列表`required_service_plugins`已添加到每个服务插件中,以便可以初始化每个服务插件的必需依赖项。如果一个服务插件需要另一个插件,但要求未在配置文件中设置,Neutron现在将将其初始化到插件目录。

  • 使用 publish 用于 AGENT's AFTER_CREATEAFTER_UPDATE 事件,使用 DBEventPayload 代替已弃用的 notify 回调。

13.0.0.0rc1

序言

添加了对浮动 IP 端口转发的支持。

新特性

  • 引入了 neutron.policy.OwnerCheck 中的扩展父资源所有者检查。 可以通过注册扩展父资源和服务插件(该插件引入了相应的父资源到 neutron.common.constants 中的 EXT_PARENT_RESOURCE_MAPPING)来使用它。 并引入了一个新的策略角色 admin_or_ext_parent_ownerpolicy.json 中用于此功能。

  • 已添加对浮动 IP 端口转发的支持。

    • 用户现在可以将浮动 IP 地址的 TCP/UDP/其他协议端口上的流量转发到 Neutron 端口的固定 IP 地址之一关联的 TCP/UDP/其他协议端口。

    • 通过将 port_forwarding 子资源与浮动 IP 关联来实现此目的。

    • 要创建一个 port_forwarding,用户需要指定:浮动 IP ID、浮动 IP 的 external_port 编号、Neutron 端口 ID internal_port_id、一个 internal_ip_address(Neutron 端口的固定 IP 地址之一)、internal_port 编号和要使用的 protocol(例如 TCP 或 UDP)。

    • 通过 Neutron API 扩展和服务插件实现 port_forwardings 的 CRUD 操作。 请参阅 Neutron API 参考文档以了解详细信息。

    • 用户不能为已与 Neutron 端口关联的浮动 IP 创建 port_forwardings

    • 一个浮动 IP 可以有多个 port_forwardings

    • 端口转发只能为网络节点中由集中式路由器管理的浮动 IP 创建:传统、HA、DVR+HA。

13.0.0.0b3

序言

支持计算所有端口的多个绑定。

对列出资源时执行过滤器参数验证。

新特性

  • 为了更好地支持实例迁移,可以将多个端口绑定与计算所有端口关联。

    • 通过 ReST API 支持创建、更新、列出、显示和激活端口绑定的操作。

    • 计算所有端口可以有一个活动绑定和多个非活动绑定。

    • 每个计算主机只能有一个绑定(活动或非活动)。

    • 当执行 activate 操作时,先前非活动的绑定变为活动状态。 先前的活动绑定变为非活动状态。

    • 作为多个端口绑定实现的结果,SQLAlchemy Port 对象中的 port_binding 关系已重命名为 port_bindings。 同样,Port OVO 的 binding 属性已重命名为 bindings

  • 为 Neutron OVS 代理添加了一个新的配置选项 bridge_mac_table_size。 此值将在 openvswitch-neutron-agent 管理的每个 Open vSwitch 网桥上设置为 other_config:mac-table-size 列。 此新选项的默认值设置为 50000,对于大多数系统来说应该足够了。 有关此选项的更多详细信息,请参阅 Open vSwitch 文档 有关更多信息,请参阅 bug 1775797

  • 添加了 API 扩展 port-mac-address-regenerate。在端口更新时,传递 'null' (None) 作为 mac_address 时,转换器将生成一个新的 MAC 地址并分配给该端口。 RFE: #1768690

  • 为使用路由网络的同一网络上的子网添加主机路由。将为与同一网络上的其他段关联的子网配置静态路由。这确保了 L3 路由网络内的流量即使默认路由位于不同的接口上,也仍然在网络内。

  • 从本版本开始,neutron 服务器将在列表请求上对过滤参数进行验证。如果请求包含无效的过滤参数,Neutron 将返回 400 响应。有效的参数列表记录在 neutron API 参考中。

    添加 API 扩展 filter-validation 以指示这种新的 API 行为。运营商可以通过配置选项禁用此扩展。

升级说明

  • 在升级之前,如果请求包含未知或不受支持的参数,服务器将默默地忽略无效输入。升级后,服务器将返回 400 Bad Request 响应。

    API 用户可能会注意到,收到成功响应的请求现在收到失败响应。如果遇到这种情况,建议他们确认 API 扩展 filter-validation 是否存在,并验证其请求中的过滤参数。

    如果运营商希望保持向后兼容性,可以禁用此功能。如果他们选择这样做,API 扩展 filter-validation 将不存在,API 行为保持不变。

其他说明

  • 每个插件可以决定是否通过将 __filter_validation_support 设置为 True 或 False 来支持过滤验证。如果未设置此字段,则默认值为 False。目前,ML2 插件和所有树内服务插件都支持过滤验证。树外插件默认禁用过滤验证,但如果他们选择,可以将其打开。要支持过滤验证,部署中的核心插件和所有服务插件都必须支持它。

13.0.0.0b2

新特性

  • 为浮动 IP 添加属性 port_details。此属性的值包含关联端口的信息。

  • 支持设置现有子网的 segment_id。这使用户能够将没有子网/段关联的非路由网络转换为路由网络。只有在满足以下两个条件时才能执行此迁移 - 当前 segment_idNone,并且网络包含单个段和子网。

  • 支持使用空字符串作为值的属性过滤。添加了一个 shim 扩展来指示是否支持此功能。

错误修复

  • 对于 Infiniband 支持,Ironic 需要将“client-id”DHCP 选项作为数字发送,以便 IP 地址分配能够工作。现在 Neutron 支持此功能,可以将其指定为 RFC 4776 中定义的选项 61。有关更多信息,请参阅 bug 1770932

其他说明

  • 已从代码库中删除弃用的 IVSInterfaceDriver 类。这意味着 ivsneutron.agent.linux.interface.IVSInterfaceDriver 都不能再用作 neutron.confinterface_driver 配置选项的值。

13.0.0.0b1

序言

为了减少 L2 代理中处理安全组更新所花费的时间,现在将在一组工作线程中执行 conntrack 删除,而不是在主代理线程中,以便它可以快速返回处理其他事件。

新特性

  • 为 HA 路由器添加了新的 unknown 状态。有时,由于通信问题,l3 代理可能无法将健康状态更新到 Neutron 服务器。在此期间,服务器可能不知道托管在该代理上的 HA 路由器是活动状态还是待机状态。

  • 支持基于安全组 ID 过滤端口。如果可用“port-security-group-filtering”扩展,可以使用此功能。

已知问题

  • 在单个桥上要清理的端口数量大于大约 10000 的情况下,可能需要将 ovsdb_timeout 配置选项增加到高于 600 秒的某个值。

升级说明

  • 在升级时,conntrack 条目现在将在工作线程中清理,而不是在调用线程中。

错误修复

  • 修复了一个问题,标准属性(例如 created_atupdated_atrevision_number)未在段资源响应中呈现。

  • 修复了 bug 1763604。覆盖 neutron-ovs-cleanup 脚本中的 ovsdb_timeout 配置选项的默认值。默认值为 10 秒,但当从单个桥删除许多端口时(例如,5000),这不足以用于 neutron-ovs-cleanup 脚本。因此,我们现在将配置选项的默认值覆盖为 600 秒(10 分钟)。

12.0.0.0rc1

新特性

  • Neutron 代理现在支持到 OVSDB 服务器的 SSL 连接。要启用基于 SSL 的连接,请为 ovsdb_connection 设置使用 ssl 前缀的 URI。在使用 SSL 时,还需要设置新的 ovs 组选项,其中包括 ssl_key_filessl_cert_filessl_ca_cert_file

12.0.0.0b3

新特性

  • 现在可以通过配置选项 dscp 为 openvswitch overlay tunnel 端口的外部标头设置 DSCP 值,适用于 OVS 和 linuxbridge 代理。

  • DSCP 也可以通过新的布尔配置选项 dscp_inherit 从内部标头继承,适用于 openvswitch 和 linuxbridge。如果将此选项设置为 true,则将忽略 dscp 的值。

  • 可以访问共享网络的租户现在可以在指定的子网上创建/更新端口,而不是默认子网。这现在是默认行为,可以通过修改 policy.json 文件来更改。

  • 基于 ML2 _common_agent 的 L2 代理现在可以使用 L2 扩展 API。L2 扩展驱动程序可以使用此 API 向 L2 代理请求资源。例如,它用于将 IptablesManager 的实例传递给 Linuxbridge L2 代理 QoS 扩展 驱动程序

  • 支持在按 IP 地址过滤端口时进行子字符串匹配。

弃用说明

  • linuxbridge 中 vxlan 组中的 tos 配置选项已被弃用,并替换为更精确的选项 dscp。TOS 值由 DSCP 和 ECN 位组成。无法通过 TOS 值设置 ECN 值,并且在隧道的情况下,ECN 始终从内部继承。

错误修复

  • 修复了 bug 1736674,安全组规则现在由启用 QoS 扩展 驱动程序Linuxbridge L2 代理 正确应用。

12.0.0.0b2

新特性

  • 实现了浮动 IP QoS。已向浮动 IP 相关的 API 添加了一个新参数 qos_policy_id

  • 已向 L3AgentExtensionAPI 添加了一个新方法 get_router_info

弃用说明

  • ovs_vsctl_timeout 选项已重命名为 ovsdb_timeout,以反映它不特定于 ovsdb_interfacevsctl 实现。它也已移动到 [OVS] 部分。

错误修复

  • Openvswitch 代理有一个名为 fdb 的扩展,它使用 Linux bridge 命令。该 bridge 命令已添加到 openvswitch-plugin.filters 文件中的 rootwrap 中。有关更多信息,请参阅 bug:1730407

  • 通过协议号添加安全组规则已记录,但不知何故在最近几次发布中没有被注意到而中断。现在已修复此问题。有关更多信息,请参阅 bug 1716045

12.0.0.0b1

序言

现在可以禁用从 DHCP 代理发送的回复中的 DNS 服务器分配。

已添加一种新的 DVR 代理类型 dvr_no_external,用于 DVR 路由器,允许服务器在集中节点配置与 DVR 关联的浮动 IP(DNAT/南北路由),同时保持东西路由分布式。

新特性

  • 端口现在具有 dns_domain 属性。从外部 DNS 服务发布它的角度来看,端口的 dns_domain 属性优先于网络的 dns_domain

  • 允许在 neutron-dhcp-agent 中配置 DHCP 更新 (T1) 和重新绑定 (T2) 定时器。通过允许设置这些定时器(如 RFC2132 中定义的选项 58 和 59)在 dnsmasq 中,允许用户更改其他参数,例如实例上的 MTU,而无需等待租约时间到期。更改 T1 而不是租约时间的优势是,如果 DHCP 服务器在租约时间内变得不可访问,实例将不会丢失其 IP 地址,并且不会导致数据平面中断。

  • 现在可以通过将相应子网的 dns_nameservers 属性设置为 0.0.0.0::(对于 IPv4 或 IPv6 子网),来指示 DHCP 代理不要向其客户端提供任何 DNS 服务器地址。

  • 在本版本中引入了一种新的 DVR 代理类型 dvr_no_external。此代理类型允许将浮动 IP(DNAT/南北路由)集中化,同时保持东西路由分布式。

  • 已向 L3AgentExtensionsManager 添加了一种新方法 ha_state_change

已知问题

  • 可能存在混合的 dvr 代理和 dvr_no_external 代理。但请避免在 dvr 代理和 dvr_no_external 代理之间迁移具有浮动 IP 的虚拟机。所有具有浮动 IP 的虚拟机端口应迁移到相同的 agent_mode。这将是其中一项限制。

升级说明

  • 当子网的 DNS 服务器设置为 0.0.0.0:: 时,其功能在本版本中已更改。旧行为是每个 DHCP 代理仅将其自身的 IP 地址作为 DNS 服务器提供给其客户端。新行为是 DHCP 代理根本不提供任何 DNS 服务器 IP 地址。

  • 添加了一种新的 DVR 代理模式 dvr_no_external。在 dvr 模式和此模式之间切换是对数据平面的破坏性操作。

  • 已删除 web_framework 选项。这对操作员/用户应该没有影响,因为它只是用于新 Web 框架开发的选项。

弃用说明

  • 在 Queens 中已弃用 ivs 接口驱动程序,并在 Rocky 中删除。

  • 配置选项 ovsdb_interface 现在已弃用。在未来的版本中,将忽略该选项的值。然后将使用 native 驱动程序。

  • API paste 入口点 neutron.api.versions:Versions.factory 已弃用,将在 Rocky 版本中删除。请更新您的 api-paste.ini 文件以使用 Queens 提供的文件,或将任何对 Versions factory 的引用更新为指向 neutron.pecan_wsgi.app:versions_factory

错误修复

  • 在安全组规则 API 中,仅对 TCP 和 UDP 执行 port_range 值的 API 级别验证。现在也对 DCCP、SCTP 和 UDP-Lite 执行验证。

11.0.0.0rc1

新特性

  • 已添加新的 net-mtu-writable 扩展 API 定义。新的扩展指示网络的 mtu 属性是可写的。支持新扩展的插件预计也支持 net-mtu。第一个支持新扩展的插件是 ml2

  • 与 DVR 路由器关联的未绑定端口的浮动 IP 将不会被分发,而是集中化并在网络节点的 SNAT 命名空间或 dvr_snat 节点中实现。与 DVR 路由器关联的 allowed_address_pair 端口 IP 并且绑定到多个活动虚拟机的浮动 IP 将在网络节点的 SNAT 命名空间或 dvr_snat 节点中实现。这将解决 VRRP 用例。有关此信息,请参阅 bug 1583694

已知问题

  • 虽然绑定端口的浮动 IP 被分发,但未绑定端口的浮动 IP 是集中的。

升级说明

  • 配置选项 max_fixed_ips_per_port 在 Newton 周期中已弃用,并在 Pike 中删除。

弃用说明

  • web_framework 选项已弃用,将在 Queens 中删除。此选项只是为了便于过渡到 pecan 而添加的,因此操作员不应该使用非默认选项。

错误修复

  • 允许未绑定端口的浮动 IP 无论其 device_owner 如何,都能与 DVR 路由器正确配置。

其他说明

  • 更改 MTU 配置选项(global_physnet_mtuphysical_network_mtuspath_mtu)并重新启动 neutron-server 不会影响现有网络的 MTU。但是,新网络将使用新的选项值进行 MTU 计算。要反映现有网络的配置更改,可以使用新的 net-mtu-writable API 扩展来更新这些网络的 mtu 属性。

11.0.0.0b3

新特性

  • openvswitch L2 代理现在支持双向带宽限制。

  • 资源标签机制已重构,以便可以轻松支持新资源的标签支持。支持标签的资源包括网络、子网、端口、子网池、trunk、浮动 IP、策略、安全组和路由器。

  • 某些场景测试需要高级 Glance 镜像(例如,UbuntuCentOS)才能通过。现在默认情况下会跳过这些测试。如果您需要执行这些测试,请配置 tempest.conf 以使用高级镜像,并在 tempest.conf 文件的 neutron_plugin_options 部分中将 image_is_advanced 设置为 True。第一个需要设置新选项才能执行的场景测试用例是 test_trunk

  • Neutron API 现在可以使用 ‘revision_number’ 属性有条件地更新资源,方法是在 HTTP If-Match 标头中设置所需的修订号。这允许客户端确保资源自客户端检索以来未被修改。可以通过查看支持的扩展程序中的 ‘revision-if-match’ 扩展程序来检查服务器上对条件更新的支持。

  • 实现了一个新的扩展,quota_details,它扩展了现有的配额 API,以显示指定租户的详细信息。新的 API 显示诸如 limitsusedreserved 等详细信息。

  • Linuxbridge L2 代理支持入站带宽限制。Linuxbridge L2 代理现在支持双向带宽限制。

  • LinuxBridge 代理中 VXLAN 使用的 UDP 端口现在可以使用 VXLAN.udp_srcport_min、VXLAN.udp_srcport_max 和 VXLAN.udp_dstport 配置选项进行配置。要使用 IANA 分配的端口号,请将 VXLAN.udp_dstport 设置为 4789。默认值未从 Linux 内核默认值 8472 更改。

  • openvswitch 机制驱动程序现在支持通过 SR-IOV 进行硬件卸载。它允许绑定直接(SR-IOV)端口。使用 openvswitch 2.8.0 和 ‘Linux Kernel’ 4.8 允许通过 OpenFlow 控制平面控制 SR-IOV VF 并获得加速的 ‘Open vSwitch’。

  • 新的 API 用于获取支持的规则类型的详细信息。QoS 服务插件现在可以在 Neutron 部署中公开有关支持的 QoS 规则类型的详细信息。新的 API 调用仅允许具有管理员权限的用户使用。

升级说明

  • 已删除弃用的 prevent_arp_spoofing 选项。Neutron 现在始终发送三个免费 ARP 请求到分配给端口的地址,除非端口或网络上禁用端口安全。

弃用说明

  • 用户可以使用 ‘tagging’ 扩展代替 ‘tag’ 扩展和 ‘tag-ext’ 扩展。这些扩展现在已弃用,将在 Queens 版本中删除。

11.0.0.0b2

新特性

  • QoS 服务插件现在支持 qos_bandwidth_limit_rule 中的新属性。这个新参数称为 direction,允许指定应应用限制的流量方向。

  • 允许在未加载和暴露 dvr API 扩展的情况下配置 router 服务插件。为此,请在 neutron.conf 文件中将新的 enable_dvr 选项设置为 False

  • 添加 data_plane_status 属性到端口资源,以表示底层数据平面的状态。此属性应由 Networking 服务外部的实体管理,而 status 属性由 Networking 服务管理。两种状态属性是相互独立的。第三方可以通过 Neutron API 报告底层数据平面中影响 Neutron 端口连接的问题。属性可以取值 None(默认)、ACTIVEDOWN,可供用户读取,并可供具有 data-plane-integrator 角色的管理员和用户写入。将 data_plane_status 附加到 [ml2] extension_drivers 配置选项以加载扩展驱动程序。

  • Neutron API 现在可以使用与 apache2 (httpd)、nginx 等兼容的 mod_wsgi 兼容的 Web 服务器进行管理。

  • 添加了为项目中的所有新网络自动分配的 QoS 策略的默认 QoS 策略。

  • 在配置网关时,主动在所有计算节点上创建 DVR 浮动 IP 命名空间。

  • 引入一个新的配置选项 network_link_prefix,允许更改 API 响应中包含的 URL 中的域。它的行为与 compute_link_prefixglance_link_prefix 选项对 Nova 和 Glance 的作用相同。

  • 启用在 linuxbridge 代理中通过 VNI-地址映射创建具有不同多播地址的 VXLAN。引入了一个新的配置选项 multicast_ranges

已知问题

  • 主动在所有节点上创建 DVR 浮动 IP 命名空间可能会消耗公共 IP 地址,但通过使用子网服务类型,如 网络指南 中所述,消费者可以使用私有 IP 地址作为浮动 IP 代理网关端口,而无需消耗任何公共 IP 地址。

升级说明

  • 如果您的设置不支持 DVR,请考虑在 neutron.conf 文件中将 enable_dvr 设置为 False。这将使 Neutron 停止通过其 /v2.0/extensions API 端点通告对 dvr API 扩展的支持。

  • 以前,neutron-server 使用与库默认值不同的 oslo.db 的配置值。具体来说,当未在配置文件中覆盖时,它使用了以下值:max_pool_size = 10,max_overflow = 20,pool_timeout = 10。在本版本中,neutron-server 而是依赖于库本身定义的默认值。如果您依赖旧的默认值,可能需要调整您的配置文件以显式设置新的值。

  • 已删除弃用的 send_arp_for_ha 配置选项。Neutron 现在始终发送三个免费 ARP 请求到分配给端口的地址。

其他说明

  • 在 ml2_conf.ini 的 [vxlan] 配置部分中配置 multicast_ranges 的示例配置 multicast_ranges = 224.0.0.10:10:90,225.0.0.15:100:900。对于 10 到 90 之间的 VNI,将使用多播地址 224.0.0.0.10,对于 100 到 900,将使用 225.0.0.15。其他 VNI 值将获得标准的 vxlan_group 地址。有关更多信息,请参阅 RFE https://bugs.launchpad.net/neutron/+bug/1579068

11.0.0.0b1

新特性

  • 资源标签机制现在支持子网、端口、子网池和路由器资源。

  • 计量代理驱动程序现在可以在 metering_agent.ini 文件中使用 stevedore 别名指定。例如,driver = iptables 而不是 driver = neutron.services.metering.iptables.iptables_driver:IptablesMeteringDriver

  • 现在支持网络:路由器网关端口的网络 QoS 策略。现在应用于外部网络的 Neutron QoS 策略也适用于外部路由器端口(DVR 或非 DVR)。

  • 为了减少元数据代理的内存占用,haproxy 现在被用作 neutron-ns-metadata-proxy Python 实现的替代品。

  • 子端口分段细节现在可以在 trunk 创建/更新请求期间接受 inherit 作为分段类型。trunk 插件将确定分段类型和 ID,并将其替换为端口连接到的网络的类型和 ID。目前,只有单段 VLAN 网络才能获得预期和正确的结果。

升级说明

  • 以下资源的默认配额已增加:网络(从 10 到 100)、子网(从 10 到 100)、端口(从 50 到 500)。如果您想坚持使用旧值,请考虑在 neutron.conf 文件中显式设置它们。

  • 由于 haproxy 之前未被 neutron-l3-agentneutron-dhcp-agent 使用,因此在升级时必须将 rootwrap 过滤器复制到这两个代理。

  • 要升级到基于 haproxy 的元数据代理,必须重新启动 neutron-l3-agentneutron-dhcp-agent。在启动时,将检测到旧的代理进程并替换为 haproxy

  • 升级后,未配置 physical_interface_mappings 的 macvtap 代理无法启动。指定有效的映射才能启动和使用 macvtap 代理。

弃用说明

  • L3 代理选项 gateway_external_network_id 已弃用,将在下一个版本中删除,以及它所依赖的 external_network_bridge

  • 现在 rootwrap 守护程序模式受 XenServer 支持,neutron-rootwrap-xen-dom0 脚本已弃用,将在下一个版本中删除。

  • of_interface Open vSwitch 代理配置选项已弃用,将来将被删除。在选项删除后,当前的默认驱动程序(native)将是唯一支持的 of_interface 驱动程序。

  • 选项 nova_metadata_ip 已弃用,将在 Queens 中删除。它已被新的 nova_metadata_host 选项取代,因为它更好地反映了该选项接受 IP 地址和 DNS 名称的事实。

10.0.0.0rc1

新特性

  • Keepalived VRRP 健康检查功能,用于启用从“主”路由器到所有网关的连接性验证。激活此功能可启用网关连接性验证,并在连接丢失时将“主”路由器重新安排到另一个节点。如果所有路由器都失去与网关的连接,则将重复轮询选举过程,直到其中一个路由器恢复其网关连接。在此期间,所有路由器都将报告为“主”路由器。

  • QoS 驱动程序架构已重构,以克服几个先前的限制,主要限制是将 QoS 细节耦合到机制驱动程序中,下一个限制是需要配置旋钮来启用每个特定的通知驱动程序,这将从现在起自动处理。

  • vhost-user 重连是一种机制,允许 vhost-user 前端在后端因正常关闭或崩溃而终止时重新连接到 vhost-user 后端。这允许使用 vhost-user 接口的 VM 自动重新连接到后端,例如 Open vSwitch,而无需重新启动 VM。在此版本中,已向 neutron Open vSwitch 代理和 ml2 驱动程序添加了对 vhost-user 重连的支持。

弃用说明

  • 已弃用 [qos] 部分中的 notification_drivers。它将在未来的版本中删除。

其他说明

  • vhost-user 重连需要 dpdk 16.07 和 qemu 2.7 以及 openvswitch 2.6 才能正常工作。如果使用较旧的 qemu,则重连将不可用,但 vhost-user 仍然可以正常工作。

10.0.0.0b3

新特性

  • 添加了一个新的配置部分,[placement],其中包含两个新的选项,允许 segments 插件使用 Compute placement ReST API。此 API 允许根据路由网络中 IPv4 地址的可用性来影响实例的节点放置。第一个选项,region_name,指示要使用的 placement 区域。如果 keystone 管理多个区域,此选项很有用。第二个选项,endpoint_type,确定要使用的 placement 端点类型。将在 keystone 目录中查找此端点,并且应该是 publicinternaladmin 中的一个。

  • Designate 驱动程序现在可以使用 Keystone v3 身份验证选项。“[designate] 部分现在接受 auth_type 选项,以及其他 keystoneauth 选项(例如 auth_urlusernameuser_domain_namepasswordproject_nameproject_domain_name)。”

  • 已添加一种机制到 neutron-netns-cleanup 工具中,允许杀死侦听任何 Unix 或网络套接字在命名空间内的进程。新的机制将尝试使用 SIGTERM 信号优雅地杀死这些进程,如果它们拒绝死亡,则将 SIGKILL 信号发送到每个剩余进程,以确保正确清理。

  • 已添加对 oslo.privsep 的初步支持。大多数外部命令仍然使用 oslo.rootwrap 执行。

升级说明

  • DHCP 代理配置选项 dhcp_domain 在 Liberty 周期中已弃用,现在不再使用。应使用 dns_domain 选项代替。

  • 已删除 advertise_mtu 选项。现在 Neutron 始终使用所有可用手段向实例通告 MTU(包括 DHCPv4 和 IPv6 RA)。

  • 配置选项 min_l3_agents_per_router 在 Newton 周期中已弃用,并在 Ocata 中删除。HA 路由器不再需要创建最小数量的 L3 代理,尽管显然需要至少两个 L3 代理才能提供 HA 保障。删除该选项的原因是,当代理未运行时,路由器刚刚创建。现在将成功创建路由器,并且当第二个代理恢复运行后,路由器将被安排到它,从而提供 HA。

10.0.0.0b2

新特性

  • Linux Bridge 代理现在支持 QoS DSCP 标记规则。

升级说明

  • 升级时,通过 SLAAC 在 DHCP 命名空间中动态创建的 IPv6 地址将被删除,并添加静态 IPv6 地址。

  • 为了与预 Icehouse 版本向后兼容而保留在树中的过时的 oslo.messaging.notify.drivers 入口点已被删除。这些是 neutron.openstack.common.notifier.log_notifierneutron.openstack.common.notifier.no_op_notifierneutron.openstack.common.notifier.test_notifierneutron.openstack.common.notifier.rpc_notifier2neutron.openstack.common.notifier.rpc_notifier。使用 oslo.messaging 库提供的值来配置通知驱动程序。

错误修复

  • 在 DHCP 命名空间中添加端口时存在竞争条件,可能导致 L3 代理发送的路由器通告中的 IPv6 地址通过 SLAAC 动态创建,从而导致 DHCP 代理启动失败。此错误已修复,但在升级时需要注意处理任何潜在的过时动态地址。有关更多信息,请参阅错误 1627902

其他说明

  • 由于内部 L3 逻辑的变化,服务器崩溃/后端故障期间 FIP 创建可能会导致连接到外部网络的悬挂端口。可以通过 PENDING device_id 参数识别这些端口。虽然这些端口也可以由管理员删除,但 neutron-server 服务现在还将触发定期(大约每 10 分钟一次)清理来解决该问题。

  • 已删除配置选项 allow_paginationallow_sorting。现在,如果插件支持这些功能,则始终启用排序和分页。

10.0.0.0b1

序言

Hyper-V Neutron 代理已完全从 Neutron 中分解。因此,已删除 neutron.plugins.hyperv.agent.security_groups_driver.HyperVSecurityGroupsDriver 防火墙驱动程序。更新 Hyper-V 节点上的 neutron_hyperv_agent.conf / neutron_ovs_agent.conf 文件以使用 hyperv.neutron.security_groups_driver.HyperVSecurityGroupsDriver,即 networking_hyperv 安全组驱动程序。

新特性

  • 添加了中间件来解析 X-Forwarded-Proto HTTP 标头或 Proxy 协议,以便帮助 Neutron 在置于 TLS 代理(例如 haproxy)后面时使用正确的 URL 引用。这会将 http_proxy_to_wsgi 中间件添加到管道中。此中间件默认禁用,但可以通过 [oslo_middleware] 组中的配置选项启用。

  • 资源字段 created_atupdated_at 现在包含结尾的时区指示符。由于这是字段格式的更改,旧的 timestamp_core 扩展已被删除,并替换为 standard-attr-timestamp 扩展。

已知问题

  • 在内核 < 3.19 中,net.ipv4.ip_nonlocal_bind sysctl 选项未隔离到网络命名空间范围。L3 HA 将此选项设置为零,以避免为在处理过程中删除的 IP 地址发送不必要的 ARP。如果发生这种情况,将发送不必要的 ARP。这可能会用错误的 MAC 地址填充对等机器的 ARP 缓存表。

升级说明

  • 已更新 paste 管道的 api-paste.ini 配置文件,以添加 http_proxy_to_wsgi 中间件。

  • 更新 Hyper-V 节点上的 neutron_hyperv_agent.conf / neutron_ovs_agent.conf 文件以使用 hyperv.neutron.security_groups_driver.HyperVSecurityGroupsDriver,即 networking_hyperv 安全组驱动程序。

  • 已添加一个新的选项 ha_keepalived_state_change_server_threads,用于配置为 keepalived 服务器连接请求生成的并发线程数。较高的值会增加代理节点上的 CPU 负载。默认值为节点上 CPU 数量的一半。这允许操作员调整线程数以适应其环境。使用更多线程,可以更快地处理多个 HA 路由器的状态变化的并发请求。

  • 已删除 timestamp_core 扩展,并替换为 standard-attr-timestamp 扩展。资源仍然在 created_atupdated_at 字段中具有时间戳,但时间戳将在结尾附加时区信息,以与其他 OpenStack 项目保持一致。

弃用说明

  • L3 代理 send_arp_for_ha configuration 选项已弃用,将在 Pike 中删除。该功能将保留,并且代理将在配置新的浮动 IP 时发送三个不必要的 ARP。

  • iptables 防火墙驱动程序在 Neutron 的下一个版本中将不再启用桥接防火墙。如果您的发行版覆盖了相关 sysctl 设置(net.bridge.bridge-nf-call-arptablesnet.bridge.bridge-nf-call-ip6tablesnet.bridge.bridge-nf-call-iptables)的默认值,请确保使用 /etc/sysctl.conf 或 /etc/sysctl.d/* 配置文件将其设置回上游内核默认值(1)。

错误修复

  • keepalived 1.2.20 之前的版本在 keepalived 进程收到 SIGHUP 信号时不会发送 gratuitous ARP。这些版本未打包在一些 Linux 发行版中,例如 Red Hat Enterprise Linux 7、CentOS 7 或 Ubuntu Xenial。不发送 gratuitous ARP 可能会导致对浮动 IP 地址的错误条目出现在对等 ARP 缓存表中,直到这些条目失效。为了解决这种情况,Neutron 现在为路由器命名空间中非 HA 接口上出现的所有新 IP 地址发送 gratuitous ARP。此行为模拟了新版本 keepalived 的行为。

9.0.0.0rc1

序言

为端口资源添加 ip_allocation 属性

“vlan-aware-vms”功能允许 Nova 用户在单个端口(trunk 父端口)上启动虚拟机,该端口连接多个 Neutron 逻辑网络。

新特性

  • 端口资源现在具有 ip_allocation 属性。该属性的值将在创建端口时设置为 ‘immediate’(立即)、‘deferred’(延迟)或 ‘none’(无)。在更新端口时不会更改它。‘immediate’ 表示端口预计具有 IP 地址,并且 Neutron 在端口创建时尝试了 IP 分配。‘deferred’ 表示端口预计具有 IP 地址,但 Neutron 延迟 IP 分配,直到端口更新提供将端口绑定到的主机。‘none’ 表示端口显式创建,没有地址,通过在创建时传递 [] 在 fixed_ips 中实现。

  • Networking API 现在支持请求和响应中的 ‘project_id’ 字段,以兼容 Identity (Keystone) API V3。已添加一个新的 API 扩展 ‘project-id’,允许 API 用户检测是否支持 ‘project_id’ 字段。请注意,‘tenant_id’ 字段仍然受支持,并且这两个字段在功能上是等效的。

  • “vlan-aware-vms”功能可用。要启用它,必须将名为 ‘trunk’ 的服务插件添加到 neutron.conf 中的 service_plugins 选项中。该插件暴露了两个新的扩展 trunktrunk_details。该插件可以与多个后端一起工作,特别是 Neutron 支持 ML2/openvswitch 和 ML2/linuxbridge。 尽管应该为与 trunk 关联的端口保留 Neutron API 兼容性,但由于这是该功能可用的第一个版本,因此预期一个或两个驱动程序都可能存在功能差距。 这些差距将在报告后随着时间的推移得到填补。 CLI 可通过 openstackclient 和 python-neutronclient 5.1.0 或更高版本获得。有关更多详细信息,请查看网络指南。

升级说明

  • 所有现有端口都被认为具有 ‘immediate’ IP 分配。任何没有此属性的端口也应被认为具有 immediate IP 分配。

  • dhcp_lease_time 配置选项在 Havana 周期中已被弃用。此选项不再受支持。该选项已被 dhcp_lease_duration 替换。

安全问题

  • 在使用 ML2/openvswitch 驱动程序时,“vlan-aware-vms”功能具有以下限制

    • 安全组不能与基于 iptables 的防火墙驱动程序一起工作。

    • 如果需要安全组,则需要使用状态化 OVS 防火墙,但对于 OVS 版本 2.5 或更低版本,这会阻止使用 DPDK 数据路径。

9.0.0.0b3

序言

  • 在释放 DHCPv6 状态化子网的未使用 IPv6 租约时,调用 dhcp_release6 命令行实用程序。dhcp_release6 首次出现在 dnsmasq 2.76 中

L3 代理中 ‘external_network_bridge’ 的默认值现在是 ‘’。

Liberty 版本中添加的内部可插拔 IPAM 实现现在是旧的和新部署的默认设置。升级期间无条件地将旧部署切换到可插拔 IPAM。旧的非可插拔 IPAM 已被弃用并从代码库中删除。

新特性

  • SR-IOV 现在支持出口最小带宽配置。

  • 子网现在具有一个新的属性 ‘service_types’。这是一个端口设备所有者的列表,只有具有匹配设备所有者的端口才会从该子网获得 IP。如果对于给定的设备所有者没有匹配的服务子网,或者网络上没有定义任何服务子网,则端口将从没有 service-types 的子网分配 IP。这保留了与旧部署的向后兼容性。

  • net-mtu 扩展现在在每次访问网络时重新计算网络 MTU,而不仅仅是在创建时。它现在允许操作员调整 MTU 相关配置选项,并在控制器重新启动后立即将它们应用于所有网络资源,无论是旧的还是新的。

  • 新的 l2_adjacency 扩展将 l2_adjacency 字段添加到网络中,以指示该网络上的端口之间是否有保证的 L2 邻接性。路由网络实现通常会将 l2_adjacency 设置为 False。

  • Neutron L3 代理现在能够加载代理扩展,这允许其他服务在无需额外的代理更改的情况下进行集成。还提供了暴露 L3 代理的路由器信息数据给扩展的 API,以便扩展可以与路由器状态保持一致。

  • 用户现在可以应用 QoS 规则到端口或网络,以设置每个队列和端口的最小出口带宽。最小出口带宽规则单独应用于每个端口。

  • 已添加新的 API 扩展 ‘sorting’ 和 ‘pagination’,以允许 API 用户检测是否启用了排序和分页功能。这些功能由 allow_sortingallow_pagination 配置选项控制。

已知问题

  • 在 DHCPv6 状态化寻址中使用时缺少 dhcp_release6 可能会导致 bug 1521666。Neutron 现在支持 dhcp_release6,但如果该工具不可用,则会导致日志警告增加。有关更多详细信息,请阅读 bug 报告 1622002

升级说明

  • 应在运行 DHCP 代理的系统上安装包含 dhcp_release6 的 dnsmasq 版本。未能这样做可能会导致 DHCPv6 状态化寻址无法正常工作。

  • rootwrap 过滤器文件 dhcp.filters 必须更新为包含 dhcp_release6,否则尝试运行该实用程序将导致 NoFilterMatched 异常。

  • 已添加一个新的表 ‘subnet_service_types’ 来支持此功能。它使用 ‘subnets’ 表中的 ID 字段作为外键。

  • ‘external_network_bridge’ 的默认值已更改为 ‘’,因为这是配置 L3 代理的首选方式,并且将在未来的版本中成为唯一的方式。如果您尚未显式设置此值并且使用 L3 代理,则需要将此值设置为 ‘br-ex’ 以匹配旧的默认值。如果您正在使用 ‘br-ex’,则应切换到 ‘’,确保您的外部网络具有 flat segment,并确保您的 L2 代理在外部网络的 flat segment physnet 和 ‘br-ex’ 之间具有 bridge_mapping 条目,以获得相同的连接性。如果外部网络还没有 flat segment,则需要从外部网络分离所有路由器,删除不正确的 segment 类型,添加 flat segment,然后重新连接路由器。

  • API 排序和分页功能现在默认启用。

  • 具有不反映配置的 MTU 值的现有网络将在控制器升级后接收新的 MTU 值。请注意,为了将新的正确 MTU 值传播到后端,您可能需要重新同步设置端口的所有代理,以及重新连接受影响实例的 VIF。

  • 在升级期间,‘internal’ ipam 驱动程序成为 ‘ipam_driver’ 配置选项的默认值,并且数据使用 alembic 迁移迁移到新表。

  • 删除了 network_device_mtu 配置选项。建议现有用户采用新的配置选项来适应其底层的物理基础设施。相关的选项是 global_physnet_mtu 用于所有插件,以及 path_mtu 和 physical_network_mtus 用于 ML2。

  • 删除了 default_ipv4_subnet_pooldefault_ipv6_subnet_pool 配置选项。请使用 create/update subnetpool API 的 is_default 选项。

  • tenant_id 列已重命名为 project_id。需要应用此数据库迁移作为离线迁移。

弃用说明

  • 配置选项 allow_sortingallow_pagination 已被弃用,将在未来的版本中删除。

  • Neutron 控制器服务当前允许从一些文件加载 service_providers 选项,这些文件未通过 –config-dir 或 –config-file CLI 选项传递给它。此行为现在已被弃用,将在 Ocata 中禁用。建议当前用户切换到上述 CLI 选项。

  • ‘supported_pci_vendor_devs’ 选项在 Newton 中已被弃用,将在 Ocata 中删除。通过 pci_passthrough_whitelist 选项在 nova-scheduler 中完成对受支持的 pci 供应商的验证,因此该选项被认为是多余的。

  • 非可插拔 ipam 实现已被弃用,将在 Newton 发布周期中删除。

错误修复

  • 允许 SR-IOV 代理在 0 个 vfs 的情况下运行

其他说明

  • 为了使用 QoS 出口最小带宽限制功能,‘ip-link’ 必须支持扩展的 VF 管理参数 min_tx_rate。支持此参数的 ip-link 的最小版本是 iproute2-ss140804,git 标签 v3.16.0

  • 在撰写本文时,Neutron 带宽预订未与 Compute 调度程序集成,这意味着最小带宽未得到保证,而是尽最大努力提供。

9.0.0.0b2

序言

添加选项以指定 neutron 的外部 dns 驱动程序,用于基于 SSL 的连接。这使得在端点基于 SSL 的情况下使用 neutron 与 designate 成为可能。用户可以在 neutron.conf 文件的 [designate] 部分中指定跳过证书验证或指定有效证书的路径。

在 Newton 之前,neutron-openvswitch-agent 默认使用 ‘ovs-ofctl’ of_interface 驱动程序。在 Newton 中,‘of_interface’ 默认设置为 ‘native’。这主要消除了生成 ovs-ofctl 并略微提高了性能。

正确计算使用 IPv4 或 IPv6 端点的覆盖(隧道)协议开销。ML2 插件配置文件在 ‘[ml2]’ 部分包含一个新的配置选项 ‘overlay_ip_version’,指示所有覆盖网络端点的 IP 版本。使用 ‘4’ 表示 IPv4,使用 ‘6’ 表示 IPv6。默认为 ‘4’。此外,所有 layer-2 代理必须使用相同 IP 版本的端点。

在 Newton 之前,‘ovsdb_interface’ 的默认选项是 ‘vsctl’。在 Newton 中,‘ovsdb_interface’ 默认设置为 ‘native’。此更改将与 OVSDB 的通信方式从 ovs-vsctl 工具切换到 Open vSwitch python api,以提高典型部署的开箱即用性能。

删除 neutron.conf 文件中的 ‘quota_items’ 配置选项。此选项自 Liberty 版本以来已被弃用,现在没有效果。

删除 l3_agent.ini 文件中的 ‘router_id’ 配置选项。‘router_id’ 选项定义为在 use_namespaces=False 时将 l3 代理与特定路由器关联。在 Mitaka 版本中删除 use_namespaces 后,该选项已被弃用。

新特性

  • 已添加两个新的选项到 [designate] 部分以支持 SSL。

  • 第一个选项 insecure 允许在创建与 designate 客户端建立会话的 keystone 会话时跳过 SSL 验证。默认值为 False,这意味着始终验证连接。

  • 第二个选项 ca_cert 允许设置有效证书文件的路径。默认值为 None。

  • Neutron 切换到使用 oslo.cache 库来缓存元数据代理中的端口状态。有了它,现在可以使用更多的缓存后端,包括 Memcached 和 Mongo。有关更多详细信息,请参阅 oslo.cache 文档。

升级说明

  • dhcpmasq_dns_server 配置选项在 kilo 周期中已被弃用。此值不再受支持。

  • 要保留 neutron-openvswitch-agent 的旧默认值,请在 openvswitch 代理配置文件的 ‘[ovs]’ 部分中使用 ‘of_interface = ovs-ofctl’。

  • 默认情况下,native 接口将使 Ryu 控制器侦听 127.0.0.1:6633。可以使用 of_listen_address 和 of_listen_port 选项配置侦听地址。确保控制器有权在配置的地址上侦听。

  • 定义环境的 ‘overlay_ip_version’ 选项和值。仅在不使用默认值 ‘4’ 时才需要。

  • 要保留旧默认值,请在 openvswitch_agent.ini(常见路径 ‘/etc/neutron/plugins/ml2/openvswitch_agent.ini’)的 ‘[ovs]’ 部分中使用 ‘ovsdb_interface = vsctl’,如果有一个单独的 openvswitch 代理配置文件;否则将上述更改应用于 ml2_conf.ini(常见路径 ‘/etc/neutron/plugins/ml2/ml2_conf.ini’)。

  • ovsdb-server 默认配置为监听 127.0.0.1:6640 上的连接。可以使用 ovsdb_connection 配置选项配置地址。确保 ovsdb-server 具有监听配置地址的权限。

  • 从 neutron.conf 文件中删除 ‘quota_items’ 配置选项。

  • 从 l3_agent.ini 文件中删除 ‘router_id’ 配置选项。

弃用说明

  • 选项 min_l3_agents_per_router 已弃用,将在 Ocata 版本中删除,届时将始终允许新的 HA 路由器的调度。

  • 从 Newton 版本开始,cache_url 配置选项已弃用,将在 Ocata 中删除。请使用 [cache] 组配置元数据缓存,设置 enable = True 并配置您的后端。

错误修复

  • 为了修复 SR-IOV 实例和普通实例之间的通信问题,FDB 填充扩展已添加到 OVS 或 linuxbridge 代理。原因是来自 SR-IOV 直连端口实例到位于同一 hypervisor 上的普通端口实例的消息直接发送到线路,因为 FDB 表尚未更新。FDB 填充扩展使用 handle_port delete_port 扩展接口消息跟踪实例的启动/删除操作,并相应地更新 hypervisor 的 FDB 表。请注意,此 L2 代理扩展不支持允许地址对扩展。

其他说明

  • ‘overlay_ip_version’ 选项的值会为 IPv4 添加 20 字节或为 IPv6 添加 40 字节,以确定总隧道开销量。

9.0.0.0b1

序言

支持配置用于 WSGI 的 greenthreads 池。

API 中已添加一条新规则,允许使用 DSCP 值标记流量。目前,Open vSwitch QoS 驱动程序支持此功能。

Neutron 服务器不再需要配置防火墙驱动程序,并且可以支持混合 iptables 防火墙和纯 OVS 防火墙的混合环境。

支持在 OVS 中使用 IPv6 地址作为隧道端点。

在具有网络访问权限的 dhcp-agents 上调度网络

OFAgent 已在 Newton 周期中删除。

默认情况下,Open vSwitch 和 Linuxbridge 代理的 QoS 驱动程序将突发值计算为可用带宽的 80%。

可以使用 SR-IOV 多个 NIC 用于物理网络。

新功能

  • 对于先前未定义配额的租户,quota delete 的返回码已从 204 更改为 404。

  • Neutron 可以将 QoS 规则应用于端口,以标记传出流量的服务类型包头字段。

  • Open vSwitch Neutron 代理已扩展,以标记从 VM 传出的数据包的服务类型 IP 头字段,当应用 QoS 规则时。

  • Neutron 服务器不再需要配置防火墙驱动程序,并且可以支持混合 iptables 防火墙和纯 OVS 防火墙的混合环境。

  • ml2_conf.ini 中的 local_ip 值现在可以设置为系统上配置的 IPv6 地址。

  • DHCP 调度程序使用“filter_host_with_network_access”插件方法来过滤具有 dhcp 网络访问权限的主机。插件可以重载它以定义自己的过滤逻辑。特别是,ML2 插件将过滤委托给机制驱动程序。

升级说明

  • 引入了 OSprofiler 支持。为了允许其使用,api-paste.ini 文件需要修改为包含 osprofiler 中间件。此外,[profiler] 部分需要添加到 neutron.conf 文件中,并定义 enabledhmac_keystrace_sqlalchemy 标志。

  • 如果您依赖于 ML2 path_mtu 的默认值 1500 来限制新网络资源使用的 MTU,请在 ml2_conf.ini 文件中显式设置它。

弃用说明

  • ‘advertise_mtu’ 选项已弃用,将在 Ocata 中删除。没有使用案例可以禁用此功能,因此该选项被认为是不必要的。DHCP 和 L3 代理将继续向实例通告 MTU 值。其他不使用这些代理的插件也鼓励向实例通告 MTU。MTU 通告的实际实现取决于所使用的插件,但假定至少支持 IPv4 客户端的 DHCP 选项和 IPv6 客户端的路由器通告。

  • 选项 [AGENT] prevent_arp_spoofing 已弃用,将在 Ocata 版本中删除。除非通过 API 通过端口安全扩展显式禁用,否则应始终启用 ARP 欺骗保护。它成为配置选项的主要原因是它是在 Kilo 开发周期的末尾合并的,因此被认为不稳定。自 Liberty 以来的默认情况下已启用,并且被认为稳定,因此没有理由使其可配置。

安全问题

  • OSprofiler 支持需要在各种 OpenStack 服务之间传递跟踪信息。这些信息由 neutron.conf 配置文件中定义的 HMAC 密钥之一安全签名。为了允许跨项目跟踪,用户应使用所有希望跟踪的 OpenStack 服务共用的密钥。

错误修复

  • 添加了缺少的 OSprofiler 支持。这个跨项目分析库允许跟踪支持它的所有 OpenStack 服务的各种 OpenStack 请求。要启动 OpenStack 请求跟踪,需要将 –profile <HMAC_KEY> 选项添加到 CLI 命令。此密钥需要存在于 neutron.conf 配置文件的 [profiler] 配置部分下的 hmac_keys 选项之一中。要启用或禁用 Neutron 分析,需要将相同的 enabled 选项设置为 TrueFalse。默认情况下,Neutron 将跟踪所有 API 和 RPC 请求,但也有机会跟踪 DB 请求。为此,需要将 trace_sqlalchemy 选项设置为 True。作为先决条件,OSprofiler 库及其存储后端需要安装到环境中。如果这样(并且如果在 neutron.conf 中启用了分析),则可以使用以下命令生成跟踪 - $ neutron –profile SECRET_KEY <subcommand>。在输出的末尾,将有一条带有 <trace_id> 的消息,并且要绘制漂亮的 HTML 图表,应使用以下命令 - $ osprofiler trace show <trace_id> –html –out result.html

  • ML2 path_mtu 选项的默认值已从 1500 更改为 0,有效地禁用了其参与网络 MTU 计算,除非在 ml2_conf.ini 配置文件中覆盖它。

  • 修复了 Bug 1548193,删除了 ‘force_gateway_on_subnet’ 配置选项。这将始终允许添加子网外部的网关,并且无法将网关强制到子网范围。

  • 修复了 bug 1572670

  • sriov_nic 配置的 ‘physical_device_mappings’ 现在可以接受每个物理网络多个 NIC。例如,如果 ‘physnet2’ 连接到 enp1s0f0 和 enp1s0f1,则 ‘physnet2:enp1s0f0,physnet2:enp1s0f1’ 将是一个有效的选项。

其他说明

  • 运营商可能希望根据此 邮件列表帖子 中概述的调查来调整 max_overflowwsgi_default_pool_size 配置选项。 wsgi_default_pool_size 的默认值继承自 oslo.config,当前为 100。这是从以前的 Neutron 特定值 1000 的变化。

  • 需要 OVS 2.5+ 版本或更高版本以及 linux 内核 4.3 或更高版本。有关更多信息,请参阅 OVS github 页面

  • Openflow 代理(OFAgent) 机制驱动程序及其代理已在 Newton 周期中删除,以支持具有“native” of_interface 的 OpenvSwitch 机制驱动程序。

  • 删除了配置选项 ‘force_gateway_on_subnet’。这将始终允许添加子网外部的网关,并且无法将网关强制到子网范围。