HTTP/3はWeb上のネットワーク通信のための次世代プロトコルで、HTTP/1およびHTTP/2を部分的に置き換えることを目標とする。2月にチューリッヒで開催されるQUIC Working Groupミーティングを来月に控えた今、HTTP/3の実現するものや、現在のクライアント/サーバでのサポート状況を振り返るのは無駄ではないはずだ。
HTTP/3はインターネット通信をより速く、より信頼性を高く、よりセキュアにするものとして期待されている。"HTTP over QUIC"、すなわち、Google独自のトランスポートプロトコルであるQUIC上で動作するHTTPプロトコルの開発として開始されたHTTP/3は、その後IETF標準として提案され、現在はインターネットドラフトの状態である。2018年10月、IETF HTTP & QUICワーキンググループの共同議長のひとりであるMark Nottingham氏が、その本来の特質とQUICからの独立性を明確にするために、HTTP over QUICからHTTP/3への改名を提案した。
主要な機能の基本部分を提供するという意味において、QUICはHTTP/3の重要な要素である。UDP上に構築されたQUICは、接続確立のレイテンシやマルチストリーム処理に伴うパケット損失といった、TCPプロトコルを使用する際に経験するおもな問題の解決を目的としたものだ。TCPのレイテンシの問題は、輻輳が発生する前に送信可能なトラフィック量を決定する手段としてのスロースタートを必須にした、輻輳管理アルゴリズムの要件に起因する。HTTP/1.0ではこれが、TCP要求/応答の交換毎に新たな接続を必要とする事実と相まって、スロースタートのペナルティを発生させていた。
以来、TCPのスロースタートを回避する試みは、HTTPプロトコルを改善しようという継続的な取り組みの中心的な課題となったのだ。
HTTP/1.1では"keep-alive"接続が導入され、同一のTCP接続上で複数の要求/応答の交換を連続して行うことが可能になり、要求毎に新たな接続を確立する必要はなくなった。しかしながら、HTTP/1.1のkeep-aliveは、複数の要求の同時送信をサポートしていないため、Webページの複雑化に伴って再びボトルネックを発生させることになったのだ。
現在は廃止されたSPDYプロコトルから派生したHTTP/2では、同一接続に組み込まれたfirst-classストリームという概念が導入された。これにより並列的な要求/応答交換が可能になったが、大きな問題があった — パケット損失が増えると、HTTP/2ではTCPのパケット再送処理方法に起因するパフォーマンス低下が発生し、最終的には接続を共有するすべてのストリームに停止(HOL)などの影響が発生するのだ。このため、パケット損失がある水準を越えると、HTTP/1で複数の接続を使用した方が、皮肉なことにHTTP/2よりも効率的になる。
前述のようにQUICでは、first-classストリームを用意することによって、HTTP/2で発生する接続のスロースタートによるレイテンシを解決している。さらに、個々の接続を分離して処理することにより、パケット損失によるパフォーマンスの問題も解決した。トランスポートプロトコルとしてQUICを採用したことは、HTTP/2からHTTP/3への最大のステップである。HTTP/2の重要な部分であったストリーム管理に関する機能の多くをQUICがネイティブに実装したことにより、HTTP/3ではそれらの機能を削除することが可能になった。一方で、HTTP/2のHPACKヘッダ圧縮はTCPがエンドポイントにパケットを配信する順序への依存性が高いことから、QUICの採用によって、新たなHTTPヘッダ圧縮スキームのQPACKを用意する必要があった。
過去数年間、Googleは、自社サービスである検索やYouTubeなどでQUICを採用する他、Chromeでもサポートしている。現時点では、Googleサービスとの通信でQUICを使用する手段はChromeのみである。最近になってMozillaもFirefox 72でHTTP/3をサポートしたが、いまだ試験的機能(experimentally)に留まっている。コマンドラインツールのcurlは、バージョン7.66.0の多くの新機能のひとつとしてHTTP/3サポートを追加した。サーバ側では、LiteSpeedとNginxがHTTP/3をサポートしている。
クラウド関連では、Googleに続いてCloudflareが、数ヶ月前から一部のユーザを対象としたHTTP/3の事前提供を行っている。Cloudflareは、HTTP/3のクライアントおよびサーバ実装を可能にするオープンソースRustライブラリのQuicheのスポンサ企業でもある。
前述にように、HTTP/3はまだIETFでの定義段階であり、公式リリースの時期は未定である。その一方で、HTTP/3の採用は世界規模で拡大していて、世界中のおよそ30万のサービスで使用されている。HTTP/3のデプロイ企業としてはGoogleが依然としてトップだが、他にも相当のシェアを持つ企業がいくつかある。InfoQでは今後もHTTP/3の情報をタイムリに伝え続けることで、インターネット革命の最新情報を読者に提供する予定である。