要約

  • ECNは損失をなくす仕組みではない。応答できると宣言したトランスポートのパケットに対し、アクティブキューが輻輳通知のための廃棄を、条件付きで明示的なマークに置き換える仕組みである。
  • 制御は閉じた輪で成立する。送信側が能力を示し、ルーターがマークし、受信側が通知を返し、送信側が負荷を下げる。どこかが切れれば、マークは単なる模様になる。
  • RFC 2481とRFC 3168からトンネル規則、実験条件の緩和、L4Sに至る歴史は、問題が2ビットの確保ではなく、独立した装置の間で意味を保つことだったと示している。

マーク以前、キューは損失で語っていた

輻輳制御が最初に読んだのは「届かなかった」という事実だった。キューが満ち、パケットが捨てられ、送信側が経路の圧力を推測して送信量を落とす。このフィードバックは輻輳崩壊を防ぐうえで重要だったが、損失に二つの仕事を負わせた。通信を傷つけることと、その傷の原因を知らせることである。

1998年4月の RFC 2309 は、テールドロップがなぜ遅すぎる証人なのかを説明する。バッファが満杯になるまで知らせず、キューを長く保ち、バーストで複数のパケットを失わせる。複数フローが一斉に後退し、その後また一斉に増えることもある。同文書は、あふれる前に働き、平均キューを小さく保つアクティブキュー管理を勧告した。

しかし、早めに捨てても損失であることは変わらない。ECNは別の伝え方を用意した。トランスポートが明示通知に応答できると示していれば、キューはパケットを捨てる代わりに輻輳コードポイントを書き込める。パケットは生きたまま到着し、通過したボトルネックの痕跡を運ぶ。

歴史上の転換はここにある。ネットワークは、証拠を作るために証拠の運び手を壊す必要がなくなった。

2ビットを動かす複数の主体

2001年9月に標準化過程で発行された RFC 3168 は、2ビットのECNフィールドにNot-ECT、ECT(0)、ECT(1)、CEの4値を定義した。ECTはECN対応トランスポート、CEはCongestion Experiencedを表す。

目に見える変更を加えるのはルーターだが、ECNはルーター単体の機能ではない。送信側はまず応答能力を確立し、ECN対応を示したパケットを送る。アクティブキューは、本来なら輻輳通知として廃棄する局面で、適格なパケットにCEを設定できる。受信側はその情報を返し、送信側は輻輳ウィンドウを縮め、処理済みであることを示す。

各主体が知る事実は部分的だ。ルーターは自分のキューを知るが、アプリケーションの全状態は知らない。受信側はマークを見るが、送信負荷を直接決めない。送信側は速度を決めるが、ボトルネックを直接見ていない。ECNは、その境界を越えて小さな観測事実を運ぶ。

損失は残る。Not-ECTパケットはマークに応答する約束をしていない。深刻な輻輳では廃棄が必要になる。経路障害、破損、ポリシングも消えない。事実として言えるのは、適格なトラフィックについて、規定された条件の下で、輻輳を知らせる廃棄をマークで置き換えられるという範囲までである。

実験から段階導入の契約へ

1999年1月の RFC 2481 は、IPへのECN追加を実験として提案した。RFC 3168は2年後にこれを廃止し、IPとTCPの振る舞いを定めた。コードポイントを予約しただけではない。能力交渉、フィードバック、送信側の反応、非ECNトラフィックとの共存を規定した。

段階導入は設計の一部である。送信側は、すべての相手や経路が信号を保存するとは仮定できない。ルーターは、すべてのパケットを安全にマークできるとは仮定できない。ネットワーク保護のため、損失へのフォールバックも残す。後方互換性は古い機器への遠慮ではなく、先行導入者が新しい故障を他者に押し付けないための条件だ。

ここから得られる運用上の推論は、単層の有効化率では成功を測れないということだ。OSがECNを交渉しても、ボトルネックがマークしないことがある。ルーターがマークしても、トンネルがCEを消すことがある。経路がCEを運んでも、送信側が正しく応答しないことがある。成功単位は機能ではなく、閉じた経路である。

