Auf den Beitrag: (ID: 24435) sind "2" Antworten eingegangen (Gelesen: 616 Mal).
"Autor"

Shaping mit tc

Nutzer: Brünette22
Status: Profiuser
Post schicken
Registriert seit: 14.11.2001
Anzahl Nachrichten: 696

geschrieben am: 28.05.2004    um 17:37 Uhr   
Liebe Liebenden,

mein Traffic-Shaping bereitet mir Kopfschmerzen. Laut iptables -v -n -L werden die Pakete so getaggt, wie ich mir das wünsche -- insbesondere der Eimer 29 wird korrekt getaggt.

Trotzdem: Sobald dort viele Pakete durchlaufen, werden die anderen Eimer (insbesondere die Eimer 21/22, wo der http-Traffic reinkommt) unerträglich langsam, und das trotz der entsprechend gesetzten Priorität und dem Limit von 8kbit.

Wo liegt mein Denkfehler? Ist POSTROUTING der falsche Aufhänger für den Sprung in die SHAPING-Chain?

(zitat)#!/bin/bash
TC=/usr/sbin/tc
DEV=ppp0
MAX=192

TCCA="$TC class add dev $DEV"
TCQA="$TC qdisc add dev $DEV"

# remove old entries
$TC qdisc del dev $DEV root

# root qdisc
$TCQA root handle 1: htb default 26
# general limit
$TCCA parent 1: classid 1:1 htb rate ${MAX}kbit

# create 5 classes of MAX/5 to MAX each
$TCCA parent 1:1 classid 1:20 htb rate $[MAX/5]kbit ceil ${MAX}kbit prio 0
$TCCA parent 1:1 classid 1:21 htb rate $[MAX/5]kbit ceil ${MAX}kbit prio 1
$TCCA parent 1:1 classid 1:22 htb rate $[MAX/5]kbit ceil ${MAX}kbit prio 2
$TCCA parent 1:1 classid 1:23 htb rate $[MAX/5]kbit ceil ${MAX}kbit prio 3
$TCCA parent 1:1 classid 1:24 htb rate $[MAX/5]kbit ceil ${MAX}kbit prio 4
$TCCA parent 1:1 classid 1:29 htb rate 8kbit ceil 16kbit prio 5

# leaf classes each get a sfq qdisc attached to them
$TCQA parent 1:20 handle 20: sfq perturb 10
$TCQA parent 1:21 handle 21: sfq perturb 10
$TCQA parent 1:22 handle 22: sfq perturb 10
$TCQA parent 1:23 handle 23: sfq perturb 10
$TCQA parent 1:24 handle 24: sfq perturb 10
$TCQA parent 1:29 handle 29: sfq perturb 10

# show what we've done
$TC class show dev $DEV

IPT="/usr/sbin/iptables -v -t mangle"
IPS="$IPT -A SHAPING"

# create table
$IPT -N SHAPING
$IPT -F SHAPING
$IPT -Z SHAPING
$IPT -I POSTROUTING -o $DEV -j SHAPING

$IPS -p tcp --sport 22 -j MARK --set-mark 20 # ssh
$IPS -p tcp --dport 22 -j MARK --set-mark 20 # ssh

$IPS -p tcp --sport 80 -j MARK --set-mark 21 # http
$IPS -p tcp --sport 8080 -j MARK --set-mark 22 # http
$IPS -p tcp --dport 80 -j MARK --set-mark 21 # http
$IPS -p tcp --dport 8080 -j MARK --set-mark 22 # http

$IPS -p tcp --sport 25 -j MARK --set-mark 23 # smtp
$IPS -p tcp --dport 25 -j MARK --set-mark 23 # smtp

$IPS -m owner --uid-owner daniel -j MARK --set-mark 29 # choke
$IPS -p tcp --sport 5001 -j MARK --set-mark 29 # choke

$IPS -m mark --mark 0 -j MARK --set-mark 24 # mark any unmarked
(/zitat)
  Top
"Autor"  
Nutzer: prof.mastram
Status: Profiuser
Post schicken
Registriert seit: 21.04.2001
Anzahl Nachrichten: 1788

geschrieben am: 28.05.2004    um 19:31 Uhr   
vielleicht mal die problem-eimer auf die gleiche Priorität setzen wie der eimer29 sie besitzt...? Oder den eimer29 an erster stelle setzen...?

hmmm...war nur so'ne Idee, weil das shaping unter linux nicht so mein Ding ist...*gg*


*prof*

schöne pfingsten wünsch ich dir... :-)
  Top
"Autor"  
Nutzer: Brünette22
Status: Profiuser
Post schicken
Registriert seit: 14.11.2001
Anzahl Nachrichten: 696

geschrieben am: 30.05.2004    um 21:32 Uhr   
Das mit "Eimer 29 = Problem-Eimer" scheint zu klappen. Mit iptables werden die zu drosselnden Bereiche (sport: 5001 und uid: 500) als "29" getaggt und landen auch im entsprechenden Eimer.

Die Reihenfolge sollte (bei tc) eigentlich egal sein, da die Klassen in einer Baumstruktur angelegt werden. Bei iptables sollte (und tut es) mit dieser Reihenfolge funktionieren, da die ersten paar Regeln (ssh/http) bei diesen Paketen noch nicht greifen.

Da ich größere Verständnisprobleme mit den Eimern und QDiscs habe, vermute ich den Fehler eigentlich eher dort. :/

Trotzdem danke. ;)
  Top