カラクリスタ・テック

『輝かしい青春』なんて失かった人の技術系ブログです。

NixOS で TCP BBR を有効にした

今日、たまたまブログの更新チェックをしていた所、セコンさんの、

というブログ記事で TCP BBR と Shadowsocks という(中国の)金盾の回避ツールが紹介されていて、 TCP BBR と言うアルゴリズムと Shadowsocks というツールについて初めて知ったのですが、 モバイル環境でのセットアップはサーバが必要なのでとりあえず置いておくとして、 普段の自宅で固定回線で使ってる NixOS では TCP BBR は有効化出来そうだったので、とりあえずそっちを試してみました。

やり方

どうも TCP BBR の Linux Kernel でのサポートは 4.9 辺りで入ってるらしく、 nixpkgs での master ブランチにおける pkgs.linuxPackages_latest5.0.8 (2019-04-22時点)なので、 下記の設定を施すだけで NixOS での TCP BBR を有効にする事が出来ました。簡単ですね:

{ ... }:
{
  boot.kernelModules = [
    "tcp_bbr"
  ];

  boot.kernel.sysctl = {
    "net.core.default_qdisc" = "fq";
    "net.ipv4.tcp_congestion_control" = "bbr";
  };
}

で、早くなったのか

実のところ、ちゃんとベンチマークは取ってなかったので(ぉぃ 、 あんまり実感としては良くなってるのか分かってないのですが、 少なくとも、

でザックリと速度計測したところ、

下りが大体 30Mbps 前後、上りが 110Mbps 前後

という結果になりました。なお、ネットワークの環境としては、

  • 回線は NTT西日本のフレッツ光(だと思う。100Mbps * 2セッション張れるやつだった気がする)
  • プロバイダは OCN
  • Wi-Fi は AirMac Extreme 5th Gen

という感じです。

まぁ私の住んでいる地域の回線事情として、下りは詰りぎみのワリには上りがおかしなほど空いてる 、 と言うのが有るのですが、まぁ上りが契約回線の割には 110Mbps という上限を超えて張り付いてるレベルの速度が出てるんで、 たぶん効果は出ているんだと思います。はい。

以上

まぁ Windows や macOS で TCP BBR を有効にする方法は良く分かってない(というか調べてない)のでどうなってるかは知らないんですが、 少なくとも NixOS では最新の Linux Kernel を使っていれば上記の設定で TCP BBR を有効化できるので、 とりあえずで有効にしておいても損は無いと思います。

また NixOS であれば Shadowsocks のサービスも /etc/nixos/configuration.nix 経由でワリとラクに有効化できるっぽいので、 時間や機会が有れば、そちらも今後試してみたいと思ってます。はい。