web-dev-qa-db-ja.com

pingでアップロード/ダウンロードの速度を計算する

いくつかの平均pingレートによってインターネット接続の速度を計算する方法。それに含まれる計算は何ですか。pingレートによってアップロード/ダウンロードの制限を計算することは可能です。

[〜#〜] edit [〜#〜] pingが解決策でない場合、他に何がありますか?

25
Hulk

Pingを使用して、ローカルネットワークの帯域幅を計算しました。帯域幅を測定する他の手段(たとえば、大きなファイルをダウンロードする)と同じくらい正確だと思います。インターネットへの対称リンク(つまり、adslではない)がある場合は、インターネット接続にも使用できます。

以下にその方法を示します。

ギガビットイーサネットLANがあり、コンピューターとサーバールームのホスト間の速度を測定したい。私のMTUは1500なので、パケットサイズ1472を使用します。このテストでは、ランダムに83,333パケット(約1ギガビット)を使用します。次に:

Sudo ping -f -c 83333 -s 1472 192.168.3.103

結果の最後に私は得る:

round-trip min/avg/max/stddev = 0.174/0.219/2.078/0.020 ms

したがって、1500バイトを送信して1500バイトを受信するには、平均で0.219ミリ秒かかります。これは24 kbです。

24 kb / 0.219 ms = 110 Mb/s

インターネット上のサーバーでそれを使用する場合は、パケットサイズを1464(MTU 1492の場合)のような値に下げ、-fオプションを削除してカウントを下げる必要があります。

追伸これはstackoverflowではなく、スーパーユーザーに行くべきだと思います。

25
imel96

遅延は帯域幅とは異なります。全国で大量のDVDが運転されていると想像してください。帯域幅は広くなっていますが、待ち時間は巨大です。

11
Brian Agnew

is pingのような測定値のみから帯域幅の推定値を導き出すことが実際に可能です。

GigEリンクで1500バイトのパケットを送信するには、常に12.3µsかかります。つまり、プロトコルが許す限りの速度で、輻輳のないGigEリンクを介して1つのマシンから別のマシンに2つの1500バイトのパケットを送信できる場合、約12.3µs離れて到着します。 GigEリンクが実際に輻輳していないことを確認します。

ここで、WAN(再び混雑していないと仮定します)で測定する簡単な例について:

HostA -------- RouterA -------- RouterB -------- HostB
        GigE             OC-3             GigE

ホストAは、2つの1500バイトのパケットをすばやく連続して送信します。ルータAは最初のパケットを受信すると、OC-3 WANリンク(155Mbps)を介して転送を開始します。1500バイトのパケットをOC3に転送するには81.5µsかかります。ホストAから2番目のパケットを受信すると、最初のパケットを転送する途中になります。最初のパケットの送信が完了するまで、この2番目のパケットをキューに入れる必要があります。

ルータBが最初のパケットの受信を完了すると、それをホストBに転送しますが、ホストBは12.3µsしかかかりません。一方、ルーターBは2番目のパケットを受信し始めています。ルータBは2番目のパケットの受信を完了すると、それをホストBに転送します。

したがって、ホストBは12.3µsのパケット受信、69.2µsの無音、そして12.3µsのパケット受信、つまり81.5µsの到着時間を確認します。その観察から、ホストBはパス帯域幅が155Mbpsに制限されていると推測できます。


これは理論上は素晴らしいことですが、実際には事態はより複雑になります。輻輳イベントはバーストする傾向があるため、ルーターのキューが一瞬いっぱいになり、次にキューが空になる場合があります。意味のある何かを得るには、多くのサンプルが必要です。正確な測定を行うことも難しいです。エンドツーエンドのレイテンシは数十ミリ秒から数百ミリ秒の場合があり、数マイクロ秒の違いを確認しています。 AからBへのパスが複数ある場合は、幸運を祈ります。

通常、トラフィックを爆発させて、どれだけ通過するかを確認する方が簡単です。そうすれば、使用可能な帯域幅がゼロであることが確実にわかります。

7
eater

Pingは、ICMPを介してネットワーク経由で送信される単一のパケットです。通常、1秒あたり1パケットがリモートマシンのpingに送信され、ルートはTCPおよびUDPの通常のデータ転送に使用されます。リモートマシンはping要求に対する応答を拒否する場合があります。 ping要求によるスループットは信頼性が低く、おそらく役に立たないでしょう。

2
damg

リモートホストにpingを実行すると、ネットワークの遅延を測定できます(ホストが応答するかどうか)。そのネットワーク接続で利用可能な帯域幅に関する有用な情報は提供されません。

2
Jonah

いいえ、ちがいます。

Pingパケットは小さく、ポイントAからポイントBまでの速度を確認するためにのみ使用されます(またはより一般的な使用法-それらの間にパスがある場合、IEまったく反応する)

(Pongへの)Pingのプロセスは、小さなパケットがAからBに送信されることです。Bがパケットを取得すると、Pongで応答し、すぐにAに返送されます。合計時間が(できればミリ秒単位で)登録され、そこにPingがミリ秒で表示されます。

もちろん、これはBがpingを拒否するように設定されていないか、単にそこに到達していないか、VPNまたは応答を遅くする他の手段の背後にあることを前提としています。

最終的に、PingがAからBに実行され、Aに戻るのにかかる時間だけが得られます。

比較のために、通りを横切って走って戻ってみてください。時間を測定します。そして今、あなたの体重を計算する方法を見つけます。

2
Mantar

他の人が言ったように、pingは待ち時間を伝えますが、帯域幅は伝えません。
netperfをお試しください。 http://www.netperf.org/netperf/ 。特定のオプション(TCP/UDPなど)を指定する必要がある場合があります。

0
Jack

非現実的で信頼性は低いですが、可能です。

ローカルネットワーク(LAN)で最適に動作します。

デフォルトでは、pingは遅延のみを示す小さなパケットを送信します。ただし、このコマンドは、パケットサイズとレートを変更する引数を取ります。理論的には、パケットのサイズとレートをリンクが飽和するまで増加させ、パケット統計を使用してこれが発生する速度を計算できるということです。

0
Rolf