要約

  • RFC 925では、宛先が別のLANの向こうにあっても、ホストはIPアドレスをローカルだと扱い続けられた。BOXは自分のハードウェアアドレスをARPで返し、隠れた宛先への次の転送を引き受けた。
  • 複雑さが消えたわけではない。インターフェース別キャッシュ、未解決検索表、再試行、タイマー順序、TTL、ループ抑止が、複数のケーブルを一つに見せる費用になった。
  • RFC 950は、隠れた場所をブロードキャストと代理マッピングで探し直す代わりに、実装がサブネット境界を明示的に解釈してルーティングする選択を示した。いずれの文書も普遍的な導入を証明しない。

宛先を名乗らないARP応答

Ethernetのホストが同一ネットワーク内だと思うIPアドレスへデータグラムを送りたいとき、まず宛先のハードウェアアドレスを知る必要がある。RFC 826 の通常のARPでは、ホストは質問をブロードキャストし、要求されたプロトコルアドレスを持つ機械が自分のハードウェアアドレスを直接返す。これは、IP上の意図を一本のケーブル上で実行できる配送先へ変換する小さな操作である。

サイト内部に複数のLANがあると、この前提は設計上の選択になる。RFC 917 は三つの道を挙げた。ケーブルごとにInternetネットワーク番号を得る、一つの番号のまま透明サブネットを使う、またはアドレスのホスト部を明示的なサブネットに分ける、というものだ。各ケーブルを外から見せれば、外部のルーティング表には価値の薄い内部情報が増える。明示的サブネットは局所境界を読めるようにする。透明サブネットはホストの「一つのネットワーク」という理解を保存する。

RFC 925はこの最後の案をBOXとして具体化した。BOXは普通のホストのように二つ以上のLANへ接続される。ホストは新しいアドレス形式も発見プロトコルも学ばず、通常のARPを送る。BOXはインターフェースごとにInternetアドレスとハードウェアアドレスの対応をキャッシュする。

求められた対応が別のLANのキャッシュにあるとき、BOXは遠方のハードウェアアドレスを最初のLANに返せない。それはそのケーブルでは使えないからだ。代わりに、BOXは要求元LAN上の自分自身のハードウェアアドレスを返す。ホストはIPデータグラムをBOXへ渡し、BOXは宛先の代理として先へ進める。

これは宛先の同一性を主張する応答ではない。BOXが宛先である、IPアドレスを所有する、全体で最良の経路を知る、と言っているわけでもない。そのLANで自分のアドレスを示した以上、受け取ったデータグラムを手元の情報で次へ送ろうとする、という限定された実行上の約束である。キャッシュ応答に、局所的な観測以上の権限を読み込んではならない。

隠した位置を誰かが探す

RFC 925には三つの処理がある。同じLANのキャッシュに対応があれば、BOXは黙り、宛先自身に答えさせる。別のLANのキャッシュにあれば、BOXが代理として答える。どのキャッシュにもなければ、BOXは検索する。

ここに透明性の請求書がある。BOXは探すInternetアドレス、受信インターフェース、元の要求者の情報を検索リストに置き、他のインターフェースへARP要求を送る。応答があればキャッシュを埋め、検索項目を消し、最初の要求者へ返答できる。しかしARPには「いない」という否定応答がない。無応答は、時間が過ぎて初めて未成功の検索となる。

検索リストは遅れて来る応答を元の質問に結び付けると同時に、未知のアドレスがLANのループを無限に巡ることを止める。同じアドレスがすでに載っていれば、新しい伝播は停止する。停止していたホストが戻っても、その項目が失効するまで他のLANから見つからないことがある。ケーブルを隠す装置は、過去の沈黙をいつまで有効にするかも決める。

RFC 925はホストのARP試行時間を T1、BOXの検索寿命または再検索間隔を T2、キャッシュ寿命を T3 とし、T1 < T2 < T3 を要求する。この順序は作業を整えるが、古い情報を真実に変えない。文書は、使用頻度と正しさには必然的な関係がないと明記する。利用のたびにキャッシュ期限を延ばせば、古い対応が長く残り得る。キャッシュは最近受け入れた運用上の仮説であって、永続する地図ではない。

