Esiste un metodo per simulare l'alta latenza?


Risposte:


14

Puoi farlo usando netem. Dalla loro homepage :

Emulazione dei ritardi della rete geografica

Questo è l'esempio più semplice, aggiunge solo una quantità fissa di ritardo a tutti i pacchetti che escono dall'Ethernet locale.

# tc qdisc add dev eth0 root netem delay 100ms

Ora un semplice test ping da ospitare sulla rete locale dovrebbe mostrare un aumento di 100 millisecondi. Il ritardo è limitato dalla risoluzione di clock del kernel (Hz). Sulla maggior parte dei sistemi 2.4, l'orologio di sistema funziona a 100 Hz, il che consente ritardi con incrementi di 10 ms. Su 2.6, il valore è un parametro di configurazione da 1000 a 100 Hz.

Gli esempi successivi cambiano semplicemente i parametri senza ricaricare il qdisc

Reti ad ampia area reale mostrano variabilità, quindi è possibile aggiungere variazioni casuali.

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

Ciò causa un ritardo aggiunto di 100 ± 10 ms. La variazione del ritardo di rete non è puramente casuale, quindi per emulare che esiste anche un valore di correlazione.

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

Questo fa sì che il ritardo aggiunto sia di 100 ± 10 ms con l'elemento casuale successivo che dipende dal 25% sull'ultimo. Questa non è una vera correlazione statistica, ma un'approssimazione.

Ritardare la distribuzione

In genere, il ritardo in una rete non è uniforme. È più comune usare qualcosa come una normale distribuzione per descrivere la variazione in ritardo. La disciplina netem può prendere una tabella per specificare una distribuzione non uniforme.

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

Le tabelle effettive (normale, pareto, paretonormale) sono generate come parte della compilazione iproute2 e inserite in / usr / lib / tc; quindi è possibile con un certo sforzo creare la propria distribuzione sulla base di dati sperimentali.


3
Fantastico - ed tcè persino presente sugli attuali sistemi SLES e RHEL.
Nils,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.