Dynamic Class Control

$Date: 2019/09/17 08:42:45 $


概要

 従来のQoS技術では、事前にホストあるいはアプリケーションなどの単位でクラスを定義し、そのクラスごとに送信量の制御をすることはできても、刻々と変化するホスト単位での送信量に応じた動的なフロー制御を行うことは不可能でした。例えば、同じアプリケーションを利用しているユーザ間で、特定ユーザが帯域を占有するほどの過大な通信を行っていた場合、他のユーザの通信状況にまで影響が及びますが、この場合、どのユーザがどれほどの通信を行うのか事前に予測することは不可能であり、また、ユーザごとにクラス分けするといった行為も公平性に欠けてしまい、このような帯域の占有行為を防御するための有効な手段はありませんでした。
 Dynamic Class Control(DCC)とはQoSの技術の一つであり、ホストごとの送信量/受信量を監視し、その送信量/受信量に応じて動的にフロー制御をする技術です。同じクラスを使用しているトラフィックのうち、特定ユーザのトラフィックにより帯域の占有がなされている場合、その通信を自動的に一定時間遮断したり、使用可能な帯域を動的に変更します。これにより、前述した帯域の占有行為を防御することが可能となり、ユーザ間に公平性をもたらします。
 また、Rev.10.01系以降のファームウェアでは、WinnyやShareの検知、IPマスカレード変換セッション数制限をトリガとして、それらを使用しているホストのフローを制御することもできます。Dynamic Class Control により制御されていることをWeb画面上に表示してホストに通知することができます。


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

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

機種ファームウェア
vRX Rev.19.00.01以降
RTX830 Rev.15.02.01以降
NVR700W Rev.15.00.02以降
RTX1210 Rev.14.01.05以降
RTX5000 Rev.14.00.08以降
RTX3500 Rev.14.00.08以降
FWX120 Rev.11.03.02以降
RTX810 Rev.11.01.04以降
RTX1200 Rev.10.01.07以降
SRT100 Rev.10.00.08以降

詳細

DCC使用例

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


注意事項


コマンド


設定例

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

    [ネットワーク構成]
    • 本社-東京支社間で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) DCC で使用する転送先のクラスを用意します。
    (2) クラス2を使用する通信に対し DCC を実行します。
    reject を設定しているので、過剰に送信を行っているホストからの当該トラフィックを一定時間遮断します。
    (3) クラス3を使用する トンネル内の通信に対し DCC を実行します。
    過剰に送信を行っているホストからの当該トラフィックの使用するクラスを、一定時間クラス4へ変更します。


  2. ファイル交換ソフトなどの 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) 受信方向で QoS をかける必要があるため、LAN1 に QoS の設定をします。
    ファイル交換ソフトの多くは TCP を使用するため、受信側でホストに届く前に QoS でパケットを落とすことによって TCP のフロー制御が働き、当該コネクションのウィンドウサイズが小さくなることを利用します。
    なお、LAN側で QoS をかける場合、帯域を絞る必要はありません。この例では100BASE-TXを使用しているため、DCC で抑制するクラス3以外のクラス1/クラス2の帯域の上限値には LAN の最大速度である100Mを設定しています。WAN回線の下り速度が最大12Mであっても、瞬間的にバーストすることで受信速度が12Mを超えることもあり得るので、余裕を持った帯域を設定しておくのが良いでしょう。
    (2) DCC による制御を受けさせたくないパケットの使用するクラスを用意し、フィルタリングします。
    (3) DCC で使用する転送先のクラスを用意します。
    (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通知画面



参考情報