← retour aux snippets

tc netem: simuler latence, perte et jitter

Appliquer une latence, un jitter et une perte artificiels sur une interface pour tester la résilience réseau.

bash network #tc#netem#latency

objectif

Simuler des conditions réseau difficiles (latence, jitter, perte) pour tester timeouts, retries et UX.

code minimal

# ajouter 80 ms de latence moyenne + 20 ms de jitter et 1% de perte
sudo tc qdisc add dev eth0 root netem delay 80ms 20ms loss 1%

utilisation

# tester puis retirer
curl -sS https://data.pm/ >/dev/null
sudo tc qdisc del dev eth0 root netem

variante(s) utile(s)

# limiter à une destination avec une qdisc hiérarchique (htb + netem)
sudo tc qdisc add dev eth0 root handle 1: htb default 10
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 1000mbit
sudo tc qdisc add dev eth0 parent 1:10 handle 10: netem delay 120ms 30ms distribution normal
sudo tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst 203.0.113.0/24 flowid 1:10

# perte en burst (corrélation)
sudo tc qdisc replace dev eth0 root netem loss 2% 25%

notes

  • opérez sur une interface de test ou hors production.
  • supprimez toujours la qdisc une fois le test terminé pour restaurer l’état.