2025-06-25

Linux の tc コマンドで受信速度を制限してみた

tc コマンドは Traffic Control なのですが、本来は送信を制御するためのコマンドなのです。

Ollama pull で大きいファイルをダウンロードする時に受信方向に対して帯域制限をかけたくて何かいい方法はないものかと調べてみたのですが、tc コマンドくらいしか見つかりませんでした。そして、tc コマンドは送信方向に対しての制御が目的のコマンドのようです。

う〜ん、どうしたものか。

 

送信方向しか制御できないのですよね、う〜ん。

TCP の通信って受信したよっていう ACK を応答するんだよね? ACK の応答を遅らせると相手は次のパケットを送ってこないのかな?そうすると結果的に受信レートを遅くできるのでは?

 

ということでやってみました。

sudo tc qdisc add dev eno1 root tbf rate 2mbit burst 50kb limit 300kb

勘で rate、limit の指定値を調整してみます。

ollama pull gemma3:27b

27B のモデルは 17GB もある巨大なファイルです。

sudo tc qdisc del dev eno1 root
sudo tc -s qdisc show dev eno1

無事に60分かからないくらいのゆっくり速度でダウンロードすることができました。

eno1 というネットワークインターフェイスに設定しているため、全てのアプリケーションのダウンロード速度が制限されます。お風呂に入っている時にでもダウンロードしておくのが良さそうです。 

ダウンロードが終わったら del コマンドで制御を解除して、show コマンドでデフォルト設定に戻っていることを確認して終了です。