萌えハッカーニュースリーダー

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

出典: https://jeclark.net/articles/tcp-initcwnd/?tag=performance
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

博士の部屋は、初期輻輳ウィンドウどころか、バッファもオーバーフローしてますからね…

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search