Hi,
We are using kernel 2.4.24, tcng version 10b.
I''m trying to do some policing in the ingress queue of the internet
device. Until now we had configured some filters dividing traffic into
queues, and on these queues the Double Leaky bucket meter was applied.
The idea is to have a minimum of bandwidth assigned per class (the cir
values) and a maximum (pir values), just as with the HTB meter. (see
''code 1'' at the bottom of the mail for the configuration).
However after reading in the ''Traffic Control - Next generation
reference Manual'' - p41 of the nov 20, 2003 release - I understood
(correct me if I''m wrong), this implementation of the DLB would result
in usage as a SLB :
the pir bucket would fill-up ( 3 tokens in the pir bucket for 1 token in
the cir bucket), thus the first check using the pir bucket would always
be yes, and thus bypassed. As sush we are using the DLB as a SLB.
So my question is , is there a way to implement the behavior we want? (
minimum and maximum of bandwith per class)
I already tried the srTCM meter but this gave me the following error on
compiling : don''t know how to build meter for this . The code can be
found below under ''code 2''
The srTCM meter is only a partial solution to our problem as it allows
configuration of a max burst in kB but not a maximum rate in kbps.
Kind regards,
Pieter
Able
Code 1 :
-----------------
// incoming traffic
ingress {
// speeds
$medium_cir = $maxDownstream / 4;
$medium_pir = $maxDownstream / 4 * 2;
$low_cir = $maxDownstream / 4;
$low_pir = $maxDownstream / 4;
// variables to make categories
$is_medium = (tcp_sport == PORT_SMTP);
$is_low = 1;
// Double Leaky Buckets
$is_medium_pol = DLB(cir $medium_cir bps,cbs
20kB,pir $medium_pir bps,pbs 5kB);
$is_low_pol = DLB(cir $low_cir bps,cbs
20kB,pir $low_pir bps,pbs 5kB);
// do the policing
class (<>)
if $is_medium && DLB_ok($is_medium_pol);
drop if $is_medium;
class (<>)
if $is_low && DLB_ok($is_low_pol);
drop if $is_low;
code 2 :
--------------------------
// incoming traffic
ingress {
// speeds
$medium_cir = $maxDownstream / 4;
$low_cir = $maxDownstream / 4;
// variables to make categories
$is_medium = (tcp_sport == PORT_SMTP);
$is_low = 1;
// Double Leaky Buckets
$is_medium_pol = srTCM(cir $medium_cir bps,cbs
20kB,ebs 40kB);
$is_low_pol = srTCM(cir $low_cir bps,cbs
20kB,ebs 50kB);
// do the policing
class (<>)
if $is_medium && srTCM_green($is_medium_pol);
drop if $is_medium;
class (<>)
if $is_low && srTCM_green($is_low_pol);
drop if $is_low;
}
--
aXs GUARD has completed security and anti-virus checks on this e-mail
(http://www.axsguard.com)
---------------------------------------------------