Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

TCP BBRでLinuxサーバーの帯域幅を最大化する実践ガイド

TCP BBRとは?

BBR(Bottleneck Bandwidth and RTT)は、Googleのソフトウェアエンジニアが開発した比較的新しい輻輳制御アルゴリズムです。インターネットの基幹技術であるTCPプロトコルを通じてインターネット全体を高速化しようとするGoogleの取り組みの中で生まれた、最新のソリューションです。

BBRの主な目的は、ネットワーク利用率を高めるとともに、キュー(通信遅延の原因となるバッファの滞留)を削減することにあります。なお、BBRはサーバー側に導入すべきものであり、ネットワーク機器やクライアント側に導入するものではありません。Linuxでは、カーネルバージョン4.9以降でBBRが標準実装されています。

本記事では、まずTCP BBRについて簡単に解説し、その後、TCP BBR輻輳制御を活用してLinuxサーバーの通信速度を向上させる具体的な手順を紹介します。

前提条件

以下のオプションが有効化された(モジュールとして、またはカーネル組み込みとしてコンパイルされた)Linuxカーネル4.9以降がインストールされている必要があります。

  • CONFIG_TCP_CONG_BBR
  • CONFIG_NET_SCH_FQ
  • CONFIG_NET_SCH_FQ_CODEL

カーネルモジュールの確認方法

上記のオプションが使用中のカーネルに組み込まれているかどうかは、次のコマンドで確認できます。

# cat /boot/config-$(uname -r) | grep 'CONFIG_TCP_CONG_BBR'
# cat /boot/config-$(uname -r) | grep 'CONFIG_NET_SCH_FQ'

カーネルが古い場合は、事前にアップグレードしておきましょう。UbuntuやCentOS 7では、それぞれ最新カーネルへのアップグレード手順が公式ドキュメントや各種ガイドで公開されています。

TCP BBR輻輳制御の有効化

BBRはペーシング(pacing)と組み合わせて動作すると高い効果を発揮します。そのため、トラフィックのペーシングを担当するクラスレスパケットスケジューラであるfq qdiscと併用する必要があります。fq qdiscの詳細については、以下のコマンドでマニュアルを参照してください。

# man tc-fq

BBRの仕組みを理解したら、実際にサーバーへ設定を行いましょう。お好みのエディタで/etc/sysctl.confファイルを開きます。

# vi /etc/sysctl.conf

ファイルの末尾に、以下の2行を追加します。

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

編集が完了したらファイルを保存して閉じ、sysctlコマンドを実行して変更をシステム全体に反映させます。

# sysctl --system

設定が正しく適用されたかどうかは、以下のコマンドでも個別に確認できます。「bbr」と表示されれば成功です。

# sysctl net.ipv4.tcp_congestion_control

TCP BBR設定のテスト方法

必要な設定をすべて行ったら、実際に機能しているかどうかを検証しましょう。帯域幅の速度測定には、Speedtest-CLIのようなコマンドラインツールが便利です。双方向の通信速度を簡単に計測できます。

その他にも、bmon(帯域幅モニター)、nload、Wget(コマンドラインベースのファイルダウンロードツール)、cURLなど、ネットワーク帯域幅を可視化できるツールが複数あります。これらを活用して、BBR導入前後のスループットを比較してみてください。

BBRの公式GitHubリポジトリ:https://github.com/google/bbr

まとめ

本記事では、LinuxでTCP BBR輻輳制御を有効化し、サーバーの通信速度を向上させる方法を解説しました。BBRは特に帯域幅が広く遅延の大きいネットワーク環境で効果を発揮します。さまざまなシナリオで十分にテストを行い、ご自身の環境に最適な設定を見つけてください。

  1. Cockpit(コックピット)で実現するWebベースのLinuxサーバー管理 – インストールから使い方まで徹底解説

    Cockpitは、GNU/Linuxサーバー向けの軽量で直感的に操作できるリモート管理ツールです。Webブラウザ経由で対話型のサーバー管理インターフェースを提供し、ライブのLinuxセッションをそのまま操作できます。 RHEL系およびDebian系を中心に、Ubuntu、Linux Mint、Fedora、CentOS、Rocky Linux、AlmaLinux、Arch Linuxなど、幅広いディストリビューションで動作します。 Cockpitを活用すれば、コンテナの起動、ストレージ管理、ネットワーク設定、ログの確認といった日常的なシステム管理タスクを、管理者が簡単かつ確実に実行できるように

  2. Linuxのhistoryコマンドを完全マスター:覚えておきたい15の強力なテクニックと実例

    Linuxのコマンドラインを日常的に使っているなら、history(履歴)機能を効果的に活用することが生産性向上の大きな鍵となります。本記事で紹介する15の実例をマスターすれば、コマンドライン操作がこれまで以上に快適で楽しいものになるはずです。 1. HISTTIMEFORMATでタイムスタンプを表示する 通常、コマンドラインで「history」と入力すると、コマンド番号とコマンド内容が表示されるだけです。監査目的などでは、以下のようにタイムスタンプを併せて表示できると非常に便利です。 # export HISTTIMEFORMAT=%F %T # history | more 1 2008