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

OT: Traffic Shaping



Hallo,

Ich habe bei mir zu Hause schon lange das Problem Traffic Shaping auf
meinem Debian Router vor mich hergeschoben, als es damals vor ca. einem
halben Jahr nicht auf Anhieb funktionierte. Auch heute habe ich noch
einige Probleme das ganze zum Laufen zu kriegen.

Mein Skript basiert auf einem Skript aus der c't vom 18.11.2002.

     1. Wie kann ich am besten überprüfen, ob mein Skript auch wirklich
        tut, was es sollte, ich habe bisher mich einmal an der Uni
        eingeloggt und ein paar Tests durchgeführt, die eigentlich gut
        aussahen, aber etwas genauer möchte ich es schon noch wissen.
     2. Ich habe einmal per iptraf auf dem Router geschaut, wie der
        Traffic so aussieht, der Upload war durch ein scp und ein
        Webserver-Zugriff ausgelastet, doch wenn ich gleichzeitig noch
        eine Datei herunterlade komme ich bei weitem nicht auf die
        Downloadrate, die ich eigentlich haben sollte (ungefähr 7 kByte
        statt 30-40). Was läuft hier wohl krumm?
     I. Edonkey-Clients sollen beim Upload massiv eingeschränkt werden,
        mit der c't Lösung, die wie folgt aussieht: iptables -A
        POSTROUTING -t mangle -o $DEV -p tcp --dport 4662 -j MARK
        --set-mark 13 und iptables -A POSTROUTING -t mangle -o $DEV -p
        tcp --sport 4662 -j MARK --set-mark 13 habe ich laut einem
        Kollegen das Problem, dass Clients die nicht auf diesem Port
        laufen von der Regel nicht betroffen sind. Er schlug mir vor für
        all die Pakete auf dem Desktop, auf dem eDonkey läuft, das ToS
        zu setzen und dann am Router nach diesem zu filtern. Ich
        veruschte das nun mit iptables -A OUTPUT -m owner --uid-owner
        $OVERNET_USERID -j TOS --set-tos 0x08 doch so kommt eine
        Fehlermeldung, wegen einem falschen Argument, wie geht das
        richtig??
     1. Mit der c't eDonkey-Lösung habe ich auch noch das Problem, dass
        der Upload zwar auf den vorgegebenen Wert gedrosselt wird, aber
        der Download gleichzeitig auf 0 sinkt, daran hat der betreffende
        User im Netz natürlich keine Freude, woran könnte das liegen?


Wäre super wenn mir jemand zu einer der Fragen eine Antwort hätte...

Das Skript befindet sich im Anhang... Das Port-Forwarding usw. befindet
sich in einem anderen Skript, aber das sollte für dieses Problem ja
eigentlich unwesentlich sein, oder?

Grüsse und vielen Dank
Patrick


#!/bin/sh

TC_BIN="/sbin/tc"
DEV="eth1"
UP_RATE="125kbit"
IPTABLES=/sbin/iptables

case "$1" in
  start)
	# Delete old configuration
	echo "Delete old configuration.."
	$IPTABLES -F -t mangle
	$TC_BIN qdisc del dev $DEV root 2> /dev/null > /dev/null
	$TC_BIN qdisc del dev $DEV ingress 2> /dev/null > /dev/null

	# Root
	echo "Creating qdisc.."
	$TC_BIN qdisc add dev $DEV root handle 1:0 htb default 12
	
	echo "Creating classes.."
	# Hauptklasse
	$TC_BIN class add dev $DEV parent 1:0 classid 1:1 htb \
		rate $UP_RATE ceil $UP_RATE
	# Klasse fuer ACK
	$TC_BIN class add dev $DEV parent 1:1 classid 1:10 htb \
		rate 10kbit ceil $UP_RATE prio 0
	# Klasse fuer SSH
	$TC_BIN class add dev $DEV parent 1:1 classid 1:11 htb \
		rate 30kbit ceil $UP_RATE prio 1
	# Klasse fuer Webserver
	$TC_BIN class add dev $DEV parent 1:1 classid 1:12 htb \
		rate 30kbit ceil $UP_RATE prio 2
	# Klasse fuer normalen Traffic
	$TC_BIN class add dev $DEV parent 1:1 classid 1:13 htb \
		rate 45kbit ceil $UP_RATE prio 3
	# Klasse fuer Bulk
	$TC_BIN class add dev $DEV parent 1:1 classid 1:14 htb \
		rate 8kbit ceil $UP_RATE prio 4
	# Klasse fuer eDonkey
	$TC_BIN class add dev $DEV parent 1:1 classid 1:15 htb \
		rate 1kbit ceil 8kbit prio 5

	echo "Creating iptables MARK rules.."
	# ACKs
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp \
		-m length --length :64 -j MARK --set-mark 10
	# SSH
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 22 \
		-j MARK --set-mark 11
	# Webserver
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 80 \
		-j MARK --set-mark 12
	# SMTP
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 25 \
		-j MARK --set-mark 14
	# eDonkey
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --dport 4662 \
		-j MARK --set-mark 15
	$IPTABLES -A POSTROUTING -t mangle -o $DEV -p tcp --sport 4662 \
		-j MARK --set-mark 15
		
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 10 fw flowid 1:10
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 11 fw flowid 1:11
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 12 fw flowid 1:12
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 13 fw flowid 1:13
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 14 fw flowid 1:14
	$TC_BIN filter add dev $DEV parent 1:0 prio 0 protocol ip \
		handle 15 fw flowid 1:15
	echo "done."
	;;
  stop)
  	#TODO
  	;;
  *)
	echo "Usage: /etc/init.d/Shaper {start|stop|show}"
	exit 1
	;;
esac

exit 0

Reply to: