Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。
このページは Cloud Translation API によって翻訳されました。
Switch to English

Happy

Happyは、シミュレートされたネットワークトポロジの軽量オーケストレーションのためのツールです。これを使用して、IoTデバイスハードウェアを使用せずに、単一のLinux開発マシンでネットワークプロトコルやその他の分散実行プログラムをテストします。

それは何ですか?

Happyは、複雑なネットワークトポロジをシミュレートします。単一のLinuxマシンで、Happyは互いに独立したネットワークスタックを持つ複数のノードを作成できます。一部のノードはシミュレートされたスレッドネットワークに接続され、他のノードはシミュレートされたWi-Fi、WAN(インターネット)、またはセルラーネットワークに接続されます。

Happyは、次のユースケースに対応しています。

  • ハードウェアを使用せずに、単一のLinux開発マシンでネットワークプロトコルやその他の分散実行プログラムをテストする
  • ネットワーク全体で自動機能テストを実行する
  • テストスループットを向上させるために、同じシステムで複数の同時並列ネットワークを実行する

Happyは、最小限のユーザーオーバーヘッドでネットワークトポロジの抽象化を作成することにより、これらの問題を解決します。複雑なトポロジは、1回のシェルコマンド呼び出しで作成できます。 Happyは、インタラクティブな使用と自動スクリプトの両方をサポートしています。

Happyシェルコマンドを使用して、開発中にコードをセットアップ、テスト、およびデバッグします。次に、同じネットワーク構成とテストプログラムをスクリプト化して、自動テストで使用できます。

始めましょう

Happyを使い始める最も速くて簡単な方法は、Codelabを使用することです。これは、以下を含むすべてのハッピーファンダメンタルズをユーザーに説明します。

  • トポロジの作成と削除
  • ノードを一緒にネットワーク化する
  • トポロジの保存と復元
  • トポロジーをインターネットに接続する
  • 織りの基本

HappyCodelab入門をお試しください

Happyの設定と使用の詳細については、設定使用法を参照してください。

建築

幸せなモデルは次のとおりです。

  • ノード—Linuxネットワーク名前空間。ノードを構成するプロセスは、指定されたネットワーク名前空間内で実行されます。
  • リンク—Linuxネットワークインターフェース。 Happyは、 vethネットワークデバイスを使用してL3(IP)インターフェイスをサポートし、 tapネットワークデバイスを使用してL2インターフェイスをすぐにサポートします。
  • ネットワーク—イーサネットブリッジが実行されているLinuxネットワーク名前空間。

実装

HappyはPythonモジュールのコレクションです。 Core Happyモジュールは、以下の抽象化を提供します。

  • ノード抽象化の管理
    • ノードの追加、変更、および削除
    • ノード内で一連のプロセスを実行する
  • リンクの管理
    • リンクの追加、変更、および削除
    • ノードとネットワークへのリンクの割り当て
    • アドレス割り当ての割り当てと変更
  • ネットワークの管理
    • ネットワークの作成、変更、および破棄
    • ネットワーク接続
  • フレームワークの全体的な状態をまとまりのある方法で管理する

Happyモジュールによって実装された抽象化のほとんどは、Linuxネットワークツールを呼び出すコマンドにマップされます。

Happyには、 /pluginsインのセットも含まれてい/plugins 。プラグインは、特定のテクノロジーに関連する一連の機能をラップします。たとえば、 /plugins/weaveは、Happy内で実行するためにさまざまなWeaveアプリケーションをラップするヘルパーが含まれています。

実行

ユーザーは、次の2つの方法でシミュレートされたトポロジを構築できます。

  • シェルコマンド—すべてのコマンドは/binます。
  • Pythonスクリプト— Happyモジュールをインポートして、独自のPythonスクリプトでHappyコマンドを呼び出します。モジュールは/happyます。

あなた自身のPythonスクリプトでハッピーモジュールを使用する方法の詳細については、 Pythonスクリプトを