Linuxネットワーク最適化ツール「Tenyendama Linux Network Optimizer」を公開しました

Linux

Linuxネットワーク最適化ツールを公開しました

Linux環境のネットワーク設定を実測し、TCP輻輳制御とqdiscの組み合わせを安全に比較できるツール「Tenyendama Linux Network Optimizer」を開発しました。

2026年7月29日、通信経路の検証機能などを強化したv3.0.1をGitHubで公開しています。

GitHub - ultrasukiyaki/tenyendama-linux-network-optimizer: A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC settings, recommends the best profile, and provides verified rollback.
A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC ...

最新版のリリースページはこちらです。

Release Tenyendama Linux Network Optimizer v3.0.1 ?? ultrasukiyaki/tenyendama-linux-network-optimizer
HighlightsAdded IPv4/IPv6 route validation for Cloudflare benchmark connections.Added per-destination ip route get verif...

Tenyendama Linux Network Optimizerは、単にBBRを有効化したり、定番のsysctl設定を一括適用したりするツールではありません。

現在のネットワーク設定と複数の候補を実際に測定し、速度、遅延、安定性、通信プロトコル、通信経路などを確認したうえで、明確に有利と判断された設定だけを永続化候補として提示します。

測定結果に十分な差がなければ、無理に設定を変更せず、現在の設定を維持します。

Tenyendama Linux Network Optimizerとは

Tenyendama Linux Network Optimizerは、Linux向けのネットワークベンチマーク・自動最適化ツールです。

主に、次のTCP輻輳制御とqdiscの組み合わせを実測比較します。

  • CUBICとfq
  • BBRとfq
  • CUBICとfq_codel

ネットワーク最適化では、「BBRにすれば必ず速くなる」「fq_codelを使えば遅延が減る」といった情報を見かけることがあります。

しかし、最適な設定は回線、ISP、ルーター、Linuxカーネル、NIC、接続先、時間帯などによって変わります。

そのため、本ツールでは特定の設定を最初から正解と決めつけず、利用している環境で実際に比較する方式を採用しました。

開発した理由

Linuxのネットワーク最適化情報を検索すると、次のような設定をまとめて適用するスクリプトが数多く見つかります。

  • BBRを有効化する
  • TCPバッファサイズを変更する
  • sysctlのパラメーターを大量に変更する
  • qdiscを特定の方式へ固定する

これらの設定が有効な環境もありますが、すべてのLinux環境で同じ効果が得られるとは限りません。

設定変更前後の測定が不十分だったり、どのNICから通信しているのか確認していなかったりすると、実際には別の通信経路を測定している可能性もあります。

また、VPNやWi-Fi、仮想インターフェースを経由した測定結果を、そのまま物理NICの最適化判断に使用するのも危険です。

そこでTenyendama Linux Network Optimizerでは、次の方針を重視しました。

  • 推測ではなく実測で比較する
  • 通信プロトコルと実際の通信経路を確認する
  • 明確な性能差がない場合は現在の設定を維持する
  • 異常終了しても開始前の設定へ戻す
  • 永続化前に必ずバックアップを作成する

Tenyendama Linux Network Optimizerの主な特徴

BBR・CUBIC・qdiscを実測比較

Tenyendama Linux Network Optimizerは、現在の設定と複数の候補を順番に適用し、Cloudflare Speed Testを利用して比較します。

単純なダウンロード速度だけではなく、中央値、パーセンタイル、変動係数、Loaded latency、レイテンシスパイクなども評価します。

候補を測定する順番による偏りを減らすため、ウォームアップと均衡化された測定順序も採用しています。

IPv4とIPv6の実通信経路を検証

v3.0.1では、Cloudflareベンチマーク通信のIPv4・IPv6経路検証を強化しました。

Chromium DevTools Protocolを使用し、Cloudflareのダウンロード・アップロード通信で実際に接続したリモートIPアドレスを取得します。

取得した各IPアドレスに対して「ip route get」を実行し、Linuxがどのネットワークインターフェースから通信しているか確認します。

論理インターフェースから物理NICまで追跡

Linuxでは、ルーティング結果に表示されるインターフェースが、必ずしも物理NICとは限りません。

bridge、bond、VLAN、仮想リンクなどを利用している場合、通信は複数の論理インターフェースを経由して物理NICへ到達します。

Tenyendama Linux Network Optimizerは、ルーティングインターフェースから実際の物理egressまでを追跡します。

たとえば、次のような通信経路を検証できます。

bridge0 → enp1s0

選択した物理NICと実際の通信経路が一致しない測定は、最適化スコアから除外されます。

TCP以外の測定を除外

BBRやCUBICはTCP輻輳制御アルゴリズムです。

