9.2. 为 QoS 策略配置网络服务


Red Hat OpenStack Platform (RHOSP) Networking 服务(neutron)中的服务质量功能通过 qos 服务插件提供。使用 ML2/OVS 和 ML2/OVN 机制驱动程序时,qos 默认加载。但是,对于 ML2/SR-IOV,这并不为 true。

qos 服务插件与 ML2/OVS 和 ML2/SR-IOV 机制驱动程序搭配使用时,还必须在其对应的代理上加载 qos 扩展。

以下列表总结了为 QoS 配置网络服务时必须执行的任务。任务详情遵循这个列表:

  • 对于所有 QoS 策略类型:

    • 添加 qos 服务插件。
    • 为代理(仅限OVS 和 SR-IOV)添加 qos 扩展。
  • 仅使用最小带宽策略调度虚拟机实例的其他任务:

    • 如果与计算服务(nova)使用的名称不同,请指定虚拟机监控程序名称。
    • 为每个 Compute 节点上为相关代理配置资源提供程序入口和出口带宽。
    • (可选)不支持 Mark vnic_types
  • 在只使用 ML/OVS 和隧道的系统上为 DSCP 标记策略的额外任务:

    • dscp_inherit 设置为 true

先决条件

  • 您必须是有权访问 RHOSP undercloud 的 stack 用户。

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 提供 undercloud 凭证文件:

    $ source ~/stackrc
  3. 确认 qos 服务插件尚未加载。

    $ openstack network qos policy list

    如果没有加载 qos 服务插件,您会收到 ResourceNotFound 错误。如果没有收到错误,则插件会被加载,您不需要执行本主题中的步骤。

  4. 创建 YAML 自定义环境文件。

    示例

    $ vi /home/stack/templates/my-neutron-environment.yaml

  5. 您的环境文件必须包含关键字 parameter_defaults。在 parameter_defaults 下面的新行中,将 qos 添加到 NeutronServicePlugins 参数:

    parameter_defaults:
       NeutronServicePlugins: "qos"
  6. 如果使用 ML2/OVS 和 ML2/SR-IOV 机制驱动程序,那么您还必须使用 NeutronAgentExtensionsNeutronSriovAgentExtensions 变量分别加载代理上的 qos 扩展:

    • ML2/OVS

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronAgentExtensions: "qos"
    • ML2/SR-IOV

      parameter_defaults:
        NeutronServicePlugins: "qos"
        NeutronSriovAgentExtensions: "qos"
  7. 如果要使用最小带宽 QoS 策略调度虚拟机实例,则还必须执行以下操作:

    1. 放置 添加到插件列表中,并确保列表中还包含 qos

      parameter_defaults:
         NeutronServicePlugins: "qos,placement"
    2. 如果虚拟机监控程序名称与计算服务(nova)使用的规范虚拟机监控程序名称匹配,则跳至第 7.iii 步。

      如果虚拟机监控程序名称与计算服务使用的规范管理程序名称不匹配,请使用 resource_provider_default_hypervisor 指定替代的虚拟机监控程序名称:

      • ML2/OVS

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::ovs::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
      • ML2/SR-IOV

        parameter_defaults:
          NeutronServicePlugins: "qos,placement"
          ExtraConfig:
            Neutron::agents::ml2::sriov::resource_provider_default_hypervisor: %{hiera('fqdn_canonical')}
        重要

        设置替代管理程序名称的另一种方法是使用 resource_provider_hypervisor

        • ML2/OVS

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::ovs::resource_provider_hypervisors:"ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
        • ML2/SR-IOV

          parameter_defaults:
            ExtraConfig:
               Neutron::agents::ml2::sriov::resource_provider_hypervisors:
               "ens5:%{hiera('fqdn_canonical')},ens6:%{hiera('fqdn_canonical')}"
    3. 在需要提供最小带宽的每个 Compute 节点上为相关代理配置资源供应商入口和出口带宽。

      您可以使用以下格式配置出口、入口或两者:

      • 仅配置出口带宽,单位为 kbps:

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:,<bridge1>:<egress_kbps>:,...,<bridgeN>:<egress_kbps>:
      • 仅配置入口带宽,单位为 kbps:

        NeutronOvsResourceProviderBandwidths: <bridge0>::<ingress_kbps>,<bridge1>::<ingress_kbps>,...,<bridgeN>::<ingress_kbps>
      • 以 kbps 配置出口和入口带宽:

        NeutronOvsResourceProviderBandwidths: <bridge0>:<egress_kbps>:<ingress_kbps>,<bridge1>:<egress_kbps>:<ingress_kbps>,...,<bridgeN>:<egress_kbps>:<ingress_kbps>

        示例 - OVS 代理

        要为 OVS 代理配置资源供应商入口和出口带宽,请在网络环境文件中添加以下配置:

        parameter_defaults:
          ...
          NeutronBridgeMappings: physnet0:br-physnet0
          NeutronOvsResourceProviderBandwidths: br-physnet0:10000000:10000000

        示例 - SRIOV 代理

        要为 SRIOV 代理配置资源供应商入口和出口带宽,请在网络环境文件中添加以下配置:

        parameter_defaults:
          ...
          NeutronML2PhysicalNetworkMtus: physnet0:1500,physnet1:1500
          NeutronSriovResourceProviderBandwidths: ens5:40000000:40000000,ens6:40000000:40000000
    4. 可选:当多个 ML2 机制驱动程序默认支持它们且在放置服务中跟踪多个代理时,将 vnic_types 标记为不支持,还要在您的环境文件中添加以下配置:

      示例 - OVS 代理

      parameter_defaults:
        ...
        NeutronOvsVnicTypeBlacklist: direct

      示例 - SRIOV 代理

      parameter_defaults:
        ...
        NeutronSriovVnicTypeBlacklist: direct

  8. 如果要创建 DSCP 标记策略,并将 ML2/OVS 与隧道协议(VXLAN 或 GRE)搭配使用,然后在 NeutronAgentExtensions 下添加以下行:

    parameter_defaults:
      ...
      ControllerExtraConfig:
        neutron::config::server_config:
            agent/dscp_inherit:
                value: true

    dscp_inherittrue 时,网络服务会将内部标头的 DSCP 值复制到外部标头。

  9. 运行部署命令,并包括核心 heat 模板、其他环境文件和新的自定义环境文件。

    重要

    但是,环境文件的顺序非常重要,因为后续环境文件中定义的参数和资源更为优先。

    示例

    $ openstack overcloud deploy --templates \
    -e <other_environment_files> \
    -e /home/stack/templates/my-neutron-environment.yaml

验证

  • 确认已加载 qos 服务插件:

    $ openstack network qos policy list

    如果 qos 服务插件已加载,则不会收到 ResourceNotFound 错误。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部