Dynamic Class Control

概要

従来のQoS技術では、事前にホストあるいはアプリケーションなどの単位でクラスを定義し、そのクラスごとに送信量の制御をすることはできても、刻々と変化するホスト単位での送信量に応じた動的なフロー制御を行うことは不可能でした。例えば、同じアプリケーションを利用しているユーザ間で、特定ユーザが帯域を占有するほどの過大な通信を行っていた場合、他のユーザの通信状況にまで影響が及びますが、この場合、どのユーザがどれほどの通信を行うのか事前に予測することは不可能であり、また、ユーザごとにクラス分けするといった行為も公平性に欠けてしまい、このような帯域の占有行為を防御するための有効な手段はありませんでした。

Dynamic Class Control(DCC)とはQoSの技術の一つであり、ホストごとの送信量/受信量を監視し、その送信量/受信量に応じて動的にフロー制御をする技術です。同じクラスを使用しているトラフィックのうち、特定ユーザのトラフィックにより帯域の占有がなされている場合、その通信を自動的に一定時間遮断したり、使用可能な帯域を動的に変更します。これにより、前述した帯域の占有行為を防御することが可能となり、ユーザ間に公平性をもたらします。

また、WinnyやShareの検知、IPマスカレード変換セッション数制限をトリガとして、それらを使用しているホストのフローを制御することもできます。Dynamic Class Control により制御されていることをWeb画面上に表示してホストに通知することができます。

対応機種とファームウェアリビジョン

ヤマハルーターでは以下の機種およびファームウェアで、Dynamic Class Control機能をサポートしています。

機種 ファームウェア
RTX5000 Rev.14.00.15以降
RTX820 Rev.11.03.16以降
RTX1200 Rev.10.01.20以降
RTX800 Rev.10.01.20以降

詳細

DCC使用例

上り帯域において帯域制御を行っているネットワーク(図1)を例に取り、本機能による動的なフロー制御を実現する過程を説明します。なお、監視対象とするクライアントごとの帯域は送信元と宛先のどちら側の視点でも設定することが可能ですが、この例では送信元のクライアントごとに送信帯域の閾値を設定します。

DCC 導入前(左図)

  1. QoSで使用するクラスの定義を作成し、アプリケーション、あるいは、ネットワークアドレスなどでパケットを色分けし、クラスへ紐付けます。ここでは、音声パケットはクラス1、その他のパケットをクラス2としています。
  2. 各クライアントから受信したパケットをそれぞれ当該クラスへ振り分け、クラス定義に応じた送信を行います。
  3. ファイル交換ソフトのようなP2Pアプリケーションを使用しているクライアントPCやウィルスに感染したボットPCが膨大なトラフィックを送信し始め、WANへの上り帯域のうち、クラス2へ割り当てられた帯域を逼迫し始めます。同時に、他のクライアントPCでは使用できる帯域が極端に狭くなります。

DCC 導入後(右図)

  1. クラス2へ動的なフロー制御を行うための設定(送信元のクライアント単位での送信帯域閾値、閾値超過検知後の制御内容や制御時間)をします。
    # queue lan2 class control 2 forwarding=3 threshold=50%,60 time=300
    設定内容については後述のコマンド仕様を参照してください。
  2. 送信帯域の監視機構が特定のクライアントにおいて送信帯域の閾値超過を検知します。
  3. 5 で検知したクライアントの送信帯域を制限するため、当該フローの使用するクラスを2から3へ変換します。クラス3は、制限をかけるために予め用意しておいたもので狭帯域が割り当てられています。なお、クラス3の帯域は、Dynamic Traffic Controlを利用すればクラス2の帯域と共有させることが可能です。
  4. 5 で検知したクライアントの送信帯域が狭くなり、他のクライアントの送信帯域が広くなります。
  5. 設定された制御時間が過ぎると、6 で行われたフロー制御は解除されます。なお、制御時間が無制限である場合は、フロー制御が解除されることはありません。
  6. 再び送信帯域の閾値超過を検知した場合は、6 へ戻り、以降繰り返します。

