web-dev-qa-db-ja.com

ICMP応答-入力または出力インターフェイス(例:tracerouteから)

Tracerouteが開始され、ノードからICMP応答を受信したとき。

  1. RFC 1812 に従って返信する必要があります。
  2. 実際には、ingress(パケットを受信する場所)またはegressから応答しています。 )(パケットが送信された場所-つまり、ttlが高い場合は次のノードに送信されます)

個人的なコメントと調査:

  1. NANOGで公開されたスライド によると、RFC 1812は、それが出力インターフェイスであるべきだと述べています。 RFC 1812のICMPセクションを読みましたが、それがどこに記載されているかがわかりませんでした(用語の理解がずれていると思われます)。
  2. さまざまなルーター(Junos、Cisco)がさまざまなインターフェイスから応答するのを読みましたが、ほとんどの応答は入力フォームです(NANOGスライド10に記載されています)。

私は仮想Ciscoラボを持っていませんし、VirtualBoxにいくつかのRAMルーターをセットアップするのに十分なVMもあるとは思いません。

1
leviu

こんにちは私は遅れていますが、あなたがまだ興味がある場合は...

RSteenbergenのNANOGスライドからの引用は正しいです。動作はRFC1812の セクション4.3.2.4 で定義されており、次のように述べられています。

ルータによって発信されたICMPメッセージのIP送信元アドレスは、ICMPメッセージが送信される物理インターフェイスに関連付けられたIPアドレスの1つでなければなりません。

Tracerouteの実装に応じて、トレースへの応答は、ICMP Destination Unreachable(つまり、Unixで実装されたtraceroute)またはICMP Time Exceeded(Windowsで開始されたtraceroute)の場合があります。これはSteenbergenのプレゼンテーションでカバーされていると思います。これらのセクションはいずれもICMP応答の送信元アドレスを指定するための規定を設けていないため、セクション4.3.2.4がこれらの特定の応答タイプに当てはまると想定します。

このシナリオを想像してください そして次のことを想定してください:

  1. サークル(ルーター)間のすべてのリンクが等コストのレイヤー3リンクであると想定します(特に、R1とR2間のリンクはLAG/EtherChannelなどではありません)。
  2. サンプルネットワーク内のルーティングでは、パケットは送信者Sから受信者Rに下位パスを経由して送信され、上位パスを経由して指定された方向に戻ります。

現代の実装でのTracerouteは、次のようになります。

traceroute to R 
 1  A 0.329 ms  A 0.425 ms A 0.471 ms
 2  C 0.349 ms  C 0.435 ms C 0.473 ms
 3  F 0.359 ms  G 0.445 ms F 0.481 ms
 4  R 0.369 ms  R 0.455 ms R 0.491 ms

また、ルーターが仕様に合わせてコーディングされている場合のトレースは次のようになります。

traceroute to R 
 1  B 0.329 ms  B 0.425 ms B 0.471 ms
 2  D 0.349 ms  E 0.435 ms D 0.481 ms
 3  H 0.369 ms  H 0.445 ms H 0.491 ms
 4  R 0.389 ms  R 0.455 ms R 0.496 ms

したがって、より口語的な意味で、最新の実装は、特定のホストに到達した方法を示しています。元の仕様では、ルーターを離れた方法はわかりますが、そこにたどり着いた方法はわかりません。

これによりPingが破損すると思われるかもしれませんが、仕様ではそのケースを明示的にカバーしていることに注意してください。

ICMPエコー応答のIP送信元アドレスは、
対応するICMPエコー要求の特定の宛先アドレス
メッセージ。

つまり、Pingの場合、ICMPエコー応答の送信元アドレスはセクション4.3.2.4で指定されている出力インターフェイスに関連付けられたアドレスではなく、元のICMPエコー要求の宛先アドレスから派生した送信元アドレスを使用する必要があります。 。

1
Ron Arsenault