要約

  • 成功した検証は、送信したECNマーキングと、相手側が報告したACK_ECNカウンターが一つの経路で十分整合していることを示す。
  • ECT(0)、ECT(1)、ECN-CEはパケット番号空間ごとに分かれた累積値であり、ACKの履歴と併せて読む必要がある。
  • 検証はキュー、ホップ、ルーター、相互接続、事業者、期間、深刻度、SLA違反、顧客影響を特定しない。

監視画面でECN-CEの増加を見ると、特定の相互接続に原因があると記録したくなる。しかし、それはプロトコルの証拠を越えている。ECN検証が答えるのは、送信側が現在の経路で相手の報告を輻輳フィードバックとして使えるかどうかである。場所を示す仕組みでも、責任主体を認証する仕組みでもない。

送信側はIPパケットをECT(0)またはECT(1)として送る。ネットワーク上の装置は、パケットを捨てる代わりにECNフィールドをECN-CEへ変更できる。ECNフィールドを読み取れる受信側は、ECT(0)、ECT(1)、ECN-CEを別々に数え、後続のACKフレームで報告する。検証済みの経路で新しいECN-CEの増加が処理されると、RFC 9002で定められた輻輳制御装置は回復処理に入る。これはプロトコル上の反応であり、マーキングの場所や原因を示す診断ではない。

QUICはInitial、Handshake、1-RTTという各パケット番号空間について、ACKの状態とECNカウンターを別々に保持する。結合されたQUICパケットは一つのIPヘッダーを共有するため同じIP ECNフィールドを見るが、正常に処理された各パケットは自身の空間で数えられる。重複パケットは再処理されず、カウントを増やさない。過去のACKが失われていれば、一つのACKが報告する累積増分は、そのACKで新たに確認されたパケット数より大きくなり得る。したがってカウンターは、速度、ホップの地図、フロー単位の因果記録ではない。

検証は経路ごとに行う。新しい接続、サーバーの優先アドレスへの変更、別経路へのアクティブマイグレーションは、それぞれ別の経路として扱う必要がある。エンドポイントは新経路の初期パケットをECT(0)で送り、確認結果と損失を報告カウンターと比較できる。新たに確認されたECNマーキング済みパケットにカウントがなければ、検証は失敗する。ECT(0)については、ECT(0)の増分とECN-CEの増分の合計が、ECT(0)で送った新規確認パケット数を下回ってはならない。ECT(1)にも同じ規則がある。報告値は対応するコードポイントで送った総数を超えてはならず、使っていないコードポイントに非ゼロ値があってもならない。最大確認番号を進めない並べ替え済みACKだけで検証を失敗させてはいけない。

これはフィードバックを利用できるかを調べる検査であり、発信元の身元を調べる検査ではない。失敗しても、フィールドの消去、誤った書き換え、相手による未報告、損失、並べ替え、経路変更、敵対的操作、別の実装障害を区別できない。失敗時にはその経路でECNを無効にし、ECTを設定しなくなる。後で再検証はできるが、成功してもキュー、ルーター、通信事業者、運用事業者、管理ドメインの認証にはならない。

損失、遅延、ECNマーキングは認証されていないネットワーク信号である。攻撃者はパケットを捨て、遅延を変え、コードポイントを書き換えて送信レートに影響できる。受信側も誤って報告でき、CEの抑制は過大な送信レートを、余分なCEは過度の低下を招く。検証はフィードバックの一部に整合性を与えるが、混雑の原因となった装置や組織の身元を証明しない。

証拠台帳では、接続と現在の経路、パケット番号空間、ACK範囲、各パケットのECT(0)、ECT(1)、Not-ECT、累積カウンター、直前に正常処理したACKとの差分、検証状態の遷移、欠落や不可能な増加、損失、並べ替え、経路変更、輻輳制御装置の応答を分けて記録する。キュー、インターフェース、ホップ、経路、相互接続の観測、さらに原因、期間、深刻度、顧客影響は別に管理する。これはTR-038のRTTサンプル、TR-045のACK配送の意味、TR-050のACK遅延、TR-051のPTOプロービングとも別の問題である。