Blog Imena.UA

Эмуляция сетевых проблем с помощью WANem

Что такое WANem? Это дистрибутив на основе knoppix, который позволяет эмулировать различные условия сетевого подключения клиентов. В первую очередь, это полезно для тестирования и отладки приложений, которым предстоит работать в не-пойми-каких условиях без физического погружения в эти самые условия. Правила для работы можно создавать как вручную, так и через более-менее удобный web-интерфейс.

Как применять WANem?
Взять любую систему виртуализации и загрузить в ней LiveCD. Или, если вы используете решения VMWare — скачать готовую виртуальную машину. В дальнейшем я буду исходить из загрузки с LiveCD.

Подготовка

  1. Создаем новую виртуальную машину (1core/256ram будет вполне достаточно), указываем источником загрузки LiveCD
  2. Подтверждаем загрузку с LiveCD
  3. Подтверждаем конфигурацию всех сетевых интерфейсов через DHCP (или отказываемся, и позже указываем IP вручную)
  4. Стартовый скрипт создает юзера perc и спрашивает, какой пароль ему установить (ssh разрешен по умолчанию)
  5. Указав пароль, мы можем подключиться к SSH
  6. Мы попадаем в интерфейс командной строки WANem. Начнем с простой команды help, которая выведет список всех доступных команд с их кратким описанием
    • help — вывод помощи
    • about — вывод версии и копирайтов
    • clear — очистка экрана
    • reset — сброс сетевых настроек и перезапуск сервисов
    • shutdown — выключение системы
    • restart — перезапуск системы
    • status — вывод текущего статуса системы (IP-адреса, маршруты, состояния сервисов)
    • wanemreset — сброс правил самого WANem (если вы там намудрили злого и доступ к web-интерфейсу плохо работает)
    • assign — указать IP-адрес вручную (если ранее отказались от DHCP)
    • quit — выйти из консоли WANem

Открываем в браузере http://IP виртуалки/WANem/ и видим интерфейс для управления. Из меню доступны:

Проверка работоспособности
Внутри себя WANem оперирует правилами, которые можно задавать явно в Advanced Mode, или по-простому выбирать из доступных в Basic Mode. Самый простой сценарий применения — включить режим, скажем ISDN 128 Kbps и задержку в 500 миллисекунд. После сохранения этих настроек нужно скомандовать машине, на которой установлено тестовое приложение, направлять весь свой трафик через WANem.

После этого нехитрого действия достаточно сделать traceroute от тестовой машины до внешнего мира и убедиться, что первый хоп — это IP виртуалки с WANem и что задержка пакетов ±совпадает с заданной в настройках.

Тонкая настройка
Убедившись с помощью Basic Mode, что наша тестовая станция заворачивает весь сетевой трафик через эмулятор, можно переходить к более тонкой настройке. В первую очередь, стоит обратить внимание на обширные настройки случайного распределения задержек, ошибок и патерь покетов потерь пакетов. Очередной небольшой шажок к реалистичности эмуляции.
Заранее расшифрую самые непонятные опции:

Например можно задать параметры пропадания и восстановления связи, можно сэмулировать наличие соединения но непрохождение пакетов с данными, потерю или повреждение % пакетов.
При необходимости WANem может работать с несколькими сетевыми интерфейсами одновременно (создавая для них разные правила), что позволяет реализовать самую изощренную сетевую конфигурацию.

Альтернативы WANem
Мне известен платный продукт для Windows, под названием SoftPerfect Connection Emulator ($99/$149).
UPD: Для OS X goshakkk_reborn рекомендует Network Link Conditioner из XCode.

Выводы
Отличный, достаточно простой и эффективный инструмент. Мне лично немного не хватает логирования на стороне WANem, но подозреваю, что это решается third-party утилитами, с которыми еще предстоит разобраться.

Вот пара примеров профилей, которые мы использовали для тестов: CDMA EV-DO rev.A, EDGE.

Официальный сайт: wanem.sourceforge.net/, дистрибутив ~400мб
Последняя версия: 2.3, 15.03.2011

<

p style=”text-align: right;”>автор: MadCat