[ovs-discuss] Maximum bandwidth not being reached

Ben Pfaff blp at ovn.org
Wed Jun 13 15:22:22 UTC 2018


On Wed, Jun 13, 2018 at 11:29:43AM +0100, Sofia Marques wrote:
> Hi there.
> 
> I have a scenario where I'm using opendaylight and ovs switch where I have
> installed qos according to the following:
> 
> - Qos max rate of 100 Mbps;
> - Queue 1 with max rate of 100 Mbps, min rate of 30 Mbps, priority 1;
> - Queue 2 with max rate of 50 Mbps, min rate of 20 Mbps, priority 2;
> - Queue 3 with max rate of 30 Mbps, min rate of 10 Mbps, priority 3;
> - Queue 4 with max rate of 10 Mbps, min rate of 1 Mbps, priority 4;
> 
> I have assigned 5 flows to each queue and I'm running iperf UDP tests for
> each of them with the following bandwidth specifications:
> 
> - Flows for queue 1 with 6 Mbps;
> - Flows for queue 2 with 4 Mbps;
> - Flows for queue 3 with 2 Mbps;
> - Flows for queue 4 with 1 Mbps;
> 
> Everything works perfectly, with every flow reaching the specified
> bandwidth.
> 
> But when I increase the number of flows for each queue to 10, they do not
> reach the speficied bandwidth. If I'm not mistaken, every queue min rate is
> guaranteed, which means that 30+20+10+1 = 61 Mbps are used. Which leaves
> 100-61=39 Mbps to be used. I believe that 30 Mbps would be assigned to
> queue 1 to reach its desired bandwidth since it is the queue with higher
> priority and the 9 Mbps left would go to queue 2. But this is not
> happening, and neither queue 1 and queue 2 are assigned with this left
> bandwidth. I can see that each flow on queue 1 only reaches about 5 Mbps
> and in queue 2 around 3 Mbps. Am I getting this wrong or this problem has
> some other explanation?
> 
> I would appreciate any help to understand what is happening.

The FAQ says the following.

Q: I configured QoS, correctly, but my measurements show that it isn't working
as well as I expect.

    A: With the Linux kernel, the Open vSwitch implementation of QoS has two
    aspects:

    - Open vSwitch configures a subset of Linux kernel QoS features, according
      to what is in OVSDB.  It is possible that this code has bugs.  If you
      believe that this is so, then you can configure the Linux traffic control
      (QoS) stack directly with the "tc" program.  If you get better results
      that way, you can send a detailed bug report to bugs at openvswitch.org.

      It is certain that Open vSwitch cannot configure every Linux kernel QoS
      feature.  If you need some feature that OVS cannot configure, then you
      can also use "tc" directly (or add that feature to OVS).

    - The Open vSwitch implementation of OpenFlow allows flows to be directed
      to particular queues.  This is pretty simple and unlikely to have serious
      bugs at this point.

    However, most problems with QoS on Linux are not bugs in Open vSwitch at
    all.  They tend to be either configuration errors (please see the earlier
    questions in this section) or issues with the traffic control (QoS) stack
    in Linux.  The Open vSwitch developers are not experts on Linux traffic
    control.  We suggest that, if you believe you are encountering a problem
    with Linux traffic control, that you consult the tc manpages (e.g. tc(8),
    tc-htb(8), tc-hfsc(8)), web resources (e.g. http://lartc.org/), or mailing
    lists (e.g. http://vger.kernel.org/vger-lists.html#netdev).



More information about the discuss mailing list