ADC

HTTP3 over QUICプロトコル

HTTP/2 over TCP は、単一の接続で複数の HTTP リクエストストリームを送信する場合に推奨される標準です。ただし、TCP トランスポートメカニズムでは、Web サイトや Web アプリケーションへのアクセスに一定の制限とレイテンシーの問題があります。同じ接続で複数のリクエストを多重化すると、同じ接続の信頼性の影響を受けます。1 つの要求のパケットが失われた場合、他のすべての多重化要求は、失われたパケットが検出されて再送信されるまで遅延します。これにより、ヘッドオブラインブロッキングの遅延とレイテンシーの問題が発生します。

接続および転送の遅延については、HTTP/3 は TCP プロトコルの代わりに QUIC を使用します。QUIC は、TCP の代わりに UDP を基本トランスポートとして使用する新しいプロトコルです。 HTTP-over-quic では、単一の TCP 接続に依存することなく、複数の独立した要求を多重化することができます。QUIC は、複数の HTTP リクエストをストリーミングできる信頼性の高い接続を実装しています。QUICは、HTTP/1.1やHTTP/2のように追加のレイヤーとしてではなく、TLSを統合コンポーネントとして組み込んでいます。

HTTP/3 プロトコルを使用する利点

HTTP/3 データ転送に QUIC プロトコルを使用する重要な利点のいくつかを以下に示します。

• ストリーム多重化 • ストリームおよび接続レベルのフロー制御 • 低レイテンシーの接続確立 • NAT 再バインドへの接続の移行と復元力 • 認証され、暗号化されたヘッダーとペイロード

HTTP プロトコルのトランスポートスタック

以下の図は、HTTP/1.1、HTTP/2、および HTTP/3 プロトコルのトランスポートスタックを示しています。

HTTP プロトコルのトランスポートスタック

Citrix ADCでのQUICおよびHTTP/3接続管理の仕組み

次の図は、Citrix ADCアプライアンスでのQUICおよびHTTP/3接続管理と、コンポーネントがどのように相互作用するかを示しています。

QUIC および HTTP/3 接続管理の仕組み

ステップ1:Citrix ADCアプライアンスへのQUICプロトコル経由のクライアント側のHTTP/3リクエスト。 ステップ2:バックエンドサーバーのサポートに応じて、NetScaler AS HTTP/1.1またはHTTP/2によって転送されるリクエスト。 ステップ3:バックエンドサーバーからCitrix ADCへのHTTP/2またはHTTP/1.1を介して応答します。 ステップ 4: ADC は HTTP/3 応答として応答をクライアントに転送します。

HTTP/3 プロトコルのしくみ

HTTP/3 では、クライアントが特定のエンドポイントに HTTP/3 サーバーが存在することを認識すると、QUIC 接続を開きます。QUIC プロトコルは、多重化およびフロー制御を提供します。各ストリーム内では、HTTP/3 通信の基本単位はフレームです。フレームタイプごとに異なる目的を果たします。たとえば、HEADERS フレームと DATA フレームは HTTP リクエストとレスポンスの基礎を形成します。

要求の多重化は、QUIC ストリーム抽象化を使用して実行されます。各リクエストとレスポンスのペアは、単一の QUIC ストリームを消費します。ストリームは互いに独立しているため、ブロックされている、またはパケット損失が発生する 1 つのストリームは、他のストリームでの進行を妨げません。サーバープッシュは HTTP/2 で導入されたインタラクションモードで、指定された要求を行うクライアントを予測して、サーバーが要求と応答交換をクライアントにプッシュできるようにします。これにより、潜在的なレイテンシーゲインとネットワーク使用率がトレードオフされます。PUSH_PROMISE、MAX_PUSH_ID、CANCEL_PUSH など、サーバープッシュの管理にはいくつかの HTTP/3 フレームが使用されます。HTTP/2 と同様に、リクエストフィールドとレスポンスフィールドは送信用に圧縮されます。HPACKは圧縮フィールドセクションの順序通りの送信(QUICによって提供されていない保証)に依存しているため、HTTP/3はHPACKをQPACKに置き換えます。QPACK は、個別の単方向ストリームを使用してフィールドテーブルの状態を変更および追跡します。一方、エンコードされたフィールドセクションは、テーブルの状態を変更せずに表の状態を参照します。

HTTP/3 プロトコルのしくみ

HTTP3 over QUICプロトコル