I've got a couple of queries about packet marking/classifying ...

I'm configuring a box to account and control traffic on a 6Mbps link, 
including traffic shaping/prioritisation and splitting out some 
bandwidth out for customers. Currently I'm up to about 35 htb classes 
! The box has two interfaces, doing simple routing (no nat, no 
multiple providers, etc).



If I'm using my own tcstart file, do I ignore the tcdevices file ?



I see that I have the choice of marking the packets in tcrules and 
then using tc filters to filter the marked packets into classes, or I 
can classify the packets in tcrules.

Is classifying more efficient than marking and filtering ?
At first glance it would seem that classifying should be more 
efficient as it's one step, or is there something going on in the 
background that will negate that ?
Or is the overhead so low that I should ignore it ?



Does it make any difference to the rules generated, or the processing 
required to handle packets, if I specify devices in the rules ? Eg, 
is there any difference between :
1:11      a.b.c.d          0.0.0.0/0      tcp -     80
1:11      ethint:a.b.c.d   0.0.0.0/0      tcp -     80

At first glance it doesn't appear to make any difference, but I'm not 
that experienced at reading iptables output.



Do classify action get actioned before or after tcfilters ?

Eg, if I have a tc filter putting traffic into one class, and a 
tcrules entry classifying traffic into a difference class - which 
will take effect. In particular I'm thinking in terms of a tc filter 
directing traffic for the internal network originating on the 
firewall into an (effectively) unlimited class (100:10 in the diagram 
below), while a tcrule entry is classifying traffic from "anywhere" 
to a specific host into a different, bandwidth controlled, class (eg 
101:11 below).



And lastly, does it matter if the classes I classify to are not 
attached to the root of the device ? On my internal interface I have 
the following (Q=Queue, C=class) :

ethint -- Q htb 100: -- C htb 100:1 -- C htb 100:10 -- Q sfq
                                     \- C htb 100:11 -- Q htb 101: ---

then under Q htb 101:

Q htb 101: -- C htb 101:101 --- C htb 101:10 -- C htb 101:11 -- Q sfq
                              |               |- C htb 101:12 -- Q sfq
                              |               |- .....
                              |
                              |- C htb 101:20 -- C htb 101:21 -- Q sfq
                              |               |- .....
                              |
                              |...

Does the TC code just start at the device route, and push the packet 
down the 'tree' until it runs out or find a match. Or does it need to 
be told where to start ? The tc rules I have in tcstart are attached 
to the relevant parent (100: or 101:)



Thanks if you've made it this far without being bored into a coma !


PS - when I get this finished, I'll see if I can get permission to 
post & document it as an example installation.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Shorewall-users mailing list
Shorewall-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/shorewall-users

Reply via email to