La réponse choisie est incorrecte/incomplète. J'ai été confronté à un problème similaire, la réponse choisie m'a apporté une certaine aide, mais pas suffisante.
Tout d'abord, la commande suivante n'est pas vraiment nécessaire.
tc qdisc del dev eth0 root
Il "supprime" le qdisc racine, mais il est immédiatement remplacé par un qdisc pfifo_fast (afin de ne pas perdre la connectivité).
Le deuxième commandement :
tc qdisc add dev eth0 root handle 1 : prio
Remplacera le qdisc pfifo_fast par le qdisc prio. Par défaut, la file d'attente prio a 3 bandes (0, 1, 2) chacune gérée par une classe (1:1, 1:2 et 1:3).
Les paquets seront envoyés à l'une de ces bandes en utilisant le champ TOS du paquet IP. Cette configuration est affichée lorsque vous exécutez :
tc qdisc ls
en examinant les valeurs "priomap".
Ensuite, vous ajoutez un netem qdisc :
tc qdisc add dev eth0 parent 1:1 handle 2 : netem delay 500ms
Cette commande permet de retarder tout le trafic vers la bande 1:1 (jusqu'à ce que le filtre soit en place).
Mais il y a deux mises en garde :
- Votre trafic peut avoir une valeur TOS différente et être envoyé à un autre groupe.
- Le prio qdisc peut être configuré de manière à ce que le trafic soit dirigé vers une autre bande.
Ce qui suit a résolu mon problème de ne pas être affecté par le netem lorsque le filtre n'est pas appliqué. Au lieu de suivre les étapes ci-dessus, j'ai procédé comme suit
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 2 2
Par défaut, tout le trafic est envoyé à la bande 1:3.
Ensuite, j'ai ajouté la règle pour retarder le trafic :
tc qdisc add dev eth0 parent 1:1 handle 10 : netem delay 100ms 10ms
Cela crée le qdisc dans la bande 0, mais comme tout le trafic va sur la bande 3, cela ne m'a pas affecté.
J'ai ensuite ajouté le filtre :
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
Maintenant, avec le filtre, seul l'IP/port choisi sera affecté, puisque nous redirigeons le trafic choisi vers la bande 0.
Tous les autres trafics restent inchangés puisqu'ils continuent à être acheminés vers la bande 3.