注意事項

  • LAN インタフェースにおいてのみ DCC が設定できます。
  • 1インタフェースにつき、帯域を監視できるホストの最大数は512です。
  • 1インタフェースにつき、DCC によって同時に制御可能なホストの最大数は64です。
  • DCC を適用しているインタフェースと同一のインタフェースで帯域検出QoS、または、負荷通知QoSを併用している場合、帯域検出QoS、または、負荷通知QoSにより、動的にインタフェース速度やクラス帯域が変更されたり、帯域検出用測定パケットの送信時にはQoSアルゴリズムが一時的に優先制御へ切り替わるため、そのタイミングで DCC の制御内容が全てリセットされます。この場合、両機能を有効に働かせるためには時間関連のパラメータを両機能で調整する必要があります。例えば、600秒間隔で帯域検出を行っているときに、queue INTERFACE class control コマンドの threshold オプションに threshold=30%,630 と設定しても DCC が過剰送信を検知することはできません。
  • Winny/Share検知をトリガとするには、別途Winny検知Share検知の設定が必要です。
  • IPマスカレード変換セッション数制限をトリガとするには、nat descriptor masquerade session limitコマンドの設定が必要です。
  • DCCを設定するインタフェースとWinny/Share検知もしくはIPマスカレードを設定するインタフェースは同じである必要はありませんが、queue class controlコマンドのwatchオプションはWinny/Share検知の監視対象となるホストもしくはIPマスカレードの内側アドレスを含むように設定する必要があります。
  • Winny/Share検知をトリガとした場合でもDCCが設定されているクラス内ではWinnyセッション、Shareセッションだけを制御の対象とすることはできず、必ずホスト単位で制御されます。
  • ホストへ制御されていることを通知するように設定してあっても、ポート番号80番以外のhttpサーバーやhttpsサーバーへアクセスした場合には通知画面は表示されません。
  • IPマスカレード変換セッション数制限をトリガとして制御が開始された場合、使用しているセッション数が制限数以下になるまでは新たなセッションを作ることができないため、通知画面は表示されずエラーとなります。また、DCCを設定しているインタフェースとWebアクセスに使用するインタフェースが同一かつ、 FORWARDING パラメータを reject に設定した場合、通知画面の表示の契機となるWebアクセスができなくなるため、通知画面は表示されずエラーとなります。

コマンド

Dynamic Class Control の設定

[書式]

queue INTERFACE class control CLASS [except IP_ADDRESS ...] [OPTION=VALUE ...]
no queue INTERFACE class control CLASS [except IP_ADDRESS ...]

[設定値]

  • INTERFACE ... LAN インタフェース名
  • CLASS ... DCCを有効にするクラス(1..16)
  • IP_ADDRESS
    • IPアドレス ... サーバなどの監視対象から除外するホストのIPアドレスを設定する(空白で区切って複数指定可能、ハイフン「-」を使用して範囲指定も可能)
  • OPTION = VALUE列
    OPTION VALUE 説明
    forwarding reject, 1..16 過剰送信と見なしたトラフィックの転送先のクラス
    watch source 送信元IPアドレス単位で帯域を監視する
    destination 宛先IPアドレス単位で帯域を監視する
    threshold 占有率,秒数 過剰送信と見なす閾値を帯域の占有率と占有時間をカンマ「,」で結び設定する(占有率 1%..100%、秒数 10..86400)
    time infinity, 10..604800 過剰送信と見なしたトラフィックを遮断する時間、または、使用するクラスを変更する時間(秒)
    mode forced 動作モードを強制制御モードにする
    adaptive 動作モードを適応制御モードにする
    trigger winny Winny検知をトリガとして制御を開始する
    share Share検知をトリガとして制御を開始する
    masquerade-session IPマスカレード変換セッション数制限をトリガとして制御を開始する
    notice on 制御されていることを通知する
    off 制御されていることを通知しない

[説明]

指定したインタフェースについて、同一のホストが過剰な送信/受信を行い、帯域を逼迫していないか監視をする。

監視対象のインタフェースに適用されている QoS 種別が shaping の場合は、queue INTERFACE class property コマンドで設定されたクラス帯域に対する占有率(クラス帯域に保証値と上限値を指定している場合は保証値に対する占有率)を監視する。QoS 種別が priority の場合は、インタフェース帯域に対する占有率を監視する。監視時は10秒毎に占有率を求め、その占有率が指定秒数を超えたときに閾値超過と判定される。例えば、threshold=70%,30 と設定した場合、帯域使用率70%以上である10秒間が連続して3回続いたときに閾値超過と判定される。

同一のホストから(watch = source)、あるいは、同一のホスト宛て(watch = destination)の過剰送信を検知した場合、そのトラフィックは FORWARDING パラメータに指定されたクラスへ転送され、転送先のクラス設定に従ってパケットの送出が行われる。なお、FORWARDING パラメータに reject を指定した場合、当該トラフィックは遮断される。また、FORWARDING パラメータは省略することも可能で、この場合転送制御は行われないが、threshold を超過しているホストを show status qos コマンドから確認することができる。

