Я создаю сетевое приложение, и мне нужно протестировать его поведение при различной пропускной способности.
Этот вопрос является ответвлением этот вопрос. Мне удалось успешно протестировать свое приложение для различных наборов пропускной способности.
Кроме того, теперь я хочу протестировать приложение, в котором скорость полосы пропускания изменяется во время выполнения приложения.
Я полагаю, что то же самое можно сделать вручную / с помощью сценария bash (программное добавление или удаление qdiscs) и т. Д.
Но было бы действительно полезно, если бы существовала команда tc, в которой я мог бы просто указать диапазон значений пропускной способности, и приложение переключилось бы на случайную скорость для следующей передачи пакета.
PS: Я новичок в tc, и поэтому относительно подробные объяснения / ссылки на то же самое были бы очень полезны. Спасибо!
В netem имеет большинство функций, необходимых для моделирования физической сети.
Конкретно в этом вопросе
# tc qdisc add dev eth0 root netem delay 100ms 10ms 25%
вызывает задержку пакетов, отправленных через интерфейс eth0, в 100 мс ± 10 мс. Следовательно, эхо-запросы будут давать время приема-передачи (rtt) в диапазоне от 180 до 220 мс. (2 * задержка)
Однако задержка в разных случаях не является случайной. Мы можем, если захотим, иметь корреляцию между последовательными значениями.
Значение 25% означает, что следующее значение задержки на 25% зависит от предыдущего значения задержки.
Это не истинная статистическая корреляция, а приближение.
Мы также можем выбрать случайные задержки для отслеживания определенного распределения
# tc qdisc change dev eth0 root netem delay 100ms 20ms distribution normal
Примечание. Эти примеры были заимствованы из netem учебник, в котором также есть много других полезных примеров.