netem и Network Link Conditioner в Windows
В Linux есть tc netem, а на Mac есть Network Link Conditioner. В Windows нет ничего встроенного, что добавляет задержку и потери. Эта страница переносит то, что вы уже знаете, на Bean Network Tester и показывает, где числа не переносятся.
Опции netem по одной
Добавляйте --target и --duration к каждой команде здесь, иначе она затронет весь компьютер.
| netem | Настройка в окне | Флаг |
|---|---|---|
delay 100ms | Latency | --latency 100 |
delay 100ms 20ms | Latency, Jitter | --latency 100 --jitter 20 |
loss 5% | Loss | --loss 5 |
loss 5% 25% | Loss, Losses in a row (burst) | --loss 5 --loss-burst 4 |
duplicate 1% | Duplication | --dup 1 |
corrupt 0.1% | Corruption | --corrupt 0.1 |
reorder 25% | Spike chance, Spike size | --spike-prob 5 --spike-ms 200 |
rate 1mbit | Download, Upload | --down 122 --up 122 |
limit 1000 | Buffer | --buffer 1000 |
- Потери сериями. Значение корреляции в netem - это не длина серии. Losses in a row (burst) - средняя длина серии подряд потерянных пакетов, ближайший аналог.
- Перестановка. Процента перестановки нет. Всплеск задерживает один пакет, и отправленные после него его обгоняют, а счётчик переставленных пакетов на странице Statistics показывает, случилось ли это на самом деле.
- Размер очереди. Параметр limit в netem считается в пакетах. Buffer - это время в миллисекундах.
Три отличия, о которых стоит знать
Направление. netem задерживает то, что уходит с интерфейса, а ответ возвращается нетронутым. Этот инструмент захватывает оба направления, поэтому --latency 100 добавляет к пингу около 200 мс: 100 туда и 100 обратно. Чтобы получить то, что делает netem, захватывайте только исходящий трафик:
BeanNetworkTester.exe --filter out --latency 100 --jitter 20 --target myapp.exe --duration 120
Единицы. Скорость в netem задаётся в битах в секунду. Поля ограничения скорости - в KB/s, где K = 1024. Перевод мегабит:
| скорость в netem | Поле ограничения скорости, в KB/s |
|---|---|
1mbit | 122 |
5mbit | 610 |
10mbit | 1221 |
50mbit | 6104 |
100mbit | 12207 |
Охват. tc формирует весь сетевой интерфейс и требует root. Этот инструмент нацеливается на одну программу через --target и требует прав администратора.
Если вы знаете Network Link Conditioner
Инструмент Apple работает с именованными профилями. Ближайшие из них здесь:
| Network Link Conditioner | Ближайшее здесь |
|---|---|
| 100% Loss | Loss, равное 100 |
| 3G | 3G network |
| DSL | Home DSL (VDSL) |
| LTE | LTE / 4G |
| WiFi | Good WiFi |
| Very Bad Network | Terrible network |
| Edge | Для него профиля нет. Введите ограничение скорости и задержку сами, а затем сохраните их как собственный профиль кнопкой Save.... |
Числа не от Apple, поэтому воспринимайте профиль как отправную точку. Все значения, которые задаёт профиль, перечислены на справочной странице.
Что вы получаете в Windows
- Одна программа, а не весь компьютер. Направьте помехи на одно приложение, пока остальная машина работает как обычно.
- Временная шкала вместо shell-скрипта. Сценарии по времени меняют настройки в заданные секунды, как в Linux скрипт из
tcиsleep. - Конвейер может его запустить. Тот же исполняемый файл работает в CI и сообщает результат кодами завершения.
В Linux или macOS используйте оригиналы. Этот инструмент работает только в Windows.