Je cherche à simuler des retards pour un ensemble de services qui s'exécutent sur différents ports d'un hôte. Je voudrais simuler différents retards pour différents services, potentiellement beaucoup sur un hôte donné, sans aucune limite.tc: attacher de nombreux netems à une interface
La seule façon que j'ai trouvé pour faire ceci est avec un prd qdisc. Voici un exemple:
IF=eth0
tc qdisc add dev $IF root handle 1: prio bands 16 priomap 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# this loop is only a sample to make the example runnable; values will vary in practice
for handle in {2..16}; do
# add a delay for the service on port 20000 + $handle
tc qdisc add dev $IF handle $handle: parent 1:$handle netem delay 1000ms # example; this will vary in practice
# add a filter to send the traffic to the correct netem
tc filter add dev $IF pref $handle protocol ip u32 match ip sport $((20000 + $handle)) 0xffff flowid 1:$handle
done
Si vous exécutez la commande ci-dessus, vous remarquerez que les poignées 11-16 ne sont pas créés et échouent avec une erreur.
NB. Voici une annulation pour ce qui précède.
IF=eth0
for handle in {2..16}; do
tc filter del dev $IF pref $handle
tc qdisc del dev $IF handle $handle: parent 1:$handle netem delay 1000ms
done
tc qdisc del dev $IF root
Est-il possible d'ajouter plus de 10 netems à une interface?