「Windowsシリーズ」Windows 11でBBR輻輳制御アルゴリズムを導入してインストールする方法
Windows 11 22H2はTCP BBR v2輻輳制御をサポートしています。本記事では、簡単な設定で、WindowsのデフォルトのCubic輻輳制御からBBR v2輻輳制御に切り替え、再起動なしでネットワーク速度を飛躍的に向上させる方法を説明します。
一、BBRアルゴリズムとは?
BBR (Bottleneck Bandwidth and Round-trip propagation time) は、TCPプロトコルの輻輳制御アルゴリズムで、高帯域幅および高パケットロスのネットワーク環境でのパフォーマンス最適化を目的としています。BBRは、ネットワークの輻輳状況と遅延に基づいて送信速度を動的に調整し、最大のネットワークスループットと最小の遅延を実現します。BBRアルゴリズムは、ネットワークの帯域幅と遅延を動的に測定・推定し、適切な輻輳ウィンドウサイズを決定して、より良い伝送効果を達成します。BBRアルゴリズムは、Googleのネットワークサービス(YouTubeやGoogle Cloudプラットフォームなど)で広く使用されています。
二、現在Windowsのデフォルトアルゴリズムは?
CUBIC (Cubic TCP) アルゴリズムは、BB-Renoアルゴリズムに似た輻輳制御アルゴリズムで、BB-Renoアルゴリズムと異なり、非線形の輻輳ウィンドウ増加方式を採用しており、高帯域幅、高遅延のネットワーク環境により適応しやすい特徴があります。
CUBICアルゴリズムの輻輳ウィンドウは、立方体のような増加曲線に従い、輻輳ウィンドウの適応を、輻輳ウィンドウのフィッティングカーブを計算する仕組みで調整します。CUBICアルゴリズムは、パケットロスの監視を通じてウィンドウサイズを調整し、輻輳の回避と制御を行います。CUBICアルゴリズムは、ネットワークの輻輳時に自動的に輻輳回避および復旧措置を講じ、ネットワークのパフォーマンスを安定させ、スムーズに保つことができます。
CUBICアルゴリズムは、LinuxのTCPモジュールで広く使用されており、さまざまな広域ネットワークやインターネット環境でも利用されている非常に実用的な輻輳制御アルゴリズムです。
三、BBRとCUBICの違い
BBRアルゴリズムとCUBICアルゴリズムには、以下のような本質的な違いがあります:
- アルゴリズムの考え方:BBRアルゴリズムは、ネットワーク内で最後のボトルネックとなるリンクの帯域幅と遅延を維持することを核心としており、ネットワークの最小帯域幅と最大遅延を基準に輻輳制御を行います。一方、CUBICアルゴリズムは、輻輳ウィンドウの変化に基づいて自適応制御を行います。
- アルゴリズムのパラメータ:BBRアルゴリズムは、帯域幅や遅延などのネットワークパラメータを動的に測定・推定する必要があります。CUBICアルゴリズムは、輻輳ウィンドウサイズの変化に応じて調整します。
- アルゴリズムの適用環境:BBRアルゴリズムは、高帯域幅、高遅延、小さなパケットのネットワーク環境に適しています。Googleのネットワークサービスなどで使用されています。一方、CUBICアルゴリズムは、高帯域幅、長距離の広域ネットワーク環境に適しています。
四、どの環境で異なるアルゴリズムを使用すべきか?
簡単に言うと、最適な輻輳制御アルゴリズムの選択は、ネットワーク環境によって決まります。一般的に、ネットワークの帯域幅が大きく、パケットロスが少ない場合、BBRアルゴリズムが有利です。なぜなら、BBRはネットワークの帯域幅を迅速に検出し、それを最大限に活用できるからです。反対に、ネットワークの帯域幅が小さく、パケットロスが多い場合は、CUBICアルゴリズムがネットワーク状況に適応しやすく、パケットロスや輻輳の問題を減らすことができます。したがって、アルゴリズムの選択は、実際のネットワーク状況や要件に基づいて行う必要があります。
五、Windows 11でBBRアルゴリズムに切り替える方法
5.1 現在のアルゴリズムを確認
管理者としてPowerShellを開きます。
以下のコマンドを入力して、現在のアルゴリズムを確認します。
NetTCPSetting | Select SettingName, CongestionProvider

5.2 BBRアルゴリズムに切り替える
以下のコマンドを順番に入力します。
netsh int tcp set supplemental template=Internet congestionprovider=BBR2 netsh int tcp set supplemental template=InternetCustom congestionprovider=BBR2 netsh int tcp set supplemental template=Datacenter congestionprovider=BBR2 netsh int tcp set supplemental template=DatacenterCustom congestionprovider=BBR2 netsh int tcp set supplemental template=Compat congestionprovider=BBR2
すべてのコマンドを実行した後、再度「現在のアルゴリズムを確認」のコマンドを入力して、正しく切り替わっているか確認します。
SettingName CongestionProvider ----------- ------------------ Automatic InternetCustom BBR2 DatacenterCustom BBR2 Compat BBR2 Datacenter BBR2 Internet BBR2
六、備考
再起動なしで、すぐに切り替えが反映されます。
BBRに切り替えた後、ネットワーク速度が遅くなった場合は、上記の手順で「CUBIC」に戻すことができます。
BBR v2からCUBICに戻す方法
PowerShellで以下のコマンドを入力します:
netsh int tcp set supplemental Template=Internet CongestionProvider=cubic
netsh int tcp set supplemental Template=Datacenter CongestionProvider=cubic
netsh int tcp set supplemental Template=Compat CongestionProvider=newreno
netsh int tcp set supplemental Template=DatacenterCustom CongestionProvider=cubic
netsh int tcp set supplemental Template=InternetCustom CongestionProvider=cubic
その後、再度以下のコマンドで現在のTCP輻輳制御を確認します:
Get-NetTCPSetting | Select SettingName, CongestionProvider