aMule Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

We're back! (IN POG FORM)

Author Topic: Bandbreitenbeschränkung  (Read 8007 times)

DraculTepes

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 17
Bandbreitenbeschränkung
« on: October 21, 2004, 04:26:04 AM »

VErsteht sich hier jemand darauf ?

Ich such und such und hab gefunden :) halt beschränkung mit HTB.
Aber es läuft nicht, bzw. zeigt keine wirkung.

Also kennt sich jemand damit aus, den ich dann nerven kann :) ????
Logged

bootstrap

  • Guest
RE: Bandbreitenbeschränkung
« Reply #1 on: October 21, 2004, 06:14:48 PM »

Aloha!

Ich für meinen Teil setze ein kleines tc/htb script ein um meinen ftp im Rahmen zu halten und traffic der aus meinem Netz rausgeht zu prioritisieren. Tatsächlich klappt das mächtig gut, aaaber...
Der wesentliche Punkt ist - du kannst nur den ausgehenden Traffic wirksam kontrollieren.
Denk drüber nach und schau ob dir das dann überhaupt was nutzt - da aMule dafür eine sehr gut funktionierende Einstellung verfügt, sehe ich da keinen Handlungsbedarf.
Das nächste Problem ist - du musst die zu shapenden Pakete ja auch irgendwie erkennen.
Der u32 classifier ist fein, aber nicht allwissend. Die einzige möglichkeit die ich bisher finden konnte war ein iptables modul mittels dessen du die Pakete die zu einem Prozess gehören taggen kannst. Diese getagten Pakete lassen sich dann wiederum erkennen und shapen.
Das ganze allerdings nur wenn man das als deutlich experimentell gekennzeichnete modul überhaupt benutzen will und dann wiederum auch nur ausgehend.

Wenn dir das nicht geholfen hat, dann erklär bitte genauer was du vor hast - traffic in welche Richtung und von was soll wie limitiert werden?

Gruß

boot
Logged

DraculTepes

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 17
Re: Bandbreitenbeschränkung
« Reply #2 on: October 22, 2004, 02:56:35 AM »

Mir geht es halt darum meinen Esel zu bändigen. Ich benutze die leitung nicht alleine und meine Eltern beschweren sich schon das sie trotz DSL langsam surfen. Deswegen dachte ich mir einfach nen Dynamisch reagierendes System, das den Upload verwaltet, QoS eben.

