【アップデート】Amazon CloudFrontでQUICを利用したHTTP/3のサポートを開始しました!

AWS

2022.9.14

Topics

こんにちは、yasujunです。
前回の記事から再び、CloudFrontがアップデートしました!
アップデート内容は、CloudFrontがQUICを利用したHTTP/3に対応しました。
https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-cloudfront-supports-http-3-quic/
CloudFrontのアップデートはTLSといいHTTPといい、対応プロトコルのアップデートに力を入れ始めていると感じる今日この頃です。
そんなわけで、早速書いていきます。

この記事で分かること

  • QUIC,HTTP/3についてざっくり分かる
  • 今回アップデートされたHTTP/3と従来のHTTP/2以下との大きな違いについて分かる
  • CloudFrontのHTTP/3が新しく追加されたので、使い方と使うメリットについて分かる

QUIC(IETF版),HTTP/3とは


QUICはトランスポート層のプロトコルでUDPをベースに開発されたプロトコルで、開発目的としてはTCPの改善です。UDPをベースに作成されているためUDP特有のパケットロス問題が気になりますが、QUICではパケットロスが発生した場合にプローブタイムアウト(PTO)というロスしたパケットを検知し再送する仕組みがあるため、通信の安定性をそのままにUDPの良さを利用できる仕組みとなっています。
また、QUICはTCPの問題点であるTCP3WayHandshakeやHTTP/2仕様の単一コネクションの通信によるHead-of-Line-Blocking問題の課題を解消するために作成されています。また、標準でTLSv1.3を使用しているため常に暗号化通信をしています。
そのQUIC上で動作するHTTPのバージョンがHTTP/3です。

従来のHTTP/2からHTTP/3になって何が変わったか

従来のHTTP/2は通信の開始時にTCP3WayHandshakeというコネクションの確立に必要な処理が必要でした。TCP3WayHandshakeやHTTP/2仕様の単一コネクションの通信によるHead-of-Line-Blocking問題という、レイテンシーや通信の不安定等が原因で通信先の応答が返るまで後続の処理が詰まり、通信が遅延するというデメリットを抱えていました。
HTTP/2以下ではポート番号はTCPの80,443番を使用していましたが、HTTP/3ではUDPの443番を使用しています。UDPの443番で待ち受けているため前段にファイアーウォールがある場合にはポートの穴あけ等、既存の運用に見直しが必要です。さらに、QUICの仕様上、常に暗号化通信のため、証明書の利用やウェブサイトが常時TLS化されている必要があります。

TCP3WayHandshake


TCP3WayHandshakeは送信前に送信元と送信先が実際に繋がっていることを立証するための仕組みです。
HTTP/3では、下層プロトコルをUDPベースにしたQUICを利用することで、無くなりました。

Head-of-Line-Blocking問題



HTTP/2では上記のTCP3WayHandshakeやHTTP/2仕様の単一コネクションの通信が原因により、パケットロスが発生した場合にHead-of-Line-Blocking問題が発生してしまいます。レイテンシーや通信の不安定等が原因で初回の通信が詰まり、再送されるまで後続の処理が行えず、通信が遅延する事象です。QUICではTCP3WayHandshakeでの事象はTCPを使わないことで解決させ、HTTP/2仕様の単一コネクションの通信での事象はUDPをベースにしたQUICを使用することで単一コネクションから複数の独立したパケットを送信する仕組みに変えたことで解決しました。
この問題は双方ともTCP通信による事象でしたので、UDPベースのQUICを使用しTCPを使わないことで解消させました。

CloudFrontでHTTP/3を使用することで期待できること

HTTP/3を利用することで、Head-of-Line-Blocking問題がなくなり、通信開始時の遅延や通信環境の悪いところでも安定した通信が可能になりました。

また、CloudFrontのHTTP/3実装はクライアントのローミングをサポートしていて、クライアント端末がWifiからSIMを使った通信に切り替えた際に発生するパケット損失などの接続を、最小限の中断または中断なしの状態で回復させることができます。
さらに、対応リージョンも410以上のCloudFrontエッジロケーションすべてで利用可能な点も魅力的です。
AWSの調査ですとHTTP/3を有効にした場合、最初の1バイトを受信するまでの時間が最大10%改善され、ページのロード時間が最大15%改善されるそうです。
プロトコル機能のアップデートなので、前回のアップデートと同様に上記のメリットを無料で享受することができます。

CloudFrontでHTTP/3を使うには

ディストリビューションの新規作成画面か編集画面にある「設定」内の「サポートされているHTTPバージョン」のチェックボックスに「HTTP/3」にチェックを入れて、「ディストリビューションを作成」または「設定を保存」を押下するだけです。

まとめ

アップデートされたHTTP/3を利用することで、HTTP/2で抱えていた問題が無料で解消されます。
また、CloudFrontでの実装であればHTTP/3のポート変更等による運用面においてもコスト削減につながります。

yasujun

インフラの勉強と趣味の武道をバランス良く両立していきたいエンジニアです。 よろしくお願いいたします!

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら