Kann TC die Bandbreite durch das QoS-Feld des IP-Headers begrenzen?

Kann TC die Bandbreite durch das QoS-Feld des IP-Headers begrenzen?

Wir entwickeln Client/Server-Anwendungen. Unsere Server-Anwendung enthält drei Arten von Netzwerkdaten: Echtzeitdaten wie Video/Audio, kritische Daten wie Datenbankdaten und BestEfforts-Daten wie bei der allgemeinen Dateiübertragung.

Wir planen, das QOS-Feld jedes IP-Pakets so einzustellen, dass es angibt, zu welchem ​​der drei oben genannten Datentypen das IP-Paket gehört, und dann TC zu verwenden, um unterschiedliche Höchstraten für diese drei Datentypen festzulegen.

Soweit ich weiß, ist das Festlegen des QOS-Felds sinnvoll, aber ich frage mich, ob wir die Rate der IP-Pakete begrenzen können, indem wir einen QOS-Wert angeben (den Wert des QOS-Felds im IP-Header).

Antwort1

Ich vermute, Sie meinen das 8-Bit- TOSFeld im IPv4-Paketheader. Haben Sie schon gelesenLARTC-ANLEITUNG? Dies ist der Leitfaden, den Sie unbedingt lesen müssen. Kurz gesagt, Sie müssen

1) Definieren QDISCsundCLASSesin dem der Verkehr klassifiziert, priorisiert und gestaltet wird (Nur ausgehender Verkehr kann geformt werden!!!). Im Allgemeinen wird jedes Paket, das gesendet werden muss, in die QDISCWarteschlange der Netzwerkschnittstelle eingereiht.

CEIL=10
tc qdisc add dev eth0 root handle 1: htb default 15
tc class add dev eth0 parent 1: classid 1:1 htb rate ${CEIL}mbit ceil ${CEIL}mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 4mbit ceil ${CEIL}mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 1mbit ceil ${CEIL}mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 6mbit ceil ${CEIL}mbit prio 2
tc qdisc add dev eth0 parent 1:11 handle 110: sfq perturb 10
tc qdisc add dev eth0 parent 1:12 handle 120: sfq perturb 10

Klassen mit niedrigerem prioFeld werden zuerst ausprobiert. So kann die Klasse 1:10 beispielsweise für Pakete reserviert sein, die eine minimale Verzögerung erfordern. Die Klassen 1:11 und 1:12 verfügen über SFQeine angehängte Warteschlangendisziplin, um eine gerechtere Bandbreitenverteilung zu gewährleisten.

2) Filter definierenum ein Paket rechts in die Warteschlange einzureihen CLASS.

tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 10 fw classid 1:10
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 11 fw classid 1:11
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 12 fw classid 1:12

Dies bedeutet einfach, dass ein Paket mit der Markierung 10 an die Klasse 10 geht und so weiter.

3) Definieren Sie iptables-Regelnum ein Paket zu markieren und es rechts einzureihenCLASS

iptables -t mangle -A PREROUTING -m tos --tos Minimize-Delay -j MARK --set-mark 0x10
iptables -t mangle -A PREROUTING -m tos --tos Minimize-Cost -j MARK --set-mark 0x11
iptables -t mangle -A PREROUTING -m tos --tos Maximize-Throughput -j MARK --set-mark 0x12

Ich verwende das Modul iptables tosabsichtlich, um Ihnen zu zeigen, wie Sie bestimmte Feldwerte zuordnen TOSund entsprechend markieren können. Weitere Informationen zu diesem Modul finden Sie unter

iptables -m tos --help

verwandte Informationen