web-dev-qa-db-ja.com

RTTは、pingの発信に関係なく、理論的には同じですか?

デバイス1からデバイス2にpingを送信するとします。その結果、RTTが得られます。

理論的には(多くの変数が実際に機能しているため)、デバイス2からデバイス1にpingを実行してもRTTは同じでしょうか?

1

物事が意図したとおりに機能している場合、待ち時間は光の速度によって支配されます。 2つのエンドポイントが非常に接近している場合(たとえば、同じ建物内)、パス上のルーターとスイッチの処理時間は、光速による遅延よりも大きくなる可能性があります。

ただし、これらの要因は、両方向のパケットが同じパスをたどる限り同じです。

パケットが通過できるパスが複数ある場合、スイッチは通常、Equal Cost Multi Path(ECMP)を使用して、各パケットを送信する方向を決定します。これは通常、選択したヘッダーフィールドのハッシュを使用してパスを選択します。使用されるヘッダーフィールドは通常、次のサブセットになります。

  • ソースMAC
  • 宛先MAC
  • ソースIP
  • 宛先IP
  • IPプロトコル
  • フローラベル
  • ソースポート
  • 宛先ポート

これらのうち、最初の5つは、pingコマンドを実行している方向に関係なく同じになります。

フローラベルは異なる可能性があり、パケットが異なるルートをたどる可能性があります。ただし、このフィールドはIPv6にのみ存在し、パスを選択するときにすべてのルーターがこのフィールドを考慮するわけではありません。

ICMPにはポート番号がないため、これらのフィールドは考慮されません。ルーターは代わりにIDフィールドを使用できますが、このような特殊なケースがICMPエコー要求/応答パケットに対してのみ実装される可能性は低いようです。

したがって、全体として、パケットが異なるルートをとる可能性はほとんどありません。

2つの方向で異なるラウンドトリップ時間が発生するもう1つの可能性の高い理由は、2つのエンドポイント自体の処理時間です。エコー要求の受信とエコー応答での応答は、私が知っているすべてのOSのカーネルによって行われるため、非常に迅速に実行されます。ただし、pingコマンド自体はユーザーモードで実行されるため、ビジー状態のマシンで実行すると、待ち時間が長くなります。 2台のマシンが均等にロードされていない場合、この理由により、ビジー状態のマシンのpingコマンドのラウンドトリップ時間がわずかに長くなることが予想されます。

1
kasperd

はい、かなりの精度でRTTは常に同じになります。移動距離はレイテンシーの主要な要因であり、これも常に同じである必要があります。移動距離が同じではないEdgeのケースを見るのは非常に珍しいことですが、注目すべき例外は負荷分散の変更である可能性があります。一部のルーターは、高度な機能を使用してトラフィックを配置するルートを決定している可能性があり、これは2つの測定間で変化する可能性があります。エージェントベースのアダプティブロードバランシングがあった場合、ルート上で利用可能なさまざまなパスを使用していたトラフィックの量に応じて、異なるルートを使用する可能性があります。これらは通常、小さな違いですが、混雑時や1日のさまざまな時間帯に、大きくなる可能性があります。

0
Andy

はい、各方向が完全に異なるパスをとる場合でも、L3デバイス(ルーター)は、パケットがICMPエコー応答ではなくICMPエコー要求であるかどうかを考慮しません。また、パケットがa =であるかどうかも考慮しません。 TCP SYNまたはa TCP SYN-ACK。

説明のために、AからBに移動するためにパケットが5ホップを通過する必要があり、12ミリ秒かかると想像してください。次に、パケットがBからAに移動するために、12ホップを通過する必要があります。 。このシナリオで測定されたRTTは、どちらの側で測定を開始するかに関わらず、34ms(12ms + 22ms)になります。

0
Pedro Perez