これは、ネットワーク上のマルチキャスト トラフィック フローをテストし、ネットワークとデバイスのストレス テストを行うために作成されたコマンド ライン ユーティリティおよびライブラリです。
このユーティリティは、堅牢に構成されていない L2 環境を完全に破壊する可能性があるため、注意が必要です。
mcast は、マルチキャストまたは汎用 UDP トラフィックを送受信できるコマンド ライン ユーティリティです。また、IGMP の結合、離脱、クエリのシミュレーションも可能になります。
注:現在、Go バージョン 1.10 を搭載した Mac OSX 10.13.3 で開発およびテストされています。このプログラムは任意の Posix / Unix で動作するはずですが、現時点では Windows では完全には動作しません。一部の機能にはスーパーユーザー権限が必要な場合があります。
このリポジトリは GPLv3 に基づくライセンスです。詳細については、LICENSE.md を参照してください。
著作権 (C) 2018 ウィル・スミス
このプログラムはフリー ソフトウェアです。Free Software Foundation が発行する GNU General Public License の条件 (ライセンスのバージョン 3、または (ユーザーの選択による) 以降のバージョン) に基づいて再配布したり、変更したりすることができます。
このプログラムは役立つことを期待して配布されていますが、いかなる保証もありません。商品性や特定目的への適合性についての暗黙の保証もありません。詳細については、GNU 一般公衆利用許諾書を参照してください。
このプログラムと一緒に GNU 一般公衆利用許諾書のコピーも受け取っているはずです。そうでない場合は、http://www.gnu.org/licenses/ を参照してください。
インストールしておく必要があります。そうでない場合、またはよくわからない場合は、https://golang.org/doc/install にアクセスしてください。また、サポートおよびテスト済みの OS と Go バージョンを実行している必要があります。
プログラムをインストールする
go install github.com/individuwill/mcast
または、リリース v0.1 から事前に構築されたバイナリをダウンロードします。
1台のコンピュータ上で受信機を実行する
mcast receive
別のコンピュータでセンダーを実行する
mcast send
ホスト間でマルチキャスト ルーティングを有効にする必要があります
mcast はサブコマンドによって駆動されます。次のように mcast を呼び出します。
mcast subcommand [-options...]
サブコマンドのリストは次のとおりです。
各サブコマンドには、その動作を制御するための一連のオプションがあります。コマンドの多くは同様のオプションを共有しており、この場合のオプション構文も同じです。以下に、各サブコマンドとそれに関連するオプションの詳細な説明を示します。
アプリケーションのヘルプと使用方法のメッセージを表示する
mcast help [command]
ヘルプが必要なコマンドを指定すると、特定のサブコマンドのヘルプが表示されます。
指定された IP アドレスに UDP トラフィックを送信します。プログラムが終了するか、最大数のメッセージが送信されるまで、指定された間隔でループで継続的に送信されます。
mcast send [-options...]
オプションは次のとおりです。
指定された IP アドレスで UDP トラフィックをリッスンし、オプションが有効になっている場合は、受信した UDP メッセージのテキスト コンテンツを出力します。
mcast receive [-options...]
オプションは次のとおりです。
まだ実装されていません
まだ実装されていません
まだ実装されていません
現在リポジトリにはいくつかの基本的なコード テストが存在しますが、さらに広範なテストが必要です。
次のコマンドのいずれかを使用して、テストを手動で実行できます。
go test ./..
go test github.com/individuwill/mcast
go test github.com/individuwill/mcast/multicast
リポジトリのルートには、テストを自動的に実行し、3 つのオペレーティング システム用にクロスコンパイルし、zip アーティファクトを作成するための Jenkins ファイルがあります。リポジトリには、これをコミット時に実行する git フックがあり、コミットに合格または失敗のマークが付けられます。
計画では、3 つのオペレーティング システムでコードをテストし、jenkins クラスターでのマルチキャストの送受信間の相互作用をテストすることです。
また、マスターへの新しいタグ付きコミットが行われ、テストに合格したときに、バイナリを含む新しいリリースを自動的に作成する計画もあります。
現在、コードのテストのみが実行されます。これらは、公式の golang docker コンテナを通じて Linux 環境で実行されます。バイナリは Jenkins に保存されるため、手動でリリースする必要があります。
マルチキャストをテストするための既存のツールが不足していることがわかったので、ネットワーク設計でマルチキャスト機能をテストするためにこのプログラムを作成しました。簡単なテストのために任意のホストにコピーできる小さなポータブル バイナリが必要でした。これは、仮想ラボ環境で特に役立ちます。
また、ワイヤレス環境で最も堅牢なマルチキャスト構成を実現するベンダー構成オプションを理解するために、ワイヤレス ネットワーク内のトラフィックの動作をテストして観察できるようにする必要もありました。現時点では、このプログラムの正しいオプション セットを使用すると、ワイヤレス インフラストラクチャが適切に構成されていない場合、またはベンダーがマルチキャスト動作を構成または制御する機能を提供していない場合に、単一のホストがワイヤレス セグメント全体に対して DoS を引き起こす可能性があります。
私はこのプログラムを使用してマルチキャストについて詳しく学び、Golang でコーディングを行う機会を利用しました。
プログラムの開発中の初期テストには https://github.com/troglobit/mtools スイートを使用しました。そのツールセットは mcast のインスピレーションでもありました。私は、簡単な同時実行性、簡単なクロスコンパイル、クロスプラットフォームバイナリを望んでいたので、mtools を拡張しないことにしました。
私が使用している、またはマルチキャスト機能のテストに使用しているその他のツールを次に示します。