QUICにおける、明示的な輻輳シグナルを受け取る ECN対応

RFC 9000 QUICには、経路上のスイッチから明示的な輻輳シグナルを受け取る ECN (Explicit Congestion Notification) という機能に対応しています。

Googleではサーバ側はQUIC ECN対応がデプロイされており、Chromeでの実装も進められている事が報告されています。
mailarchive.ietf.org

概要

  • ECNに対応したネットワーク機器は、輻輳が起こると該当のパケットにおいて、IPヘッダのTOS fieldのCE(Congestion Experience)ビットをセットする
  • 受信したIPヘッダのCE(Congestion Experience)ビットがセットされている場合、パケットの送信者にフィードバックするため、QUICのACK-ECNでそれを通知する
  • ACK-ECNを受け取ったエンドポイントは輻輳が起こっている事を把握し、送信量を下げる
IPヘッダの CT, CE ビット

RFC2481において、IPヘッダのTOSフィールドをECN用に 2ビット使用します

  • 00: ECN非対応
  • 01, 10 : ECNに対応している事を示すのに使用します(それぞれECT1, ECT0と呼ばれる)
  • 11: CEと呼ばれ、 輻輳が起こっている事を示すのに使用します


QUICのACK ECN

QUICではACKフレームにECN Countsの情報を格納します。ECN情報を持つACKは、フレームタイプとして0x03を使用します。

ECN CountsとしてECT, CEの受信数をピアに通知します

Example

最初に述べた通り、Google, YoutubeではすでにECNに対応しているため、ACK ECNを送ってきます。WiresharkでQUICを復号すると次のようにみることが出来ます。