配置网络 QoS 参数
概述
您可以使用 OpenStack Nova 命令行界面 (CLI) 通过设置 quota
Nova 风格来指定虚拟机网络接口的服务质量 (QoS) 设置。使用该 Nova 风格创建的任何虚拟机都将继承所有指定的 QoS 设置。此外,如果使用 QoS 设置创建的虚拟机在不同的虚拟网络中具有多个接口,则相同的 QoS 设置将应用于与虚拟机关联的所有网络接口。可以在单向或双向模式下指定 QoS 设置。
quota
Neutron 中的驱动程序将 QoS 参数转换为libvirt
虚拟机的网络设置。
配额驱动程序中可用的 QoS 参数仅涵盖限制网络接口的速率。目前没有可用于基于策略的 QoS 的规范。
QoS 配置示例
虽然可以使用 Horizon 或 CLI 在配额中指定 QoS 设置,但使用 CLI 创建配额更加可靠和稳定,因此推荐使用 CLI 创建。
例
Nova 风格的 CLI 具有以下格式:
nova flavor-key <flavor_name> set quota:vif_<direction> _<param_name> = value
哪里:
<flavor_name>
是现有新星风味的名称。
vif_<direction>_<param_name>
是入站或出站 QoS 数据名称。
QoS vif
类型包括:
vif_inbound_average
允许您指定入站(接收)流量的平均速率(以千字节/秒为单位)。vif_outbound_average
允许您指定出站(传输)流量的平均速率(以千字节/秒为单位)。可选:
vif_inbound_peak
并vif_outbound_peak
分别指定入站和出站流量的最大速率(以千字节/秒为单位)。可选:
vif_inbound_burst
并vif_outbound_peak
指定以峰值速率在单个突发中可以分别接收或传输的千字节数。
有关各种 libvirt
QoS 参数的详细信息,请参见 http://libvirt.org/formatnetwork.html。
以下示例显示入站平均值为 800 KB/秒,峰值为 1000 KB/秒,突发量为 30 KB。
nova flavor-key m1.small set quota:vif_inbound_average=800 nova flavor-key m1.small set quota:vif_inbound_peak=1000 nova flavor-key m1.small set quota:vif_inbound_burst=30
以下是指定出站参数的示例:
nova flavor-key m1.small set quota:vif_outbound_average=800 nova flavor-key m1.small set quota:vif_outbound_peak=1000 nova flavor-key m1.small set quota:vif_outbound_burst=30
为 QoS 配置 Nova 风格后,可以使用 Horizon 或 CLI 创建虚拟机实例。该实例将具有与 nova 风格键对应的网络设置,如下所示:
<interface type="ethernet"> <mac address="02:a3:a0:87:7f:61"/> <model type="virtio"/> <script path=""/> <target dev="tapa3a0877f-61"/> <bandwidth> <inbound average="800" peak="1000" burst="30"/> <outbound average="800" peak="1000" burst="30"/> </bandwidth> </interface>
局限性
库存
libvirt
不支持接口类型的ethernet
速率限制。因此,访客界面示例中的设置不会为主机中的相应分路设备生成任何tc qdisc
设置。它将
nova flavor-key rxtx_factor
浮点数作为输入,并充当接收(入站)和传输(出站)吞吐量的比例因子。此密钥仅适用于 Neutron 扩展(私有扩展)。Contrail Neutron 插件没有实现这个私有扩展。因此,设置不会nova flavor-key rxtx_factor
对使用该 nova 风格创建的任何虚拟机的网络接口的 QoS 设置产生任何影响。未严格达到虚拟机接口的出站速率限制。虚拟机网络接口的出站吞吐量始终小于虚拟机的 libvirt 配置文件中指定的平均出站限制。使用 Linux 网桥时也可以看到相同的行为。