Назад | Перейти на главную страницу

Как мы можем установить переменные значения пропускной способности дроссельной заслонки с помощью tc?

Я создаю сетевое приложение, и мне нужно протестировать его поведение при различной пропускной способности.

Этот вопрос является ответвлением этот вопрос. Мне удалось успешно протестировать свое приложение для различных наборов пропускной способности.

Кроме того, теперь я хочу протестировать приложение, в котором скорость полосы пропускания изменяется во время выполнения приложения.

Я полагаю, что то же самое можно сделать вручную / с помощью сценария 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 учебник, в котором также есть много других полезных примеров.