Apakah ada metode untuk mensimulasikan latensi tinggi?

Jawaban:

14

Anda dapat melakukan ini menggunakan netem. Dari beranda mereka :

Meniru penundaan jaringan area luas

Ini adalah contoh paling sederhana, itu hanya menambah jumlah penundaan tetap untuk semua paket keluar dari Ethernet lokal.

# tc qdisc add dev eth0 root netem delay 100ms

Sekarang tes ping sederhana untuk menjadi tuan rumah di jaringan lokal akan menunjukkan peningkatan 100 milidetik. Penundaan dibatasi oleh resolusi clock dari kernel (Hz). Pada sebagian besar sistem 2.4, jam sistem beroperasi pada 100 Hz yang memungkinkan penundaan peningkatan 10 ms. Pada 2.6, nilainya adalah parameter konfigurasi dari 1000 hingga 100 Hz.

Contoh selanjutnya hanya mengubah parameter tanpa memuat ulang qdisc

Jaringan luas nyata menunjukkan variabilitas sehingga dimungkinkan untuk menambahkan variasi acak.

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

Ini menyebabkan penundaan yang ditambahkan menjadi 100 ± 10 ms. Variasi keterlambatan jaringan tidak sepenuhnya acak, jadi untuk meniru bahwa ada nilai korelasi juga.

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

Ini menyebabkan keterlambatan yang ditambahkan menjadi 100 ± 10 ms dengan elemen acak berikutnya tergantung 25% pada yang terakhir. Ini bukan korelasi statistik yang sebenarnya, tetapi perkiraan.

Keterlambatan distribusi

Biasanya, keterlambatan dalam jaringan tidak seragam. Lebih umum menggunakan sesuatu seperti distribusi normal untuk menggambarkan variasi dalam penundaan. Disiplin netem dapat mengambil tabel untuk menentukan distribusi yang tidak seragam.

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

Tabel aktual (normal, pareto, paretonormal) dihasilkan sebagai bagian dari kompilasi iproute2 dan ditempatkan di / usr / lib / tc; jadi dimungkinkan dengan beberapa upaya untuk membuat distribusi Anda sendiri berdasarkan data eksperimen.

Chris Down
sumber
3
Hebat - dan tcbahkan ada di sistem SLES dan RHEL saat ini.
Nils