Happy

Happy — это инструмент для упрощенной оркестровки смоделированных сетевых топологий. Используйте его для тестирования сетевых протоколов и других распределенных программ выполнения на одном компьютере для разработки Linux без использования аппаратного обеспечения устройства IoT.

Что это такое?

Happy моделирует сложные сетевые топологии. На одном компьютере с Linux Happy может создать несколько узлов с независимыми друг от друга сетевыми стеками. Некоторые узлы могут быть подключены к смоделированным сетям Thread, другие могут подключаться к смоделированным сетям Wi-Fi, WAN (Интернет) или сотовым сетям.

Happy обращается к следующим вариантам использования:

  • Тестирование сетевых протоколов и других распределенных программ выполнения на одной машине разработки Linux без использования оборудования
  • Выполнение автоматизированного функционального тестирования в сети
  • Запуск нескольких одновременных параллельных сетей в одной системе для повышения производительности тестирования.

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

Используйте команды оболочки Happy для настройки, тестирования и отладки их кода во время разработки. Та же сетевая конфигурация и тестовые программы могут быть затем написаны сценариями и использованы в автоматизированном тестировании.

Начать

Самый быстрый и простой способ начать работу с Happy — пройти Codelab. Он знакомит пользователя со всеми основами Happy, включая:

  • Создание и удаление топологии
  • Сетевые узлы вместе
  • Сохранение и восстановление топологий
  • Подключение топологии к Интернету
  • Основы плетения

Попробуйте Начало работы с Happy Codelab

Дополнительные сведения о настройке и использовании Happy см. в разделе « Настройка и использование».

Архитектура

Счастливые модели следующие:

  • Node — сетевое пространство имен Linux. Процессы, составляющие узел, выполняются в указанном сетевом пространстве имен.
  • Ссылка — сетевой интерфейс Linux. Happy использует сетевое устройство veth для поддержки интерфейсов L3 (IP) и сетевое устройство tap для поддержки интерфейсов L2 из коробки.
  • Сеть — сетевые пространства имен Linux с работающим в них мостом Ethernet.

Реализация

Happy — это набор модулей Python. Модули Core Happy предоставляют абстракции для:

  • Управление абстракциями узлов
    • Добавление, изменение и удаление узлов
    • Запуск набора процессов внутри узла
  • Управление ссылками
    • Добавление, изменение и удаление ссылок
    • Назначение ссылок узлу и сети
    • Назначение и изменение назначений адресов
  • Управление сетями
    • Создание, изменение и уничтожение сетей
    • Сетевое подключение
  • Согласованное управление общим состоянием фреймворка

Большинство абстракций, реализованных модулями Happy, отображаются в команды, которые вызывают сетевые инструменты Linux.

Happy также содержит набор плагинов, которые можно найти в /plugins . Плагины реализуют набор функций, связанных с определенной технологией. Например, /plugins/weave содержит помощники, которые оборачивают различные приложения Weave для выполнения в Happy.

Исполнение

Пользователи могут создавать смоделированные топологии двумя способами:

  • Команды оболочки — все команды находятся в /bin .
  • Скрипты Python — импортируйте модули Happy для вызова команд Happy в ваших собственных скриптах Python. Модули находятся в /happy .

Дополнительные сведения об использовании модулей Happy в ваших собственных скриптах Python см. в разделе Python scripting .