第 4 章 使用 Quality of Service (QoS)策略来管理数据流量


您可以使用服务质量(QoS)策略将速率限制应用到 Red Hat OpenStack Platform (RHOSP)网络上的出口和入口流量,为虚拟机实例提供不同的服务级别。

您可以将 QoS 策略应用到单独的端口,或者将 QoS 策略应用到项目网络,其中没有附加特定策略的端口继承该策略。

注意

内部网络拥有的端口(如 DHCP 和内部路由器端口)不包括在网络策略应用中。

您可以动态应用、修改或删除 QoS 策略。但是,对于保证最小带宽 QoS 策略,您只能在没有使用策略分配给的任何端口时应用修改。

4.1. 使用 QoS 策略控制最小带宽

对于 OpenShift (RHOSO)网络服务(neutron)上的 Red Hat OpenStack Services,可在两个不同的上下文中强制执行保证的最小带宽 QoS 规则:网络服务后端实施和资源分配调度强制。

网络后端 ML2/OVN 或 ML2/SR-IOV 会尝试保证应用该规则的每个端口都小于指定的网络带宽。

当您使用资源分配调度带宽强制时,计算服务(nova)仅将虚拟机实例放在支持最小带宽的主机上。

您可以使用网络服务后端强制、资源分配调度强制来应用 QoS 最小带宽规则,或两者。

下表标识了支持最小带宽 QoS 策略的 Modular Layer 2 (ML2)机制驱动程序:

Expand
表 4.1. 支持最小带宽 QoS 的 ML2 机制驱动程序
ML2 机制驱动程序AgentVNIC 类型

ML2/OVN

(不适用)

normal

ML2/SR-IOV

sriovnicswitch

direct

您可以通过将 Red Hat OpenStack Services on OpenShift (RHOSO)服务质量(QoS)策略应用到端口,保证端口的网络流量的最小带宽。这些端口必须支持扁平或 VLAN 物理网络。

注意

目前,带有 Open Virtual Network 机制驱动程序(ML2/OVN)的 Modular Layer 2 插件不支持最小带宽 QoS 规则。

先决条件

  • 您的管理员已使用 qos 服务插件启用了 Networking 服务。(默认情况下会加载插件。)
  • 管理员已为您创建一个项目,并为您提供了一个 clouds.yaml 文件来访问云。
  • python-openstackclient 软件包驻留在您的工作站上。

    $ dnf list installed python-openstackclient
    Copy to Clipboard Toggle word wrap
  • 不要在同一物理接口上混合带有和没有带宽保证的端口,因为这可能会导致在没有保证的情况下将所需资源(starvation)拒绝到端口。

    提示

    创建主机聚合,以分隔这些端口的带宽保证的端口,而无需带宽保证。

流程

  1. 确认为您的云设置了系统 OS_CLOUD 变量:

    $ echo $OS_CLOUD
    my_cloud
    Copy to Clipboard Toggle word wrap

    如果需要,重置变量:

    $ export OS_CLOUD=my_other_cloud
    Copy to Clipboard Toggle word wrap

    作为替代方案,您可以在每次运行 openstack 命令时添加 --os-cloud <cloud_name > 选项指定云名称。

  2. 确认 qos 服务插件已加载到网络服务中:

    $ openstack network qos policy list
    Copy to Clipboard Toggle word wrap

    如果没有加载 qos 服务插件,则您会收到 ResourceNotFound 错误,并且您必须加载 qos 服务插件,然后才能继续。如需更多信息,请参阅您的 RHOSO 管理员。

  3. 识别您要为其创建 QoS 策略的项目的 ID:

    $ openstack project list
    Copy to Clipboard Toggle word wrap

    输出示例

    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+
    Copy to Clipboard Toggle word wrap

  4. 使用上一步中的项目 ID,为项目创建一个 QoS 策略。

    示例

    在本例中,为 admin 项目创建一个名为 guaranteed_min_bw 的 QoS 策略:

    $ openstack network qos policy create --share \
     --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
    Copy to Clipboard Toggle word wrap
  5. 配置策略的规则。

    示例

    在本例中,为名为 guaranteed_min_bw 的策略创建 ingress 和 egress 的 QoS 规则,最小带宽为 40000000 kbps :

    $ openstack network qos rule create \
     --type minimum-bandwidth --min-kbps 40000000 \
     --ingress guaranteed_min_bw
    
    $ openstack network qos rule create \
     --type minimum-bandwidth --min-kbps 40000000 \
     --egress guaranteed_min_bw
    Copy to Clipboard Toggle word wrap
  6. 配置要应用策略的端口。

    示例

    在本例中,guaranteed_min_bw 策略应用到端口 ID 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12

    $ openstack port set --qos-policy guaranteed_min_bw \
     56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
    Copy to Clipboard Toggle word wrap

