Elinaトラフィックコントローラー(Elina-TC)
はじめに
Elina-TCは、Linux向けの強力なコマンドラインネットワーク障害およびエミュレーションツールです。Linuxカーネルの組み込みトラフィックコントロール(tc)およびNetEm(netem)サブシステムへのユーザーフレンドリーなインターフェースを提供し、特定のネットワークインターフェース上でさまざまな現実的なネットワーク状態をシミュレートできます。
Elina-TCは、ネットワークテスト、アプリケーション耐性分析、パフォーマンス検証のためのスタンドアロンツールとして優れています。また、Elina-TGなどのトラフィックジェネレーターと統合できるように設計されており、ネットワークパスを劣化させながら同時にアプリケーショントラフィックを生成できます。これにより、ネットワーク障害がアプリケーションのパフォーマンスに与える直接的な影響を測定し理解できます。
クイックスタートについては、完全なウォークスルーを提供する「1st-test-guide.md」ドキュメントを参照してください。
仕組み
Elina-TCは、指定されたネットワークインターフェースの入力(ダウンロード)および出力(アップロード)トラフィックにネットワーク障害ルールを適用し、ネットワーク状態がアプリケーションに与える影響をテストできます。これは、中間機能ブロック(ifb)仮想デバイスを活用してこれらの変更を行います。
このツールは、いくつかのモードで実行できます:
- オンザフライ: コマンドラインから一時的な障害を迅速に適用するため。
- バッチ: 事前定義された障害プロファイルを循環させて自動テストシーケンスを実行するため。
- インタラクティブ: ネットワーク状態のリアルタイム制御。デバッグと探索的テストに理想的。
- 検証: 使用前にプロファイルファイルの構文と論理的正確性をチェックするため。
セットアップ
Elina-TCはPythonアプリケーションであり、Linuxオペレーティングシステム上でPython 3.7+が必要です。
- 前提条件: 必要なシステムパッケージがインストールされていることを確認してください。Debian/Ubuntuでは、次のコマンドで実行できます:
sudo apt-get update && sudo apt-get install -y python3-pip python3-venv iproute2
- ツールのダウンロードと解凍:
wget https://api.latence.ca/software/elina-tc.zip
unzip elina-tc.zip
cd elina-tc-release
cp -r src/elina_tc/pyarmor_runtime_000000/ venv/lib/python3.12/site-packages/
- 仮想環境のセットアップ(推奨): Elina-TCの依存関係を分離するため、これを強く推奨します。
python3 -m venv venv
source venv/bin/activate
- Elina-TCのインストール:
- コアコマンドラインツールとWeb UI(ベータ版)の場合:
# これにより、elina-tcとそのランタイム依存関係(tqdmなど)がインストールされます
pip install .[ui]
これにより、elina-tcコマンドが使用可能になり、Webサーバーに必要なライブラリがインストールされます。
- Sudoers設定(重要):
UIおよび一部のCLI機能は、sudoを使用してelina-tcを実行します。パスワードなしの操作のためには、ユーザーがパスワードなしでelina-tcコマンドを実行できるようにsudoersファイルを設定する必要があります。
まず、コマンドの完全なパスを見つけます:
# 仮想環境がアクティブであることを確認
which elina-tc
# 出力例:/home/user/elina-tc-project/venv/bin/elina-tc
次に、対応する行をsudoersファイルに追加します。your_usernameとパスの例を実際の詳細に置き換えてください。sudo visudoを使用して/etc/sudoersを安全に編集します:
your_username ALL=(ALL) NOPASSWD: /home/user/elina-tc-project/venv/bin/elina-tc
使用モード(コマンドラインインターフェース)
インストール後、Elina-TCはelina-tcコマンドを使用して実行されます。注: ネットワークルールを変更するすべてのコマンドにはsudo権限が必要です。
1. 検証モード
- プロファイルファイルのエラーをチェック:
elina-tc --validate -f profiles/satellite/profiles_LEO_Starlink.json
2. オンザフライモード
- 障害を直接適用:
sudo elina-tc -i eth0 --onthefly "delay 100ms loss 1%"
- これにより、
eth0を通過するすべてのトラフィックに100msの遅延と1%のパケットロスが適用されます。
3. バッチモード
- プロファイルからテストシーケンスを実行:
sudo elina-tc -i eth0 -f profiles/impairments/profiles_PacketLoss_Degradation.json -n 1 --show-stats
4. インタラクティブモード
- ライブコントロールとデバッグ用:
sudo elina-tc -i eth0 -f profiles/cellular/5g_5qi_profiles.json --interactive
- 内部に入ったら、
list、apply "5G - 5QI-82 (V2X)"、watch stats、clearなどのコマンドを使用します。
Web UI(ベータ版)
Elina-TCには、補完的なインタラクティブユーザーインターフェース(ベータ版)も含まれています。CLIの使用を簡素化し、頻繁な操作を容易にするように設計されています。セットアップと使用方法を含む詳細な情報は、web_ui/README_web_ui.mdファイルにあります。
事前定義されたプロファイルライブラリ
Elina-TCには、profiles/ディレクトリにある、専門的に作成された障害プロファイルの広範なライブラリが付属しています。これらは、実世界の状態を迅速にシミュレートするのに役立つようにネットワーク技術別に整理されています:
-
/cellular:モバイルネットワーク状態をエミュレート。QoSクラス識別子(QCI)に基づく4G LTEおよび5G QoS識別子(5QI)とネットワークスライシング(eMBB、URLLC)に基づく5Gのプロファイルが含まれます。モバイルアプリ、IoTデバイス、コネクテッドビークル(V2X)ユースケースのテストに最適。
-
/satellite:衛星ネットワークの独自の特性をシミュレート。Starlinkなどの低軌道(LEO)コンステレーション(低レイテンシー、可変パフォーマンス)、中軌道(MEO)、および従来の静止軌道(GEO)衛星(高く安定したレイテンシー)のプロファイルが含まれます。海事、航空宇宙、リモートIoTアプリケーションに理想的。
-
/wireless:一般的なワイヤレスローカルエリアネットワークをモデル化。さまざまなWi-Fi状態(理想的、混雑)、Bluetooth、低電力IoTネットワークのプロファイルが含まれ、家庭、オフィス、または短距離デバイス環境でのアプリケーションのテストに役立ちます。
-
/asymmetric:アップロードとダウンロードの特性が異なるネットワークをシミュレート。DOCSISケーブルやFTTH(Fiber-to-the-Home)などのブロードバンド技術のプロファイルが含まれ、通常、ダウンロード速度がアップロード速度よりもはるかに高くなっています。
-
/industrial:運用技術(OT)環境で見られるネットワークをモデル化。Profinet、EtherNet/IP、Modbusなどの産業プロトコルのプロファイルが含まれます。産業オートメーションおよびSCADAシステムの耐性をテストするために不可欠。
-
/impairments:特定の問題に対するアプリケーション耐性をテストするために設計された汎用的なビルディングブロックプロファイルが含まれます。パケットロスの段階的な悪化、レイテンシーの増加、または混雑したインターネットパスのシミュレーションのシーケンスが含まれます。アプリケーションの破損ポイントを特定するのに最適。
トラフィックジェネレーターとともにElina-TCを使用する
Elina-TCの真の力は、Elina-TGなどの別のツールによって生成されたトラフィックのネットワーク状態を制御するために使用されるときに発揮されます。
- サーバーマシン上(Elina-TCを実行): Elina-TCを使用して、特定のネットワーク状態(例:不安定な5Gモバイルエッジネットワーク)をサーバーのネットワークインターフェースに適用します。
- クライアントマシン上(Elina-TGを実行): Elina-TGを使用して、サーバーに向けた現実的なアプリケーションワークロード(例:Zoom通話シミュレーション)を生成します。
この組み合わせにより、特定の、再現可能で現実的なネットワーク障害シナリオの下で、アプリケーションがどのようにパフォーマンスを発揮するかを正確に測定できます。
重要な注意事項
- 権限: ネットワークを変更するほぼすべての
elina-tcコマンドにはsudo権限が必要です。 - 状態スナップショット: インターフェースを変更する前に、Elina-TCは既存の
tc設定を現在のディレクトリのタイムスタンプ付きログファイル(elina-tc_state_*.log)に自動的に保存し、監査証跡を提供します。 - クリーンアップ: Elina-TCは、終了または中断(
Ctrl+C)されたときに、すべてのルールと仮想デバイスを確実にクリーンアップするように設計されています。 - 詳細なドキュメント: すべての機能とコマンドライン引数の完全な概要については、パッケージに含まれるメインの
README.mdファイルを参照してください。