Happy

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Happy ist ein Tool zur einfachen Orchestrierung simulierter Netzwerktopologien. Verwenden Sie es, um Netzwerkprotokolle und andere verteilte Ausführungsprogramme auf einem einzigen Linux-Entwicklungscomputer zu testen, ohne IoT-Gerätehardware zu verwenden.

Was ist es?

Happy simuliert komplexe Netzwerktopologien. Auf einem einzelnen Linux-Rechner kann Happy mehrere Knoten mit voneinander unabhängigen Netzwerkstacks erstellen. Einige Knoten können mit simulierten Thread-Netzwerken verbunden sein, andere können mit simuliertem Wi-Fi, WAN (Internet) oder Mobilfunknetzen verbunden sein.

Happy adressiert die folgenden Anwendungsfälle:

  • Testen von Netzwerkprotokollen und anderen verteilten Ausführungsprogrammen auf einem einzigen Linux-Entwicklungscomputer ohne Verwendung von Hardware
  • Durchführen automatisierter Funktionstests in einem Netzwerk
  • Ausführen mehrerer gleichzeitiger, paralleler Netzwerke auf demselben System, um den Testdurchsatz zu verbessern

Happy löst diese Probleme, indem es Abstraktionen der Netzwerktopologie mit minimalem Benutzeraufwand erstellt. Komplexe Topologien können mit einem einzigen Shell-Befehlsaufruf erstellt werden. Happy unterstützt sowohl interaktive Nutzung als auch automatisiertes Scripting.

Verwenden Sie Happy-Shell-Befehle, um ihren Code während der Entwicklung einzurichten, zu testen und zu debuggen. Dieselben Netzwerkkonfigurations- und Testprogramme können dann als Skript erstellt und beim automatisierten Testen verwendet werden.

Loslegen

Der schnellste und einfachste Weg, um mit Happy zu beginnen, ist das Codelab. Es führt den Benutzer durch alle Happy-Grundlagen, einschließlich:

  • Topologie erstellen und löschen
  • Knoten miteinander vernetzen
  • Speichern und Wiederherstellen von Topologien
  • Eine Topologie mit dem Internet verbinden
  • Grundlagen des Webens

Testen Sie die ersten Schritte mit Happy Codelab

Siehe Einrichtung und Verwendung Weitere Informationen zum Einrichten und Verwenden von Happy.

Die Architektur

Happy modelt folgendes:

  • Knoten - Ein Linux - Netzwerk - Namespace. Prozesse, aus denen der Knoten besteht, werden in einem angegebenen Netzwerk-Namespace ausgeführt.
  • Link - Ein Linux - Netzwerk - Schnittstelle. Glücklich verwendet die veth Netzwerkgerät L3 (IP) Schnittstellen und die Unterstützung tap Netzwerkgerät L2 zu unterstützen Schnittstellen aus der Box.
  • Network - Linux Netzwerk - Namespaces mit einer Ethernet - Brücke in ihnen laufen.

Implementierung

Happy ist eine Sammlung von Python-Modulen. Core Happy Module bieten Abstraktionen für:

  • Knotenabstraktionen verwalten
    • Knoten hinzufügen, ändern und löschen
    • Ausführen einer Reihe von Prozessen innerhalb des Knotens
  • Links verwalten
    • Links hinzufügen, ändern und löschen
    • Zuweisen von Links zu einem Knoten und einem Netzwerk
    • Adresszuweisungen zuweisen und ändern
  • Netzwerke verwalten
    • Erstellen, Ändern und Zerstören von Netzwerken
    • Netzwerkkonnektivität
  • Den Gesamtzustand des Frameworks auf kohärente Weise verwalten

Die meisten der von Happy-Modulen implementierten Abstraktionen werden in Befehle abgebildet, die Linux-Netzwerktools aufrufen.

Glücklich enthält auch eine Reihe von Plug - in in gefunden /plugins . Plug-ins umschließen eine Reihe von Funktionen, die sich auf eine bestimmte Technologie beziehen. Zum Beispiel /plugins/weave enthalten Helfer , dass wickeln verschiedene Weave - Anwendungen zur Ausführung in Happy.

Ausführung

Benutzer können simulierte Topologien mit zwei Methoden erstellen:

  • Shell - Befehle - Alle Befehle sind in /bin .
  • Python-Skripte — Importieren Sie Happy-Module, um Happy-Befehle in Ihren eigenen Python-Skripten aufzurufen. Die Module sind in /happy .

Weitere Informationen zum Happy - Module in Ihren eigenen Python - Skripten finden Sie unter Python Scripting .