- PVSM.RU - https://www.pvsm.ru -

Shadow [1] запускает реальные приложения, такие как Tor или Bitcoin. Изначально он создавался для экспериментов над Tor, но вырос в крупный проект, который широко используется для исследований в таких местах, как Кембриджский и Колумбийский университеты. В этой статье будут рассмотрены главные особенности проекта, описаны его плюсы и минусы, а также разобран простой пример работы.
Основной задачей проекта является исследование или создание прототипов распределённых или одноранговых систем, включая протоколы многосторонних вычислений. Для этого Shadow связывается с прикладным программным обеспечением и нативно выполняет код приложения во время моделирования, обеспечивая достоверные эксперименты и точные результаты. После чего программа моделирует и запускает распределённые сети на одной машине Linux или настроенном AMI на Amazon EC2. Это упрощает управление экспериментами и сохраняет при этом фокус на результатах.
Shadow моделирует интернет, используя реальные задержки, записанные в результате измерений пинга на PlanetLab. Собранные данные дают распределение попарных задержек между узлами. Затем происходит классификация всех узлов по географическим «регионам» и объединение распределения узлов между каждой областью. Это приближение формирует модель Интернета и даётся в качестве входных данных. Данная модель основана на конкретных измерениях между конкретными точками в определённое время. Если бы интернет-перегрузка в то время была нехарактерно высокая или низкая, то модель исказит результаты. В частности, эксперименты, которые связаны с задержкой, пропускной способностью или внутренней работой конкретной реализации TCP, могут потребовать более точное моделирование, что достаточно затратно по времени.
Однако, Shadow работает как симулятор дискретных событий, поэтому экспериментальные результаты можно повторить с использованием разных интернет-перегрузок. Утилита также может запускать реальное программное обеспечение на своих виртуальных узлах, используя плагины, созданные пользователем. Эта комбинация функций — дискретное моделирование событий в сочетании с эмуляцией реального программного обеспечения делает данную утилиту уникальным инструментом.
Первый шаг к использованию симулятора — это создание конфигурации сети в формате XML, которая отвечает за моделирование. XML-файл сообщает Shadow, когда следует создавать каждый виртуальный хост и какое программное обеспечение он должен запускать. Конфигурация также определяет структуру топологии и свойства сети, такие как задержка соединения, джиттер и скорость потери пакетов. Здесь [3] описаны основные атрибуты, которые программа распознаёт в конфигурации.
После создания XML-файла необходимо подключить плагины – это прокладки общих библиотек, которые связываются с приложением и играют ключевую роль в моделировании сети. Shadow динамически загружает эти библиотеки для выполнения кода приложения и перехватывает набор системных вызовов, чтобы обеспечить «бесшовную» интеграцию приложения в моделируемую среду. Благодаря этому приложение будет работать так же, как и в стандартной UNIX системе. В этой статье [4] подробно описан простой плагин для ознакомления.

Это архитектура утилиты. Приложения интегрируются в Shadow с помощью плагинов, а системные и библиотечные вызовы перехватываются и заменяются реализациями специально для эмулятора.
Процесс установки подробно описан на сайте документации [5].
После завершения установки, перейти в папку 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 можно исследовать широкий спектр проблем и не использовать большое количество серверов для экспериментов. Также существует отличная документация [6], которая позволяет без лишних проблем глубже разобраться в программе. Проект активно поддерживается сообществом и развивается.
VDSina предлагает серверы в аренду [7] под любые задачи, огромный выбор операционных систем для автоматической установки, есть возможность установить любую ОС с собственного ISO [8], удобная панель управления [9] собственной разработки и посуточная оплата.
Подписывайтесь на наш чат в Telegram [10].
Автор: Mikhail
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/shadow/364013
Ссылки в тексте:
[1] Shadow: https://shadow.github.io/
[2] Tor metrics: https://metrics.torproject.org/
[3] Здесь: https://github.com/shadow/shadow/blob/main/docs/3.1-Shadow-Config.md
[4] этой статье: https://github.com/shadow/shadow-plugin-extras/tree/master/hello
[5] на сайте документации: https://github.com/shadow/shadow/blob/main/docs/1.1-Shadow.md
[6] документация: https://github.com/shadow/shadow/tree/main/docs
[7] серверы в аренду: https://vdsina.ru/cloud-servers?partner=habr356
[8] ISO: https://vdsina.ru/qa/q/kak-ispolzovat-svoy-obraz-iso-v-vds?partner=habr356
[9] панель управления: https://habr.com/ru/company/vdsina/blog/460107/
[10] наш чат в Telegram: https://t.me/vdsina
[11] Источник: https://habr.com/ru/post/555564/?utm_source=habrahabr&utm_medium=rss&utm_campaign=555564
Нажмите здесь для печати.