1 部署配置
当前Openstack QOS支持的类型有如下几个:
- bandwidth_limit: Bandwidth limitations on networks, ports or floating IPs.
- dscp_marking: Marking network traffic with a DSCP value.
- minimum_bandwidth: Minimum bandwidth constraints on certain types of traffic.
下面只描述bandwidth_limit。其他类型可以参考官网:
https://docs.openstack.org/neutron/queens/admin/config-qos.html
qos支持的类型和后台使用的linuxbridge、ovs之间的支持程度如下:
可以看见:Minimum bandwidth对于linuxbridge和ovs当前是不支持的。
所以在环境中,通过命令show类型只有如下两个:
1.1 控制节点
在配置文件:/etc/neutron/neutron.conf添加如下的配置项
service_plugins = router, qos
在配置文件:/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
extension_drivers = port_security, qos
在配置文件:/etc/neutron/plugins/ml2/<agent_name>_agent.ini
[agent]
extensions = qos
在配置完上面配置项后,需要重启如下几个服务:
service neutron-server restart
service neutron-linuxbridge-agent restart
1.2 网络节点
在配置文件:/etc/neutron/plugins/ml2/<agent_name>_agent.ini
[agent]
extensions = qos
在配置文件:/etc/neutron/l3_agent.ini
[agent]
extensions = fip_qos
在配置完上面配置项后,需要重启如下几个服务:
service neutron-linuxbridge-agent
service neutron-l3-agent
1.3 计算节点
同1.2。
在配置完上面配置项后,需要重启如下几个服务:
service neutron-linuxbridge-agent
service neutron-l3-agent (如果计算节点也安装了l3-agent时)
2 使用
第一:创建qos policy
neutron qos-policy-create bw-limiter
第二:创建bandwidth_limit
neutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 bw-limiter --direction ingress
neutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 bw-limiter --direction egress max-burst-kbps值通常为max-kbps的80%。(这个只针对egress方向,ingress方向没有此默认行为) (这里设置的ingress和egress方向是针对虚拟机而言,从tc的角度看,ingress的rule规则为tc egress, egress的rule规则为tc ingress) (底层采用linux tc tbf算法来实现,下面是一个例子:
例子中显示的burst xxxKb,这里的b是代表字节的意思,需要注意)
OVS场景下,限速是在qvoxxx端口上做的,如下:
第三:创建两台虚拟机,分别为vm1和vm2,同子网
第四:虚拟机在未关联任何qos policy时,使用iperf测试其带宽如下:
第五:将qos policy关联给vm1
这时再使用iperf测试其带宽,如下:
从上面可以看出成功限制了上传带宽为100Mbps,下载带宽为200Mbps