Google is committed to advancing racial equity for Black communities. See how.

Happy

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

Что это?

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

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

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

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

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

Начать

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

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

Попробуйте начать работу с Happy Codelab

См Настройка и Использование для получения дополнительной информации о настройке и использовании Happy.

Архитектура

Хэппи моделирует следующее:

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

Выполнение

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

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

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

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

Исполнение

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

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

Для получения дополнительной информации об использовании жизнерадостных модулей в вашем собственных сценариях Python см Python сценарии .