Эмуляция задержек глобальной сети
Это самый простой пример, он просто добавляет фиксированную задержку ко всем пакетам, выходящим из локальной сети Ethernet.
# tc qdisc add dev eth0 root netem delay 100ms
Теперь простой тест ping для размещения в локальной сети должен показать увеличение на 100 миллисекунд. Задержка ограничена разрешающей способностью ядра (Гц). В большинстве систем 2.4 системные часы работают с частотой 100 Гц, что допускает задержки с шагом 10 мс. На 2.6 это значение параметра конфигурации от 1000 до 100 Гц.
Более поздние примеры просто изменяют параметры без перезагрузки qdisc.
Реальные глобальные сети показывают изменчивость, поэтому можно добавлять случайные отклонения.
# tc qdisc change dev eth0 root netem delay 100ms 10ms
Это приводит к тому, что добавленная задержка составляет 100 ± 10 мс. Изменение задержки в сети не является чисто случайным, поэтому для эмуляции также существует значение корреляции.
# tc qdisc change dev eth0 root netem delay 100ms 10ms 25%
Это приводит к тому, что добавленная задержка составляет 100 ± 10 мс, а следующий случайный элемент зависит от 25% от последнего. Это не истинная статистическая корреляция, а приближение.
Задержка распределения
Как правило, задержка в сети не является равномерной. Для описания изменения задержки чаще используется нечто вроде нормального распределения. Дисциплина netem может взять таблицу для указания неравномерного распределения.
# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal
Фактические таблицы (normal, pareto, paretonormal) создаются как часть компиляции iproute2 и помещаются в / usr / lib / tc; так что можно с некоторыми усилиями сделать свой собственный дистрибутив на основе экспериментальных данных.
tc
даже там на современных системах SLES и RHEL.