TC HTB

Aus xinux.net
Zur Navigation springen Zur Suche springen

Hierarchial Token Buckets (HTB)

root handle anlegen

  • Diese Zeile erstellt eine HTB qdisc auf der root auf eth0, and spezifiziert die Klasse 1:13 als default. Es setzt den Namen auf 1: für spätere Referenzen und default 10 gibt die Klasse an, in welche die Pakete umgeleitet werden, auf die die Bandbreitenreservierung nicht zutrifft
tc qdisc add dev eth0 root handle 1:0 htb default 13
  • Schnittstelle eth0
  • root handle (Bezeichner) 1:0
  • htb statistische Messverfahren 3
  • default 13 default klasse 1:13

Parent-Klasse

  • Das erstellt eine Klasse1:1, welche direct von der Root-Klasse abstammt (the parent is 1:), Diese Klasse eine HTB qdisc zugeteilt, und setzt die garantierte Geschwindkeit(rate) auf 100Mbit und die maximale auch auf 100Mbit(ceil).
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

Unter-Geschwindigkeits-Klasse

  • Das erstellt eine Klasse1:X, welche direct von der Parent-Klasse abstammt (the parent is 1:1), Diese Klasse eine HTB qdisc zugeteilt, und setzt die garantierte Gechwindkeit(rate) auf XMbit und die maximale auch auf YMbit(ceil).
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 10mbit ceil 100mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 20mbit ceil  30mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 30mbit ceil 100mbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 40mbit ceil 100mbit prio 3

Markierungen in der Mangletable

  • Kontroll Pakete wie der 3 Wege handshake sind klein und werden bevorzug behandelt. Das führt zu schnellem Verbindungsaufbau.
iptables -A POSTROUTING -t mangle -o eth0 -p tcp -m length --length :64 -j MARK --set-mark 10 
  • Markierungen wie gewünscht hier SIP
iptables -A POSTROUTING -t mangle -o eth0 -p udp --dport 5060 -j MARK --set-mark 10
  • Markierungen wie gewünscht hier HTTP
iptables -A POSTROUTING -t mangle -o eth0 -p tcp --dport 80 -j MARK --set-mark 11
  • Markierungen wie gewünscht hier SMTP
iptables -A POSTROUTING -t mangle -o eth0 -p tcp --dport 25 -j MARK --set-mark 12

Zuweisen der Markierten Pakete zu den Kanälen

  • hier werden Pakete mit der Markierung 10 (handle 10) auf die Klasse 1:10 (flowid 1:10) zugewiesen.
tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 11 fw flowid 1:11
tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 12 fw flowid 1:12

Mischen laut Martin Devera

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10