リサーチと下書き

TCP の調査

TCP の初期輻輳ウィンドウを増やすための引数

TCP フローは、最大 4 セグメントまたは約 4 KB のデータの輻輳ウィンドウから始まります。ほとんどのウェブ トランザクションは有効期間が短いため、最初の輻輳ウィンドウは、フロー完了までの時間を決定する重要な TCP パラメータです。過去 10 年間で、グローバル ネットワークのアクセス速度は平均して劇的に向上しましたが、TCP の初期の輻輳ウィンドウの標準値は変わっていません。本書では、TCP の初期輻輳ウィンドウを少なくとも 10 セグメント(約 15 KB)に増やすことを提案します。大規模なインターネット テストを通じて、ウィンドウを大きくした場合のレイテンシのメリットと費用を、ネットワーク帯域幅、ラウンドトリップ時間(RTT)、帯域幅遅延積(BDP)、アプリケーションの性質の関数として定量化しました。HTTP レスポンスの平均レイテンシは約 10% 改善され、最大の利点は RTT と BDP が高いネットワークで実証されています。Google のテストでは、低帯域幅ネットワークのレイテンシも大幅に改善されました。平均再送信速度は適度に 0.5% 増加しましたが、増加のほとんどは、複数の同時接続を使用して TCP のスロースタート アルゴリズムを効果的に回避するアプリケーションによるものです。実験の結果から、最初の輻輳ウィンドウは少なくとも 10 セグメントとし、IETF による標準化のために調査するべきであると考えられます。

TCP Fast Open

現在のウェブサービスは、非常に短い TCP フローが主流であるため、ハンドシェイクの後に数回のラウンド トリップを終端します。このハンドシェイクは、このようなフローのレイテンシの大きな原因となっています。このホワイトペーパーでは、TCP 初期ハンドシェイク時のデータ交換を可能にする新しいメカニズムである TCP Fast Open プロトコルの設計、実装、デプロイについて説明します。これにより、TCP Fast Open はアプリケーションのネットワーク レイテンシを 1 完全なラウンドトリップ時間まで短縮し、このような短い TCP 転送で発生する遅延を短縮します。Google は、3 ウェイ ハンドシェイク中のデータ交換を可能にすることに伴うセキュリティ問題に対処しています。この問題は、IP アドレスの所有権を確認するセキュリティ トークンを使用することで軽減できます。その他のフォールバック防御メカニズムについて詳しく説明し、ミドルボックス、既存のネットワーク スタックの下位互換性、増分デプロイで直面した問題に対処します。トラフィック分析とネットワーク エミュレーションに基づき、TCP Fast Open は HTTP トランザクション ネットワークのレイテンシを平均で 15%短縮し、ページ全体の読み込み時間を平均で 10% 以上短縮し、場合によっては最大 40% 短縮することが示されています。

TCP の比例率削減

パケットロスはウェブユーザーのレイテンシを増加させます。高速復旧は、TCP がパケットロスから回復するための重要なメカニズムです。本書では、RFC 3517 で記述されている標準アルゴリズムと Linux に実装されている非標準アルゴリズムのいくつかの弱点を探ります。これらのアルゴリズムは、短いフロー、アプリケーションのストール、バースト損失、確認応答(ACK)ロスと並べ替え、ACK のストレッチが複合的な影響を及ぼすため、実際の環境では意図した動作から逸脱することが判明しています。Linux では、過度の輻輳ウィンドウの短縮という問題がありますが、RFC 3517 では、高い損失の下で大きなバーストを送信することが、フローの残りの部分に悪影響を及ぼし、ウェブのレイテンシを増加させます。Google の主な貢献は、比例配分率低下(PRR)と呼ばれる高速回復において伝送を制御する新しい設計です。PRR は、受信した ACK で再送信をペーシングすることで、迅速、スムーズ、正確に損失から回復します。PRR に加えて、短い転送に対する重複確認応答のしきい値を下げる TCP 早期再送(ER)アルゴリズムを評価し、初期の再送を短い間隔で遅延させることが、程度の少ない再送の存在下での偽の再送の回避に効果的であることを示した。PRR と ER により、損失が発生している接続の TCP レイテンシは、レスポンスのサイズに応じて 3 ~ 10% 短縮されます。また、米国とインドにある Google ウェブサーバーと YouTube サーバーでの計測結果に基づいて、TCP 再送信の性質に関する主要な統計情報も提示しています。

ラミナ TCP

Laminar は TCP 輻輳制御の新しいフレームワークで、データ送信タイミングを正確に決定する送信スケジューリングと、各 RTT 中に送信されるデータの合計量を決定する純粋な輻輳制御を分離します。Laminar によって、新しい高度なアルゴリズムによって TCP トラフィックをより正確に制御できるようになることが期待されています。

SSL と TLS のドラフト

Transport Layer Security(TLS)の誤開始

False Start は、TLS 実装のオプションの動作です。影響するのはプロトコル タイミングのみで、ネットワーク上のデータには影響せず、一方的に実装できます。TLS False Start 機能を使用すると、特定の handshake で 1 ラウンド トリップのレイテンシが短縮されます。

Transport Layer Security(TLS)Next Protocol ネゴシエーション拡張

アプリケーション レイヤ プロトコル ネゴシエーション用の Transport Layer Security(TLS)拡張機能。これにより、アプリケーション レイヤは、追加のラウンド トリップを回避し、アプリケーション レイヤのプロトコルから独立した方法で、安全な接続で実行するプロトコルをネゴシエートできます。

DNS ドラフト

DNS リクエストのクライアント サブネット

このドラフト版では、DNS クエリを発信したネットワークと、応答をキャッシュに保存できるネットワークについての情報を伝える EDNS0 拡張機能を定義しています。