こぼれネット

tcの基本的コマンド

■tcを使って帯域を10Mbpsに制限する"だけ"のコマンド
sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 10kb latency 100ms
(burst 10kb latency 100msを付けないと、エラーになる)

■tcを使って遅延を500msに制限するだけのtcコマンド
sudo tc qdisc add dev eth0 root netem delay 500ms

■tcを使ってパケットロスを10%に制限する"だけ"のコマンド
sudo tc qdisc add dev eth0 root netem loss 10%

■tcを使ってパケットを保持できるキューの最大数を1000に制限する"だけ"のコマンド
sudo tc qdisc change dev eth0 root handle 1: pfifo limit 1000

分類 qdiscの名前 カーネルソースファイルの場所 概要
クラスレス qdisc pfifo_fast net/sched/sch_generic.c デフォルトのqdiscです。FIFOのキューが3つあります
pfifo net/sched/sch_fifo.c FIFOのキューが1つあります。キュー長の最大値はパケット数で表します
bfifo 同上 FIFOのキューが1つあります。 キュー長の最大値はバイト数で表します
sfq(Stochastic Fairness Queueing) net/sched/sch_sfq.c フローにもとづいてパケットをスケジューリングします。フローとは送信元/送信先IPアドレス、ポート番号の組です
tbf(Token Bucket Filter) net/sched/sch_tbf.c パケットシェーピング機能を提供します。制限レートを超えたパケットはキューに保留されます
netem(Network Emulator) net/sched/sch_netem.c 送信パケットに対して、パケット廃棄、遅延等の操作をするためのqdiscです
fq(Fair Queue Packet Schedule) net/sched/sch_fq.c Fair Queue Packet Scheduler (per flow pacing)
クラスフル qdisc prio net/sched/sch_prio.c ルールにしたがってパケットを分類(class)します。デフォルトでは3つのクラスがあります。それぞれのクラスにqdisc(sfq,tbf等)を設定することができます。
htb(Hierarchy Token Bucket) net/sched/sch_htb.c 1つのリンクを複数のサービス(www,ftp等)で共有する場合、各サービスに最低限必要な帯域を割り当てることができます

計測は、iperf3で行う

iPerf3を使用したネットワーク速度計測

sudo tc qdisc add dev eth0 root tbf rate 10mbit burst 10kb latency 100ms このコマンドにパケットロス10%を追加して下さい

sudo tc qdisc add dev eth0 root handle 1: tbf rate 10mbit burst 10kb latency 100ms sudo tc qdisc add dev eth0 parent 1:1 handle 10: netem loss 10%

 

 

 

モバイルバージョンを終了