Tc: Unterschied zwischen den Versionen
Erscheinungsbild
Keine Bearbeitungszusammenfassung |
|||
Zeile 5: | Zeile 5: | ||
== Installation == | == Installation == | ||
== Syntax == | == Syntax == | ||
tc [ OPTIONS ] qdisc [ add | change | replace | link | delete ] dev DEV [ parent qdisc-id | | |||
root ] [ handle qdisc-id ] [ ingress_block BLOCK_INDEX ] [ egress_block BLOCK_INDEX ] qdisc [ | |||
qdisc specific parameters ] | |||
tc [ OPTIONS ] class [ add | change | replace | delete | show ] dev DEV parent qdisc-id [ | |||
classid class-id ] qdisc [ qdisc specific parameters ] | |||
tc [ OPTIONS ] filter [ add | change | replace | delete | get ] dev DEV [ parent qdisc-id | | |||
root ] [ handle filter-id ] protocol protocol prio priority filtertype [ filtertype specific | |||
parameters ] flowid flow-id | |||
tc [ OPTIONS ] filter [ add | change | replace | delete | get ] block BLOCK_INDEX [ handle | |||
filter-id ] protocol protocol prio priority filtertype [ filtertype specific parameters ] | |||
flowid flow-id | |||
tc [ OPTIONS ] chain [ add | delete | get ] dev DEV [ parent qdisc-id | root ] filtertype [ | |||
filtertype specific parameters ] | |||
tc [ OPTIONS ] chain [ add | delete | get ] block BLOCK_INDEX filtertype [ filtertype specific | |||
parameters ] | |||
tc [ OPTIONS ] [ FORMAT ] qdisc { show | list } [ dev DEV ] [ root | ingress | handle QHANDLE | | |||
parent CLASSID ] [ invisible ] | |||
tc [ OPTIONS ] [ FORMAT ] class show dev DEV | |||
tc [ OPTIONS ] filter show dev DEV | |||
tc [ OPTIONS ] filter show block BLOCK_INDEX | |||
tc [ OPTIONS ] chain show dev DEV | |||
tc [ OPTIONS ] chain show block BLOCK_INDEX | |||
tc [ OPTIONS ] monitor [ file FILENAME ] | |||
OPTIONS := { [ -force ] -b[atch] [ filename ] | [ -n[etns] name ] | [ -N[umeric] ] | [ -nm | | |||
-nam[es] ] | [ { -cf | -c[onf] } [ filename ] ] [ -t[imestamp] ] | [ -t[short] | [ -o[neline] ] | |||
} | |||
FORMAT := { -s[tatistics] | -d[etails] | -r[aw] | -i[ec] | -g[raph] | -j[json] | -p[retty] | | |||
-col[or] } | |||
=== Optionen === | === Optionen === | ||
=== Parameter === | === Parameter === | ||
=== Umgebungsvariablen === | === Umgebungsvariablen === | ||
=== Exit-Status === | === Exit-Status === | ||
== Anwendung == | == Anwendung == | ||
=== Linux QoS mit ”tc” === | === Linux QoS mit ”tc” === |
Version vom 1. November 2023, 15:19 Uhr
tc - show / manipulate traffic control settings
Beschreibung
Installation
Syntax
tc [ OPTIONS ] qdisc [ add | change | replace | link | delete ] dev DEV [ parent qdisc-id | root ] [ handle qdisc-id ] [ ingress_block BLOCK_INDEX ] [ egress_block BLOCK_INDEX ] qdisc [ qdisc specific parameters ]
tc [ OPTIONS ] class [ add | change | replace | delete | show ] dev DEV parent qdisc-id [ classid class-id ] qdisc [ qdisc specific parameters ]
tc [ OPTIONS ] filter [ add | change | replace | delete | get ] dev DEV [ parent qdisc-id | root ] [ handle filter-id ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id
tc [ OPTIONS ] filter [ add | change | replace | delete | get ] block BLOCK_INDEX [ handle filter-id ] protocol protocol prio priority filtertype [ filtertype specific parameters ] flowid flow-id
tc [ OPTIONS ] chain [ add | delete | get ] dev DEV [ parent qdisc-id | root ] filtertype [ filtertype specific parameters ]
tc [ OPTIONS ] chain [ add | delete | get ] block BLOCK_INDEX filtertype [ filtertype specific parameters ]
tc [ OPTIONS ] [ FORMAT ] qdisc { show | list } [ dev DEV ] [ root | ingress | handle QHANDLE | parent CLASSID ] [ invisible ]
tc [ OPTIONS ] [ FORMAT ] class show dev DEV
tc [ OPTIONS ] filter show dev DEV
tc [ OPTIONS ] filter show block BLOCK_INDEX
tc [ OPTIONS ] chain show dev DEV
tc [ OPTIONS ] chain show block BLOCK_INDEX
tc [ OPTIONS ] monitor [ file FILENAME ]
OPTIONS := { [ -force ] -b[atch] [ filename ] | [ -n[etns] name ] | [ -N[umeric] ] | [ -nm | -nam[es] ] | [ { -cf | -c[onf] } [ filename ] ] [ -t[imestamp] ] | [ -t[short] | [ -o[neline] ] }
FORMAT := { -s[tatistics] | -d[etails] | -r[aw] | -i[ec] | -g[raph] | -j[json] | -p[retty] | -col[or] }
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Anwendung
Linux QoS mit ”tc”
- Linux benutzt tc vom Paket iproute2, um das Bandbreitenmanagement zu konfigurieren
- Allgemein beschrieben in Linux Advanced Routing & Traffic Control HOWTO.
Beispiel für eine Warteschlange mit konstanter Bitrate
Mit dem ”cbq” Planer können Röhren mit konstanter Bitrate definiert werden.
Root qdisc Definition
- Definition einer root qdisc mit einer Bandbreite von 1000 MBit/s an eth1
QoS class Definition
- Definition einer Klasse 1:1 mit 1 MBit/s
- Definition einer Klasse 1:2 mit 50 MBit/s
- Definition einer Klasse 1:3 mit 10 MBit/s
- Definition einer Klasse 1:4 mit 200 kBit/s
QoS filter Definition
- 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
- 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
- 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
- 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
Die letzte Filterdefinition benötigt auch einen Eintrag in ip6tables um das Paket zu markieren
Testen der Filterdefinition mit iperf
Starten auf Serverseite in separaten Konsolen
$
Starten auf Clientseite und Vergleichen der Ergebnisse:
$
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.