Bischen gesucht und auf tc/HTB gestoßen ( zu wondershaper hab ich z,b kein brauchbaren How to's gefunden und auch sonst weniger)

halt zu htb nen bisserl was( http://plone.vizzzion.org/linux_server/qos/view )
und mir mehr schlecht als recht was zusammengefriemelt

#!/bin/sh  
## Root
tc qdisc add dev ppp0 root handle 1:0 htb default 12
## Hauptklasse
tc class add dev ppp0 parent 1:0 classid 1:1 htb rate 128kbit ceil 128kbit
## Klasse fuer ACK
tc class add dev ppp0 parent 1:1 classid 1:10 htb rate 10kbit ceil 128kbit prio 0
## Klasse fuer FTP
tc class add dev ppp0 parent 1:1 classid 1:11 htb rate 90kbit ceil 128kbit prio 1
## Klasse fuer normalen Traffic
tc class add dev ppp0 parent 1:1 classid 1:12 htb rate 15kbit ceil 128kbit prio 2
## Klasse fuer Bulk
tc class add dev ppp0 parent 1:1 classid 1:13 htb rate 10kbit ceil 100kbit prio 3
 # ACKs
iptables -A POSTROUTING -t mangle -o ppp0 -p tcp -m length --length :64 -j MARK --set-mark 10
# FTP
iptables -A POSTROUTING -t mangle -o ppp0 -p tcp --dport 21 -j MARK --set-mark 11
# lokaler SSH Server auf Port 4444  
iptables -A OUTPUT -t mangle -o ppp0 -p tcp --sport 4444 -j MARK --set-mark 11
# eDonkey
iptables -A POSTROUTING -t mangle -o ppp0 -p tcp --dport 4662 -j MARK --set-mark 13
#iptables -A POSTROUTING -t mangle -o ppp0 -p tcp --sport 4662 -j MARK --set-mark 13
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 11 fw flowid 1:11
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 13 fw flowid 1:13

ich habs ausgeführt, aber es zeigt eben keine wirkung

ich habe dann einfach mal auf nen server per ftp hochgeschobene aber werte von um die 1-2 kb,was nie 90 kbit entspricht


Hab ich irgendwo einen fehler, bzw. denkfehler


ich würde dem esel gerne 16 geben wenn sie niemand anderes brauch und ftp und z.b icq weiter oben ansetzen das ich da ne angenehme geschwindigkeit habe wenn es mal dazu kommt

in diversen tuts wurde erwähnt das man das bei der 2.4 xx erst patchen muss und aktivieren, muss ich das bei einem 2.6.4 auch ?( das würde erklären wieso es keine wirkung zeigt)

mfg
« Last Edit: October 22, 2004, 02:58:44 AM by DraculTepes »
Logged

bootstrap

  • Guest
Re: Bandbreitenbeschränkung
« Reply #3 on: October 22, 2004, 11:31:41 AM »

Quote
Hab ich irgendwo einen fehler, bzw. denkfehler

Scheint fast so...

Zunächst - Traffic shaping ist nicht QoS/ToS. Das eine vergibt Bandbreiten nach gewissen Regeln, das andere priorisiert Pakete.

Zum eigentlichen Problem beim shapen von aMule:
Ich hab's bereits erwähnt - du hast keinen Einfluss auf die ankommenden Daten - nur auf das was rausgeht. Und selbst da gibt's Grenzen dafür was machbar ist. Das ganze hängt damit zusammen, dass du die abgehenden Pakete schlecht bis gar nicht in Regeln erfassen kannst.

Beachte:
Du kannst nicht sagen wo dein Esel was hinschiebt (der Zielport ist abhängig vom Gegenüber) und genausowenig von wo du's versckickst (der abgehende Port wird automatisch gewählt).
Die einzigen Pakete die klar sind, sind die für den Verbindungsaufbau zu dir, da du ja den Port dafür kennst/vergibst. Das ist aber lange nicht alles was da kommt und geht...

Wie willst du Pakete einschränken die du nicht erkennen kannst?

Um FTP und co zu filtern und Beispielsweise dem Web deiner Eltern zumindest ausgehend Vorrang zu geben gibt's einen Weg, da du ja die default prio recht niedrig wählen kannst und dann nur web in eine höhere prio einordnest
Zur Syntax: Ich würde dir statt der iptables markerei empfehlen dich mit dem u32 classifier zu beschäftigen, dann spürst du auch eine gewisse Wirkung...
Beispiel: tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:10

Beispiel:
Code: [Select]
# zuerst das root handle und bestimmen welchen weg Pakete nehmen die nicht gesondert behandelt werden...
tc qdisc add dev eth1 root handle 1: htb default 11

# jetzt die handles anlegen - einmal komplett und dann aufteilen - beachte dass die Werte für meinen Link gelten...
# Kurze Erklärung:
# rate 256kbit bedeutet dass das handle immer mindestens eine Bandbreite von 256kbit/s bekommen soll - ceil 512kkbit bedeutet dass dieses handle sich bei Verfügbarkeit bis zu 512kbit/s von den anderen handles "borgen" darf.
tc class add dev eth1 parent 1: classid 1:1 htb rate 512kbit
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 256kbit ceil 512kbit prio 1
tc class add dev eth1 parent 1:1 classid 1:11 htb rate 192kbit ceil 512kbit prio 100
tc class add dev eth1 parent 1:1 classid 1:12 htb rate 64kbit ceil 420kbit prio 200
# die "garantierten bandbreiten" sollten im max übrigens nicht mehr ergeben als dein root handle hergibt...

# jetzt entscheiden wir wie für die einzelnen handles verteilt wird - ich benutze safety fair queing
tc qdisc add dev eth1 parent 1:10 handle 20: sfq perturb 10
tc qdisc add dev eth1 parent 1:11 handle 30: sfq perturb 10
tc qdisc add dev eth1 parent 1:12 handle 40: sfq perturb 10

# und nu bauen wir die filter, damit auch was in den handles landet...
# in diesem Beispiel bekommen ssh und http/https hohe priorität und eine (siehe oben) "garantierte Bandbreite" von 256kbit/s
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip sport 22 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip dport 22 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip dport 443 0xffff flowid 1:10

# für 1:11 keine Regeln, da alles was nicht gesondert behandelt wird ja eh hier landet ... siehe tc qdisc add dev eth1 root handle 1: htb default 11

# nu zum Teil der weniger als alles andere bekommt (1:12)
# hier könnte man was hinpacken dass man nicht mag - wenn also deine Schwester unbedingt webradio hört und du das nicht abkannst, hau einfach ihr Zeug in den Sumpf ;)
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip protocol 6 0xff match ip dport 554 0xffff flowid 1:12

Du kannst übrigens mit
Code: [Select]
tc -s qdisc show hin und wieder prüfen wieviele Pakete in welchem handle ihren Weg gefunden haben.

Schau mal ob dir das hilft und lass es mich wissen ;)

Um dir die weitere Arbeit bezüglich aMule zu ersparen - es gibt einfach zu viel dynamik in den ed2k Paketen. Es gibt keinen leichten/schnellen Weg mit zwei oder drei Regeln den Esel zu zügeln. Die beste möglichkeit ist meiner Meinung nach den Kram den man kennt zu behandeln und den Rest in ein limitiertes default zu knallen. Dieser Weg lässt sich mit relativ wenig Arbeit in Regeln fassen und in Betrieb nehmen.

Für aMule: Ausgehend würde ich mich auf die integrierten Einstellungen verlassen (10kb/s reicht meistens ausgehend und funktioniert auch gut...). Eingehend stehst du allerdings etwas auf dem Schlauch. Selbst wenn du Pakete wegschmeisst noch und nöcher - dein Link wird von aussen vollgehämmert und daran änderst du nix - egal wie komplex dein Filter wird.
Logged

DraculTepes

  • Approved Newbie
  • *
  • Karma: 0
  • Offline Offline
  • Posts: 17
Re: Bandbreitenbeschränkung
« Reply #4 on: October 23, 2004, 12:58:29 AM »

Mhh ja Emule begrenzt zwar die Bandbreite, aber trotz beschränkung auf 10 Kb habe ich auf meinen graphen 12-14 kb und das merkt man leider am surfen stark. Und desweiteren macht es mir ja nichts aus das der nachts mit 16 Kb hochschiebt.

Ich hab nur keine lust das immer manuell einzustellen, desweiteren ist es auch scheisse den Esel auszumachen wenn ich D2 oder so game.

Is halt schön wenn man da was findet.

Auf meinem alten Fli4l Router hatte ich auch das QoS script drauf und es lief eigentlich ok.

Nur zu Suse finde ich kaum für anfänger verwertbare tuts.

Ich such halt schon die ganze zeit und bin froh das der esel läuft und auch der Ftp usw. nur halt gibt es jetzt probleme beim surfen, mein ICQ verliert desöfteren einfach so die verbindung, seiten sind gerne mal erst nach 1-2 reloads erreichbar etc. ( bin aber auchnoch am einstellungen feilen)

ich hau suse gerade neu rauf und guck mir das dann mal an
Logged

bootstrap

  • Guest
Re: Bandbreitenbeschränkung
« Reply #5 on: October 24, 2004, 02:32:02 PM »

Quote
Ich hab nur keine lust das immer manuell einzustellen, desweiteren ist es auch scheisse den Esel auszumachen wenn ich D2 oder so game.

Is halt schön wenn man da was findet.

Auf meinem alten Fli4l Router hatte ich auch das QoS script drauf und es lief eigentlich ok.

Wie gesagt - traffic shaping und QoS/ToS sind unterschiedliche Dinge.
Den Esel ausmachen ist unnötig, wenn du die default prio so setzt dass die Dinge die dir wichtig sind eine höhere Priorität bekommen. Das setzt allerdings voraus dass du dir Gedanken machst was genau mit welcher Priorität behandelt werden soll.
Logged