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

ハッピー

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

それは何ですか?

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

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

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

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

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

始めましょう

Happyを始めるための最も迅速で簡単な方法は、Codelabを確認することです。次のようなハッピーのすべての基本事項をユーザーに説明します。

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

Happy Codelabを使ってみる

Happyのセットアップ使用の詳細については、 セットアップ使用法を参照してください。

建築

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

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

実装

HappyはPythonモジュールのコレクションです。コアハッピーモジュールは、次の抽象化を提供します。

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

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

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

実行

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

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

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