Hi folks. I started to play with tc+htb last week, and I must confess that this thing is really driving me nuts. All we want to do is control bw, with no borrowing. In order to get the feeling on this subject, I have setup the following test bed. ---A---B---C--- On B: eth0 connecting A and eth1 connecting C. The script. tc qdisc del dev eth0 root tc qdisc add dev eth0 root handle 1: htb default 50 tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip src 10.4.0.0/16 match ip dst 0.0.0.0/0 classid 1:1 If I try to transfer a 1M file from C to A: [root@localpost tmp]# wget 192.168.0.23/1M --09:22:32-- http://192.168.0.23/1M => `1M.8'' Connecting to 192.168.0.23:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1,024,000 [text/plain] 100%[=====================>] 1,024,000 183.12K/s ETA 00:00 09:22:38 (182.88 KB/s) - `1M'' saved [1,024,000/1,024,000] Wasn''t it supposed to be around the 32KB/s? If I play with the numbers (rate=ceil) I get the following results: 128k ==> 404.78 KB/s 64k ==> 337.9 KB/s 16k ==> 68.86 KB/s 8k ==> 31.12 KB/s 1k ==> 3.77 KB/s I even tried to set the rate to 1kbps in root, but also led to pretty much the same results. With no qdisc, the rate will go close to 1000 KB/s B machine: 2.6.11-1.1369_FC4 iproute-2.6.11-1 TC HTB version 3.3 I have no clue on what I am doing wrong. Could anyone browse the above script and give me hint? Thanks in advance, AL
Alvaro Motta wrote:> Hi folks. > > I started to play with tc+htb last week, and I must confess that this > thing is really driving me nuts. > > All we want to do is control bw, with no borrowing. > > In order to get the feeling on this subject, I have setup the > following test bed. > > ---A---B---C--- > > On B: eth0 connecting A and eth1 connecting C. > > The script. > > tc qdisc del dev eth0 root > tc qdisc add dev eth0 root handle 1: htb default 50 > tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit > tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip > src 10.4.0.0/16 match ip dst 0.0.0.0/0 classid 1:1Should be src 192.168.0.0/24. Andy.> > If I try to transfer a 1M file from C to A: > > [root@localpost tmp]# wget 192.168.0.23/1M > --09:22:32-- http://192.168.0.23/1M => `1M.8'' > Connecting to 192.168.0.23:80... connected. > HTTP request sent, awaiting response... 200 OK > Length: 1,024,000 [text/plain] > 100%[=====================>] 1,024,000 183.12K/s ETA 00:00 > 09:22:38 (182.88 KB/s) - `1M'' saved [1,024,000/1,024,000] > > Wasn''t it supposed to be around the 32KB/s? > > If I play with the numbers (rate=ceil) I get the following results: > 128k ==> 404.78 KB/s > 64k ==> 337.9 KB/s > 16k ==> 68.86 KB/s > 8k ==> 31.12 KB/s > 1k ==> 3.77 KB/s > > I even tried to set the rate to 1kbps in root, but also led to pretty > much the same results. > > With no qdisc, the rate will go close to 1000 KB/s > > B machine: > 2.6.11-1.1369_FC4 > iproute-2.6.11-1 > TC HTB version 3.3 > > I have no clue on what I am doing wrong. Could anyone browse the above > script and give me hint? > > Thanks in advance, > > AL > _______________________________________________ > LARTC mailing list > LARTC@mailman.ds9a.nl > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc >
Hi Andy, thanks for your reply. I don''t see why the src should be the culprit, since the AB segment is 10.4 network and the BC is 192.168. And IMHO 0.0.0.0/0 Also, after modifying the src, the traffic rate was the same as if no qdisc were attached to the interface. I even played with the interfaces and the only way to throttle the traffic, is assigning the qdisc to the eth0 and having the src and dst as in the script I''ve sent. AL On 7/20/05, Andy Furniss <andy.furniss@dsl.pipex.com> wrote:> Alvaro Motta wrote: > > Hi folks. > > > > I started to play with tc+htb last week, and I must confess that this > > thing is really driving me nuts. > > > > All we want to do is control bw, with no borrowing. > > > > In order to get the feeling on this subject, I have setup the > > following test bed. > > > > ---A---B---C--- > > > > On B: eth0 connecting A and eth1 connecting C. > > > > The script. > > > > tc qdisc del dev eth0 root > > tc qdisc add dev eth0 root handle 1: htb default 50 > > tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit > > tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip > > src 10.4.0.0/16 match ip dst 0.0.0.0/0 classid 1:1 > > Should be src 192.168.0.0/24. > > Andy. > > > > > > If I try to transfer a 1M file from C to A: > > > > [root@localpost tmp]# wget 192.168.0.23/1M > > --09:22:32-- http://192.168.0.23/1M => `1M.8'' > > Connecting to 192.168.0.23:80... connected. > > HTTP request sent, awaiting response... 200 OK > > Length: 1,024,000 [text/plain] > > 100%[=====================>] 1,024,000 183.12K/s ETA 00:00 > > 09:22:38 (182.88 KB/s) - `1M'' saved [1,024,000/1,024,000] > > > > Wasn''t it supposed to be around the 32KB/s? > > > > If I play with the numbers (rate=ceil) I get the following results: > > 128k ==> 404.78 KB/s > > 64k ==> 337.9 KB/s > > 16k ==> 68.86 KB/s > > 8k ==> 31.12 KB/s > > 1k ==> 3.77 KB/s > > > > I even tried to set the rate to 1kbps in root, but also led to pretty > > much the same results. > > > > With no qdisc, the rate will go close to 1000 KB/s > > > > B machine: > > 2.6.11-1.1369_FC4 > > iproute-2.6.11-1 > > TC HTB version 3.3 > > > > I have no clue on what I am doing wrong. Could anyone browse the above > > script and give me hint? > > > > Thanks in advance, > > > > AL > > _______________________________________________ > > LARTC mailing list > > LARTC@mailman.ds9a.nl > > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc > > > >
Alvaro Motta wrote:> Hi Andy, thanks for your reply. > > I don''t see why the src should be the culprit, since the AB segment is > 10.4 network and the BC is 192.168. And IMHO 0.0.0.0/0 > > Also, after modifying the src, the traffic rate was the same as if no > qdisc were attached to the interface. I even played with the > interfaces and the only way to throttle the traffic, is assigning the > qdisc to the eth0 and having the src and dst as in the script I''veHmm I am confused now :-) If you run wget on machine A with address 10.4.x.y and request a file from machine C address 192.168.0.23 then the source address of the packets passing egress eth0 on machine B should be 192.168.0.23 - unless there is some sort of NAT going on in machine B. FWIW you use default 50 on your htb rule but don''t have a class 1:50 and your filter rule dst 0.0.0.0/0 matches any dst ipaddress and so is redundant. Maybe you should as a test limit all IP traffic on eth0 and see if that works - tc qdisc del dev eth0 root tc qdisc add dev eth0 root handle 1: htb tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match u32 0 0 classid 1:1 Andy.
Alvaro Motta wrote:> Hi folks.Hola.> I started to play with tc+htb last week, and I must confess that this > thing is really driving me nuts.If you started last week, you have a loooong way to go.... :-)> All we want to do is control bw, with no borrowing. > > In order to get the feeling on this subject, I have setup the > following test bed. > > ---A---B---C--- > > On B: eth0 connecting A and eth1 connecting C. > > The script. > > tc qdisc del dev eth0 root > tc qdisc add dev eth0 root handle 1: htb default 50 > tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit > tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip > src 10.4.0.0/16 match ip dst 0.0.0.0/0 classid 1:1 > > If I try to transfer a 1M file from C to A: > > [root@localpost tmp]# wget 192.168.0.23/1M > --09:22:32-- http://192.168.0.23/1M => `1M.8'' > Connecting to 192.168.0.23:80... connected. > HTTP request sent, awaiting response... 200 OK > Length: 1,024,000 [text/plain] > 100%[=====================>] 1,024,000 183.12K/s ETA 00:00 > 09:22:38 (182.88 KB/s) - `1M'' saved [1,024,000/1,024,000] > > Wasn''t it supposed to be around the 32KB/s?Around 32 kilobits/s. Besides this, the rate calculation includes not only the ip packet effective payload, but all the packet size, and I guess that wget''s speed calculation only includes the payload. The tc manpage have a section on "Units".> If I play with the numbers (rate=ceil) I get the following results: > 128k ==> 404.78 KB/s > 64k ==> 337.9 KB/s > 16k ==> 68.86 KB/s > 8k ==> 31.12 KB/s > 1k ==> 3.77 KB/s > > I even tried to set the rate to 1kbps in root, but also led to pretty > much the same results. > > With no qdisc, the rate will go close to 1000 KB/s > > B machine: > 2.6.11-1.1369_FC4 > iproute-2.6.11-1 > TC HTB version 3.3 > > I have no clue on what I am doing wrong. Could anyone browse the above > script and give me hint? > > Thanks in advance, > > AL > _______________________________________________ > LARTC mailing list > LARTC@mailman.ds9a.nl > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc > >
Alvaro Motta wrote:> > Hi Andy, thanks for your reply. > > I don''t see why the src should be the culprit, since the AB segment is > 10.4 network and the BC is 192.168. And IMHO 0.0.0.0/0 > > Also, after modifying the src, the traffic rate was the same as if no > qdisc were attached to the interface. I even played with the > interfaces and the only way to throttle the traffic, is assigning the > qdisc to the eth0 and having the src and dst as in the script I''ve > sent. > > ALAl, Somebody may have already helped you solve this; I have not read all messages from LARTC yet. If not: Create 3 filters, each with the same (non zero) prio. The first to match 10.4.0.0/16, the second to match 192.168.0.0/24 and the last to match 0.0.0.0/0 - then see where the packets go by running tc -s class ls dev eth0 32kbit = 32,000 bits per second. 32,000 / 8 bits per byte = 4,000 bytes per second = 4Kbytes per second, and the reported flow rate should be close to that for the packets that match the filter. -- gypsy> On 7/20/05, Andy Furniss <andy.furniss@dsl.pipex.com> wrote: > > Alvaro Motta wrote: > > > Hi folks. > > > > > > I started to play with tc+htb last week, and I must confess that this > > > thing is really driving me nuts. > > > > > > All we want to do is control bw, with no borrowing. > > > > > > In order to get the feeling on this subject, I have setup the > > > following test bed. > > > > > > ---A---B---C--- > > > > > > On B: eth0 connecting A and eth1 connecting C. > > > > > > The script. > > > > > > tc qdisc del dev eth0 root > > > tc qdisc add dev eth0 root handle 1: htb default 50 > > > tc class add dev eth0 parent 1: classid 1:1 htb rate 32kbit ceil 32kbit > > > tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip > > > src 10.4.0.0/16 match ip dst 0.0.0.0/0 classid 1:1 > > > > Should be src 192.168.0.0/24. > > > > Andy. > > > > > > > > > > If I try to transfer a 1M file from C to A: > > > > > > [root@localpost tmp]# wget 192.168.0.23/1M > > > --09:22:32-- http://192.168.0.23/1M => `1M.8'' > > > Connecting to 192.168.0.23:80... connected. > > > HTTP request sent, awaiting response... 200 OK > > > Length: 1,024,000 [text/plain] > > > 100%[=====================>] 1,024,000 183.12K/s ETA 00:00 > > > 09:22:38 (182.88 KB/s) - `1M'' saved [1,024,000/1,024,000] > > > > > > Wasn''t it supposed to be around the 32KB/s? > > > > > > If I play with the numbers (rate=ceil) I get the following results: > > > 128k ==> 404.78 KB/s > > > 64k ==> 337.9 KB/s > > > 16k ==> 68.86 KB/s > > > 8k ==> 31.12 KB/s > > > 1k ==> 3.77 KB/s > > > > > > I even tried to set the rate to 1kbps in root, but also led to pretty > > > much the same results. > > > > > > With no qdisc, the rate will go close to 1000 KB/s > > > > > > B machine: > > > 2.6.11-1.1369_FC4 > > > iproute-2.6.11-1 > > > TC HTB version 3.3 > > > > > > I have no clue on what I am doing wrong. Could anyone browse the above > > > script and give me hint? > > > > > > Thanks in advance, > > > > > > AL > > > _______________________________________________ > > > LARTC mailing list > > > LARTC@mailman.ds9a.nl > > > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc > > > > > > > > _______________________________________________ > LARTC mailing list > LARTC@mailman.ds9a.nl > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc