Linux活用レシピ > KNOPPIXの活用 > 帯域制御装置の作成


帯域制御 - 帯域(速度)制限


    帯域制御PCで、帯域(速度)制限を行ってみます。

1. 「tc」コマンドによる帯域(速度)制限の設定

  • 以下の「tc」コマンドで、帯域(速度)制限をかけることができます。
  • root@Microknoppix;~# tc qdisc add dev eth0 root tbf rate 40mbit burst 20kb limit 200kb[ENTER]
    ここでは、ネットワークデバイス「eth0」から出ていくパケットに対して「40Mbps」の帯域(速度)制限をかけています。
    パラメータの説明は以下になります。
    パラメータ説明
    rate制限速度を指定します。40Mbpsでかける場合は、「40mbit」とします。
    [注意]40mbpsとしてしまうと40Mbyte/secと指定したことになり注意です。
    burstバッファサイズを以下の方法で求めて指定します。
    1. rateで指定したバイト数を求めます。ここでは40Mビットですので40÷8で5Mバイトになります。
    2. 以下のコマンドで帯域制御PCのタイマー割り込み周波数を求めます。
      root@Microknoppix;~# cat /boot/config-`uname -r` | grep 'CONFIG_HZ='[ENTER]
      この例では、以下のようになりました。
      CONFIG_HZ=250

    3. 1.の値を、2.の値で割りますと。burstで指定する最小バイト数になります。
      以下の式になります。
      5 * 10^6 / 250 = 20 * 10^3 = 20Kbyte
    limitburstで指定したバイト数より十分大きな値を指定します。ここではburst10倍の200Kbyteにしました。

      なお、既に定義が入っている場合は、以下の通りエラーが出ますので、
      RTNETLINK answars: File exists
      
      以下の通り、定義を削除してからコマンドを投入してください。
      root@Microknoppix;~# tc qdisc del dev eth0 root[ENTER]
      root@Microknoppix;~# tc qdisc add dev eth0 root tbf rate 40mbit burst 20kb limit 200kb[ENTER]
     
      また、これらはKNOPPIXのターミナルで作業を行います。ターミナルが起動できていない場合は、以下のターミナルアイコンをクリックし、

      以下の通りターミナルが起動しとところで、
      knoppix@Microknoppix:~$
      

      以下のコマンドで「root」ユーザに変更し、これまでのコマンドを実行してください。
      knoppix@Microknoppix;~$ su - [ENTER]
      root@Microknoppix;~#
      


2. 帯域(速度)制限の確認

  • 確認してみましょう。帯域制御PCをはさんで、Windows10のパソコンから以下の通りエクスプローラでファイルをコピーします。


  • 最初は順調にコピーされています。画面では平均11.4MB/sですので、91.2Mbpsの速度が出ていることになります。

    では、帯域制御PCのコンソールで、先ほどの帯域制限をかけます。
    root@Microknoppix;~# tc qdisc add dev eth0 root tbf rate 40mbit burst 20kb limit 200kb[ENTER]
    すると・・。

    一気に速度が低下しました。
    画面では平均4.82MB/sですので、38.56Mbpsの速度に落ちたことになり、ほぼ設定通りとなりました。
    そして、最後のほうは以下のように4.93MB/sとなり、39.44Mbpsと40Mbpsの帯域制限が機能しているのが分かります。


3. まとめ

    このように、帯域制御PCで帯域制限を自由にかけられますので、これをネットワーク上の装置間にはさみ込むことで、帯域が狭いWAN回線などのネットワーク越えの環境をシミュレーションできます。