Nonceが示した誠実さの問題

明示通知には誘因の問題がある。受信側がマークを隠し、自分の送信側を減速させない可能性はないのか。2003年の実験的 RFC 3540 はECN nonceを提案した。送信側がECT値に検証可能な変化を持たせ、返された情報から通知が隠されていないかを確認する考え方だった。

この実験はECT(1)の恒久用途にはならなかったが、重要な対立を可視化した。輻輳マークは、共有資源のために自分の速度を落とすよう一方の主体へ求める。ネットワークは証拠を出せても、協力を当然とはできない。

2018年1月の RFC 8311 はRFC 3540をHistoricに変更し、ECN実験に関する制約を一部緩和した。ECT(1)は別の実験的意味に使えるようになった。フィールドは自然に空白へ戻ったのではない。以前の実験を閉じ、新しい意味の境界を作る手続きが必要だった。

トンネルは証拠を預かる

トンネルでは、内側のパケットが外側ヘッダーに包まれる。外側の経路で輻輳が起きたとき、出口は内外のECN状態を調整しなければならない。外側のCEを捨てれば、内側パケットは「何も起きなかった」という偽の履歴を持って出てくる。組み合わせを誤れば、経路にない信号を作ってしまう。

2010年の標準化過程文書 RFC 6040 は、カプセル化とデカプセル化でECNを扱う規則を更新した。表は複雑でも目的は明快だ。層をまたぐ際に、輻輳の意味を消したり捏造したりしないことである。

これはパケット処理の事実であり、推論すれば証拠保全の規則でもある。入口は外側状態を選び、トンネル経路はマークでき、出口は内側が何を継承するか決める。VPN、モバイルコア、データセンターのオーバーレイは測定境界になる。両端がECN対応でも、特定のトンネルが信号を保つ証明にはならない。

実験の許可と安全の断定は別物

2006年のBest Current Practiceである RFC 4774 は、ECNフィールドの代替的な意味を扱う。新しい用途には、識別方法、既存ECNとの共存、部分導入時の境界が必要だ。RFC 8311は、すべてのマークを古典的な損失相当として扱う制約などを緩め、制御された実験を可能にした。実験可能であることは、どの経路でも安全という意味ではない。

この違いは、2023年のLow Latency, Low Loss, and Scalable Throughput(L4S)で中心になる。RFC 9330 が全体構造を説明し、実験的 RFC 9331 がECT(1)をL4S識別子として、CEを頻繁な通知として用いる。実験的 RFC 9332 はDual-Queue Coupled AQMを規定する。

L4Sは、古典ECNのしきい値を下げただけではない。スケーラブル輻輳制御は頻繁なマークへ応答しつつ、一つ一つを古典的損失として扱わない。ネットワークは低遅延トラフィックを古典トラフィックの長いキューから分離し、輻輳通知を結合して容量を共有する。RFC 9330が説明するのは遅延の分離であって、単純な帯域優先ではない。

必要なのは、互換性のある送信側応答、ボトルネックのキュー処理、識別プロトコルの三つである。ECT(1)だけでは低遅延は生まれない。応答を実装せず識別子だけを名乗れば、共存の前提を壊す。

RFCの記録が証明しないこと

文書の流れは、技術と制度の展開を証明する。アクティブキューが早い信号を必要とし、実験提案が標準機構になり、フィードバックの誠実さが試され、トンネルと代替意味に規則が与えられ、L4Sがより大きな構造の中でフィールドを再利用した。

一方、2026年の公開経路の多くがECNを保存するとは証明しない。どのミドルボックスがビットを消すかも示さない。各ボトルネックに有効なAQMがあるとも、L4Sが普遍的サービスになるとも言えない。これは標準の分類から推定できない、配備と測定の未知である。

長く残る成果は、もっと限定的で重要だ。ネットワークは、損失の前に輻輳の証拠を出せるようになった。その代わり、誰が証拠を作り、誰が運び、誰が行動するかを明示しなければならない。

パケットは生き残る。応答責任は軽くならない。

出典