[LARTC] Simple HTB setup with tcng
lartc@manchotnetworks.net
lartc@manchotnetworks.net
Wed, 05 May 2004 09:59:04 +0200
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.