Ingress and polishing

Linux Advanced Routing and Traffic Control

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

 



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)
---------------------------------------------------
_______________________________________________
LARTC mailing list
LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

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