ネットワーク内の任意の 2 つのホスト間のネットワーク トラフィック (両方向の帯域幅と遅延の両方) の低下を時間の経過とともに検出できる簡単なスクリプトを作成しようとしています。これを行うツールはありますか?
必要に応じて、(netcat) を使用してこのテストを実行するために、bash でクライアント/サーバー スクリプトをいくつか作成する予定ですnc
が、既存のソリューションで私が実行しようとしていることが実現できる場合は、お知らせください。
まず、任意のホスト間で 1 秒間に送信できるデータの量を決定します。これを「ペイロード」と呼びます。初期テストでは、ペイロードは約 50 MB であることが示されています。
次に以下を実行します。
- クライアントはペイロードをサーバーに送信します。
- サーバーはペイロード全体を受信すると、すぐにペイロードをクライアントに送信して応答します。
- クライアントはペイロード全体を受信すると、30 秒間スリープします。1 に進みます。
そうすることで、次のデータ(双方向の帯域幅とレイテンシ)を受け取ります。
time
(1)でクライアントからサーバーへの実行を記録することでnc
、クライアントからサーバーへのデータ送信帯域幅を取得します。time
(2)のサーバーからクライアントへの実行を記録することでnc
、サーバーからクライアントへのデータ送信の帯域幅を取得します。- 何らかの方法で、監視ツールを使用するか、送信元から送信されたペイロードの最初のパケットと宛先で受信されたペイロードの最初のパケット間のタイムスタンプを比較して、パケットの遅延を決定します。
答え1
iPerf はパフォーマンス テストに適したツールです。提案されているような方法で負荷を監視するスクリプトを作成するのではなく、Nagios (および通知を整理し、時間の経過に伴うパフォーマンスのグラフを提供する PNP4Nagios を統合) を検討することをお勧めします。
長期間にわたってこのようにホスト間でデータを継続的に移動することが、本来利用できるはずの帯域幅を無駄にしてしまうので、どれほど実用的か疑問に思います。リンクの実際のスループットを監視し、これを遅延やパケット損失と相関させて、必要なときに支払った金額に見合った結果が得られているかどうかを調べる方がよいのではないでしょうか。(ISP の本で最も古いゲームをしているように、この問題はネットワークにないと主張しようとした ISP を、これを使用して何度も「叩きのめした」ことがあります。特に複数のポイントを監視しているとき)
レイテンシ、パケット損失、スループットは互いに完全に依存しているわけではありませんが、(既知/契約済み/予想される特性を持つリンクの場合)これらの要素の間には相関関係があることに注目してください。
答え2
確認する必要があるのはiperf必要なことを行います。
あなたの質問に対する私の理解に基づくと、そうすべきだと思います。