Как стать автором
Обновить
1108.42
Рейтинг
VDSina.ru
Серверы в Москве и Амстердаме

Shadow – гибрид сетевого симулятора и эмулятора

Блог компании VDSina.ruДецентрализованные сетиСетевые технологии

Shadow запускает реальные приложения, такие как Tor или Bitcoin. Изначально он создавался для экспериментов над Tor, но вырос в крупный проект, который широко используется для исследований в таких местах, как Кембриджский и Колумбийский университеты. В этой статье будут рассмотрены главные особенности проекта, описаны его плюсы и минусы, а также разобран простой пример работы.

Основной задачей проекта является исследование или создание прототипов распределённых или одноранговых систем, включая протоколы многосторонних вычислений. Для этого Shadow связывается с прикладным программным обеспечением и нативно выполняет код приложения во время моделирования, обеспечивая достоверные эксперименты и точные результаты. После чего программа моделирует и запускает распределённые сети на одной машине Linux или настроенном AMI на Amazon EC2. Это упрощает управление экспериментами и сохраняет при этом фокус на результатах.

Фичи


  • Создает изолированную среду моделирования, в которой виртуальные хосты могут связываться друг с другом, но не с Интернетом.
  • Изначально выполняет реальные приложения, такие как Tor и Bitcoin
  • Обеспечивает эффективные, точные и контролируемые эксперименты
  • Моделирует топологию сети, задержку и пропускную способность
  • Работает без рута на одной машине Linux
  • Имитирует несколько виртуальных хостов в виртуальном времени
  • Имитирует сеть (стек TCP) и задержки обработки ЦП
  • Может запускать частные сети Tor с моделями пользователей / трафика на основе Tor metrics

Особенности


Shadow моделирует интернет, используя реальные задержки, записанные в результате измерений пинга на PlanetLab. Собранные данные дают распределение попарных задержек между узлами. Затем происходит классификация всех узлов по географическим «регионам» и объединение распределения узлов между каждой областью. Это приближение формирует модель Интернета и даётся в качестве входных данных. Данная модель основана на конкретных измерениях между конкретными точками в определённое время. Если бы интернет-перегрузка в то время была нехарактерно высокая или низкая, то модель исказит результаты. В частности, эксперименты, которые связаны с задержкой, пропускной способностью или внутренней работой конкретной реализации TCP, могут потребовать более точное моделирование, что достаточно затратно по времени.

Однако, Shadow работает как симулятор дискретных событий, поэтому экспериментальные результаты можно повторить с использованием разных интернет-перегрузок. Утилита также может запускать реальное программное обеспечение на своих виртуальных узлах, используя плагины, созданные пользователем. Эта комбинация функций — дискретное моделирование событий в сочетании с эмуляцией реального программного обеспечения делает данную утилиту уникальным инструментом.

Первый шаг к использованию симулятора — это создание конфигурации сети в формате XML, которая отвечает за моделирование. XML-файл сообщает Shadow, когда следует создавать каждый виртуальный хост и какое программное обеспечение он должен запускать. Конфигурация также определяет структуру топологии и свойства сети, такие как задержка соединения, джиттер и скорость потери пакетов. Здесь описаны основные атрибуты, которые программа распознаёт в конфигурации.

После создания XML-файла необходимо подключить плагины – это прокладки общих библиотек, которые связываются с приложением и играют ключевую роль в моделировании сети. Shadow динамически загружает эти библиотеки для выполнения кода приложения и перехватывает набор системных вызовов, чтобы обеспечить «бесшовную» интеграцию приложения в моделируемую среду. Благодаря этому приложение будет работать так же, как и в стандартной UNIX системе. В этой статье подробно описан простой плагин для ознакомления.



Это архитектура утилиты. Приложения интегрируются в Shadow с помощью плагинов, а системные и библиотечные вызовы перехватываются и заменяются реализациями специально для эмулятора.

Пример работы


Процесс установки подробно описан на сайте документации.

После завершения установки, перейти в папку shadow. После чего выполнить следующие команды для запуска двух экспериментов:

cd resource/examples/
rm -rf shadow.data shadow.log
shadow --tcp-windows=1 shadow.config.xml > window1.log
mv shadow.data window1.data
shadow --tcp-windows=1000 shadow.config.xml > window1000.log
mv shadow.data window1000.data

Чтобы распарсить логи выполнения, необходимо выполнить следующие команды:

python ../../src/tools/parse-shadow.py --prefix=window1.results window1.log
python ../../src/tools/parse-shadow.py --prefix=window1000.results window1000.log

Каждый из каталогов window1.results/ и window1000.results/ теперь содержит статистические данные, извлечённые из логов. Теперь можно объединить и визуализировать эти результаты с помощью скрипта plot-shadow.py, который находится по пути ../src/tools/:

python ../../src/tools/plot-shadow.py --prefix "window" --data window1.results/ "1 packet" --data window1000.results/ "1000 packets"

Заключение


С помощью Shadow можно исследовать широкий спектр проблем и не использовать большое количество серверов для экспериментов. Также существует отличная документация, которая позволяет без лишних проблем глубже разобраться в программе. Проект активно поддерживается сообществом и развивается.



На правах рекламы


VDSina предлагает серверы в аренду под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO, удобная панель управления собственной разработки и посуточная оплата.

Подписывайтесь на наш чат в Telegram.

Теги:Shadowдецентрализованные сетиутилиты
Хабы: Блог компании VDSina.ru Децентрализованные сети Сетевые технологии
Всего голосов 31: ↑31 и ↓0 +31
Просмотры5.6K

Похожие публикации

Лучшие публикации за сутки

Информация

Дата основания
Местоположение
Россия
Сайт
vdsina.ru
Численность
11–30 человек
Дата регистрации
Представитель
Mikhail

Блог на Хабре