TIME パラメータは転送制御が行われる時間を示し、infinity を指定した場合は、無期限に対象のトラフィックの遮断、または、使用クラスの変更がなされる。

MODE パラメータは動作モードを指定する。forced を指定した場合は、THRESHOLD パラメータで指定した占有時間が経過したら直ちに当該フローの制御を実行する。また、TIME パラメータで指定した制御時間が経過したら直ちに当該フローの制御を解除する。adaptive を指定した場合は、THRESHOLD パラメータで指定した占有時間が経過しても当該クラスの使用帯域が保証帯域の90%未満である間は制御を保留する。また、TIME パラメータで指定した制御時間が経過しても当該クラスの使用帯域が保証帯域の90%以上である間は制御解除を保留する。
制御が保留されているホストは show status qos コマンドで表示されず、制御が保留されている間に threshold の占有率を割ったらその時点で制御は解除される。

TRIGGER パラメータは制御開始のトリガとなるルーター内部のイベントを指定する。カンマ「,」で区切って併記することができる。

NOTICE パラメータは Dynamic Class Control により制御されていることをホストに通知するかどうかを指定する。on を指定した場合は、当該ホストが制御されてから初めていずれかの HTTP サーバー (ポート番号:80) へ Web アクセスをしたときに、Web 画面上にその旨を表示して通知する。NOTICE パラメータはHTTP サーバー機能を搭載している機種で使用可能。

[ノート]

トラフィックの転送は1段のみ可能である。転送先のクラスにも当コマンドが設定されている場合、2段目の設定は無効となり、トラフィックの2重転送は行われない。

[初期値]

watch = source
threshold = 70%,30
time = 600
mode = forced
notice = on

QoSステータスの表示

[書式]

show status qos INFO [INTERFACE [CLASS]]

[設定値]

  • INFO ... 表示する情報の種類
    • bandwidth ... 使用帯域
    • length ... キューイングしているパケット数
    • dcc ... Dynamic Class Control の制御状況
    • all ... すべての情報
  • INTERFACE
    • LAN インタフェース名
    • 省略時、全ての LAN インタフェースについて表示する
  • CLASS ... クラス(RTX5000: 1..100; 他の機種: 1..16)

[説明]

インタフェースに対して、QoS の設定情報や各クラスの使用状況を表示する。

  • LAN インタフェース名
  • キューイングアルゴリズム
  • インタフェース速度
  • クラス数
  • 各クラスの設定帯域、使用帯域、使用帯域のピーク値と記録日時
  • 設定帯域の合計
  • 各クラスのエンキュー成功回数/失敗回数、デキュー回数、保持しているパケット数、パケット数のピーク値と記録日時
  • Dynamic Class Control により制御されているホストの情報と制御内容

設定例

特定ユーザによる送信帯域の占有を防止する

[ネットワーク構成]

  • 本社-東京支社間でIPsec-VPN接続
  • 東京支社はプロバイダへ端末型接続
ネットワーク構成

[東京支社ルーターの config 例]

ip route default gateway 172.16.10.254
ip route 192.168.1.0/24 gateway tunnel 1
ip lan1 address 192.168.2.1/24
queue lan2 type shaping
queue lan2 class property 1 bandwidth=15m
queue lan2 class property 2 bandwidth=4m
queue lan2 class property 3 bandwidth=10m
queue lan2 class property 4 bandwidth=100k                                      (1)
queue lan2 class control 2 forwarding=reject                                    (2)
queue lan2 class control 3 forwarding=4                                         (3)
ip lan2 address 172.16.10.1/24
tunnel select 1
 ipsec tunnel 101
  ipsec sa policy 101 1 esp aes-cbc sha-hmac anti-replay-check=off
  ipsec ike always-on 1 on
  ipsec ike pre-shared-key 1 text 2's-wA9R7+j9#k53I
  ipsec ike remote address 1 172.16.2.1
  queue tunnel class filter list 1 2
 tunnel enable 1
ipsec auto refresh on
queue class filter 1 1 ip * * tcp 108 *
queue class filter 2 3 ip * * tcp * ftp

[説明]

  1. (1) DCC で使用する転送先のクラスを用意します。
  2. (2) クラス2を使用する通信に対し DCC を実行します。
    reject を設定しているので、過剰に送信を行っているホストからの当該トラフィックを一定時間遮断します。
  3. (3) クラス3を使用する トンネル内の通信に対し DCC を実行します。
    過剰に送信を行っているホストからの当該トラフィックの使用するクラスを、一定時間クラス4へ変更します。

ファイル交換ソフトなどの P2P ソフトによる受信帯域の占有を防止する

