[LARTC] RE: [tcng] Is there a bug in tcc or my code is wrong?

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi George,
You can try this style:
See if it works better.

dev eth0 {
     egress {
	  class (<$high_prio>)  if ip_src == 10.0.0.80;
	  class (<$htb_1>)      if ip_src == 10.0.0.1;
	  class (<$htb_2>)      if  1;
	  
	  prio {
	       $high_prio = class { sfq; };
	       class {
		    htb (quantum 2ms) {
			 class (rate 100kbps, ceil 100kbps) {
			      $htb_1 = class (rate 80kbps, ceil 100kbps) {sfq;};
			      $htb_2 = class (rate 20kbps, ceil 100kbps) {sfq;};
			 }
		    }
	       }
	  }
     }
}

- Jacob

> Message: 4
> Date: Thu, 17 Apr 2003 05:55:50 -0700 (PDT)
> From: George Spiliotis <gspiliot@xxxxxxxxx>
> To: lartc@xxxxxxxxxxxxxxx
> Subject: [LARTC] [tcng] Is there a bug in tcc or my code is wrong?
> 
> Dear list members,
> 
> I think there must be something wrong with my code or the
> tcng package has a small bug...
> 
> First, the rules are simple: everything from 10.0.0.80 gets
> full priority whereas anything else gets a 80/20 rate
> depending if the packets are comming from 10.0.0.1 or not:
> 
> # TCSIM input: file demo.tcc
> #define FLOW(n) TCP_PCK($ip_src=10.0.0.##n) \
>                         0 x 960 /* 1000-header = 960 bytes
> */
> 
> dev eth0 100kbps {
>     egress {
>         prio {
>                 class ( 1 ) \
>                         if ip_src == 10.0.0.80 { sfq; };
>                 class ( 2 ) if 1 {
>                   htb (quantum 2ms) {
>                     class (rate 100kbps, ceil 100kbps) {
>                       class (rate 80kbps, ceil 100kbps) \
>                         if ip_src == 10.0.0.1 {sfq;}
>                       class (rate 20kbps, ceil 100kbps) \
>                         if 1 {sfq;}
>                     }
>                   }
>                 }
>         }
>     }
> }
> 
> every 0.05s until 1s send FLOW(80);
> every 0.05s until 6s send FLOW(1);
> every 0.05s until 7s send FLOW(2);
> time 3s;
> every 0.05s until 4s send FLOW(80);
> time 10s;
> end;
> 
> If we graph the above with the command:
> tcsim demo.tcc | tcsim_filter src | tcsim_plot -a 20
> we see that both 10.0.0.1 and 10.0.0.2 get 50% despite the
> fact of the above "if" in the htb class. If we observe the
> output from tcc on the above source we can see that we get
> the "tc filter" command for the parent htb class and not on
> the htb qdisc! This results in the filters for the htb
> qdisc never to be consulted! Have a look:
> 
> command: tcc demo-src.tcc
> ....
> tc qdisc add dev eth0 handle 1:0 root dsmark indices 4
> default_index 0
> tc qdisc add dev eth0 handle 2:0 parent 1:0 prio
> tc qdisc add dev eth0 handle 3:0 parent 2:1 sfq perturb 1
> tc qdisc add dev eth0 handle 4:0 parent 2:2 htb
> tc class add dev eth0 parent 4:0 classid 4:1 htb rate
> 12500bps ceil 12500bps quantum 25000
> tc class add dev eth0 parent 4:1 classid 4:2 htb rate
> 11250bps ceil 12500bps quantum 22500
> tc qdisc add dev eth0 handle 5:0 parent 4:2 sfq
> tc class add dev eth0 parent 4:1 classid 4:3 htb rate
> 1250bps ceil 12500bps quantum 2500
> tc qdisc add dev eth0 handle 6:0 parent 4:3 sfq
> tc filter add dev eth0 parent 4:1 protocol all prio 1 u32
> match u32 0xa000001 0xffffffff at 12 classid 4:2
> ....                          ^^^ oups! should be 4.0!!
> 
> Is there something I am missing from the code in order to
> attach the filters to the htb qdisc and not the borrowing
> class?
> 
> George.


[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux