CloudflareはNGINXでHTTP/3をサポートするモジュールを実装しました

クラウドフレア社 準備した モジュール NGINX で HTTP/3 プロトコルのサポートを提供します。 このモジュールは、Cloudflare によって開発されたライブラリへのアドオンとして設計されています。 キッシュ QUIC および HTTP/3 トランスポート プロトコルの実装。 キッシュ コードは Rust で書かれていますが、NGINX モジュール自体は C で書かれており、ダイナミック リンクを使用してライブラリにアクセスします。 開発状況 開いた BSD ライセンスに基づいて。

ダウンロードするだけで組み立てられます パッチ nginx 1.16 と コー​​ド quiche ライブラリを削除し、オプション「—with-http_v3_module —with-quiche=../quiche」を使用して nginx を再構築します。 構築する場合、TLS サポートは BoringSSL ライブラリ (「--with-openssl=../quiche/deps/boringssl」) に基づく必要がありますが、OpenSSL の使用はまだサポートされていません。 接続を受け入れるには、「quic」フラグを持つ listen ディレクティブを設定に追加する必要があります (たとえば、「listen 443 quic reuseport」)。

クライアント ソフトウェアでは、HTTP/3 サポートが Chrome Canary とcurl ユーティリティの実験的ビルドにすでに追加されています。 サーバー側では、これまでは個別に限定されたものを使用する必要がありました テスト実装。 nginx で HTTP/3 を処理できることにより、HTTP/3 をサポートするサーバーの展開が大幅に簡素化され、新しいプロトコルのテスト実装がより容易になります。 nginx での HTTP/3 の標準サポートの登場 期待される 1.17.x ブランチで 6 ~ 12 か月間。

HTTP/3 は、HTTP/2 のトランスポートとして QUIC プロトコルの使用を標準化していることを思い出してください。 プロトコル QUIC (Quick UDP Internet Connections) は、Web 用の TCP+TLS の組み合わせの代替として 2013 年から Google によって開発されており、TCP での接続のセットアップとネゴシエーションに時間がかかるという問題を解決し、データ転送中にパケットが失われた場合の遅延を解消します。 QUIC は、複数の接続の多重化をサポートし、TLS/SSL と同等の暗号化方式を提供する UDP プロトコルの拡張です。

メイン 特徴 クイック:

  • TLS と同様の高いセキュリティ (基本的に QUIC は UDP 上で TLS を使用する機能を提供します)。
  • フロー整合性制御によりパケット損失を防止します。
  • 接続を即座に確立し (0-RTT、約 75% の場合、接続セットアップ パケットの送信直後にデータを送信できます)、要求の送信と応答の受信の間の遅延 (RTT、往復時間) を最小限に抑える機能。
  • パケットの再送信時に同じシーケンス番号を使用しないため、受信パケットの識別における曖昧さが回避され、タイムアウトがなくなります。
  • パケットの損失は、それに関連付けられたストリームの配信にのみ影響し、現在の接続を通じて送信される並列ストリームでのデータの配信は停止しません。
  • 失われたパケットの再送信による遅延を最小限に抑えるエラー修正機能。 パケットレベルで特別なエラー訂正コードを使用して、失われたパケットデータの再送信が必要な状況を軽減します。
  • 暗号化ブロックの境界は QUIC パケットの境界と一致しているため、後続のパケットの内容のデコードにおけるパケット損失の影響が軽減されます。
  • TCP キューのブロックには問題はありません。
  • 接続識別子のサポート。モバイル クライアントの再接続の確立にかかる時間を短縮します。
  • 高度な接続輻輳制御メカニズムを接続する可能性。
  • 方向ごとのスループット予測技術を使用して、パケットが最適なレートで送信されるようにし、パケットの輻輳やパケット損失の発生を防ぎます。
  • 知覚可能な インクリメント TCP と比較したパフォーマンスとスループット。 YouTube などのビデオ サービスの場合、QUIC はビデオ視聴時の再バッファリング操作を 30% 削減することが示されています。
  • 出所: オープンネット.ru

コメントを追加します