要約

  • CronusのVLNはIPと物理LANの間に置く共通の窓口であり、窓口の振る舞いを守れば下のネットワークを入れ替えられる構想だった。
  • 交換を支えるのは、個別・一斉・グループ宛てのアドレス、外部へのゲートウェイ、物理アドレスとの対応表、配送範囲の明確な約束だった。

LANが高い、遅い、現場で壊れやすい。別のものに替えたくなる理由はいくらでもある。だが、アプリケーションが古い配線の癖まで覚えていたら、交換は全員参加の改修工事になる。RFC 824 でWilliam I. MacGregorとDaniel C. Tappanが示したCronusの案は、その騒ぎを一層に閉じ込めるものだった。Virtual Local Network、略してVLNを共通の窓口にする。IPはいつもの顔で働き、床下だけが新しい靴に履き替える。

1982年8月の文書にある階層図は明快だ。TCPとUDP、その下にIP、続いてVLN、最後に物理ローカルネットワーク。設計目標は「互換性」と「交換可能性」の二つである。DARPAのIPを変えずに利用し、IPに依存するTCPも通す。一方、VLNより上のCronusソフトウェアは特定の物理LANではなく、VLNの窓口にだけ依存する。別の物理網へ替えるときに守る条件は、窓口の意味を変えないことだった。

ここでいう交換は、差し込み口を一つ抜くだけの話ではない。文書は費用、性能、機械的・電気的な丈夫さを、物理網を替えたい理由に挙げる。ホストごとにプログラム上の表現が違っても、機能上の約束は同じでなければならない。新しい物理網を採用するなら、各CronusホストでVLNを実装し直す。上のプログラムに変更を撒き散らさない代わりに、下の実装担当者へ仕事をまとめる設計だった。

IPを触らずに済むことも重要だった。RFCはVLN上で動くIPに変更や拡張を求めない。同じクラスターのホストは一つの物理LANにつながり、外部へ出るデータグラムはインターネットのゲートウェイに渡される。VLN自体にもインターネット上のネットワーク番号がある。下の物理網が同じ番号を使う場合も、別の番号を使う場合もある。上から見ると同じネットワークでも、出口の選択と番号の帳尻は下で合わせ続けなければならない。

宛先の決め方には、この抽象化の重みが表れる。VLNは一台だけへの送信、全体への放送、グループへのマルチキャストを備える。設計表ではローカルアドレスの0〜1,023が特定ホスト、1,024〜65,534がグループ、65,535が放送に割り当てられた。全範囲を収めるためにクラスAまたはBのネットワークを勧めている。これは当時のCronusの設計値だ。重要なのは、物理網を替えたあとも三つの宛先指定が同じ意味で使えることである。

Ethernetを使う実装例を見ると、交換の裏方が具体的になる。各ホストはVPMapという表で、32ビットのVLNホストアドレスを48ビットのEthernetアドレスへ対応させる。物理アドレスだけ変わり、VLNアドレスが残れば、ほかのホストの古い表は誤る。RFCは動的な表を作り直すためのインターフェースのリセットにも触れる。上のソフトウェアが引っ越しを知らなくても、配達係まで旧住所を握っていては荷物は届かない。

配送の約束にも数字がある。576オクテット以下のデータグラムは、どのVLNクライアント同士でも転送できる。それより大きいものは組み合わせ次第だ。VLNはIPの断片化・再構成やオプション処理を引き受けない。すべてを必ず届ける保証も、捨てたパケットへの否定応答もない。ただし、届いた内容は送信内容を正しく表し、同じ受信者には一回届くか届かないかのどちらかだ。クラスター内で受け取る順番は送った順番の部分列になる。手紙が抜けることはあっても、届いた分を勝手に並べ替えない。

この文書の面白さは、交換の自由を語りながら、その裏にある作業を隠さないところにある。アドレスの意味、外部への出口、共通のデータグラムサイズ、欠落を許す配送条件。これらをVLNが守るからこそ、IPの上の世界は新しい配線を知らずに済む。ネットワークを替える自由は、正確に書かれた窓口から生まれた。