Linux benutzt ”tc” vom Paket ”iproute2”, um das Bandbreitenmanagement zu konfigurieren, allgemein beschrieben in Linux Advanced Routing & Traffic Control HOWTO.
Mit dem ”cbq” Planer können Röhren mit konstanter Bitrate definiert werden.
Definition einer root qdisc mit einer Bandbreite von 1000 MBit/s an eth1
# tc qdisc add dev eth1 root handle 1: cbq avpkt 1000 bandwidth 1000Mbit |
Definition einer Klasse 1:1 mit 1 MBit/s
# tc class add dev eth1 parent 1: classid 1:1 cbq rate 1Mbit allot 1500 bounded |
Definition einer Klasse 1:2 mit 50 MBit/s
# tc class add dev eth1 parent 1: classid 1:2 cbq rate 50Mbit allot 1500 bounded |
Definition einer Klasse 1:3 mit 10 MBit/s
# tc class add dev eth1 parent 1: classid 1:3 cbq rate 10Mbit allot 1500 bounded |
Definition einer Klasse 1:4 mit 200 kBit/s
# tc class add dev eth1 parent 1: classid 1:4 cbq rate 200kbit allot 1500 bounded |
Definition eines Filters für IPv4 (protocol ip), TCP (match ip protocol 6 0xff) Zielport 5001 (match ip dport 5001 0xffff) unter Benutzung der Klasse 1:2 von oben
# tc filter add dev eth1 parent 1: protocol ip u32 match ip protocol 6 0xff match ip dport 5001 0xffff flowid 1:1 |
Definition eines Filters für IPv6 (protocol ip), TCP (match ip6 protocol 6 0xff) Zielport 5001 unter der Benutzung der Klasse 1:2 von oben
# tc filter add dev eth1 parent 1: protocol ipv6 u32 match ip6 protocol 6 0xff match ip6 dport 5001 0xffff flowid 1:2 |
Definition eines Filters für IPv6 für Pakete mit Flowlabel 12345 (match ip6 flowlabel 0x12345 0x3ffff) unter der Benutzung der Klasse 1:3 von oben
# tc filter add dev eth1 parent 1: protocol ipv6 u32 match ip6 flowlabel 12345 0x3ffff flowid 1:3 |
Definition eines Filters für IPv6 für Pakete mit der Linux iptables Markierung 32 (handle 32 fw) unter der Benutzung der Klasse 1:4 von oben
# tc filter add dev eth1 parent 1: protocol ipv6 handle 32 fw flowid 1:4 |
Die letzte Filterdefinition benötigt auch einen Eintrag in ip6tables um das Paket zu markieren
# ip6tables -A POSTROUTING -t mangle -p tcp --dport 5003 -j MARK --set-mark 32 |
Starten auf Serverseite in separaten Konsolen:
# iperf -V -s -p 5001 # iperf -V -s -p 5002 # iperf -V -s -p 5003 |
Starten auf Clientseite und Vergleichen der Ergebnisse:
# iperf -V -c SERVER-IPv4 -p 5001 (erwartet: 1 MBit/s) # iperf -V -c SERVER-IPv6 -p 5001 (erwartet: 50 MBit/s) # iperf -V -c SERVER-IPv4 -p 5002 (erwartet: >> 50 MBit/s && <= 1000 MBit/s) # iperf -V -c SERVER-IPv6 -p 5002 (erwartet: >> 50 MBit/s && <= 1000 MBit/s) # iperf -V -c SERVER-IPv4 -p 5003 (erwartet: >> 50 MBit/s && <= 1000 MBit/s) # iperf -V -c SERVER-IPv6 -p 5003 (erwartet: 200 kBit/s) |
Das Ergebnis der Transferraten sollten der Definitionen von oben entsprechen, das Ergebnis auf Port 5002 sollte ziemlich identisch unabhängig von der benutzten IP-Version sein.
Zurück | Zum Anfang | Weiter |
General | Nach oben | Hinweise zu IPv6 kompatiblen Daemons |