Skript??? Das ist eine Zeile...
Code: Alles auswählen
tc qdisc add dev ppp0 root tbf rate 252kbit latency 30ms burst 2kb
Nothing special...
Das ist allerdings auf Q-DSL (1040 kBit/s Down, 256 kBit/s Up) und unser DSL Modem (Efficient Networks SpeedStream) getuned. Ist schon ein bisschen her, aber hier so aus dem Kopf, was das bewirkt:
Ratelimiting des Upstream auf 252 kBit/s, damit immer noch etwas Luft für Downstream ACK Pakete bleibt, Latency sagt an, wie lange ein Paket maximal in der Warteschlange sein darf, Burst gibt an wieviel Bytes an Paketen maximal in der Warteschlange sein können; wenn burst überschritten wird, dan werden Pakete evtl. intern gedropped. Das dient dazu zu verhindern, dass die internen Buffer unseres DSL Modem überlaufen und die Verbindungen unnötig gebremst werden.
Mit diesen Einstellungen ist es halt möglich einen vollen Downstream Download zu haben (ca. 134 K/s) und dabei noch zu surfen, ohne dass man es merkt, das der Downstream ausgelastet ist (beinahe: es ist natürlich langsamer, aber die Reaktionszeiten sind immer noch gut). SSH Verbindungen fühlen sich immer "fluffig" an. Bei ausgelastetem Upstream (ein klassisches DSL Problem) kann ebenfalls problemlos gesurft werden (da merkt man es gar nicht!) und auch interaktive Services sind noch gut nutzbar.
Allerdings ist das auf "Surfen/FTP und SSH" getuned und das war echt etwas "Handarbeit", die Zahlen rauszufinden. Zum tunen habe ich einen Upload mit voller Bandbreite per FTP gestartet, und eine SSH zu einem externen Rechner. Dann habe ich ausgehend von
Code: Alles auswählen
tc qdisc add dev ppp0 root tbf rate 256kbit latency 50ms burst 5kb
die Werte solange frisiert, bis ich zufrieden war. Die jetzigen Einstellungen sind allerdings etwas "zerbrechlich": andere Anwendungen (Spiele) verhalten sich anders, und erfordern etwas andere Werte, um gute Performance zu erreichen. Für komplexeres Verhalten würde ich nicht TBF sondern CBQ empfehlen, da man hier (IIRC) einzelnen Services Prioritäten zuweisen kann. Man könnte also z.B. Unreal Tournament Paketen eine eigene Latenz/garantierte Bandbreite zuweisen... Ich habe mich allerdings an das KISS Prinzip gehalten, und habe CBQ aussen vor gelassen
Literatur:
man tc
man tc_tbf
man tc_cbq
Patrick