Re: Simple HTB setup with tcng

Linux Advanced Routing and Traffic Control

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

 



salut clemment,

well, i see better now -- you could try something like:

#include "fields.tc"
#include "ports.tc"

dev eth0 {
    htb () {
        class ( rate 600kbps, ceil 600kbps ) if ip_src == 10.0.0.1;
    }
}

cheers

charles

On Wed, 2004-05-05 at 10:15, Clement MOREAU wrote: 
> Thank you for your help.
> 
> this setup is creating an additionnal qdisc (dsmark). For performance
> reasons, I would prefer using filters directly attached to htb qdisc. I
> think it is possible, at least it seems to be possible with tc (not
> tcng).
> It seems to me that tcc is doing something wrong with htb and indexes,
> do I miss something ? 
> 
> Thank you.
> 
> Le mer 05/05/2004 à 09:59, lartc@xxxxxxxxxxxxxxxxxxx a écrit :
> > salut clemment
> > 
> > try adapting the following to your needs ... it's been working for me.
> > roughly similar to wondershaper excepting that it is in tcng:
> > 
> > i have a ppp interface on an analog modem so in my firewall i mark
> > packets coming in from this device as following:
> > 
> > iptables --append PREROUTING --table mangle --in-interface ppp0 \
> >          --jump MARK --set-mark 0x7
> > 
> > 
> > cheers
> > 
> > charles
> > 
> > 
> > /*
> >  * tc next generation script by
> >  * charles shick
> >  */
> > 
> > #define LAN "eth0"
> > #define LAN_INGRESS 700000 
> > #define LAN_EGRESS 700000
> > 
> > dev LAN {
> > 
> > #    ingress {
> > #        $policer = SLB( cir LAN_INGRESS kbps );
> > #        class ( <> ) if SLB_ok( $policer );
> > #        drop if 1;
> > #    }
> > 
> >     egress {
> >         class ( <$ppp> ) if meta_nfmark == 0x7;
> > 
> >         class ( <$high> ) if ip_proto == IPPROTO_ICMP ||
> >                            ip_tos == 0x10 ||
> >                            tcp_sport == 80 || 
> >                            tcp_sport == 110 ||
> >                            udp_sport == 53 ||
> >                            tcp_ack;
> > 
> >         class ( <$medium> ) if tcp_dport == 25;
> > 
> >         class ( <$low> ) if 1;
> > 
> >         htb () { class ( rate LAN_EGRESS kbps ) {
> > 
> >                 $ppp = class ( prio 1, rate 56 kbps )
> >                     { sfq ( perturb 10 sec ); };
> > 
> >                 $high = class ( prio 1, rate ( 0.5 * LAN_EGRESS )kbps )
> >                     { sfq ( perturb 10 sec ); };
> > 
> >                 $medium = class (prio 2, rate ( 0.3 * LAN_EGRESS )kbps )
> >                     { sfq ( perturb 10 sec ); };
> > 
> >                 $low = class (prio 3, rate ( 0.2 * LAN_EGRESS )kbps )
> >                     { sfq ( perturb 10 sec ); };
> > 
> >             }
> >         }
> >     }
> > }
> > 
> > 
> > On Wed, 2004-05-05 at 08:46, Clement MOREAU wrote:
> > > Hello all, 
> > > 
> > > I am trying to set up a simple htb based system, where packets with
> > > source ip 10.0.0.1 should have their own class. 
> > > I plan to use tcng to set it up easier. 
> > > 
> > > Is there something wrong in my tcng file ? 
> > > 
> > > ~/tcng$ cat htb
> > > /*
> > >  */
> > > 
> > > #include "fields.tc"
> > > #include "ports.tc"
> > > 
> > > dev eth0 {
> > >         htb ( ) { 
> > >             class ( rate 600kbps, ceil 600kbps ) 
> > >             { 
> > >                 class () if ip_src == 10.0.0.1 ; 
> > >                 class (default) ;
> > >             } 
> > >         }
> > > }
> > > 
> > > 
> > > When I compile it, I get : 
> > > 
> > > ~/tcng$ tcc htb
> > > 
> > > # ================================ Device eth0 
> > > 
> > > tc qdisc add dev eth0 handle 1:0 root htb default 3
> > > tc class add dev eth0 parent 1:0 classid 1:1 htb rate 75000bps ceil
> > > 75000bps
> > > tc class add dev eth0 parent 1:1 classid 1:2 htb rate 75000bps ceil
> > > 75000bps
> > > tc class add dev eth0 parent 1:1 classid 1:3 htb rate 75000bps ceil
> > > 75000bps
> > > tc filter add dev eth0 parent 1:1 protocol all prio 1 u32 match u32
> > > 0xa000001 0xffffffff at 12 classid 1:2
> > > 
> > > 
> > > which is not working as expected. 
> > > Packets never get matched. From what I understand of tc (not too much),
> > > the filter should have been : 
> > > tc filter add dev eth0 parent 1:0 protocol all prio 1 u32 match u32
> > > 0xa000001 0xffffffff at 12 classid 1:2
> > > 
> > > (I replaced parent 1:1 by parent 1:0). 
> > > 
> > > I tried this setup and it works as expected (at least : packets from the
> > > server gets matched, other don't. I have used tc -s class show dev eth0
> > > to see it).
> > > 
> > > Do I miss something ? 
> > > 
> > > Thank you.
> > 
> > _______________________________________________
> > LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
> > http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

_______________________________________________
LARTC mailing list / LARTC@xxxxxxxxxxxxxxx
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/

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