bridgeという名前では足りない責任

BOXをbridgeと呼んでも、その仕事は受動的ではない。通常のIPデータグラムについてRFC 925はTTLの減算とヘッダチェックサムの更新を求め、TTLがゼロなら破棄する。ARP検索には検索リストという別のループ境界がある。ネットワーク全体へ及ぶブロードキャストには、最近の送信を覚える別のリストが必要になる。

この三つの境界は交換できない。データグラムにはホップ予算がある。ARP要求には否定結果も共通の走査予算もないので、提案は状態とタイムアウトを使う。ブロードキャストの複製を判定するには送信元とIP Identificationが必要だ。同じBOXが扱うからといって、一つの証拠が他の対象の正しさを証明することにはならない。

ループした環境では同じARP要求に複数の応答が来る。RFC 925は最初の応答が効率のよい経路である「可能性が高い」としか言わず、後の応答で最初の対応を置き換えないことを提案する。これは実用的な選択規則であり、最短経路、安全性、永続的到達性の証明ではない。

ブロードキャストできないLANやARPを話さないホストを持つLANでは、BOXは完全な対応表を持ち、ブロードキャストするはずだった問い合わせを他のBOXへ個別に送る必要がある。最悪の場合、各インターフェースの表はLAN集合の全ホストへ膨らむ。トポロジーは消えず、発見トラフィック、キャッシュ、例外表へ姿を変える。

明示的な境界が帳尻を変えた

RFC 950 は翌年、三つの選択肢を繰り返し、透明方式の限界を記した。ARPとブロードキャストを使わないLAN技術には適用できず、bridgeはホストのLANを発見し、LAN数とともにブロードキャスト費用は増え、変換キャッシュは全ホスト数とともに大きくなる。その後、同RFCは明示的サブネットの標準手順を定めた。

必要なホスト側IP変更は比較的小さいと説明される。代わりにアドレスの一部が局所境界を宣言し、ルーティングは隠れた検索で最初に得た代理応答ではなく、既知の解釈に基づける。

これは一方が自動的に勝ったという物語ではない。RFCは協調のための工件であり、展開命令ではない。ホスト、BOX、ルータが互換する規則を実行して初めて、その振る舞いが運用上の現実になる。後の RFC 1812 もアドレス共有型の透明ルータを、地理的・トポロジー的に限られたstub環境で有用な場合があるものとして残し、見かけ上同じネットワークのサービスを完全には模倣できないことを警告する。同じ文書が準拠IPv4ルータにサブネット対応を必須とすることは、範囲を示すがRFC 925を現代製品の仕様にはしない。

錯覚の台帳

RFC 925の長所は、古いホストにすべてのケーブルを理解させない点にあった。しかし見せない複雑さは、インターフェース別キャッシュ、検索、タイマー、ループ制御、古くなり得る代理という形でどこかに残る。

BOXの返答は境界を持つ約束である。自分のアドレスを示したLANでデータグラムを受けられる。接続したインターフェースで探せる。観測が永遠ではないから忘れられる。だが、沈黙を永遠の不存在へ、早い応答を最良経路へ、アドレス変換をサイト全体の支配権へ変えることはできない。

互換性のために構造を隠す設計では、何が消えたかではなく、誰が発見を担うか、何が単なる記憶か、ループを何が止めるか、古い結論がどう失効するかを問うべきだ。トポロジーはなくならない。別の台帳に記帳されるだけである。

情報源と証拠の限界

閉じた証拠集合は RFC 826、RFC 917、RFC 925、RFC 950、RFC 1812 である。これらは提案された機構、比較、後年のルータ要件を示す。現在の製品挙動、普遍的導入、性能差、透明構成の普及率、ある方式が別の方式を置き換えた日を示すものではない。