「Greasing the QUIC Bit」という仕様が提案されています。
背景
仕様の解説の前に、QUIC BitとDemultiplexingの補足をします。
QUIC Bit
QUIC v1ではロングヘッダパケット、ショートヘッダパケット(1-RTTパケット)とも先頭から2bit目がFixed Bitとして "1" に固定されています。
UDP demultiplexing
たとえばWebRTCでは、一つのUDPポートで複数のプロトコルのパケットをやりとりします。RFC7983では、その多重化の方法を定義していますが、その仕様もQUICを考慮した形で改訂作業が進められています。それが「Multiplexing Scheme Updates for QUIC」です。
具体的には、下記のように各パケットの先頭1バイトによってパケットを識別します。
この識別に、QUIC Bitが利用できます。
硬直化
QUIC v1では、QUICパケットのヘッダもほとんどの領域が暗号化されていますが、QUIC Bitは暗号化されません。demultiplexingするために、QUIC Bitは復号前に利用されるからです。
このようにパケットの特定値が経路上で利用されていると、予期せぬ形で利用され、新しい拡張仕様や将来のQUICバージョンをデプロイするときに誤作動する要因となりえます。このような問題を硬直化とよんでおり、TLS1.3やQUICではすでに、そのような問題がすでに見つかっています。
そのため、一般的にGreasing という仕組みを導入し硬直化しづらくします。
Greasing the QUIC Bit
demultiplexingが必要ない通信では、クライアントとサーバ合意のもとQUIC Bitをランダムに設定しても通信上は問題有りません。それが「Greasing the QUIC Bit」です。
「Greasing the QUIC Bit」では、grease_quic_bitトランスポートパラメータをemptyで送信します。
grease_quic_bitトランスポートパラメータを受信下側は、その相手に対してQUIC Bitをランダムに設定してもよくなります。
また将来的に、このbitをその他の用途に利用もすることもできます。