#Zstandard圧縮でより高速でプライベートなインターネットのための新しい標準 #九27
https://blog.cloudflare.com/new-standards/ より
インターネットが成長するにつれて、スピードとセキュリティに対する要求も高まります。Cloudflare では、過去 14 年間、最新の Web テクノロジーの導入を簡素化し、ユーザーが複雑になることなく先を行くことができるようにしてきました。無料の SSL 証明書を初めて提供することから Universal SSL などのイノベーションを迅速にサポートするため TLS 1.3, IPv6, 、 および HTTP/3, 、私達は一貫して最先端の進歩を利用するために皆のために容易作りました。
Web パフォーマンスの最もエキサイティングな最近の開発の 1 つは、Zstandard(zstd)— です。これは、ほぼ同じ圧縮レベルを維持しながら、Brotli よりも 42% 速くデータを圧縮することが判明した新しい圧縮アルゴリズムです。それだけでなく、Zstandard は同等の速度を維持しながら、ファイル サイズを GZIP と比較して 11。3% 削減します。圧縮速度と効率は遅延に直接影響するため、これは Web 全体のユーザー エクスペリエンスを向上させるための大きな変革です。
また、も再開します rollout of Encrypted Client Hello (ECH), 、 ア new proposed standard これにより、ユーザーがどの Web サイトにアクセスしているかをネットワークがスヌープすることがなくなります。 Encrypted Client Hello (ECH) is a successor to ESNI そしてマスクします Server Name Indication (SNI) これは、TLS ハンドシェイクをネゴシエートするために使用されます。これは、ユーザーが ECH が有効になっている Cloudflare 上の Web サイトにアクセスするたびに、ユーザー、Cloudflare、および Web サイト所有者以外の誰も、どの Web サイトにアクセスしたかを判断できないことを意味します。Cloudflare はすべての人にとってプライバシーを重視しており、このテクノロジーを実現できる見通しに興奮しています。
この投稿では、HTTP/3 優先順位付けの影響を測定する作業と、ネットワーク パフォーマンスをさらに最適化するためのボトルネック帯域幅と往復伝播時間(BBR)輻輳制御の開発についても詳しく説明します。
Zstandard圧縮を導入
Zstandard, 、高度な圧縮アルゴリズム、によって開発された Yann Collet at Facebook そして、大規模なデータ処理を管理するために、2016 年 8 月にオープンソース化されました。印象的な圧縮比と速度により、近年人気が高まっています。プロトコルはに含まれていました Chromium-based browsers 瀹 し Firefox 2024 年 3 月 にゃと し だっ supported 蘆阿 蘆 蘆利 蘆ム。
本日、Cloudflare とブラウザ間の Zstandard 圧縮が誰でも利用できるようになったことを発表できることを嬉しく思います。
私たちのテストでは、Zstandard がデータを最大 42% 速く圧縮することが示されています Brotli ほぼ同等のデータ圧縮を実現しながら、. さらに、Zstandardは上回っています GZIP 同様の圧縮速度を維持しながら、圧縮効率が約 11。3% 向上します。つまり、Zstandard はファイルを Brotli と同じサイズにほぼ半分の時間で圧縮できるため、パフォーマンスを犠牲にすることなく Web サイトを高速化できます。圧縮速度とファイル サイズは遅延に直接影響するため、これは興味深いことです。ブラウザがオリジン サーバーにリソースを要求すると、サーバーはネットワーク経由で送信される前にデータを圧縮する時間が必要になります。Zstandard のような高速な圧縮アルゴリズムにより、この初期処理時間が短縮されます。また、インターネット経由で送信されるファイルのサイズを小さくすることで、圧縮が向上すると、ダウンロードの完了にかかる時間が短縮され、Web サイトの読み込みが速くなり、ユーザーは最終的により良いエクスペリエンスを得ることができます。
なぜ圧縮がそれほど重要なのでしょうか?
Web サイトのパフォーマンスは、オンライン ビジネスの成功にとって非常に重要です。 Study 後 study 負荷時間が増加することが示されました directly affects sales. 。競争の激しい市場では、web サイトのパフォーマンスが成功に不可欠です。人里離れた場所にある物理的なショップが顧客を引き付ける際に課題に直面しているのと同じように、遅い Web サイトでもトラフィックを引き付ける際に同様の困難に直面します。本棚などのフラットパック家具を購入することを考えてください。高価で持ち運びが面倒な本棚を完全に組み立てた状態で受け取る代わりに、すべてのコンポーネントがきちんと整理され、組み立ての準備が整ったコンパクトで平らな箱に入れて受け取ります。部品はスペースを最小限に抑えるように慎重に配置されているため、パッケージははるかに小さくなり、取り扱いが容易になります。アイテムを入手したら、指示に従って適切な状態に組み立てるだけです。
これはデータ圧縮の仕組みと似ています。データは “disassembled” であり、送信前にサイズを小さくするためにしっかりとパックされています。目的地に到着すると、“は元の形式に再組み立てされます。この圧縮プロセスにより、送信する必要があるデータ量が削減され、帯域幅が節約され、コストが削減され、転送が迅速化されます。これは、フラット パック家具が配送コストを削減し、配送ロジスティクスが簡素化されるのと同様です。
ただし、圧縮の場合、圧縮までの時間と全体の圧縮率というトレードオフがあります。圧縮率は、圧縮中にファイルのサイズがどの程度縮小されるかを示す尺度です。たとえば、10:1 の圧縮比は、圧縮されたファイルのサイズが元のファイルの 10 分の 1 であることを意味します。フラットパック家具の組み立てに時間と労力がかかるのと同じように、より高い圧縮率を達成するには、多くの場合、より多くの処理時間が必要です。圧縮率が高くなるとファイル サイズ — が大幅に減少し、データ送信がより高速かつ効率的になりますが、データの圧縮と解凍に時間がかかる場合があります。逆に、圧縮方法が高速になると、より大きなファイルが生成され、処理が高速化される可能性がありますが、その代償として帯域幅の使用量が増加します。これらの要素のバランスをとることが、データ送信のパフォーマンスを最適化する鍵となります。
W3 Technologies 2024 年 9 月 12 日 の 莠 出 、Web ジイ ト の 88。6% ガーウーセント ウーアーウィーン し、 ゥーノー ゥーユーウィーン ウースールーアーン に ゥーンニー ズンシー デーイールーン と ゥーンシー デーイーマー スー。 GZIP, 、 1996 年 に んすう intressa らたえこ のあぁ らる 琅琊語ム は 、 蘆と し と 多く の ジックイト の 蘆 蘆 と ト の あ る 蘆 蘆 と 高蘆 蘆 蘆 当里 57。0% のdicイト出奔レ用サレてゐまス。 Brotli, 、 、 2016 年 に Googleni nomck diteririー sa re 、 kom ribuoi rient fireshima su compression ratios, 、 こ レニ ノム リ、 特設 JavaScript 余 CSS 奈 婁の 瀹 ア コ ト の 婁ァ イ ゙ ジキ イ 瀹 ガ 小 さく な リ、 Web ィキイ ト の 45。5% 出湯用サレ diteima su。タ ザック し、こ レ は、Web dici-ト の 11。4% ガーオゥと死テツナシ出デツノシシ、テツノナナシヨリヲタ上ヲウツノシテツノリヲタモウチツノシテイアルコトゥドヂィンツノシマシマス。
インターネットとそのサポート インフラストラクチャが進化するにつれて、より高速で効率的なパフォーマンスに対するユーザーの要求も高まっています。速度を損なうことなく効率を高めるというニーズの高まりが、Zstandard の出番です。
Zstandardを入力してください
Zstandard は、GZIP に匹敵する高い圧縮比を提供しますが、Brotli よりも圧縮速度と減圧速度が大幅に向上します。このため、速度と比較的高い圧縮率の両方を必要とするリアルタイム アプリケーションに最適です。
Zstandard の利点を理解するには、知っておくと役立ちます Zlib. 。をベースに1990 年代半ばに開発されたのがZlibである DEFLATE 組み合わせる圧縮アルゴリズム LZ77 and Huffman coding ファイルサイズを小さくするには。一方、Zlib は 1990 年代半ばから圧縮標準であり、Cloudflare で使用されています open-source GZIP 実装では、その設計は 32 KB のスライド ウィンドウ — によって制限されており、当時のメモリ制限による制約があります。これにより、はるかに多くのメモリにアクセスできる最新のハードウェアでは Zlib の効率が低下します。
Zstandard は、最新のイノベーションとハードウェア機能を活用して Zlib を強化します。Zlib の固定 32 KB ウィンドウとは異なり、Zstandard には厳密なメモリ制約がなく、理論的にはテラバイトのメモリに対応できます。ただし、実際には、通常は使用量がはるかに少なく、圧縮レベルが低い場合は約 1 MB です。この柔軟性により、zstandard は大量のデータをバッファリングできるようになり、繰り返しパターンをより効果的に識別して圧縮できるようになります。Zstandardも採用しています repcode modeling 構造化データを反復シーケンスで効率的に圧縮し、ファイル サイズをさらに削減し、最新の圧縮ニーズへの適合性を高めます。
Zstandard は最新の CPU 向けに最適化されており、数学的タスクの実行に使用される複数の算術論理演算装置(ALU)を使用して複数のタスクを同時に実行できます。Zstandard は、データを並列ストリームで処理し、同時に処理される複数の部分に分割することでこれを実現します。 The Huffman decoder, Huff0, 、単一のCPUコア上で複数のシンボルを並列にデコードでき、マルチスレッドと組み合わせることで、圧縮時と解凍時の両方で大幅な速度向上につながります。
Zstandard のブランチレス設計は、特に最新のプロセッサにおいて CPU 効率を向上させる重要な革新です。その重要性を理解するには、CPU が命令をどのように実行するかを検討してください。
最新の CPU はパイプライン化を使用しており、命令のさまざまな段階が生産ラインのように同時に処理され、プロセッサのすべての部分がビジー状態になります。ただし、CPU は、「if-else」決定などの分岐に遭遇した場合、次のことを行う必要があります branch prediction 次のステップを推測するには。予測が間違っている場合は、パイプラインをクリアして再起動する必要があり、速度が低下します。
Zstandard は条件分岐を排除することでこの問題を回避します。ブランチの予測に依存することなく、CPU が命令を継続的に実行できるようにし、パイプラインを満杯に保ち、パフォーマンスのボトルネックを回避します。
Zstandard の主な特徴は、の使用です Finite State Entropy (FSE), 、確率に基づいてデータをより効率的にエンコードする高度な圧縮方法。FSE は、に基づいて構築されています Asymmetric Numeral System (ANS), 、zstandardは、全ビットのみを使用する従来のハフマン符号化とは異なり、符号化にフラクショナルビットを使用できるようにします。これにより、効率を犠牲にすることなく、頻繁に繰り返されるデータをより厳密に圧縮できるようになります。
Zstandard の調査結果
2024 年の第 3 四半期には、新しい Zstandard 圧縮モジュールの広範なテストを実施し、Free プランのトラフィック全体でデフォルトの圧縮アルゴリズムを Brotli から Zstandard に切り替える 24 時間に焦点を当てました。この実験は数十億件のリクエストに及び、HTML、CSS、JavaScript などの幅広いファイルの種類とサイズをカバーしました。その結果、圧縮速度とファイル サイズの削減の両方が大幅に改善され、読み込み時間が短縮され、帯域幅の使用効率が向上し、非常に有望な結果が得られました。
圧縮比
圧縮効率の点では、Zstandard は優れた結果をもたらします。以下は、テスト中に観察した平均圧縮率です。
圧縮アルゴリズム
平均圧縮率
グジップ
2。56
Zstandard
2。86
ブロトリ
3。08 に該当します
表が示すように、Zstandard は平均圧縮比を達成します 2。86:1, 、gzipよりも著しく高い 2。56:1 そしてブロトリの近くに 3。08:1。Brotli は純粋な圧縮率の点で Zstandard をわずかに上回っていますが、特に興味深いのは、トラフィック上で Zstandard のデフォルトの圧縮レベル 3 (22 段階中)のみを使用していることです。2024 年の第4 四半期には、Zstandardのパフォーマンスをさらに強化し、結果をさらに最適化するために、より高い圧縮レベルとマルチスレッディング機能を実験する予定です。
Compression speeds
What truly sets Zstandard apart is its speed. Below are the average times to compress data from our traffic-based tests measured in milliseconds:
Compression Algorithm
Average Time to Compress (ms)
GZIP
0.872
Zstandard
0.848
Brotli
1.544
Zstandardはデータを効率的に圧縮するだけでなく、そうします 42% 速くなりました brotli よりも、平均圧縮時間は です 0。848ミリ秒 ブロトリのものと比べると 1。544ミリ秒. 。で圧縮するgzipをも凌駕する 0。872ミリ秒 平均して。
この結果から、Zstandard は高い圧縮比の達成と高速な圧縮速度の維持の間で優れたバランスを保っており、HTML やキャッシュ不可能な機密データなどの動的コンテンツに特に適していることがわかりました。Zstandard は、原点からこれらの応答を迅速かつ効率的に圧縮できるため、Brotli と比較して時間を節約できると同時に、GZIP よりも優れた圧縮比を実現できます。
CloudflareでZstandardを実装
Cloudflare で Zstandard 圧縮を実装するには、すでに GZIP および Brotli 圧縮を処理している Nginx ベースのサービスにそれを組み込む必要がありました。Nginx は設計上モジュール式であり、各モジュールは応答の圧縮などの特定の機能を実行します。当社のカスタム Nginx モジュールは、Nginx の関数 'hooks' —、特にヘッダー フィルターとボディ フィルター — を利用して Zstandard 圧縮を実装します。
ヘッダーフィルター
ヘッダー フィルターを使用すると、応答ヘッダーにアクセスして変更できます。たとえば、Cloudflareは特定のサイズ(Zstandardの場合は50 バイト)を超える応答のみを圧縮し、このコードで強制されます:if (r->headers_out.content_length_n != -1 && r->headers_out.content_length_n < conf->min_length) { return ngx_http_next_header_filter(r); }
ここでは 、 「Content-Length」ヘッダーを確認します。コンテンツの長さが最小しきい値より小さい場合は、圧縮をスキップし、Nginx に次のモジュールを実行させます。
また 、 「Content-Encoding」ヘッダーをチェックして、コンテンツがまだ圧縮されていないことを確認する必要があります:if (r->headers_out.content_encoding && r->headers_out.content_encoding->value.len) { return ngx_http_next_header_filter(r); }
コンテンツがすでに圧縮されている場合、モジュールはバイパスされ、Nginx は次のヘッダー フィルターに進みます。
ボディフィルター
ボディ フィルター フックは、応答ボディの実際の処理が行われる場所です。私たちの場合、これには Zstandard エンコーダでデータを圧縮し、圧縮されたデータをクライアントにストリーミングし直すことが含まれます。応答は非常に大きくなる可能性があるため、応答全体をメモリにバッファリングすることは不可能であるため、メモリ不足を避けるために内部メモリ バッファを慎重に管理します。
Zstandard ライブラリはストリーミング圧縮に適しており、以下を提供します ZSTD_compressStream2 機能:ZSTDLIB_API size_t ZSTD_compressStream2(ZSTD_CCtx* cctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input, ZSTD_EndDirective endOp);
この関数は、圧縮する入力データのチャンクを使用して繰り返し呼び出すことができます。入力バッファと出力バッファ、および「演算」パラメータを受け入れます ()ZSTD_EndDirective endOp) データのフィードを継続するか、データをフラッシュするか、圧縮プロセスを完了するかを制御します。
Nginx は、メモリ バッファに「フラッシュ」フラグを使用して、データをいつ送信できるかを示します。私たちのモジュールは、このフラグを使用して、適切なZstandard操作を設定します:switch (zstd_operation) { case ZSTD_e_continue: { if (flush) { zstd_operation = ZSTD_e_flush; } } }
このロジックにより、より多くの入力データをエンコーダに入力する「ZSTD_e_continue」操作から、エンコーダから圧縮データを抽出する「ZSTD_e_flush」操作に切り替えることができます。
圧縮サイクル
圧縮モジュールは次のサイクルで動作します:
非圧縮データを受信する。
圧縮データを保存する内部バッファを見つけます。
Zstandard でデータを圧縮します。
圧縮されたデータをクライアントに送り返します。
バッファが圧縮データで満たされると、バッファは次の Nginx モジュールに渡され、最終的にクライアントに送信されます。バッファが使用されなくなったら、バッファをリサイクルして、不必要なメモリ割り当てを回避できます。このプロセスは次のように管理されます:if (free) { // A free buffer is available, so use it buffer = free; } else if (buffers_used < maximum_buffers) { // No free buffers, but we're under the limit, so allocate a new one buffer = create_buf(); } else { // No free buffers and can't allocate more err = no_memory; }
背圧の処理
利用可能なバッファがない場合、Zstandard モジュールがクライアントが受信できる速度よりも速く圧縮データを生成する状況が発生する可能性があります。これにより、データが Nginx 内に「スタック」し、メモリの制約によりさらなる圧縮が停止します。このような場合、圧縮を停止して空のバッファを次の Nginx モジュールに送信し、Nginx がデータをクライアントに再度送信できるようにします。これにより、成功すると、モジュールが再利用できるメモリ バッファが解放され、メモリ内の応答全体をバッファリングすることなく、圧縮された応答の継続的なストリーミングが可能になります。
次は何だ?圧縮辞書
インターネット圧縮の未来は、の使用にあります compression dictionaries. 。Brotli と Zstandard はどちらも辞書をサポートしており、最大で 2 つの辞書を提供します 90% improvement 静的辞書の使用と比較した圧縮レベル。
圧縮辞書には共通のパターンまたはデータのシーケンスが保存されるため、アルゴリズムはこれらのパターンを繰り返すのではなく参照することで情報をより効率的に圧縮できます。このコンセプトは、iPhone の予測テキスト機能の仕組みに似ています。たとえば、「On My Way」というフレーズを頻繁に使用する場合は、iPhone の辞書をカスタマイズして略語「OMW」を認識し、入力すると自動的に「On My Way」に展開できるため、ユーザーは 6 文字余分に入力する必要がなくなります。
O
M
W
O
n
M
y
W
a
y
従来、圧縮アルゴリズムは、クライアントとオリジン サーバー間で共有される、RFC によって定義された静的辞書を使用します。この静的辞書は、一般的な使用に合わせてサイズと圧縮効率のバランスをとり、広く適用できるように設計されています。ただし、Zstandard と Brotli は、クライアントに送信されるコンテンツに合わせて特別に調整されたカスタム辞書をサポートしています。たとえば、Cloudflare は、“Cloudflare” などの頻繁に使用される用語に焦点を当てた特殊な辞書を作成できます。このカスタム ディクショナリを使用すると、これらの用語がより効率的に圧縮され、同じディクショナリを使用するブラウザで正確にデコードできるため、圧縮とパフォーマンスが大幅に向上します。
将来的には、ユーザーが Zstandard および Brotli 用の origin 生成辞書を活用して圧縮を強化できるようになります。私たちが検討しているもう 1 つのエキサイティングな分野は、AI を使用して、オリジンで生成する必要なくこれらの辞書を動的に作成することです。Cloudflare は、データ ストリームをリアルタイムで分析することで、処理されるデータの特定の特性に合わせたコンテキスト認識辞書を開発できます。このアプローチにより、ユーザーはアプリケーションの圧縮率と処理速度の両方を大幅に向上させることができます。
圧縮 すべての人のためのルール
本日も、の導入を発表できることを楽しみにしています Compression Rules すべてのお客様のために。デフォルトでは、Cloudflare は特定のコンテンツ タイプをそれに基づいて自動的に圧縮します Content-Type headers。顧客は圧縮ルールを使用して、Cloudflare が圧縮する方法と内容を最適化できます。この機能は、以前は Enterprise プラン専用でした。Compression Rules は、Origin Rules、Custom Firewall Rules、Cache Rules などの他のルール製品と同じ堅牢なフレームワーク上に構築されており、Media Type と Extension Type のフィールドが追加されています。これにより、圧縮するコンテンツを簡単に指定できるため、サイトのパフォーマンス最適化を細かく制御できます。
圧縮ルールはすべての従量課金制プランで利用できるようになり、2024 年 10 月に無料プランに追加される予定です。この機能は、以前は Enterprise の顧客専用でした。以下の表には、他のルール製品の割り当てに合わせて、エンタープライズ プランの圧縮ルールを 125 に増やすなど、更新された制限が表示されます。
プランの種類
無料*
プロ
ビジネス
エンタープライズ
利用可能な圧縮ルール
10 に設定されています
25 に記載しております
50 に設定されています
125 に所蔵されています
Zstandard を有効にするには、圧縮ルールを使用します
Zstandard モジュールをプラットフォームに統合するために、Compression Rules フレームワーク内でのサポートも追加しました。これは、お客様が優先する圧縮方法として Zstandard を指定できるようになり、当社のシステムが Nginx で Zstandard モジュールを自動的に有効にし、必要に応じて他の圧縮モジュールを無効にすることを意味します。
の The Accept-Encoding ヘッダーは、クライアントがサポートする圧縮アルゴリズムを決定します。ブラウザがZstandardをサポートしている場合(If a browser supports Zstandard ())zstd)、cloudflare とゾーンの両方がこの機能を有効にすると、Cloudflare は Zstandard 圧縮応答を返します。
クライアントが Zstandard をサポートしていない場合、Cloudflare は自動的に Brotli、GZIP にフォールバックするか、圧縮アルゴリズムがサポートされていないコンテンツに非圧縮でサービスを提供し、互換性を確保します。サイト全体で Zstandard を有効にしたり、特定のファイル タイプで具体的にフィルタリングしたりするには、すべての Cloudflare ユーザーが簡単な圧縮ルールを導入できます。
圧縮ルールで達成できることの詳細と例は、こちらでご覧いただけます developer documentation.
現在、クライアントに送信されるトラフィックの圧縮アルゴリズムとして Zstandard、Brotli、GZIP をサポートしており、GZIP と Brotli をサポートしています(以降) 2023) 原点からの圧縮データ。当社は 2025 年に Zstandard の完全なエンドツーエンド サポートを導入し、顧客に流出コストを削減する別の効果的な方法を提供する予定です。
Zstandardが有効になると、ブラウザを表示できます Network Activity レスポンスの内容をエンコードするヘッダーを確認するにはログを記録します。
今すぐZstandardを有効にする!
Zstandard は現在、Cloudflare のすべての顧客が利用できます Compression Rules 当社のエンタープライズでは、従量課金制のプランをご利用いただけます。2024 年 10 月には無料プランにアクセスできるようになります。スピードを最適化する場合でも、帯域幅の削減を目指す場合でも、 Compression Rules すべての顧客にサイトのパフォーマンスを細かく制御させます。
暗号化されたクライアント こんにちは(ECH)
パフォーマンスは高速なユーザー エクスペリエンスを提供するために重要ですが、今日のインターネット環境ではプライバシーを確保することも同様に重要です。Zstandard を使用して速度を最適化するにつれて、Cloudflare はデータ送信中にユーザーの機密情報が漏洩しないように保護することにも取り組んでいます。Web トラフィックがより複雑になり、相互接続が進む中、パフォーマンスとプライバシーの両方のバランスを保つことが重要です。ここで、Encrypted Client Hello(ECH)などのテクノロジーが登場し、速度を犠牲にすることなく接続を保護します。
10 年前、私たちはより安全で暗号化された Web を作成するという使命に着手しました。当時、インターネットの多くは暗号化されておらず、ユーザー データは傍受されやすくなっていました。2014 年 9 月 27 日、当社はすべての Cloudflare 顧客に HTTPS を無料で利用できるようにすることで、大きな一歩を踏み出しました。一夜にして、暗号化された Web のサイズを 2 倍にしました。これにより、より安全なインターネットの準備が整い、暗号化が予算によって制限される特権ではなく、誰もがアクセスできる権利であることが保証されました。
それ以来、cloudflare とより広範なコミュニティの両方が、より多くのインターネットの暗号化に貢献してきました。のようなプロジェクト Let's Encrypt 証明書を誰でも無料で利用できるようにするために開始されました。Cloudflare は、より多くの接続を暗号化し、次のような今後のテクノロジーからその暗号化を将来的に保証するために投資しました quantum computers。私たちは、予算に関係なく、無料で暗号化されたインターネットを利用するのは全員の権利であると常に信じてきました。
最後の大きな課題の 1 つは、TLS ハンドシェイク中に平文で公開されたままになる SNI(サーバー名識別子)を保護することです。ここで、Encrypted Client Hello(ECH)が登場します。本日、そのギャップを埋めることを発表できることを誇りに思います。
Cloudflareは、のサポートを発表しました Encrypted Client Hello (ECH) 2023 年も、インターネット ブラウザ パートナーと協力して実装を強化し続けています。TLS ハンドシェイク中に交換される重要な情報の 1 つは、です Server Name Indication (SNI), 、安全な接続を開始するために使用されます。残念ながら、SNI は平文で送信されるため、誰でも読むことができます。手紙を手渡しすることを想像してみてください。たとえ内容を知らなかったとしても、フォローしている人は誰でも、あなたがそれを配達している場所を見ることができます。ECHの場合、同じ機密の手紙を私書箱に送るようなものです。機密性の高い手紙を、実際の住所が記載された密封された内側の封筒に入れます。次に、その封筒を、目的の受信者を安全に転送できると信頼されている、公開私書箱宛ての大きな標準封筒に入れます。非機密情報を含む大きな封筒は誰でも見ることができますが、内側の封筒には実際の住所や受信者などの機密情報が保管されています。私書箱が真の受信者の住所の匿名性を維持するのと同じように、ECH は SNI が保護されたままであることを保証します。
SNI の暗号化は ECH の主な動機ですが、その利点はさらに広がります。ECH はクライアント Hello 全体を暗号化し、ユーザーのプライバシーを確保し、機密の接続データを公開することなく TLS を進化させることができます。ECH は、完全なハンドシェイクを保護することで、インターネットが成長し続けるにつれてプライバシーを保護する、柔軟で将来性のある暗号化設計を可能にします。
ECHの仕組み
暗号化クライアント Hello(ECH)は、ClientHello メッセージを ClientHelloOuter と ClientHelloInner の 2 つの異なる部分に分割することにより、プライバシーの層を導入します。
クライアントハローアウター:この部分は暗号化されず、機密性の高いTLS拡張のための無害な値を含んでいます。SNIをCloudflareのパブリック名に設定し、現在はcloudflare-ech。comに設定されています。Cloudflare はこのドメインを管理し、TLS 交渉を処理するために必要な証明書を所有しています。
クライアントハローインナー:この部分は公開鍵で暗号化され、クライアントがアクセスしたい実際のサーバー名と、その他の機密性の高い TLS 拡張機能が含まれています。暗号化スキームにより、この機密データはクライアント対応サーバー(この場合は Cloudflare)でのみ復号化できます。
TLSハンドシェイク中、ClientHelloOuterは公開名(例: cloudflare-ech。com)のみを公開しますが、暗号化されたClientHelloInnerは実際のサーバー名を保持します。その結果、トラフィックを観察している仲介業者は、cloudflare-ech。com を平文でのみ表示し、実際の宛先を隠します。
ECH の設計は、内部での協力的な取り組みのおかげで、ハンドシェイク暗号化を安全に展開する際の多くの課題に効果的に対処します IETF community. 。ECHの成功の鍵は、新しいを含む他のIETF標準との統合です HTTPS DNS resource record, これにより、HTTPS エンドポイントがさまざまな TLS 機能をアドバタイズできるようになり、キーの配布が簡素化されます。を用いて、 Encrypted DNS メソッド、ブラウザ、クライアントは匿名でこれらの HTTPS レコードをクエリできます。これらのレコードには、安全な接続を開始するために必要な ECH パラメータが含まれています。
ECH は、を活用します Hybrid Public Key Encryption (HPKE) 標準。ハンドシェイク暗号化プロセスを合理化し、より安全で実装が容易になります。レイヤー 4 接続を開始する前に、ユーザーのブラウザは HTTPS レコードの DNS リクエストを行い、ECH が有効になっているゾーンには、暗号化公開鍵と関連するメタデータを含む ECH 構成が HTTPS レコードに含まれます。たとえば、ゾーンcloudflare-ech。comを見ると、次のレコードが返されていることがわかります:dig cloudflare-ech.com https +short 1 . alpn="h3,h2" ipv4hint=104.18.10.118,104.18.11.118 ech=AEX+DQBB2gAgACD1W1B+GxY3nZ53Rigpsp0xlL6+80qcvZtgwjsIs4YoOwAEAAEAAQASY2xvdWRmbGFyZS1lY2guY29tAAA= ipv6hint=2606:4700::6812:a76,2606:4700::6812:b76
クライアントが ClientHelloInner などを暗号化するために使用する公開鍵は別として parameters ECH 構成を指定すると、構成されたパブリック名も存在します。Y2xvdWRmbGFyZS1lY2guY29t
文字列がデコードされると、次のことが明らかになります:cloudflare-ech.com
このパブリック名は、クライアントによって ClientHelloOuter で使用されます。
実用上の意味
ECH を使用すると、クライアントと Cloudflare 間のトラフィックを監視しているオブザーバーは、方向に向けられているように見える均一な TLS ハンドシェイクのみを確認します cloudflare-ech.com, 、アクセスされている実際のウェブサイトに関係なく。たとえば、ユーザーが訪問した場合です example.com, 、仲介者はこの特定の宛先を識別しないが、見るだけになります cloudflare-ech.com 目に見えるハンドシェイクデータでは。
ミドルボックスの問題
基本的な HTTPS 接続では、ブラウザ(クライアント)がオリジン サーバーと直接 TLS 接続を確立し、リクエストを送信したりコンテンツをダウンロードしたりします。ただし、インターネット上の多くの接続は、ブラウザからサーバーに直接接続されるのではなく、何らかの形式のプロキシまたはミドルボックス (「中間モンスター」または MITM と呼ばれることが多い)を通過します。仲介者を介したこのルーティングは、良性と悪意の両方のさまざまな理由で発生する可能性があります。
HTTPS インターセプタの一般的なタイプの 1 つは、TLS 終了フォワード プロキシです。このプロキシはクライアントと宛先サーバーの間に位置し、トラフィックを透過的に転送し、変更する可能性があります。このタスクを実行するには、プロキシはクライアントからの TLS 接続を終了し、トラフィックを復号化し、再暗号化して新しい TLS 接続を介して宛先サーバーに転送します。ブラウザ証明書の検証エラーを回避するために、これらの順方向プロキシでは通常、ユーザーがデバイスにルート証明書をインストールする必要があります。このルート証明書を使用すると、プロキシは宛先サーバーの信頼できる証明書を生成して提示できます。このプロセスは、企業環境ではネットワーク管理者によって管理されることがよくあります Cloudflare WARP. 。コ レ ラのジクールーサハ、レ 肌のたこいんすう ぃーすーたーがーるー可レートイナイースーチニースー イレッサーレーウーシー、レ 肌のラーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウーシーウー
ただし、特に MITM プロキシと ECH サーバーに面するクライアントが異なるエンティティに属している場合、TLS 終了フォワード プロキシは暗号化クライアント Hello(ECH)を正しく処理するように装備されていない可能性があります。MITM プロキシは ECH を認識せずに TLS 接続を終了するため、ClientHelloInner を復号化したり、新しい公開キーを提供したりすることなく、パブリック名(当社の場合は cloudflare-ech。com)の有効な証明書を提供する場合があります。クライアントが使用します。この場合、クライアントは ECH が無効であるとみなします。これは、ECH の両方で損失を被り、追加の往復費用を支払うことを意味します。
また、次のような特定の Cloudflare セットアップも観察されました CNAME Flattening そして Orange-to-Orange configurations, 、ECHが壊れる可能性があります。この問題は、これらの接続の最終宛先が TLS 1。3 をサポートしておらず、ECH が正しく処理されないために発生しました。幸いなことに、ブラウザ パートナーと緊密に連携して、フォールバックを実装しました BoringSSL TLS終端処理を行う実装。このフォールバックにより、ブラウザは ECH なしで TLS 1。2 経由で接続を再試行できるため、接続を確立でき、切断されないようになります。
これらの改善の結果、他のすべての無料プランではデフォルトで ECH を有効にしましたが、他のすべてのプラン タイプでは手動で ECH を有効にすることができます Cloudflare dashboard または API 経由で。私たちは ECH を大規模にサポートし、ユーザーの閲覧活動のプライバシーとセキュリティを強化することに興奮しています。ECH は、潜在的な盗聴者からオンラインでのやり取りを保護し、Web 活動の機密性を維持する上で重要な役割を果たします。
HTTP/3 優先順位付けと QUIC 輻輳制御
すべてのお客様のパフォーマンスを向上させるために当社が投資している他の 2 つの分野は次のとおりです HTTP/3 Prioritization と QUIC 輻輳 制御。
HTTP/3 優先順位付けは、Web アセットがロードされる順序を効率的に管理することに重点を置き、重要なアセットの配信を迅速化することで Web パフォーマンスを向上させます。HTTP/3 優先順位付けでは、Extensible Priorities を使用して、緊急度 (0-7 の範囲)とリソースを段階的に処理できるかどうかを示す true/false 値の 2 つのパラメーターを使用して優先順位付けを簡素化します。これにより、HTML、CSS、画像などのリソースに重要性に基づいて優先順位を付けることができます。
一方、QUIC 輻輳制御は、データの流れを最適化し、ネットワークのボトルネックを防ぎ、交通量の多い状況でもスムーズで信頼性の高い送信を保証することを目的としています。
これらの改善は両方とも、Cloudflareのネットワークがクライアントへのリクエストにどのようにサービスを提供するかに大きな影響を与えます。毎秒 8,000 万件を超えるリクエストのピーク トラフィック量を処理するグローバル ネットワーク全体にこれらのテクノロジーを展開する前に、まず厳密な実験を通じてその影響を測定する信頼性の高い方法を開発しました。
影響の測定
Cloudflare が実装する機能がお客様に与える影響を正確に測定することは、いくつかの理由から非常に重要です。これらの測定により、パフォーマンス、セキュリティ、または信頼性に関連する最適化により、新たな問題が発生することなく、意図した利点が確実に得られます。正確な測定により、これらの変更の有効性が検証されるため、Cloudflare は読み込み時間、ユーザー エクスペリエンス、サイト全体のセキュリティなどの指標の改善を評価できます。パフォーマンスの変化を測定する最良の方法の 1 つは、現実世界のデータを集約することです。
Cloudflare Web Analytics web サイトにプライバシー優先の無料分析を提供し、訪問者が経験した Web ページのパフォーマンスを理解するのに役立ちます。Real User Metrics(RUM)は、Web パフォーマンスの最適化に不可欠なツールであり、Web サイトを操作する実際のユーザーからデータを取得し、現実世界の状況下でのサイトのパフォーマンスに関する洞察を提供します。RUM は、ロード時間、リソース使用量、ユーザー インタラクションなど、さまざまなメトリクスをユーザーのデバイスから直接追跡します。このデータは、サイトにアクセスする多様な環境や条件を反映しているため、実際のユーザー エクスペリエンスを理解するために不可欠です。
RUMを通じて測定される主要業績評価指標は次のとおりです Core Web Vitals (CWV), 、ウェブ上のユーザーエクスペリエンスの重要な側面を定量化する、googleによって定義された一連の指標。CWV は、負荷パフォーマンス、インタラクティブ性、視覚的安定性という 3 つの主要領域に焦点を当てています。具体的な指標には、読み込みパフォーマンスを測定する最大コンテンツフル ペイント(LCP)、双方向性を測定する初回入力遅延(FID)、視覚的な安定性を評価する累積レイアウト シフト(CLS)が含まれます。RUM で CWV 測定を使用することで、開発者はアプリケーションを監視および最適化して、よりスムーズで高速かつ安定したユーザー エクスペリエンスを確保し、リリースされた変更の影響を追跡できます。
過去 3 か月にわたって、当社は Server-Timing レスポンス ヘッダーに貴重な情報を含める機能を開発しました。Cloudflare Web Analytics を使用するページがブラウザにロードされると、Web Analytics のプライバシー ファーストのクライアント側スクリプトがブラウザのメトリックとサーバー タイミング ヘッダーを収集し、このパフォーマンス データを送り返します。このデータは取り込まれ、集約され、クエリに利用できるようになります。サーバー タイミング ヘッダーには、往復時間(RTT)やプロトコル タイプ(TCP または QUIC)などのレイヤー 4 情報が含まれます。Core Web Vitals データと組み合わせることで、最適化が対照サンプルと比較してリクエストにプラスの影響を与えたかどうかを判断できます。この機能により、グローバル ネットワーク全体への影響を明確に理解しながら、HTTP/3 優先順位付けや BBR などの大規模な変更をリリースできます。
このヘッダーの例には、サーバーによって観察されるネットワークパフォーマンスに関する貴重な情報を提供するいくつかの重要なプロパティが含まれています:server-timing: cfL4;desc="?proto=TCP&rtt=7337&sent=8&recv=8&lost=0&retrans=0&sent_bytes=3419&recv_bytes=832&delivery_rate=548023&cwnd=25&unsent_bytes=0&cid=94dae6b578f91145&ts=225
プロト: 使用するトランスポートプロトコルを示します
rtt:round-trip Time(RTT)、平滑化アルゴリズムを使用してレイヤ4 接続によって測定されるネットワークの往復の期間を表す。
送信されました: 送信されたパケット数。
レクフ:受信パケット数。
失われた: 失われたパケット数。
リトランス: 再送信パケット数。
送信バイト:送信バイト総数。
recv_bytes: 受信したバイトの総数。
配送料: データ配信率、1 秒あたりのバイト単位の瞬間測定。
cwnd:輻輳ウィンドウ、プロトコルに応じたパケット数またはバイト数の瞬間的な測定。
送信されていないバイト:まだ送信されていないバイト数。
シド:16 バイトの16 進数の不透明な接続ID。
ts て: データがいつキャプチャされたかを表すミリ秒単位のタイムスタンプ。
この RUM および Server-Timing ヘッダーを介したパフォーマンス データのリアルタイム コレクションにより、Cloudflare はユーザー エクスペリエンスを直接向上させるデータ主導の意思決定を行うことができます。これらの詳細なネットワークとパフォーマンスの洞察を継続的に分析することで、HTTP/3 優先順位付けや BBR 展開などの将来の最適化が顧客に具体的なメリットをもたらしていることを確認できます。
HTTP/3 の有効化 すべてのプランの優先順位付け
サーバータイミング ヘッダーの統合による可観測性の向上に重点を置く一環として、QUIC ハンドシェイクを最適化するためにいくつかの小さな変更を実装しました。特に、サーバー タイミング ヘッダーによって提供されるレイヤー 4 の可観測性の強化により、テレメトリにプラスの改善が見られました。これらの内部調査結果はサードパーティの測定結果と一致し、ハンドシェイク パフォーマンスでも同様の改善が示されました。
2024 年の第 4 四半期には、2023 年のスピード ウィーク中に発表された HTTP/3 優先順位付けサポートにも同じ実験手法を適用します。 HTTP/3 Prioritization web アセットがユーザーに配信される順序をインテリジェントに管理することで、Web ページの読み込みの効率と速度を向上させるように設計されています。最新の Web ページは、重要性が異なる画像、スクリプト、スタイルシート — などの多数の要素 — で構成されているため、これは非常に重要です。適切な優先順位付けにより、プライマリ コンテンツやレイアウトなどの重要な要素が最初に読み込まれ、より高速でシームレスなブラウジング エクスペリエンスが提供されます。
このテスト フレームワークを使用して、すべてのプラン タイプにわたって機能を有効にする前に、パフォーマンスの向上を測定します。このプロセスにより、メリットを定量化できるだけでなく、最も重要なことに、パフォーマンスの低下がないことを確認できます。
輻輳制御
HTTP/3 優先順位付け実験の完了後、特に以下に焦点を当てて、さまざまな輻輳制御アルゴリズムのテストを開始します BBR (涔土 ゙丿ィ丿ゞイ丿l丶l丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丶丿丿丶丿丶丿丶で ゙丿丶丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿丶で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙丿て ゙で ゙で ゙丿て ゙で ゙丿て ゙で 杩乙弗、冉智頭娥(とうとぅ)、チノノリヲリンチンシナガラーラールーハツノリテーシヲアユウアウスルウノコトヲ目的トシタ、冉智頭娥(とう)トゥールーチィ 通報フォークククルウルゴンナメパカニム出ス。ゥン トトウロゥー チンウユー出レゥン イレサレウルト ガ多スグリュート、ゥンウガウ生シ、ゥン ケッ トトウ、ゥンウ、全身的ナーンウーンニェーメヌィェーメヌィィのゥゥロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィウロゥーン、ヅィラッ ティュアアゥルーのんのうきょんしょたたこおんどうろぅぅぉーてぃーてぃーみぃまーしっ干。1 thuceni ama rini dh 多九の proced( res) resarduhat 涔克 toto gaakoleudorodonizu leureto, wetchuluzu gazu no's licue gazu shupshima su。
輻輳制御アルゴリズムはトラフィック マネージャーのように機能し、データの流れを調整してこれらの “トラフィック ジャムを防止し、データがネットワーク間をスムーズかつ効率的に移動できるようにします。接続の各側はリアルタイムでアルゴリズムを実行し、現在および予測されるネットワーク条件に基づいてデータの流れを動的に調整します。BBR は、Google が最初に開発した高度な輻輳制御アルゴリズムです。BBR は、実際に利用可能な帯域幅と最小往復時間(RTT)を推定して、最適なデータ フローを決定しようとします。このアプローチにより、BBR は遅延を最小限に抑えながら高いスループットを維持できるため、ネットワーク パフォーマンスの効率性と安定性が向上します。
BBR v3, 最新の反復では、帯域幅推定技術をさらに改良し、さまざまなネットワーク条件への適応性を高めることで、前任者の BBRv1 および BBRv2 の強みを基盤としています。BBR v3 は、以前の実装と比較して、いくつかのケースで高速であることがわかりました CUBIC. 。最も重要なことは、当社の損失率と再送信率が低下したことです Oxy プロキシの実装。
これらの有望な結果により、BBRv3 を含むさまざまな輻輳制御アルゴリズムをテストできることに興奮しています quiche, 、私たちの QUIC 実装, 私たちの HTTP/3 トラフィック全体で。レイヤー 4 のサーバータイミング情報とこの分野の実験を組み合わせることで、現実世界の指標への影響を明示的に制御および測定できるようになります。
未来
インターネットの将来は、スピード、セキュリティ、スケーラビリティに対する高まる需要を満たすための継続的なイノベーションにかかっています。圧縮用の Zstandard、輻輳制御用の BBR、HTTP/3 優先順位付け、暗号化クライアント Hello などのテクノロジーは、パフォーマンスとプライバシーに関する新しい標準を設定しています。これらのプロトコルを実装することで、Web サービスはページの読み込み時間を短縮し、帯域幅の使用効率を高め、ユーザー データの保護を強化できます。
これらの進歩は、段階的な改善を提供するだけでなく、ユーザー エクスペリエンスの最適化とオンライン インタラクションの保護において大きな進歩をもたらします。Cloudflare では、これらのテクノロジーを誰もが利用できるようにし、企業がより優れた、より高速で、より安全なサービスを提供できるようにすることに尽力しています。
ウェブ上で可能なことの限界を押し広げ続けるため、さらなる開発にご期待ください。最新のインターネット イノベーションの構築と実装に情熱を注いでおられる方には、ぜひご期待ください hiring!
Cloudflareの接続クラウドが保護します 企業ネットワーク全体, 、顧客造るのを助けます インターネット規模のアプリケーションを効率的に, 、任意の を加速する ウェブサイトまたはインターネットアプリケーション, ddos攻撃を回避します, 、 キープス ハッカーズ アット ベイ, 、そしてあなたを助けることができます ゼロトラストへの旅.
訪問 1。1。1。1 あらゆるデバイスから、インターネットをより速く、より安全にするための無料アプリを使い始めましょう。
より良いインターネットの構築を支援するという私たちの使命について詳しく学ぶには、 ここから始めろ. 。新しいキャリアの方向性を探しているなら、チェックしてください 私たちのオープンなポジション.
コメント
コメントを投稿