9. Forwarding (転送)
ルータが自身以外のノードにアドレス指定されたパケットを受信する場合、次のように宛先および送信元アドレスのゾーンを考慮しなければなりません (MUST):
-
宛先アドレスのゾーンは、アドレスのスコープとパケットの到着インターフェースによって決定されます。次ホップインターフェースは、そのゾーンに固有の (概念的な) ルーティングテーブルで宛先アドレスを検索することによって選択されます (セクション10を参照)。そのルーティングテーブルは、そのゾーンに属するインターフェースのみを参照するように制限されています。
-
次ホップインターフェースが選択された後、送信元アドレスのゾーンが考慮されます。宛先アドレスと同様に、送信元アドレスのゾーンは、アドレスのスコープとパケットの到着インターフェースによって決定されます。選択された次ホップインターフェース上でパケットを送信すると、パケットが送信元アドレスのゾーンを離れる、つまり送信元アドレスのスコープのゾーン境界を越える場合、パケットは破棄されます。さらに、パケットの宛先アドレスがユニキャストアドレスである場合、コード2 ("beyond scope of source address" - 送信元アドレスのスコープ外) を含むICMP Destination Unreachableメッセージ [4] が、元のパケットの送信元に送信されます。コード2は現在 [4] で未割り当てとして残されていますが、IANAは新しい目的のために値を再割り当てし、[4] はこの変更で改訂される予定です。
ユニキャストサイトローカルアドレスが非推奨であっても、上記の手順はリンクローカルアドレスには依然として適用されることに注意してください。したがって、ルータが、到着リンク上のルータ自身のリンクローカルアドレスの1つではないリンクローカル宛先アドレスを持つパケットを受信した場合、ルータは、そのリンク上の宛先にパケットを転送しようとすることが期待されます (Neighbor Discoveryプロトコル [9] を介した宛先のリンク層アドレスの決定が成功することを条件とします)。転送されたパケットは、到着インターフェースを介して、または同じリンクに接続された他のインターフェースを介して送信される場合があります。
自身にアドレス指定され、ゼロより大きいSegments Leftを持つRouting Header ([3] のセクション4.4) を含むパケットを受信するノードは、最初にRouting Header内の次のアドレスのスコープをチェックします。次のアドレスのスコープが元の宛先アドレスのスコープよりも小さい場合、ノードはパケットを破棄しなければなりません (MUST)。それ以外の場合、元の宛先アドレスとRouting Header内の次のアドレスを交換します。次に、上記の転送ルールが次のように適用されます:
-
新しい宛先アドレスのゾーンは、次のアドレスのスコープとパケットの到着インターフェースによって決定されます。次ホップインターフェースは、上記のルールの最初の箇条書きに従って選択されます。
-
次ホップインターフェースが選択された後、送信元アドレスのゾーンは、上記のルールの2番目の箇条書きに従って考慮されます。
次のアドレスのスコープに関するこのチェックにより、パケットが最終的な宛先に到着したときに、その宛先がリンクローカルである場合、受信ノードは、パケットがリンク上で発信されたことを知ることができます。これは、受信ノードが、送信元ゾーンを破ることなく、受信したパケットの最終宛先を送信元アドレスとして「応答」パケットを送信するのに役立ちます。
Routing Headerを使用して、以前に使用された次のアドレスフィールドで、非グローバルアドレスを関連するゾーン境界を越えて伝達することは可能ですが (一般的には推奨されません)、それは可能です。例えば、リンク境界ノード (例えば、ルータ) が、宛先がリンクローカルアドレスで、送信元アドレスがグローバルアドレスであるパケットを受信する場合を考えます。パケットに、次のアドレスがグローバルアドレスであるRouting Headerが含まれている場合、グローバルアドレスへの次ホップインターフェースは、元の宛先とは異なるリンクに属する場合があります。これは、次のアドレスのスコープが元の宛先のスコープよりも小さくないため、許可されます。