そのため、HTTP/3やQUICを利用した通信を測定しても、TCP輻輳制御の正しい比較にはなりません。

本ツールでは、Chromiumが使用した通信プロトコルを確認し、HTTP/3・QUICが検出された測定をTCP比較から除外します。

HTTP/1.1またはHTTP/2を使用した測定だけを評価対象にします。

Wi-Fi・VPN・トンネル経由の測定を除外

次のような通信経路が検出された場合、その測定結果は最適化判断に使用しません。

  • 想定外のネットワークインターフェース
  • Wi-Fiインターフェース
  • VPN
  • トンネルインターフェース
  • 物理egressを確認できない経路

「ベンチマーク自体は成功しているが、最適化対象とは異なる経路を通っていた」という誤判定を防ぎます。

探索と確認の二段階ベンチマーク

自動最適化では、一度の測定結果だけで設定を永続化しません。

最初に複数候補を比較する「探索」を実行します。

探索で現在の設定とは異なる候補が首位になった場合、首位候補と現在の設定を改めて比較する「確認」を実行します。

探索と確認の両方で同じ候補が勝ち、スコア差や遅延などの安全条件を満たした場合だけ、永続化候補として表示されます。

わずかな差では設定を変更しない

ネットワークベンチマークの結果は、時間帯や接続先の負荷によって変動します。

そのため、わずかなスコア差だけで設定を変更すると、実際には誤差だったという可能性があります。

Tenyendama Linux Network Optimizerでは、既定値でスコア差が2点未満の場合は同点として扱います。

明確な改善が確認できなければ、現在の設定を維持します。

レイテンシスパイクもチェック

通信速度が高くても、負荷がかかったときに遅延が大きくなる設定は、日常利用で快適とは限りません。

本ツールでは、Loaded latencyと反復するレイテンシスパイクを確認します。

100msを超えるスパイクが繰り返し発生する候補や、Loaded latencyが250msを超える候補は永続化しません。

異常終了時も開始前の設定へ復元

ベンチマーク中はTCP輻輳制御やqdiscを一時的に切り替えますが、正常終了時だけでなく異常終了時にも開始前の設定へ戻す設計になっています。

ベンチマーク専用の「benchmark」コマンドは、測定結果にかかわらず設定を永続化しません。

バックアップとロールバックに対応

設定を永続化する前には、既存設定を次のディレクトリへ保存します。

/var/lib/tenyendama-netopt/backups/

「rollback」コマンドを実行すると、直前の状態へ戻せます。

複数回設定を変更した場合も、バックアップは巻き戻しチェーンとして保持されます。

CSV・JSON・Markdownレポートを出力

測定結果は、CSV、JSON、Markdownなどの形式で確認できます。

v3.0.1では、測定値だけでなくIPv4・IPv6の接続先、ルーティングデバイス、物理egressなどの通信経路情報もレポートへ追加しました。

設定変更の判断材料を後から確認したり、異なる時間帯の結果を比較したりできます。

v3.0.1の主な変更点

Tenyendama Linux Network Optimizer v3.0.1では、主にベンチマークの信頼性と通信経路の検証を強化しました。

  • Cloudflareベンチマーク通信の経路検証を追加
  • IPv4・IPv6のリモートIPアドレス取得に対応
  • 各接続先に対する「ip route get」検証を追加
  • 論理インターフェースから物理egressまでの追跡を追加
  • 想定外のNICを使用した測定を除外
  • IPv4・IPv6が異なる経路を通る場合の警告を追加
  • CSV・JSON・Markdownレポートへ通信経路情報を追加
  • 永続化条件の検証を強化
  • 英語版と日本語版のドキュメントを分離

リリース前の実環境テストでは、IPv6通信が「bridge0 → enp1s0」を通過していることを確認できました。

また、比較結果のスコア差が安全基準を下回ったため、既存の「bbr-fq」設定を維持しました。

自動最適化ツールであっても、変更しないほうが安全と判断した場合は現在の設定を残すことが、本ツールの重要な特徴です。

必要な環境

Tenyendama Linux Network Optimizerを使用するには、次の環境が必要です。

  • Linux
  • Node.js 20.19以上
  • npm・npx
  • ipコマンド
  • tcコマンド
  • sysctl
  • sudo
  • Playwright Chromium

Node.jsは、本ツールが対応する最新のLTS版を推奨しています。

セットアップ方法

最初にGitHubからリポジトリを取得します。

GitHub - ultrasukiyaki/tenyendama-linux-network-optimizer: A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC settings, recommends the best profile, and provides verified rollback.
A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC ...

リポジトリのディレクトリへ移動し、依存パッケージとPlaywright Chromiumをインストールします。

npm install
npx playwright install chromium
./setup.sh --check-only