[ネットワーク構成]

  • 拠点Aはプロバイダへネットワーク型接続
  • 拠点AのWAN回線の下り速度は最大12M
  • 拠点A内のLANは100BASE-TXを使用
  • 拠点A内のホストはNATを使用してインターネットへ接続
ネットワーク構成

[ルーターの config 例]

ip route default gateway 172.16.10.254
queue lan1 type shaping                                                         (1)
queue lan1 class filter list 1 2 3                                              (2)
queue lan1 class property 1 bandwidth=6m,100m                                   (2)
queue lan1 class property 2 bandwidth=5900k,100m
queue lan1 class property 3 bandwidth=100k                                      (3)
queue lan1 class control 2 forwarding=3 watch=destination                       (4)
 threshold=20%,300 time=1800
ip lan1 address 192.168.1.1/24
ip lan2 address 172.16.10.1/24
ip lan2 nat descriptor 1
nat descriptor type 1 nat
nat descriptor address outer 1 172.16.10.1-172.16.10.10
nat descriptor static 1 1 172.16.10.1=192.168.1.10 10
queue class filter 1 1 ip * * udp * *
queue class filter 2 1 ip * * tcp ftp *
queue class filter 3 1 ip * * tcp * ftp

[説明]

  1. (1) 受信方向で QoS をかける必要があるため、LAN1 に QoS の設定をします。
    ファイル交換ソフトの多くは TCP を使用するため、受信側でホストに届く前に QoS でパケットを落とすことによって TCP のフロー制御が働き、当該コネクションのウィンドウサイズが小さくなることを利用します。
    なお、LAN側で QoS をかける場合、帯域を絞る必要はありません。この例では100BASE-TXを使用しているため、DCC で抑制するクラス3以外のクラス1/クラス2の帯域の上限値には LAN の最大速度である100Mを設定しています。WAN回線の下り速度が最大12Mであっても、瞬間的にバーストすることで受信速度が12Mを超えることもあり得るので、余裕を持った帯域を設定しておくのが良いでしょう。
  2. (2) DCC による制御を受けさせたくないパケットの使用するクラスを用意し、フィルタリングします。
  3. (3) DCC で使用する転送先のクラスを用意します。
  4. (4) クラス2を使用する通信に対し DCC を実行します。
    UDP パケットと FTP 以外のトラフィックではすべてデフォルトクラスのクラス2が使用されますが、長時間受信状態が続くというファイル交換ソフトの特性を踏まえ、目的のトラフィックだけが制御されるように threshold パラメータを調整します。また、受信方向に DCC を実行するので、受信ホストは宛先ホストとなります。よって、宛先IPアドレス単位で帯域の監視をするように watch パラメータには destination を設定します。

    以下のように mode パラメータに adaptive を設定すれば、ファイル交換ソフトのトラフィックも含めてクラス2の使用帯域が同クラスの保証帯域5900Kbit/sの90%である5310Kbit/s未満である間はファイル交換ソフトのトラフィックも制御されずに帯域を使い続けることができますが、クラス2を使用するファイル交換ソフト以外のトラフィックの使用帯域が5310Kbit/s以上である間はファイル交換ソフトのトラフィックは制御され続けます。

    queue lan1 class control 2 forwarding=3 watch=destination threshold=20%,300 time=1800 mode=adaptive
    

    以下のように LAN2 の out 方向にWinny検知を設定したうえで trigger パラメータに winny を設定すると、LAN1配下のホストによる Winny の使用を検知した時点でその使用帯域に依らずに制御を開始します。

    queue lan1 class control 2 forwarding=3 watch=destination threshold=20%,300 time=1800 trigger=winny
    ip lan2 secure filter out dynamic 100
    ip lan2 intrusion detection out on
    ip lan2 intrusion detection winny on
    ip lan2 intrusion detection default off
    ip filter dynamic 100 * * tcp
    

    以下のように LAN2 にIPマスカレードを設定したうえで trigger パラメータに masquerade-session を設定すると、LAN1配下のホストのIPマスカレード変換セッション数がIPマスカレード変換セッション数制限機能の制限値に達した時点でその使用帯域に依らずに制御を開始します。

    queue lan1 class control 2 forwarding=3 watch=destination threshold=20%,300 time=1800 trigger=masquerade-session
    ip lan2 nat descriptor 1
    nat descriptor type 1 masquerade
    nat descriptor masquerade session limit 1 1 200
    

    なお、制御されているホストが初めていずれかの HTTP サーバーへ Web アクセスをすると以下のような通知画面が表示されます。

    DCC通知画面

参考情報

ページトップへ戻る