验证

  • ML2/SR-IOV

    使用 root 访问权限,登录 Compute 节点,并显示物理功能中保存的虚拟功能的详细信息。

    示例

    # ip -details link show enp4s0f1
    Copy to Clipboard Toggle word wrap

    输出示例

    50: enp4s0f1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master mx-bond state UP mode DEFAULT group default qlen 1000
        link/ether 98:03:9b:9d:73:74 brd ff:ff:ff:ff:ff:ff permaddr 98:03:9b:9d:73:75 promiscuity 0 minmtu 68 maxmtu 9978
        bond_slave state BACKUP mii_status UP link_failure_count 0 perm_hwaddr 98:03:9b:9d:73:75 queue_id 0 addrgenmode eui64 numtxqueues 320 numrxqueues 40 gso_max_size 65536 gso_max_segs 65535 portname p1 switchid 74739d00039b0398
        vf 0     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 1     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 2     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 3     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 4     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 5     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 6     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 7     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
        vf 8     link/ether fa:16:3e:2a:d2:7f brd ff:ff:ff:ff:ff:ff, tx rate 999 (Mbps), max_tx_rate 999Mbps, spoof checking off, link-state disable, trust off, query_rss off
        vf 9     link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff, spoof checking off, link-state disable, trust off, query_rss off
    Copy to Clipboard Toggle word wrap

4.1.2. 使用最小带宽 QoS 策略调度实例

您可以将最小带宽 QoS 策略应用到端口,以确保其 Red Hat OpenStack Services on OpenShift (RHOSO)虚拟机实例的主机生成最小网络带宽。

先决条件

  • 您的管理员启用了具有 qos放置服务 插件的网络服务。默认情况下加载 qos 服务插件。
  • 管理员已为您创建一个项目,并为您提供了一个 clouds.yaml 文件来访问云。
  • python-openstackclient 软件包驻留在您的工作站上。

    $ dnf list installed python-openstackclient
    Copy to Clipboard Toggle word wrap
  • 网络服务必须支持以下 API 扩展:

    • agent-resources-synced
    • port-resource-request
    • qos-bw-minimum-ingress
  • 您必须使用 ML2/OVN 或 ML2/SR-IOV 机制驱动程序。
  • 只有当没有使用策略所分配到的任何端口的实例时,才能修改最小带宽 QoS 策略。如果端口绑定,网络服务无法更新放置 API 使用量信息。
  • 放置服务必须支持 microversion 1.29。
  • Compute 服务(nova)必须支持微版本 2.72。

流程

  1. 确认为您的云设置了系统 OS_CLOUD 变量:

    $ echo $OS_CLOUD
    my_cloud
    Copy to Clipboard Toggle word wrap

    如果需要,重置变量:

    $ export OS_CLOUD=my_other_cloud
    Copy to Clipboard Toggle word wrap

    作为替代方案,您可以在每次运行 openstack 命令时添加 --os-cloud <cloud_name > 选项指定云名称。

  2. 确认 qos 服务插件已加载到网络服务中:

    $ openstack network qos policy list
    Copy to Clipboard Toggle word wrap

    如果没有加载 qos 服务插件,则您会收到 ResourceNotFound 错误,并且您必须加载 qos 服务插件,然后才能继续。如需更多信息,请参阅您的 RHOSO 管理员。

  3. 识别您要为其创建 QoS 策略的项目的 ID:

    $ openstack project list
    Copy to Clipboard Toggle word wrap

    输出示例

    +----------------------------------+----------+
    | ID                               | Name     |
    +----------------------------------+----------+
    | 4b0b98f8c6c040f38ba4f7146e8680f5 | auditors |
    | 519e6344f82e4c079c8e2eabb690023b | services |
    | 80bf5732752a41128e612fe615c886c6 | demo     |
    | 98a2f53c20ce4d50a40dac4a38016c69 | admin    |
    +----------------------------------+----------+
    Copy to Clipboard Toggle word wrap

  4. 使用上一步中的项目 ID,为项目创建一个 QoS 策略。

    示例

    在本例中,为 admin 项目创建一个名为 guaranteed_min_bw 的 QoS 策略:

    $ openstack network qos policy create --share \
     --project 98a2f53c20ce4d50a40dac4a38016c69 guaranteed_min_bw
    Copy to Clipboard Toggle word wrap
  5. 配置策略的规则。

    示例

    在本例中,为名为 guaranteed_min_bw 的策略创建 ingress 和 egress 的 QoS 规则,最小带宽为 40000000 kbps :

    $ openstack network qos rule create \
     --type minimum-bandwidth --min-kbps 40000000 \
     --ingress guaranteed_min_bw
    $ openstack network qos rule create \
     --type minimum-bandwidth --min-kbps 40000000 \
     --egress guaranteed_min_bw
    Copy to Clipboard Toggle word wrap
  6. 配置要应用策略的端口。

    示例

    在本例中,guaranteed_min_bw 策略应用到端口 ID 56x9aiw1-2v74-144x-c2q8-ed8w423a6s12

    $ openstack port set --qos-policy guaranteed_min_bw \
     56x9aiw1-2v74-144x-c2q8-ed8w423a6s12
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat