ページ

2024-11-23

【LMDE】TCP 輻輳制御アルゴリズムに BBR を指定してみた

tcp_congestion_control = bbr な環境を試してみました。

まずは結果から

net.ipv4.tcp_congestion_control = bbr と指定できました。デフォルトでは cubic になっていました。

横着なワタシの grep コマンドをお許しください。

$ sysctl -a | grep -i congestion_control
sysctl: permission denied on key 'kernel.apparmor_display_secid_mode'
sysctl: permission denied on key 'kernel.apparmor_restrict_unprivileged_unconfined'
sysctl: permission denied on key 'kernel.cad_pid'
sysctl: permission denied on key 'kernel.unprivileged_userns_apparmor_policy'
sysctl: permission denied on key 'kernel.usermodehelper.bset'
sysctl: permission denied on key 'kernel.usermodehelper.inheritable'
sysctl: permission denied on key 'net.core.bpf_jit_harden'
sysctl: permission denied on key 'net.core.bpf_jit_kallsyms'
sysctl: permission denied on key 'net.core.bpf_jit_limit'
sysctl: permission denied on key 'net.ipv4.tcp_fastopen_key'
net.ipv4.tcp_allowed_congestion_control = reno bbr
net.ipv4.tcp_available_congestion_control = reno bbr cubic
net.ipv4.tcp_congestion_control = bbr
sysctl: permission denied on key 'net.ipv6.conf.all.stable_secret'
sysctl: permission denied on key 'net.ipv6.conf.default.stable_secret'
sysctl: permission denied on key 'net.ipv6.conf.docker0.stable_secret'
sysctl: permission denied on key 'net.ipv6.conf.eno1.stable_secret'
sysctl: permission denied on key 'net.ipv6.conf.lo.stable_secret'
sysctl: permission denied on key 'vm.mmap_rnd_bits'
sysctl: permission denied on key 'vm.mmap_rnd_compat_bits'
sysctl: permission denied on key 'vm.stat_refresh'

そして測定結果です。

こちらは変更前の cubic の結果

こちらは変更後の bbr の結果

 

左側の IPv4 の測定結果が向上し、IPv6 と同等な速度になっています。わぉ。

 

試したこと

LMDE 6 で Linux Kernel 6.11 を使っています。bbr を選択するためには Linux Kernel をカスタムビルドする必要があります。(ちょっとハードルが高いですね)

Windows11 だと PowerShell からのコマンド発行で BBR を選択できるようです。

 

以下は make nconfig の画面サンプルです。

TCP: advanced congestion control

Default TCP congestion control

「M」だとビルドにモジュール化されるだけなので、「*」に変えてあげることで選択できるようになります。ついでにデフォルト値も「Cubic」から「BBR」に変更してみました。

変更を .config に保存して Linux Kernel を再ビルドし、その Linux Kernel をインストールしてPC を再起動します。

PC を再起動後、冒頭の横着な grep コマンドで反映を確認して完了です。

 

ちなみに、BBR は Bottleneck Bandwidth and Round-trip propagation time の略で、Google が 2016 年に発表した比較的新しい輻輳制御アルゴリズムです。