[LARTC] wondershaper + htb prio + qdisc prio

Linux Advanced Routing and Traffic Control

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

 



This is a multi-part message in MIME format.

------=_NextPart_000_0020_01C2B0C2.A50E5880
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

But you are not listening to what I and others have been saying. Forget
about the ICMP pings! They don't mean nothing!

Use the script I attached (change a few settings, like your own speeds,
interface and executables, speeds are in kbit!). Then use the following
iptables rules:

(eth0=my internet-interface, eth2=my LAN interface, change if needed !)

# ICMP packets have an even higher priority (so you can test it with ping,
but this doesn't help CounterStrike at all!)
# Don't do massive pings/traceroutes because that would choke other traffic
(including CS)!
iptables -I PREROUTING -t mangle -i eth2 -j MARK --set-mark 1 -p ICMP
iptables -I OUTPUT     -t mangle -o eth0 -j MARK --set-mark 1 -p ICMP
# And here's Counter Strike:
# if you want you could add:  -m multiport --destination-port 27000:27050
iptables -I PREROUTING -t mangle -i eth2 -j MARK --set-mark 1 -p
DP  --source-port 27005

# ACK Packets get higher priority than 'normal' packets
iptables -I PREROUTING -t mangle -i eth2 -j MARK --set-mark 2 -p TCP -m
length --length 0:100
iptables -I OUTPUT     -t mangle -o eth0 -j MARK --set-mark 2 -p TCP -m
length --length 0:100

And add some more yourself, remember:
- All rules are tested for each packet: MARK does _not_ stop like ACCEPT and
RETURN do.
- Therefore the order in which you place these rules is important.
- Rules are inserted (-I) in the table, so eventually (use iptables -L -n)
the rules will be 'upside down' in the table.
- Thus higher priorities rules (lower MARK numbers) should go first in your
script, otherwise they might be overruled by later rules.

Jannes Faber

----- Original Message -----
From: "Ciprian Niculescu" <lartc@cnicules.4email.net>
To: "Tornado" <tornado@linuxfromscratch.org>; <lartc@mailman.ds9a.nl>
Sent: Tuesday, December 31, 2002 12:23 AM
Subject: Re: [LARTC] wondershaper + htb prio + qdisc prio


> On Mon, 30 Dec 2002 22:22:28 +0100, "Tornado"
> <tornado@linuxfromscratch.org> said:
> > > >
> > > this is what i try, beacouse i dont realy play the game, i generate
> > > trafic to saturate the link, and ping from shell from an externat host
> >
> > In which case, you should check if your downstream is not chocking. Even
> > if
> > you shape outgoing packets, you can still get get bad pings, if your
> > downstream is running at max.
>
> no a 1Mbit trafic on a 5M no chocking :))))
>
> C
>

------=_NextPart_000_0020_01C2B0C2.A50E5880
Content-Type: application/octet-stream;
	name="tcstart.sh"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="tcstart.sh"

#!/bin/sh

INET_INTERFACE=3D"eth0"

TC_UPLINK_RATE=3D"100"
TC_RATE[0]=3D70
TC_CEIL[0]=3D$TC_UPLINK_RATE
TC_RATE[1]=3D10
TC_CEIL[1]=3D60
TC_RATE[2]=3D10
TC_CEIL[2]=3D60
TC_RATE[3]=3D10
TC_CEIL[3]=3D60

# Executables and stuff
IPTABLES=3D"iptables"
TC=3D"tc-htb"
IP=3D"ip"
LOG=3D"/dev/null"

# Comment out the following two lines after setting up all variables =
above
# and having checked them.
TC=3D"echo tc-htb"
LOG=3D"/dev/stdout"

#### No need to alter anything below here ####

PRIOS=3D'0 1 2 3'

# Packet marks
MARK[0]=3D"1"
MARK[1]=3D"2"
MARK[2]=3D"3"
MARK[3]=3D"4"

# Find last prio, which will be the default
for PRIO in $PRIOS
do
	LAST_PRIO=3D$PRIO
done

# The iptables part
iptables -F -t mangle
ezshaper -i start

# The TC part
$TC qdisc del dev $INET_INTERFACE root

$TC qdisc add dev $INET_INTERFACE root handle 1:0 htb default =
$[$LAST_PRIO+10]
$TC class add dev $INET_INTERFACE parent 1:0 classid 1:1 htb rate =
${TC_UPLINK_RATE}kbit

for PRIO in $PRIOS
do
	echo -e "\n***** Prio $PRIO *****" > $LOG
	# Add leaf classes for PRIO traffic
	$TC class add dev $INET_INTERFACE parent 1:1 	\
			classid 1:$[$PRIO+10] htb                	\
			rate ${TC_RATE[$PRIO]}"kbit"             	\
			ceil ${TC_CEIL[$PRIO]}"kbit"             	\
    	prio $PRIO

	# Now filter PRIO traffic to this leaf
	$TC filter add dev $INET_INTERFACE parent 1:0         \
    	protocol ip prio $PRIO handle ${MARK[$PRIO]}      \
			fw flowid 1:$[$PRIO+10]
done

------=_NextPart_000_0020_01C2B0C2.A50E5880--



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