Lösung 1:
Die gewählte Antwort ist falsch/unvollständig. Ich stand vor einem ähnlichen Problem, die gewählte Antwort hat etwas geholfen, aber nicht genug.
Erstens wird der folgende Befehl nicht wirklich benötigt.
tc qdisc del dev eth0 root
Es wird die Root-qdisc "löschen", wird aber sofort durch eine pfifo_fast ersetzt (damit Sie die Konnektivität nicht verlieren).
Der zweite Befehl:
tc qdisc add dev eth0 root handle 1:prio
Wird die pfifo_fast qdisc durch die prio ersetzen. Standardmäßig hat die Prio-Warteschlange 3 Bänder (0, 1, 2), die jeweils von einer Klasse verwaltet werden (1:1, 1:2 und 1:3).
Die Pakete werden unter Verwendung des TOS-Felds des IP-Pakets an eines dieser Bänder gesendet. Diese Konfiguration wird angezeigt, wenn Sie Folgendes ausführen:
tc qdisc ls
Blick auf die 'priomap'-Werte.
Dann fügen Sie ein netem qdisc hinzu:
tc qdisc add dev eth0 parent 1:1 handle 2:netem delay 500ms
Mit diesem Befehl verzögern Sie den gesamten Verkehr, der in das 1:1-Band geht (bis der Filter vorhanden ist).
Aber es gibt zwei Vorbehalte:
- Ihr Datenverkehr kann einen anderen TOS-Wert haben und dann an ein anderes Band gesendet werden.
- Die Prio-Qdisc kann so konfiguriert werden, dass der Datenverkehr auf ein anderes Band geht.
Das Folgende löste mein Problem, nicht vom Netz betroffen zu sein, während der Filter nicht angewendet wurde. Anstelle der obigen Schritte habe ich Folgendes getan:
tc qdisc add dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Dadurch wird der gesamte Datenverkehr standardmäßig auf das Band 1:3 gesendet.
Dann habe ich die Regel hinzugefügt, um den Datenverkehr zu verzögern:
tc qdisc add dev eth0 parent 1:1 handle 10:netem delay 100ms 10ms
Dadurch wird die qdisc im Band 0 erstellt, aber da der gesamte Datenverkehr auf Band 3 geht, hat es mich nicht beeinflusst.
Danach habe ich den Filter hinzugefügt:
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.1/32 match ip dport 80 0xffff flowid 1:1
Mit dem Filter ist jetzt nur noch die gewählte IP/Port betroffen, da wir den gewählten Traffic auf das Band 0 umleiten.
Der gesamte andere Datenverkehr bleibt unbeeinflusst, da er weiterhin auf Band 3 fließt.
Lösung 2:
Ok, ich habe mein Problem selbst gelöst. Es stellt sich heraus, dass, wenn Sie die ersten 3 Zeilen oben ausführen (die "tc qdisc"), alle Pakete verzögert werden, da noch keine Filter vorhanden sind. Die vierte Zeile ändert es, um nur Pakete von dieser einzelnen IP-Adresse zu verzögern. Zusätzliche Filterzeilen können hinzugefügt werden, um zusätzliche IP-Adressen zur „verzögerten“ Liste hinzuzufügen. Also:erstelle keine "netem delay"-Zeile, ohne dass ein Filter darauf zeigt.