Намеренный обрыв соединений
Медленно: один вид плохого. Пропало совсем: другой, и именно он находит путь в коде, который никто не писал: переподключение, повторную попытку, сообщение, которое объясняет пользователю, что случилось.
Так же можно проверить приложение офлайн, ничего не выдёргивая: режим LAN оставляет локальную сеть работающей и забирает интернет, а блокировка одного адреса делает недоступным один сервис, пока остальное соединение в порядке.
Пять разных способов пропасть
| Настройка | Что видит приложение |
|---|---|
| Сброс соединений | Соединения обрываются посреди передачи, как их обрывает брандмауэр или балансировщик нагрузки. Вы задаёте, как часто, в процентах. |
| Канал то включается, то выключается | Сеть пропадает на время, потом возвращается, снова и снова. Вы задаёте длину цикла и то, какая его часть приходится на простой. |
| Блокировка порта | Всё, что идёт на этот порт, исчезает. Больше ничего не затрагивается. |
| Блокировка адреса | Один сервер становится недоступным, пока остальной интернет работает. |
| Режим LAN | Локальная сеть продолжает работать, интернет нет. Точная форма «закрытого портала» или мёртвого восходящего канала. |
Из командной строки
Оборвать примерно одно соединение из десяти для одного приложения:
BeanNetworkTester.exe --rst-prob 10 --target myapp.exe --duration 60
Циклы по десять секунд, четыре из них простой: канал, который то появляется, то пропадает:
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Один сервер недоступен, всё остальное в порядке:
BeanNetworkTester.exe --block-ip 203.0.113.10
Блокировка бьёт только по тому, что назвала
В отличие от потерь или задержки, блокировка порта или адреса затрагивает только подходящий трафик. Поэтому из всего перечисленного её безопаснее всего запускать без целевого процесса, и поэтому «убрать эту одну зависимость» делается одной строкой.
Ловушка мёртвой загрузки
Есть ещё максимальный размер пакета. Немного уменьшите его, и большие передачи замедлятся. Уменьшите до значения вроде 576, и загрузки остановятся полностью, навсегда и без всякой ошибки, потому что это уже не меньший размер пакета, а классическая чёрная дыра, где сеть отбрасывает слишком большое и никогда об этом не сообщает.
Это настоящий режим отказа, который стоит воспроизводить намеренно, и по-настоящему сбивает с толку, если наткнуться на него случайно. Если загрузка молча умирает сразу после того, как вы изменили эту настройку, дело в этом.
Возврат к норме
STOP восстанавливает всё. Закрытие программы тоже, и ограничение по времени тоже, если вы его задали. Если сам инструмент вдруг умрёт посреди сеанса, внутренний сторожевой таймер остановит перехват, а не оставит вашу сеть в сломанном состоянии.