現在、インターネットで一般の人が使う
主なプロトコルはTCPです。
古い規格ではありますが基盤がしっかりとしていたので
今現在も使われております。
ただし、どうしても古いプロトコルになりますので
大量のデータが流れる昨今では問題が出る事も少なく
ありません。
その中でもネットワークが過密状態になる輻輳(ふくそう)に
関しては大きな問題です。
今までも輻輳技術はありましたが
『大変だパケットの破棄が起きている!』
という症状が出てから初めて対処するという方法を取っていました。
これは有効な手段ではありましたがパケットの破棄が発生
してから対処するというある意味後手後手になってしまうのは
否めませんでした。
そこでGoogleさんは
『データの詰まりが出る前に判断して他の経路へ誘導出来れば
良いんじゃね?』
と考えたのが
BBR(Bottleneck Bandwidth and Round-trip propagation time)
です。
BBRはデータの通る道の帯域およびネットワークの応答が
返ってくるまでの時間(ラウンドトリップタイム)を考慮して
最適なルートを見つけるアルゴリズムに則って動作する輻輳技術です。
例えると通常のTCP接続は某ネズミーランドのアトラクションの
行列待ちをしている人。
人気のアトラクションはみんな待つので長い時間がかかりますよね。
BBRは優先チケットを持つ人。
行列の間がちょっと空いたり、一時人が抜けた隙間に
「チケットあるから!」
で割り込んでしまえるんですね。
ただこのBBRチケットを持つ人が多数割り込むと、普通に並んでいた
通常のTCP接続な一般の人との公平性が無い訳です。
『え?BBRチケットを持っていると何人待っていようが割り込み
出来ちゃう訳?』
『おーおー、優先なのは分かるけど延々割りこまれるのはどうなのさ』
とね。
そこで通常のTCP接続も考慮しつつ、ちょっと優先させて貰いますね
という感じの挙動にしたのがBBRv2です。
件のBBRおよびBBRv2ですがデフォルトでは有効になっておりません。
設定方法は以下のサイトを参考にさせていただきました。
Windows11の設定のみ。設定丸写し
Liinuxに関しては上記サイトにてご確認ください
Powershellを管理者で起動
以下のコマンドで現在の状況を確認出来ます。
NetTCPSetting | Select SettingName, CongestionProvider
次いで
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
これでBBRv2が有効になります。
BBRv2を有効にしたWindowsでは一部に問題が出る事が報告されております。
メジャーなのがSteam。
どこまで正確か分かりませんがGoogleのAIであるGemini曰く
Steamは持っているネットワークの帯域を全力で使いにいくのだとか。
そこにBBR2を有効にするとSteamが対応出来ずに動かなくなって
しまうそうです。
実際うちでも試しましたがSteamが正常に動きません。
対処方法も上記のサイトにあります。
以下のコマンドをPowerShellで実行
netsh int ipv6 set global loopbacklargemtu=disable
netsh int ipv4 set global loopbacklargemtu=disable
上記コマンドでうちのSteamは問題なく繋がるようになりました。
BBRv2はまだテスト段階のようです。
Windowsの場合はWindows11 22H2からBBRv2に対応済
残念ながらそれ以前のWindowsは対応しておりません。
うちで動いているLinux MintでBBRを。
Windows11でBBRv2を試してみました。
Linux Mintでは多少良くなったかな?という感じ。
うちの環境では22時以降のYoutubeの接続状況の
改善になってくれると嬉しいのですが。
今のところ体感は出来ていません。
Windows11では明らかにYoutubeの読み込みが速くなっています。
これは速いな。
全てのサイトで高速化する訳ではないのと、Steamのように
そもそも繋がらなくなるサイト、サービスもあるので万能では
ないです。
ただBBRv2に対応しているYoutubeの高速化は驚くレベル。
Youtube専用PC等ある場合は試してみても良いかも。
特にネットワークが混雑している時に効果があるようですし。
BBRv2を試したけどやっぱり戻したいという場合は以下のコマンド
netsh int tcp set supplemental template=Internet congestionprovider=CUBIC
netsh int tcp set supplemental template=InternetCustom congestionprovider=CUBIC
netsh int tcp set supplemental template=Datacenter congestionprovider=CUBIC
netsh int tcp set supplemental template=DatacenterCustom congestionprovider=CUBIC
netsh int tcp set supplemental template=Compat congestionprovider=NewReno
netsh int ipv6 set global loopbacklargemtu=enable
netsh int ipv4 set global loopbacklargemtu=enable
今回のすべてのコマンドは再起動不要です。
入力直後にリアルタイムで更新されます。