Passen Sie Ihre Fritzbox an, um Traffic-Shaping zu ermöglichen
Zusammenfassung:
Hol dir den aktuellen Freetz-Quellcode von deren Website oder den entsprechenden freetz-1.2_rc2.tar.bz2 (ausgecheckt am 21.03.2012) von meinem Webspace für den Patch.
installieren Sie den freetz-1.2_rc2.patch oder verwenden Sie mein vorkompiliertes Image für die FritzBox 7270v3 (englisch) oder mein vorkompiliertes Image für die FritzBox 7270v3 (deutsch) (Informationen über fritzbox priorisierung streaming weiter unten im Text lesen).
Quellcode kompilieren, Firewall/qos-Regeln einrichten.
Irgendwann im Jahr 2010 hatte ich den Freetz-Source gepatcht, um hauptsächlich zwei Scheduler (cbq, htb), den u32-Filter und eine funktionierende tc (Traffic Control)-Binary hinzuzufügen. Diese sind für QoS unter Linux üblich, um die Bandbreite auf einer speziellen Quell-/Zieladresse, einem Port, einem IP-Protokoll oder einer Firewall zu verwalten.
Die Zeit ist vergangen und die meisten meiner Änderungen wurden dem 1.2-Zweig hinzugefügt und andere haben verschiedene Filter hinzugefügt. Hier können Sie meinen aktuellen Patch und kompilierte Firmware-Images herunterladen:
die Quelldateien freetz-1.2_rc2.
die entsprechenden freetz-1.2_rc2.patch-Dateien (Verwendung in den Kommentaren).
die Kernel-Konfigurationsdatei für dieses vorkompilierte Image (englisch). Sollte für alle funktionieren. Ich habe Dropbear (ssh), nfs, ntfs, ext3, fat32, Network Scheduler (cbq, htb, llq, sfq, prio), Network Filter (u32, fw) und für iptables (conntrack, xt_mark, masquerade, mangle, filter) aktiviert.
die Kernel-Konfigurationsdatei für dieses vorkompilierte Image (deutsch). Es sollte für alle funktionieren. Ich habe Dropbear (ssh), nfs, ntfs, ext3, fat32, Network Scheduler (cbq, htb, llq, sfq, prio), Network Filter (u32, fw) und für iptables (conntrack, xt_mark, masquerade, mangle, filter) aktiviert.
Meine Änderungen sind derzeit nur das Hinzufügen eines einwandfrei funktionierenden tc zum Build-Skript und einiger Filter. Du musst deine eigene tc für eine funktionierende Filterung kompilieren. Wenn Sie die vorinstallierte Version von AVMs verwenden, erhalten Sie eine Meldung wie:
root@fritz:/var/mod/root# tc filter add dev ath0 parent 1:0 protocol ip u32 matc
h ip dst 192.168.0.21/32 classid 1:10
Unbekannter Filter „u32“, daher ist die Option „match“ nicht vergleichbar.
auch wenn Sie das richtige Kernelmodul geladen haben.
Anwendungsbeispiel für Traffic Shaping:
Okay, das war’s. Nun einige Hinweise zu QoS, Traffic Shaping und Networking mit Linux im Allgemeinen:
Zuerst fügen Sie eine qdisc mit tc hinzu:
#tc qdisc add dev ath0 root handle 1:0 htb
qdisc (Warteschlangendisziplin) ist elementar für das Verständnis der Verkehrsregelung. Wann immer der Kernel ein Paket an eine Schnittstelle senden muss, wird es an die für diese Schnittstelle konfigurierte qdisc angehängt. Unmittelbar danach versucht der Kernel, so viele Pakete wie möglich von der qdisc zu erhalten, um sie an den Netzwerkadaptertreiber weiterzugeben. Wir verwenden in diesem Skript classful htb. Der htb qdisc, oder hierarchischer Token Bucket, ist ein klassenfüllendes Shaping qdisc. Es bietet viel Flexibilität und verfügt über zahlreiche Optionen. Es berechnet vernünftige Standardwerte für alles, was Sie nicht angeben, was im Allgemeinen in Ordnung ist. Und es ist viel einfacher zu bedienen als cbq.
Übergeordnete Klasse
- Fügen Sie nun eine übergeordnete Klasse hinzu und legen Sie Ihre Bandbreitenbeschränkungen fest:
- #tc class add dev ath0 parent 1: classid 1:1 htb rate 7mbit ceiling 7mbit
- Klassenreiche qdiscs enthalten Klassen, die es uns ermöglichen, Ratenbegrenzungen festzulegen. Klasse 1:1 ist hier die Wurzelklasse.
Geben Sie die Unterklassen für Ihre Hosts oder Gruppen von Hosts an: - #tc class add dev ath0 parent 1:1 classid 1:10 htb rate 1512kbit ceil 7mbit
#tc class add dev ath0 parent 1:1 classid 1:11 htb rate 4mbit ceil 7mbit
#tc class add dev ath0 parent 1:1 classid 1:12 htb rate 2mbit ceil 7mbit - Dies ist die Blattklasse 1:10, die an die Wurzelklasse 1:1 angehängt ist. Die Gestaltung kann in der Blattklasse und nicht in der Wurzelklasse erfolgen. In diesem Beispiel von Blattklassen weisen wir jeder Klasse 1512kbit, 4mbit und 2mbit Bandbreite zu.
Rate: garantierte (minimale Bandbreite), die überschritten werden kann.
Decke: burstable (maximale Bandbreite), die nicht überschritten werden darf.
Füge nun einen Griff mit fw-Markierungen hinzu. Wir können iptables und damit dem Kernel sagen, dass er spezielle Pakete markieren soll (wie alle Pakete, die von einem definierten Host kommen oder gehen). - #tc filter add dev ath0 protocol ip parent 1:0 prio 1 handle 2 fw classid 1:10
#tc filter add dev ath0 protocol ip parent 1:0 prio 1 handle 3 fw classid 1:11
#tc filter add dev ath0 protocol ip parent 1:0 prio 1 handle 4 fw classid 1:12 - Wir verwenden Filter, um die Pakete in einen Out zu klassifizieren.