Все распределённые системы — базы данных, мобильные приложения, корпративные SaaS и так далее — следует разрабатывать с учётом сбоев. Например, компания Stripe во время тестов убивала случайные инстансы — и смотрела, что произойдёт. Компания Netflix рандомно уничтожала инстансы прямо в продакшне с помощью программы Chaos Monkey (проект Simian Army).
Симуляция сбоев — необходимое средство тестирования. Проблема в том, что ситуации не делятся только на чёрное и белое, Есть огромная «серая» зона, где сбои явно не выражены, а проявляются в плохих условиях сети: ненадёжное соединение, узкий канал, потери пакетов, высокая задержка, дубликаты пакетов и так далее.
Другими словами, система должна быть устойчива не только к сбоям, но и к враждебным окружающим условиям — плохой сети. Специально для таких тестов был разработан симулятор Comcast 1 , представляющий удобную «обёртку» вокруг стандартных системных инструментов типа iptables и tc .
Инструмент работает путём упаковки некоторых системных инструментов в переносимый «контейнер». В системах семейства BSD, таких как mac OS, для «инъекции сбоя» используются ipfw и pfctl . В Linux — iptables и tc .
ЛУЧШИЙ LAG METHOD CLUMSY
В любом случае, поддерживается несколько параметров: устройство, задержка, целевая/дефолтная пропускная способность, потеря пакетов, протокол и номер порта.
Например, такая команда…
$ comcast —device=eth0 —latency=250 —target-bw=1000 —default-bw=1000000 —packet-loss=10% —target-addr=8.8.8.8,10.0.0.0/24 —target-proto=tcp,udp,icmp —target-port=80,22,1000:2000
… добавит 250 мс задержки, ограничит пропускную способность до 1 Мбит/с и отбросит 10% пакетов на указанные адреса по указанным протоколам на указанных портах. Ограничение 1 Мбит/с действует для всего исходящего трафика.
В принципе, соответствующие команды можно запускать и без помощи comcast , а напрямую через iptables или tc .
Например, дропнуть 10% входящих и исходящих пакетов с помощью iptables в Linux:
$ iptables -A INPUT -m statistic —mode random —probability 0.1 -j DROP
$ iptables -A OUTPUT -m statistic —mode random —probability 0.1 -j DROP
В tc ещё больше параметров:
$ tc qdisc add dev eth0 root netem delay 50ms 20ms distribution normal
$ tc qdisc change dev eth0 root netem reorder 0.02 duplicate 0.05 corrupt 0.01
Comcast поддерживает следующие сетевые профили:
GPRS (good) | 500 | 50 | 2 |
EDGE (good) | 300 | 250 | 1.5 |
3G/HSDPA (good) | 250 | 750 | 1.5 |
DIAL-UP (good) | 185 | 40 | 2 |
DSL (poor) | 70 | 2000 | 2 |
DSL (good) | 40 | 8000 | 0.5 |
WIFI (good) | 40 | 30000 | 0.2 |
Starlink | 20 | — | 2.5 |
Как видим, разработчик уже добавил в профили Starlink с задержкой 20 мс и потерей пакетов 2,5%. Судя по всему, размер пинга взят из планов Илона Маска на будущее. В реальности же пока средние параметры по итогам практического опыта использования Starlink выглядят иначе:
✅Best Clumsy Settings❗️- 8 Block Reach on Minemen Club [ FakeLag BYPASS] | No KB, OP Reach
Уникальность проекта Starlink состоит именно в том, что используется большое количество не стационарных, а низкоорбитальных спутников, чтобы гарантировать минимальную задержку, сравнимую с наземными каналами.
Естественно, профили Comcast можно редактировать или добавлять.
Разработчик Comcast допускает поддержку Windows через wipfw или встроенный сетевой стек. Но вообще под Windows уже есть похожие симуляторы. Например, программа clumsy на КДПВ, которая для работы задействует библиотеку WinDivert (Windows Packet Divert).
В браузере Google Chrome тоже частично реализована такая функциональность. Этот режим работы (Device Mode) можно включить в инструментах разработчика ( F12 ), нажав сочетание клавиш Ctrl + Shift + M или кликнув соответствующую иконку в левом верхнем углу панели инструментов разработчика. Но здесь всего три варианта симуляции слабого железа и мобильного интернета.
Для macOS есть продвинутый инструмент под названием Network Link Conditioner, который можно найти в пакете “Additional Tools for Xcode” или скачать со страницы для разработчиков (Additional Tools).
Здесь тоже изменяются стандартные параметры сети: полоса (аплинк и даунлинк), задержка и уровень потери пакетов.
В наличии следующие профили:
- 100% потеря пакетов
- 3G
- DSL
- EDGE
- Большая задержка DNS
- LTE
- Очень плохая сеть
- WiFi
- WiFi 802.11ac
Более того, Network Link Conditioner реализован в iOS, если подключить гаджет к персональному компьютеру и активировать настройки для разработчиков через Xcode (Window — Devices ControlClick, Button2, clumsy 0.2 sleep 200 ControlClick, Button2, clumsy 0.2 sleep 200 ControlClick, Button2, clumsy 0.2 sleep 200 ControlClick, Button2, clumsy 0.2 sleep 200 ControlClick, Button2, clumsy 0.2 sleep 200 ControlClick, Button2, clumsy 0.2 sleep 200 >return
полезные ссылки:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
примечания: в ахк использован clumsy v0.2, поменяйте версию, если скачали clumsy иной версии; количество циклов также можете менять, как и бинды. вак никак не словишь, тк это операции над интернетом, и по факту к кс не имеют никакого значения. на счет патруля, я считаю, что врядли отлететь можно, но это не значит, что патруль нереально словить. скрипт можно юзать где угодно (только зачем. )
Источник: yougame.biz
Clumsy 0.2
Clumsy целенаправленно ухудшает условия, в которых работает Ваше сетевое соединение в Windows.
Большинство пользователей сети стараются иметь надёжное подключение к интернету. , т.к. это даёт им возможность наслаждаться находящимся там контентом и не напрягаться по поводу скорости соединения.
Если Вы геймер, например, то уж точно не хотите больших лагов, а вот пользователи P2P больше всего не любят когда провайдер режет скорость, стримеров же напрягает потеря пакетов.
Если Вы администратор сети или разработчик продукты которого зависят от сетевых соединени, Вам будет полезно протестировать как они будут работать при плохом качестве соединения.
Что произойдёт с Вашим приложением, когда в соединении возникнут задержки (lag) потери (drops) или ограничение трафика (throttling)? Предусмотрены ли эти ситуации заранее или они нарушат работу сервера или приложения?
Обзор Clumsy
Clumsy для Windows была разработана для того, чтобы Вы могли получить ответы на эти вопросы. Это бесплатная программа, доступная в 32-bit и 64-bit версии, которая может имитировать сетевые соединения плохого качества.
Когда Вы запускаете портативную программу после распаковывания запускается графический пользовательский интерфейс, изображенный выше.
Верхнее меню позволяет выбрать предустановленный шаблон для Вашего теста. Например, выбрать весь IPv4 localhost трафик, все отправляемые пакеты или пакеты с выбранного IP адреса.
Ниже перечеслены доступные в Clumsy функции. Советую посмотреть официальную гифку демонстирующую все опции наглядно (следите за бегущим столбцом слева).
- Lag эмулирует задержку в сети равную указанному Вами в настройках времени в миллисекундах.
- Drop отбрасывает пакеты с верноятностью указанной Вами.
- Throttle блокирует трафик на определённое время и затем посылает его обратно.
- Duplicate посылает клоны Ваших пакетов вслед за оригиналами.
- Out of order меняет порядок пакетов.
- Tamper искажает содержимое пакетов.
Источник: www.andreyolegovich.ru