要約

  • RFC 1106は、助言的なNAKと30ビットのTCP受信窓を提案した。NASAの資源を使って実装し動作を確認したと記す一方、Internet標準ではなく研究の出発点となる実験プロトコルだと限定した。
  • RFC 1110は二か月後、窓だけを広げて32ビットの系列空間を変えなければ、系列番号が4往復で再利用され得ると指摘した。長く滞留した複製が新しい周期のデータに見える。
  • NAKが直接示すのは、受信側で期待したデータがまだ見えないことだけである。遅着か恒久損失か、雑音か輻輳か、再送や回復が起きたかは別の証拠を要する。

「動いた」を否定せず、観測していない条件を足す

R. FoxのRFC 1106は1989年6月、二つのTCP拡張がNASAの資源を用いて実装され、動くことを示したと書いた。同じStatus節は、それらを実験プロトコルと呼び、Internet標準として提案せず、今後の研究の出発点に置いた。

両方をそのまま読めばよい。コードは所与の環境で状態を交渉し、データを処理し、測定値を残した。その証拠は実装と試験条件に及ぶ。試験に現れなかった全経路状態まで保証するものではない。

文書は不明点も隠していない。主な未解決問題は輻輳と雑音の区別であり、隔離された衛星ネットワークだけでなくInternet全体に適用できるかは追加研究が必要だった。条件は成功の価値を下げる注記ではなく、その意味を守る枠だった。

現在のRFC Editor情報はHistoric、Legacyとし、RFC 6247による整理を示す。IETF Datatrackerも記録を保存する。後日の地位は採用と権威の証拠であり、過去の限定的な実装を消す証拠ではない。

NAKは欠落の早期通知であって、原因報告ではなかった

長い往復時間で通常のタイムアウトを待てば、送信窓が止まり、太い経路が空になる。RFC 1106のNAKは、後続セグメントによって穴を見つけた受信側が、左端を進めるために必要なデータを早く要求する仕組みだった。

しかし受信側は、欠けたデータが遅れているのか、永久に失われたのかを判別できない。文書はこの限界を明記する。遅着中のパケットにNAKを出せば不要な複製が生じ、真の損失に出さなければ回復が遅れる。

NAK自体も助言的で、再送されない。送信側は無視してもよく、直ちに再送してもよい。NAKが壊れれば通常のTCP回復に任せる。したがって記録は、穴の観測、要求の送出、要求の受信、再送、最終受理を別々に持たなければならない。

穴は経路の診断でもない。雑音、キュー破棄、順序変更、長い遅延は同じ見え方を作る。受信側は不在を見たのであって、経路全体を見たわけではない。

大きな受信窓は経路の帯域を買わなかった

16ビットの窓は64 KiBに制限され、帯域遅延積の大きな経路を満たしにくい。RFC 1106は下位ビットを従来のTCPヘッダーに残し、上位をoptionで運んで30ビットの受信窓を作ろうとした。

双方はSYNとSYN-ACKで合意し、以後の各パケットが上位ビットを運ぶ。合意が示すのは、二つの実装が同じ表現を使うことだ。系列番号の寿命や、途中の順序変更まで安全だとは示さない。

受信窓は受信側のバッファー方針であり、経路容量そのものではない。RFC 1106は、大き過ぎる値がメモリーを使い果たし、他の処理を妨げ、機械を停止させ得ると警告した。NASAで検討された特定プログラムへの利用制限は、端点資源の統治であって、回線から帯域を受け取った記録ではない。

65,536往復の余裕が4往復になった

A. McKenzieのRFC 1110は1989年8月、Internetの別の性質を持ち込んだ。パケットは失われるだけでなく、順序を変え、複製される。TCPの32ビット系列番号は巡回するため、小さな窓とパケット寿命の上限が、古いデータを実質的に無効にしていた。

RFC 1110の説明では、16ビット窓なら系列番号の再利用まで65,536往復ある。30ビット窓で系列空間を変えなければ、それが4往復になる。NAKは1往復後に複製を作り得る。古いパケットが約5往復ネットワークに残れば、番号が新しい窓の周期に入った時に戻り、過去のデータが現在のデータとして扱われ得た。

これは試験結果の否定ではない。RFC 1110は、隔離衛星網が実質的に無記憶で、順序通りに届けるか捨てるだけなら問題が起きない可能性を認めた。一般Internetが保持・順序変更・複製という追加状態を許すため、一般化が成立しなかった。

後のTCPは窓、損失情報、古い複製を分けた

RFC 4614はRFC 1106を一般用途には欠陥あり、RFC 1110をその否定として整理し、広い共同体には採用されなかったと記録した。SCPS-TPでのNAK利用という限定例は、RFC 1106全体の採用を意味しない。

2011年のRFC 6247は、広範な利用に至らなかったTCP拡張群として両文書をHistoricへ移した。「広範ではない」は「実装ゼロ」と異なる。

RFC 7323のWindow Scaleは、SYNで交換するofferであってpromiseではない。欠落集合の記述はSACK、系列番号巡回後の古い複製対策はtimestampsとPAWSが担う。RFC 1106からの直接系譜を主張することはできないが、三つの証拠を一つに畳めないことは分かる。

実験の保存単位は数値ではなく環境付きの出来事だった

残すべきなのは実装版、トポロジー、誤りモデル、バッファー上限、交渉窓、系列空間の消費速度、最大滞留、順序変更、複製、トラフィックと観測点である。試さなかった状態も含める。

「成功」だけなら、測っていない世界に結果が移される。「Historic」だけなら、実際の限定試験が消える。RFC 1106とRFC 1110は、動作した事実と、その動作が証明しなかった条件を同じ履歴に残した。

出典