要約

  • RFC 2003 は完全な IPv4 データグラムの前に別の IPv4 ヘッダーを置く。外側は入口と出口を、内側は本来の送信元と宛先を表す。
  • 転送を行う入口は内側 TTL を一つ減らす一方、外側 TTL は出口までの経路用に独立して設定する。
  • DF、トンネル MTU、外側断片の再構成、ICMP の変換は別々の責任であり、Protocol 4 は中身の形式を示すだけである。

出口の作業から逆に読む

RFC 2003 では、カプセル化装置が元の IPv4 データグラムを保持したまま新しい IPv4 ヘッダーを前置する。外側の送信元は入口装置のアドレス、宛先は出口装置のアドレスである。出口までのルーティングは外側宛先に従い、ヘッダーを外した後は内側宛先に戻る。

外側の Protocol 値 4 は、次に IPv4 ヘッダーが来るという型情報だ。RFC 1853 が示すように、IP-in-IP は専用の中間ヘッダーを必要としない。しかし、型が正しいことは内側送信元の認証でも、出口での許可でも、配送完了でもない。

再構成の場所は DF で変わる

外側ヘッダーには独自の Identification、Flags、Fragment Offset がある。内側で Don't Fragment が立っていれば、外側でも必ず立てる。内側 DF が落ちている場合でも、入口はトンネルの Path MTU を調べるため外側 DF を立てられる。元の送信者の禁止は弱められないが、入口には自分の区間を厳しくする選択が残る。

外側が断片化されたなら、出口が全断片を再構成してからデカプセル化する。バッファ、タイマー、断片識別の負担は出口で終端する。一方、断片化可能な内側データグラムを入口前で分割すれば、各内側断片を個別に包める。内側の最終再構成は本来の宛先が担う。

RFC 1191 は、DF パケットを転送できないルータが Destination Unreachable の code 4 と次ホップ MTU を返す規則を定めた。トンネル内部のルータは外側送信元、つまり入口へ返す。入口はトンネル MTU、経路長または TTL、出口到達性についてソフトステートを維持し、元の送信者へは追加ヘッダー分を引いた利用可能 MTU を知らせる。

内側 DF が落ちていたのに入口が外側 DF を立てた場合、その失敗を元の送信者へ合理的に伝えられないことがある。入口が探索中のコピーを保持して断片化・再送するか、対象トラフィックでは外側 DF を使わないかは運用判断である。Protocol 4 の一ビットからは、その判断履歴を復元できない。

内側と外側には別の寿命がある

入口がルータとして転送するなら、包む前に内側 TTL を減らす。ゼロになれば破棄して通常は Time Exceeded を返し、もともとゼロのパケットを包んではならない。入口自身がデータグラムを生成した場合、カプセル化という処理だけでは内側 TTL を消費しない。

外側 TTL は出口まで届くよう別に選ぶ。デカプセル化そのものは内側 TTL を減らさず、その後の通常転送が減らす。したがって外側 TTL の観測値は、内側の残り寿命を代表しない。入口前後の内側値、外側初期値と観測値、出口後の転送を別々に記録する必要がある。

ICMP はそのまま中へ戻せない

Protocol Unreachable は、内側送信者が Protocol 4 を選んだわけではないため、network または host unreachable に変換される。Port Unreachable は外側にポートがないので中へ伝えない。Datagram Too Big は伝える。外側経路の Time Exceeded は Host Unreachable として扱い、Parameter Problem は内側からコピーされたフィールドを指す場合に限って帰属できる。

歴史的な RFC 792 の引用量は、問題の IP ヘッダーと続く 8 オクテットだけだった。外側 IP の後では内側ヘッダーまで届かない。入口はエラーから経路状態を更新できても、特定の内側データグラムを識別できない場合がある。ソフトステートから後で生成する通知は、内部で起きた一件一件のエラーの受領証ではない。

1996 年のフィールド規則は更新された

元の文書は外側 TOS を内側からコピーするとした。RFC 3168 はその中の ECN ビットを更新し、完全機能トンネルには輻輳信号を入口から出口へ保存する手順を与えた。限定機能トンネルは外側 ECN を無効化する。出口で外側の輻輳印を捨てれば、端点へ渡すべき信号が消える。

RFC 6864 は外側 IPv4 Identification の意味も更新した。一意性の必要は断片化の可能性または実在に結び付く。原子的な全パケットに通用する通し番号として相関するのは過剰な推論だ。IETF Datatracker は Proposed Standard と二つの更新を確認できるが、現場装置の準拠を証明する台帳ではない。

封筒から言える範囲を守る

RFC 2003 は、通常の位置から内側アドレス、プロトコル、ポートが隠れるため、境界フィルタリングを弱め得ると警告する。外側送信元を信頼することと、内側送信元を認証することは同じではない。両方を見る入場規則が必要になる。

RFC 791 は IPv4 フィールドの基礎を、RFC 4459 はトンネルの MTU と断片化が後年も難題だったことを示す。仕様は規則、設定は意図、入口捕捉は内外の結合、出口再構成は封筒の復元、出口後捕捉は次の転送、アプリ応答はさらに後の結果を証明する。

Running-Code Primacy は規格の存在と実行を分ける。Minimum Initial Specification は共通形式が将来の全判断を固定しない理由を示す。Reality Layers は記号、設定、観測、結果を混同しないための枠組みになる。Protocol 4 が教えるのは、どの封筒を開くかまでである。

出典