Existe-t-il une méthode pour simuler une latence élevée?

11

C'est une très bonne réponse sur la façon de limiter la bande passante .

Maintenant, la bande passante n'est pas ma principale préoccupation - la latence l'est.

Que se passe-t-il si je mets quelques centaines de kilomètres entre mes serveurs d'applications et ses serveurs de bases de données?

Je cherche une possibilité de simuler le décalage attendu pour chaque paquet IP.

Nils
la source

Réponses:

14

Vous pouvez le faire en utilisant netem. Depuis leur page d'accueil :

Émulation des retards du réseau étendu

Ceci est l'exemple le plus simple, il ajoute juste une quantité fixe de retard à tous les paquets sortant de l'Ethernet local.

# tc qdisc add dev eth0 root netem delay 100ms

Désormais, un simple test ping à héberger sur le réseau local devrait montrer une augmentation de 100 millisecondes. Le retard est limité par la résolution d'horloge du noyau (Hz). Sur la plupart des systèmes 2.4, l'horloge système fonctionne à 100 Hz, ce qui permet des retards par incréments de 10 ms. Sur 2.6, la valeur est un paramètre de configuration de 1000 à 100 Hz.

Les exemples ultérieurs modifient simplement les paramètres sans recharger le qdisc

Les réseaux étendus réels présentent une variabilité, il est donc possible d'ajouter une variation aléatoire.

# tc qdisc change dev eth0 root netem delay 100ms 10ms

Cela entraîne un retard supplémentaire de 100 ± 10 ms. La variation du retard du réseau n'est pas purement aléatoire, donc pour émuler qu'il existe également une valeur de corrélation.

# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%

Cela entraîne un délai supplémentaire de 100 ± 10 ms, l'élément aléatoire suivant dépendant de 25% du dernier. Ce n'est pas une vraie corrélation statistique, mais une approximation.

Distribution différée

En règle générale, le retard dans un réseau n'est pas uniforme. Il est plus courant d'utiliser quelque chose comme une distribution normale pour décrire la variation du retard. La discipline netem peut prendre un tableau pour spécifier une distribution non uniforme.

# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal

Les tables réelles (normal, pareto, paretonormal) sont générées dans le cadre de la compilation iproute2 et placées dans / usr / lib / tc; il est donc possible avec un certain effort de faire votre propre distribution sur la base de données expérimentales.

Chris Down
la source
3
Génial - et tcexiste même sur les systèmes SLES et RHEL actuels.
Nils