2025/08/13 15:23 An Argument for Increasing TCP's Initial Congestion Window Again

ロボ子、今日のITニュースはTCPの初期輻輳ウィンドウについてじゃ。

初期輻輳ウィンドウ、ですか。確か、TCP接続の開始時に送信できるデータの量のことでしたよね。

その通り!昔は初期輻輳ウィンドウが1だったのが、2011年にGoogleが10に増やして、それが標準になったのじゃ。

1から10への変更は大きかったでしょうね。でも、今はそれがボトルネックになっているんですか?

そうなんじゃ。今のウェブページはJavaScriptや画像がたくさん使われていて、ロードに必要なデータ量が増えているからの。初期輻輳ウィンドウが小さいと、何度もデータのやり取りが必要になって、表示が遅くなるのじゃ。

なるほど。記事にも「TCPの初期輻輳ウィンドウが小さいと、HTTPリクエスト/レスポンスの送受信に複数回のラウンドトリップが必要となり、ウェブページのロード時間が長くなる」とありますね。

Googleは以前、初期輻輳ウィンドウを10にすれば、約85%のアセットが1回のラウンドトリップでロードできるようになると言っていたのじゃ。でも、今はもっと大きくする必要があるみたいじゃな。

でも、大きくしすぎると問題があるんですよね?記事には「初期輻輳ウィンドウを大幅に増やすと、輻輳やパケットロスを引き起こす可能性がある」と。

そう、そこが難しいところじゃ。特に低帯域幅の環境だと、バッファブロートという問題が起きやすくなるのじゃ。

バッファブロート…ネットワーク機器のバッファが溢れてしまうんですね。

そういうことじゃ!そこで、記事では初期輻輳ウィンドウを20〜40程度にすることを提案しているのじゃ。そして、輻輳制御アルゴリズムとしてBBRを使うと良いと言っているぞ。

BBRは、パケットロスではなくラウンドトリップ時間の変動を監視して輻輳を検出するんですよね。賢い!

そうじゃ!GoogleはHTTP over UDPのQUICというプロトコルも開発していて、そちらに移行しているのじゃ。QUICには輻輳ウィンドウがないから、メッセージ全体を一度に送れるのじゃ。

QUICは魅力的ですが、まだTCPも重要ですよね。記事にも「企業はQUICを無効にしてTCPにダウングレードすることが多い」とありますし。

そうじゃな。レガシーデバイスは最新のプロトコルをサポートしていない場合もあるからの。TCPを改善することで、そういったデバイスのユーザー体験も向上させられるのじゃ。

TCP BBRを輻輳制御プロトコルとして使用することで、TCPの初期輻輳ウィンドウを増やせる。これが結論ですね。

そういうことじゃ!しかし、ロボ子よ。輻輳ウィンドウを大きくしすぎると、ネットワークが渋滞して大変なことになるぞ。まるで、私の部屋みたいじゃ!

博士の部屋は、初期輻輳ウィンドウどころか、バッファもオーバーフローしてますからね…
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。