Bean Network Tester

Хаос-тестирование сети в Windows

Хаос-тестирование означает намеренно что-то ломать на ваших глазах, чтобы выяснить, как ведёт себя ваше ПО. На сетевом уровне именно этим и является этот инструмент: способом внести сбой в одно приложение и посмотреть, выживет ли оно.

Сбои, которые можно внести

СбойЧто он моделирует
Потери, порча, дублированиеУхудшенный путь. Пакеты исчезают, приходят повреждёнными или приходят дважды.
Задержка, джиттер, всплескиМедленный или нестабильный путь, включая многосекундное зависание, которое ломает таймауты.
Сбросы соединенийБрандмауэр или балансировщик нагрузки, обрывающий соединения посреди передачи.
Обрывы каналаПуть пропадает и возвращается по циклу.
Заблокированный адрес или портОдна зависимость недоступна, пока всё остальное работает.
Интернета нет, LAN живаФорма «закрытого портала»: локальное работает, внешний мир нет.

Что отличает хаос от шума: повторяемость

Случайный сбой, который нельзя повторить, даёт байку, а не отчёт об ошибке. Каждое случайное решение здесь берётся из seed, поэтому одна и та же команда воспроизводит тот же запуск: те же потерянные пакеты, тот же джиттер, в том же порядке:

BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120

В этом и разница между «один раз упало в прошлый вторник» и падающим тестом, который может запустить кто-то другой.

В пайплайне

Командная строка сообщает о результате кодами завершения, поэтому сборка может отличить «приложение упало» от «инструмент не смог запуститься», а сеанс заканчивается сам: нет шага очистки, о котором можно забыть:

BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson

Последовательность сбоев вместо одного это файл сценария, и такие запуски тоже повторяемы. Коды завершения и нужный раннер описаны в разделах сценарии во времени и тесты сети в CI.

Где заканчивается радиус поражения

Два ограничения, и оба намеренные. Помехи достигают одного процесса, PID, адреса или порта, когда вы на них нацеливаетесь, поэтому машина, на которой вы работаете, продолжает работать. И это одна машина: это внесение сбоев для клиента и его соединения, а не для кластера. Если вам нужен хаос между службами и узлами, это инструмент другого рода, а этот является той частью, которая ломает сеть под одним приложением Windows.

Всё обратимо на месте. STOP восстанавливает сеть, ограничение по времени делает то же самое, а сторожевой таймер внутри инструмента останавливает перехват, если сам инструмент умрёт: внесённый вами сбой не должен пережить запуск, который его внёс.

Что дальше

Готовы намеренно сломать собственную сеть?

Скачать для Windows