tc
ist der Weg zu gehen. Der Trick besteht darin, den Verkehr zu priorisieren, ohne ihn einzuschränken.
http://www.lartc.org/howto/lartc.qdisc.classful.html, Abschnitt 9.5.3 "The PRIO qdisc"; Standardmäßig werden 3 Warteschlangen erstellt, die dritte kann jedoch ignoriert werden. Der einfachste Ansatz wäre:
Erstellen Sie die Warteschlangendisziplinen (qdisc)
tc qdisc add dev eth0 root handle 1: prio tc qdisc add dev eth0 parent 1:1 handle 10: sfq tc qdisc add dev eth0 parent 1:2 handle 20: sfq tc qdisc add dev eth0 parent 1:3 handle 30: sfq
Sie haben alle den gleichen Warteschlangenalgorithmus. Weisen Sie dann Ihren Servern (in diesem Fall IP 192.168.1.0-127) 10: zu und der Rest 20::
tc filter add dev eth0 protocol ip parent 1:1 prio 1 u32 match ip dst 192.168.1.0/25 flowid 10: tc filter add dev eth0 protocol ip parent 1:2 prio 2 flowid 20:
(Haftungsausschluss: Es ist schon eine Weile her, seit ich dieses Zeug berührt habe, Sie müssen möglicherweise mit den Werten nach parent
und experimentieren. flowid
)
Die Verwendung von Bereichen, die Potenzen von 2 sind, ist viel einfacher als Dezimalgrenzen. Das / 25 nach der IP-Adresse ignoriert die letzten 7 Bits der IP-Adresse, daher einen Bereich von 0 bis 127. Verwenden Sie a / 26, um den Bereich auf 0..63 zu begrenzen, falls erforderlich.
Auf der gleichen Seite wird der Hierarchical Token Bucket diskutiert, eine differenziertere Methode zur Verteilung der Bandbreite. Der Trick besteht darin, zwei Klassen mit einem schiefen Bandbreitenverhältnis zu erstellen, beispielsweise 1:10 (100 MBit gegenüber 1000 MBit). Dies lässt Ihren anderen Clients etwas Bandbreite.