Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Happy

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

それは何ですか?

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

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

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

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

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

始めましょう

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

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

HappyCodelab入門をお試しください

参照のセットアップ使用方法を設定し、ハッピーを使用しての詳細については。

建築

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

  • ノード- A Linuxネットワークの名前空間。ノードを構成するプロセスは、指定されたネットワーク名前空間内で実行されます。
  • リンク- A Linuxのネットワークインタフェース。ハッピーは、使用veth L3(IP)インターフェイスをサポートするために、ネットワークデバイスおよびtap L2をサポートするネットワーク装置は、箱から出しインターフェース。
  • ネットワーク-その中に実行されているイーサネットブリッジとLinuxネットワークの名前空間。

実装

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

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

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

ハッピーもで見つかったプラグインのセットが含ま/plugins 。プラグインは、特定のテクノロジーに関連する一連の機能をラップします。例えば、 /plugins/weaveハッピー内の実行のためのラップは、様々な織りのアプリケーションというヘルパーが含まれています。

実行

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

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

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