HI to all,

I'm facing problems when I try to limit bandwidth of TCP flow to some
value smaller than 15 Mbit/s. Problem is next: I created queue with
min-bandwidth and max-bandwidth set to 6Mbit/s and added flow rule
(with ovs-ofctl) that matches TCP flow that I generate with iperf and
forwards its packets to this queue. Iperf is adjusted to report me
statistics every second. In average my flow gets 6 Mbit/s but iperf
report shows that in one second flow got 10Mbit/s than for few
consecutive seconds 0 Mbit/s and so on...(I limited bandwidth of qos
policy to 10 Mbit/s in this case)

When I use UDP traffic I don't have this problem. Also, I tried to
slice bandwidth between to TCP flows and the same problem was present.
UDPvsTCP and UDPvsUDP were OK.

I read FAQs on OVS web site, so my first conclusion was that this is
some Linux problem. But, when I run Stanford Reference OF switch on
the same machine, slicing was correct. Also, as suggested, I repeated
the same experiment without any switches active, by manually adding tc
rules.

Firstly I used these commands:

tc qdisc add dev eth0 root handle 1: htb default 11
tc class add dev eth0 parent 1: classid 1:1 htb rate 10000kbit ceil 10000kbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 6000kbit ceil 4000kbit
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 4000kbit ceil 6000kbit

tc filter add dev eth0 protocol IP parent 1:0 u32 match ip src
IP_SRC_ADDR_OF_TCPflow1 flowid 1:10

and I got similar results like with OVS. Later, I reported this
problem to Linux mailing list: la...@vger.kernel.org and they said me
this:

"If you don't specify child qdiscs for htb it will use pfifo with the
txqlen on the device as the limit which may be a bit long on eth (1000)
or on ppp too short (3)."

I added these two commands:

tc qdisc add dev eth0 parent 1:10 handle 20: pfifo limit 10
tc qdisc add dev eth0 parent 1:11 handle 30: pfifo limit 10

and everything works fine!!!

I want to use OVS in my OF testbed. I am developing SDN applications
that dynamically creates queues in order to provide QoS guarantees for
some flows. I use set-manager command to achieve this. So it's very
important for me if you can somehow fix this. I am afraid that I am
not enough qualified to this by myself, but I can try if you give me
some instructions.

After all, I don't know how OVS does traffic shaping? I assumed that
it uses tc commands, so excuse me if this isn't bug at all. In any
case I will appreciate any help.

Regards,

Slavica
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to