From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andy Furniss Date: Thu, 10 Apr 2014 22:48:04 +0000 Subject: Re: Problem with HTB bandwidth slicing when using TCP traffic Message-Id: <53471FA4.4090406@gmail.com> List-Id: References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: lartc@vger.kernel.org Slavica Tomovic wrote: > Hi to all, > > I am using CentOS 6.4 and have problems when I want to limit > bandwidth of TCP flow to some value smaller than 15 Mbit/s. Namely, I > used iperf to generate TCP traffic and limited bandwidth (with tc > command) for that flow on 6 Mbit/s. I got approximately 6 Mbit/s in > average but iperf, which I adjusted to report me statistics every > second, showed that in one second flow got 10 Mbit/s or more and than > for few consecutive seconds 0 Mbit/s. With UDP traffic everything > works fine. I expected that TCP bandwidth will fluctuate because of > congestion mechanism but not like this. When I reserve more than 15 > Mbit/s situation is pretty much OK. > > Also I had similar problem when I tried to split link bandwidth > (which I had throttled previously on 10 Mbit/s with tc) between two > TCP flows. On the other side, TCPvsUDP and UDPvsUDP slicing works > fine. > > I had updated kernel version to 2.6.32-431 recently. I don't know > did this cause a problem because I didn't use tc htb mechanism in > the older version. > > Do you have any idea why is this happening and how I can fix it? > > These are commands I had used to create htb classes: > > tc class add dev eth0 parent 1: classid 1:1 htb rate 10000kbps ceil > 10000kbps tc class add dev eth0 parent 1:1 classid 1:10 htb rate > 4000kbps ceil 4000kbps tc class add dev eth0 parent 1:1 classid 1:11 > htb rate 6000kbps ceil 6000kbps kbps means k bytes/sec, use kbit or mbit 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).