QoS egress minimum bandwidth with Linuxbridge doesn't work
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
Critical
|
Rodolfo Alonso |
Bug Description
I tested QoS egress minimum bandwidth with Linuxbridge but it doesn't work in my env.
My test scenario:
1) prepares 2 compute nodes(nodeA, nodeB) which are connected 100Mbps.
2) creates network1(with minimum bandwidth rule 70Mbps) and network2(non rule)
3) creates VM1(on nodeA) and VM2(on nodeB) with network1, and VM3(on nodeA) and VM4(on nodeB) with network2
4) runs iperf from VM1 to VM2 and from VM3 to VM4
In (4), I expected VM1-VM2's result is over 70Mbps and VM3-VM4's result is below 30Mbps because of minimum bandwidth rule. However, they were almost the same value(40~45Mbps).
The following is a example of commands that I executed in openstack:
neutron net-create network1
neutron subnet-create network1 10.0.1.0/24 --name subnet1
neutron qos-policy-create bw-min
neutron qos-minimum-
neutron net-update network1 --qos-policy bw-min
neutron net-create network2
neutron subnet-create network2 10.0.1.0/24 --name subnet2
nova boot VM1~4
The following is a example of commands that I executed in VM1,3:
$ iperf -c $IP_ADDRESS_
The following is a example of commands that I executed in VM2,4:
$ iperf -s -u
When I executed iperf in one side only, the result was 84.2Mbps.
I saw the code a little. It seems that minimum bandwidth rule is set in the ifb of each ports. Traffic from VM1 and VM3 is filtered by each ifb(I guess that the rule allows the traffic to be 100Mbps) and then it overflows in the NIC of nodeA.
I believe that the issue is just issue of my env. Could you QoS folks point out my mistake?
tags: | added: qos |
Changed in neutron: | |
assignee: | nobody → Rodolfo Alonso (rodolfo-alonso-hernandez) |
Changed in neutron: | |
milestone: | none → ocata-rc2 |
tags: | added: ocata-rc-potential |
Changed in neutron: | |
status: | In Progress → Fix Released |
Hello Ichihara.
I made some tests in a fresh environment and I discovered two things:
1) I didn't setup correctly the default qos queue in the qdisc. This is also affecting max-bw. The solution is to set the default queue to 1.
2) For the min-bw: the qos policies are applied for each tap port, but there is no common shaper for all the flows. That's the way should be done.
When I made my tests I did all of them in the same environment with manual policies applied. That's why I thought it was working. I'M VERY SORRY FOR THAT.
For now, the solution should be to remove the min-bw support for Linux Bridge until a new solution is proposed.