「setup.sh –check-only」は、必要なコマンドや環境が揃っているかを確認するためのコマンドです。

Node.jsやnpmの導入方法については、日本語ドキュメントも用意しています。

https://github.com/ultrasukiyaki/tenyendama-linux-network-optimizer/blob/v3.0.1/docs/ja/INSTALL-NODEJS.md

基本的な使い方

動作環境を確認する

./bin/tenyendama-netopt check

必要なコマンド、カーネル機能、利用可能なTCP輻輳制御、qdisc、ネットワークインターフェースなどを確認します。

ベンチマークだけを実行する

./bin/tenyendama-netopt benchmark --preset standard --mode balanced

「benchmark」コマンドは設定を一時的に切り替えて比較しますが、結果を永続化しません。

まず測定結果だけを確認したい場合に適しています。

自動最適化を実行する

./bin/tenyendama-netopt optimize --mode balanced

複数候補の探索と、首位候補の確認を実行します。

安全条件を満たす候補が見つかった場合だけ、設定を永続化するかユーザーへ確認します。

確認なしで勝手に永続化されることはありません。

現在の状態を確認する

./bin/tenyendama-netopt status

現在適用されているTCP輻輳制御やqdisc、永続化された設定などを確認します。

直前の設定へ戻す

./bin/tenyendama-netopt rollback

永続化した設定に問題がある場合は、直前のバックアップへ戻せます。

利用時の注意点

ネットワークの測定結果は、Cloudflareエッジ、ISPの経路、ルーターの状態、バックグラウンド通信、接続先の混雑、時間帯などによって変動します。

一度の測定だけで判断せず、重要な環境では異なる時間帯にも「benchmark」を実行し、複数のレポートを比較してください。

また、本ツールはネットワーク設定を扱います。

ローカルコンソールへアクセスできないリモートサーバーや、本番環境で利用する場合は、事前にバックアップと復旧手段を確認してください。

このツールがおすすめの人

Tenyendama Linux Network Optimizerは、次のような人におすすめです。

  • Linuxのネットワーク速度や遅延を改善したい
  • BBRとCUBICのどちらが自分の環境に適しているか確認したい
  • fqとfq_codelを実測比較したい
  • BufferbloatやLoaded latencyが気になる
  • 定番設定を無条件で適用することに不安がある
  • 設定変更前後の結果をレポートとして残したい
  • 問題が起きたときに元の設定へ戻せるツールを使いたい

よくある質問

実行すれば必ず通信速度が上がりますか?

必ず速くなるわけではありません。

回線や現在の設定によっては、候補間に明確な性能差が出ない場合があります。

その場合、本ツールは無理に設定を変更せず、現在の設定を維持します。

benchmarkコマンドで設定が永久に変更されますか?

変更されません。

「benchmark」コマンドによる設定変更は測定中だけで、終了時には開始前の設定へ復元されます。

自動的にBBRへ変更されますか?

BBRが必ず選ばれるわけではありません。

BBRとCUBICを実測比較し、探索と確認の両方で明確な差が確認できた候補だけが永続化候補になります。

VPN接続中でも測定できますか?

VPNやトンネルを経由した測定は、物理NICの最適化判断には採用されません。

正確に比較する場合は、最適化対象の物理NICから直接通信できる状態で実行してください。

設定を元に戻せますか?

「rollback」コマンドで直前の状態へ戻せます。

複数回の設定変更も、バックアップチェーンとして管理されます。

まとめ

Tenyendama Linux Network Optimizerは、LinuxのTCP輻輳制御とqdiscを実測比較し、安全性を確認できた設定だけを永続化するネットワーク最適化ツールです。

BBRやCUBICなどの設定を一律に適用するのではなく、現在の環境で本当に効果があるかを測定します。

v3.0.1ではIPv4・IPv6の接続先と実通信経路を検証し、bridge、bond、VLANなどの論理インターフェースから物理NICまで追跡できるようになりました。

測定経路や通信プロトコルに問題があるデータは除外されるため、より信頼性の高い比較が可能です。

Linuxのネットワーク設定を安全に見直したい方は、ぜひ試してみてください。

GitHub - ultrasukiyaki/tenyendama-linux-network-optimizer: A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC settings, recommends the best profile, and provides verified rollback.
A safety-first Linux network benchmarking and auto-tuning toolkit that compares TCP congestion control, qdiscs, and NIC ...
Release Tenyendama Linux Network Optimizer v3.0.1 ?? ultrasukiyaki/tenyendama-linux-network-optimizer
HighlightsAdded IPv4/IPv6 route validation for Cloudflare benchmark connections.Added per-destination ip route get verif...

コメント

タイトルとURLをコピーしました
~