Happyは、シミュレートされたネットワークトポロジの軽量オーケストレーションのためのツールです。これを使用して、IoTデバイスハードウェアを使用せずに、単一のLinux開発マシンでネットワークプロトコルやその他の分散実行プログラムをテストします。
それは何ですか?
Happyは、複雑なネットワークトポロジをシミュレートします。単一のLinuxマシンで、Happyは互いに独立したネットワークスタックを持つ複数のノードを作成できます。一部のノードはシミュレートされたスレッドネットワークに接続され、他のノードはシミュレートされたWi-Fi、WAN(インターネット)、またはセルラーネットワークに接続される場合があります。
Happyは、次のユースケースに対応しています。
- ハードウェアを使用せずに、単一のLinux開発マシンでネットワークプロトコルやその他の分散実行プログラムをテストする
- ネットワーク全体で自動化された機能テストを実行する
- テストスループットを向上させるために、同じシステム上で複数の同時並列ネットワークを実行する
Happyは、最小限のユーザーオーバーヘッドでネットワークトポロジの抽象化を作成することにより、これらの問題を解決します。複雑なトポロジは、1回のシェルコマンド呼び出しで作成できます。 Happyは、インタラクティブな使用と自動スクリプトの両方をサポートしています。
Happy shellコマンドを使用して、開発中にコードをセットアップ、テスト、およびデバッグします。次に、同じネットワーク構成とテストプログラムをスクリプト化して、自動テストで使用できます。
始めましょう
Happyを使い始める最も速くて簡単な方法は、Codelabを使用することです。これは、以下を含むすべてのハッピーファンダメンタルズをユーザーに説明します。
- トポロジの作成と削除
- ノードを一緒にネットワーク化する
- トポロジの保存と復元
- トポロジーをインターネットに接続する
- 織りの基本
参照のセットアップと使用方法を設定し、ハッピーを使用しての詳細については。
建築
幸せなモデルは次のとおりです。
- ノード- 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スクリプトを。