Bandbreiten Limitierung
Bandbreiten Limitierung
Hallo Leute,
ich suche nach einer Möglichkeit die Bandbreite einer Internetverbindung aufzuteilen.
Ich möchte kein QOS machen sondern nur die Bnadbreite aufteilen. Also z.B. Rechner 1 bekommt 1 mb/s Rechner 2 bekommt 500 kb/s.
Ich habe für diesen Zweck tc gefunden. Kennt jemand ein möglichst deutsches HowTo für tc mit dem man sich in das Thema einarbeiten kann.
Für Beispiele wäre ich auch dankbar.
Danke für alle Antworten.
ich suche nach einer Möglichkeit die Bandbreite einer Internetverbindung aufzuteilen.
Ich möchte kein QOS machen sondern nur die Bnadbreite aufteilen. Also z.B. Rechner 1 bekommt 1 mb/s Rechner 2 bekommt 500 kb/s.
Ich habe für diesen Zweck tc gefunden. Kennt jemand ein möglichst deutsches HowTo für tc mit dem man sich in das Thema einarbeiten kann.
Für Beispiele wäre ich auch dankbar.
Danke für alle Antworten.
Gruß Lolek
Re: Bandbreiten Limitierung
Hallo,
ein guter Start könnte Wondershaper sein, der auch in einem Admin Magazin Artikel gewürdigt wurde.
Ich benutzte vor allem die HTB Variante davon, bevor ich auf ein selbst geschriebenes Script umgestiegen bin, wo ich die HFSC queuing discipline einsetze.
HFSC hat bei der Latenz von Paketen einfach die Nase vorn gegenüber HTB...
ein guter Start könnte Wondershaper sein, der auch in einem Admin Magazin Artikel gewürdigt wurde.
Ich benutzte vor allem die HTB Variante davon, bevor ich auf ein selbst geschriebenes Script umgestiegen bin, wo ich die HFSC queuing discipline einsetze.
HFSC hat bei der Latenz von Paketen einfach die Nase vorn gegenüber HTB...
Ciao, Hendri
Re: Bandbreiten Limitierung
Ein einfaches Beispiel wäre
http://wiki.openwrt.org/doc/howto/packe ... r.example2
http://wiki.openwrt.org/doc/howto/packe ... r.example2
Re: Bandbreiten Limitierung
Hallo ihr beiden,
danke für die Antworten.
@Hendri: Wondershaper ist für meine Zweck vermutlich nicht das richtige. Er hat ja schon ein voreingestelltes Muster wie der Datenverkehr behandelt wird. Diese Lösung kann ich so nicht verwenden, weil ich lediglich die Bandbreite meiner Leitung unter den angeschlossenen Rechnern aufteilen will.
Der Artikel im Admin Magazin ist aber sehr lesenswert. Danke für den Link
@dufty2: Der Link den Du gepostet hast, trifft das was ich brauche.
Ich habe noch nicht so richtig verstanden wie tc eigentlich funktioniert. Wenn ich für ein Interface eine qdisc anlege, z.B.,
was bedeutet dann "handle 1:" ? Ist das der Name für die qdisc?
Und was hat es mit den Klassen und Filtern aufsich? Ich kann es nicht richtig zusammensetzen und verstehe den Ablauf nicht.
danke für die Antworten.
![Thumbs Up :THX:](./images/smilies/thumbup.gif)
@Hendri: Wondershaper ist für meine Zweck vermutlich nicht das richtige. Er hat ja schon ein voreingestelltes Muster wie der Datenverkehr behandelt wird. Diese Lösung kann ich so nicht verwenden, weil ich lediglich die Bandbreite meiner Leitung unter den angeschlossenen Rechnern aufteilen will.
Der Artikel im Admin Magazin ist aber sehr lesenswert. Danke für den Link
@dufty2: Der Link den Du gepostet hast, trifft das was ich brauche.
Ich habe noch nicht so richtig verstanden wie tc eigentlich funktioniert. Wenn ich für ein Interface eine qdisc anlege, z.B.
Code: Alles auswählen
tc qdisc add dev eth0 root handle 1: htb default 40
was bedeutet dann "handle 1:" ? Ist das der Name für die qdisc?
Und was hat es mit den Klassen und Filtern aufsich? Ich kann es nicht richtig zusammensetzen und verstehe den Ablauf nicht.
Gruß Lolek
Re: Bandbreiten Limitierung
Yo, sowas wie ein Bezeichner/Abkürzung.Lolek hat geschrieben:Wenn ich für ein Interface eine qdisc anlege, z.B.,Code: Alles auswählen
tc qdisc add dev eth0 root handle 1: htb default 40
was bedeutet dann "handle 1:" ? Ist das der Name für die qdisc?
Ansonsten müsstest Du ja in weiteren Zeilen immer ein
... parent root ...
angeben.
Na, um den Traffic aufzuteilen, braucht man halt Klassen. Und jede Klasse wird entsprechend behandelt.Lolek hat geschrieben: Und was hat es mit den Klassen und Filtern aufsich? Ich kann es nicht richtig zusammensetzen und verstehe den Ablauf nicht.
Im Beispielfall bekommt die Klasse "1:10" maximal 250kbit (falls anderer Traffic aus anderen Klassen vorhanden ist).
Mit der "Klassifizierung" hat man eine Unterteilung des Traffics vorgenommen aber noch nicht genau bestimmt, welcher traffic nun GENAU in welcher Klasse liegt resp. kommen soll.
Das macht man mit der Filterung:
Traffic der Art xy kommt in die Klasse 1:z.
In dem Beispielfall macht man die Filterung per iptables.
Dazu muss man noch wissen, dass die iptables zeitlich vor den shaping kommen, wenn ein Paket Deinen Rechner verlässt. also bildlich etwa so:
<iptables> => <qdics/shaping> => Netwerkkarte => Kabel
Re: Bandbreiten Limitierung
Was man noch erwähnen könnte, das man nur den Upload auf einem Interface shapen sollte, da man da die Queue selbst in der Hand hat!
Es gibt zwar auch einen ingress shaper, das man das am externen Interface machen kann, aber der hat einige Nachteile...
Ich shape auf meinen Gateways aber auf beiden Interfaces (den Upload):
externes Interface = Upload shaping
internes Interface = Download shaping
Entweder mit HTP oder HFSC, was IMHO viel besser klappt als der ingres shaper!
Und ich kann beim upload shaping immer mit iptables markieren!
Im Iptables Traffic Flow Graphen kannst du die Stelle sehen, wo traffic shaping passiert - ingres und egress qdisc...
Es gibt zwar auch einen ingress shaper, das man das am externen Interface machen kann, aber der hat einige Nachteile...
Ich shape auf meinen Gateways aber auf beiden Interfaces (den Upload):
externes Interface = Upload shaping
internes Interface = Download shaping
Entweder mit HTP oder HFSC, was IMHO viel besser klappt als der ingres shaper!
Und ich kann beim upload shaping immer mit iptables markieren!
Im Iptables Traffic Flow Graphen kannst du die Stelle sehen, wo traffic shaping passiert - ingres und egress qdisc...
Ciao, Hendri
Re: Bandbreiten Limitierung
Ich misch mal ein, geht sowas auch dynamisch? Also wenn einer da ist bekommt er die volle Bandbreite und wenn 4da sind die ziehen dann jeweils nur 25% etc??
Debian-Nutzer ![Very Happy :D](./images/smilies/icon_biggrin.gif)
ZABBIX Certified Specialist
![Very Happy :D](./images/smilies/icon_biggrin.gif)
ZABBIX Certified Specialist
Re: Bandbreiten Limitierung
Ja, man teilt jeder Queue dann eben 25% statische Bandbreite zu und lässt sie, wenn kein anderer die Bandbreite braucht, auf 100% Überbuchen/Ausborgen (ceil):Colttt hat geschrieben:Ich misch mal ein, geht sowas auch dynamisch? Also wenn einer da ist bekommt er die volle Bandbreite und wenn 4da sind die ziehen dann jeweils nur 25% etc??
HTB Beispiel:
Code: Alles auswählen
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 25kbps ceil 100kbps
Alternativ könnte man mit Stochastic Fairness Queueing, einer classless queueing discipline, recht ähnliches Verhalten erzeugen.
Dabei wird die verfügbare Bandbreite, ohne shaping, auf alle Datenströme versucht aufzuteilen.
Code: Alles auswählen
tc qdisc add dev eth0 root sfq perturb 10
Code: Alles auswählen
tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 25kbps ceil 100kbps
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 25kbps ceil 100kbps
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev eth0 parent 1:40 handle 40: sfq perturb 10
Ciao, Hendri