「HTTP Datagram PING」という提案仕様をGoogleのBenjamin Schwartz氏がIETFに提出している。
これは、HTTP/3でのDATAGRAMフレームにおいて、PINGを送れるようにするものである。HTTP/3におけるDATAGRAMフレームの利用については以前紹介したとおりである。
asnokaze.hatenablog.com
目的
WebTransportやMASQUEでは、DATAGRAMフレームはプロキシを超えてEnd-to-Endでのやりとりに利用できるように設計されています。このHTTP Datagram PINGを使う目的は主に次のとおりである
- End-to-Endにかけてコネクションが維持されており、通信が出来ることを確認する
- End-to-Endで通信のレイテンシを確認する
- End-to-EndでPath MTU Discoveryを行う
特に、3つめにあげたのが、この提案の主題でもあります。
もともとMASQUE WGでは、HTTPプロキシを超えたPath MTU Discoveryについてどのように行うか議論がありました。例えば、CONNECT-IPでは、MASQUE Proxy先のMTUを考慮してクライアントはDATAGRAMフレームを送信しなければなりません。その問題に対して一つの提案として出されたのがこの仕様です。
具体的には、トランスポートレイヤでのPath MTU Discoveryを説明した「RFC8899」で定義されている通り、DPLPMTUD Probeパケットの送信に使用できます。
なお、CONNECT-IPは以前紹介したとおりです。
asnokaze.hatenablog.com
(この仕様では、MASQUE Proxyを超えてはPath MTU Discovery出来ない?ちょっと、そこを理解できてない。)
HTTP Datagram PING
具体的なHTTP Datagram PINGの中身を確認します。
最新版の「Using Datagrams with HTTP」では、DATAGRAMフーレムに拡張性を持たせている。HTTP Datagram Format Typeとして、新しいFormat Typeを定義できる。
「HTTP Datagram PING」では、新しいFormat TypeとしてPING Datagram Formatを定義している。
QUICのDATAGRAMフレーム及び、REGISTER_DATAGRAM_CONTEXT Capsule Formatも含め記述すると次のとおりである。
PING Datagram Formatは、シーケンス番号と任意のOpaqueデータを含みます。