Dynamic Class Control

概要

从前的QoS技术是事先以终端或应用为单位定义class,可以根据每个class来抑制发送量,但是不能根据时刻变化的终端的发送量进行动态的流控制。例如,使用同一应用的用户之间,某一个用户占用了特别大的带宽时,就会影响到其他用户,这种情况下,不可能事先预测哪个用户会进行通信,另外根据用户进行class的区分也有欠公平,所以没有有效的手段来防止这样的带宽占用行为。

Dynamic Class Control(DCC)是一种QoS技术,可以监控每个终端的发送量/接收量,根据发送量/接收量自动的进行流控制的技术。使用相同class的流量中,如有用户占用带宽的话,将自动的屏蔽该通信一段时间,自动变更可使用的带宽。由此,可以防止前面描述的带宽的占有行为,保证用户间的公平性。

另外,以Winny和Share的检测、IP伪装转换会话数的限制为触发器,可以限制使用它们的终端的flow。由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以后

详细

以进行上传带宽控制的网络(图1)为例,说明本功能实现动态flow控制的过程。另外,每个监控对象客户端的带宽可以从发送者或者接收者的观点进行设置,本例中设置的是以发送者观点,每个客户端的发送带宽的阈值。

DCC 导入前(左图)

  1. 作成QoS使用的class的定义,通过程序或者网络地址等区分数据包,连接到class上色。本例中,将声音的数据包设为class 1,其他的数据包设为class 2。
  2. 从各客户端处接收的数据包,分配到所属的class中,根据class的定义进行发送。
  3. 使用文件交换软件等的P2P程序的客户端PC和感染了病毒的Bot PC开始发送大量的流量,WAN的上传带宽中,分配给class 2的带宽收到压迫。同时,其他客户端PC可使用的带宽变得极其狭小。

DCC 导入后(右图)

  1. class 2中进行动态flow控制的设置(以发送源的客户端为单位的发送带宽阈值,检出超过阈值后的控制内容和控制时间)。
    # queue lan2 class control 2 forwarding=3 threshold=50%,60 time=300
    关于设置的内容,请参考后述的命令规格
  2. 发送带宽的监控设施检测到特定的客户端超过了发送带宽的阈值。
  3. 限制在5 中检测出的客户端的发送带宽,将该flow使用的class从2变为3。class 3是为了限制而事先分配的狭窄带宽。另外,class 3的带宽使用Dynamic Traffic Control的话,可以和class 2的带宽共享。
  4. 在5中检测到的客户端的发送带宽变小,其他客户端的带宽变大。
  5. 超过了设置的限制时间后,解除在6中进行的flow控制。另外,限制时间为无限制时,不会解除flow限制。
  6. 再次检测出发送带宽超过阈值时,返回6以后再重复。

注意事项

  • 只能在LAN接口上设置DCC。
  • 1个接口上,可以进行带宽监控的终端最大数为512。
  • 1个接口上,由DCC同时可控制的终端最大数为64。
  • 使用了DCC的接口如果同时使用带宽检测QoS或者负载通知QoS时,根据带宽检测QoS或者负载通知QoS动态变更接口的速度和class的带宽,因为发送带宽检测用的测定数据包时,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的Class内部也不能单独将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有效的Class(1..16)
  • IP_ADDRESS
    • IP地址 ... 设置监控对象,除去服务器等终端之后的IP地址(使用空格可以指定多个,使用减号「-」可以指定范围
  • OPTION = VALUE列
    OPTION VALUE 说明
    forwarding reject, 1..16 发现过量发送时,流量的转发目标Class
    watch source 以发送源IP地址为单位的带宽监控
    destination 以发送目的IP地址为单位的带宽监控
    threshold 占用量,秒数 设置判断为过量发送的带宽的占用量和占用时间的阈值,用逗号「,」分隔设置(占用量 1%..100%、秒数 10..86400)
    time infinity, 10..604800 发现过量发送的流量的屏蔽时间,或者是使用Class的变更时间(秒)
    mode forced 运行模式设置为强制控制模式
    adaptive 运行模式设置为适应控制模式
    trigger winny 将Winny检测作为触发器进行控制
    share 将Share检测作为触发器进行控制
    masquerade-session 将IP伪装转换会话数的限制作为触发器进行控制
    notice on 限制中会发送通知
    off 限制中不发送通知

[说明]

对于指定的接口,监控同一个终端是否有过量的发送/接收,压迫带宽的流量。

监控对象的接口适用的QoS类别为shaping时,监控的是queue INTERFACE class property 命令设置的对于Class带宽的占用量(设置了Class带宽的保证值和上限值时,是指保证值的占用量)。QoS 类别为priority时,监控的是接口带宽的占用量。监控时每隔10秒计算一次占用量,占用量超过指定的秒数时判定为超过阈值,设置为threshold=70%,30 时,带宽使用量10秒间超过70%以上且连续3次,判定为超过阈值。

检测到从同一个终端(watch = source)、或者发送给同一个终端(watch = destination)的过量发送时,该流量会被转发至 FORWARDING 参数指定的Class中,根据转发后的Class的设置进行数据包的发送。另外,FORWARDING参数指定为reject时,该流量被屏蔽。 而且,可以省略FORWARDING参数,这时不进行转发控制,超过threshold的终端可以通过show status qos命令确认。

TIME参数表示进行转发控制的时间,指定为infinity时,无期限的将对象流量屏蔽并改变使用的Class。

MODE参数可以指定运行模式。指定为forced时,超过THRESHOLD参数指定的占用时间后,直接进行该流量的控制。另外,超过了TIME参数指定的控制时间后,直接解除对该流量的控制。指定为adaptive时,即使超过了THRESHOLD参数指定的占用时间,带宽处于该Class的保证带宽的90%以下时,将保留控制。另外,即使超过了TIME参数指定的控制时间,带宽处于该Class的保证带宽的90%以上时,将保留控制解除。
保留控制的终端不会通过show status qos命令显示,控制保留期间打破threshold的占用率的话,控制将被解除。

TRIGGER参数指定路由器内部的事件即控制开始的触发器。可以用逗号「,」分开同记。

NOTICE参数可以指定是否发送通知给由Dynamic Class Control被限制的终端。设置为on 时,从该终端被限制开始,访问任意的HTTP服务器 (端口号:80)时,Web页面上会显示通知。NOTICE参数在内置了HTTP服务器功能的机型上可以使用。

[Note]

流量的转发只能进行1段。转发目标的Class也设置了该命令时,第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的设置信息和各Class的使用状态。

  • LAN接口名
  • 队列算法
  • 接口速度
  • Class数
  • 各Class的设置带宽,使用带宽,使用带宽的峰值和记录时间
  • 设置带宽的合计
  • 各Class的进队的成功次数/失败次数,出队的次数,当前的数据包数,数据包数的峰值和记录时间
  • 由Dynamic Class Control控制的终端的信息和控制内容

设置例

防止特定用户占用发送带宽

[网络构成]

  • 总公司-东京分公司间使用IPsec-VPN连接
  • 总公司使用终端型连接ISP

[东京分公司路由器的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使用的转发目标的Class。
  2. (2) 对于使用Class2的通信设置DCC。
    设置为reject,进行过量发送的终端的流量将被屏蔽一段时间。
  3. (3) 对于隧道内的使用Class3的通信设置DCC。
    进行过量发送的终端的流量转发至Class4一段时间。

防止文件共享软件等的P2P软件占用带宽

[网络构成]

  • 分支A使用网络型连接ISP
  • 分支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 控制的Class3以外的Class1/Class2的带宽的上限值可以设置为LAN的最大速度100M。即便WAN线路的下载速度最大为12M,但是瞬间的接收速率可能超过12M,可以设置为宽裕的带宽。
  2. (2) 设置DCC中的不希望接收的数据包的Class,将其过滤。
  3. (3) 设置DCC使用的转发目标的Class。
  4. (4) 对使用Class2的通信进行DCC。
    所有的UDP数据包和FTP以外的流量使用的是默认的Class2,因为长时间持续接收状态的话可以看做是文件共享软件的特性,为了只限制目标的流量,需要调整threshold参数。另外,因为是在接收方向运行DCC,目标终端为接收终端。所以,需要监控以目标IP地址为单位的带宽,将watch参数设置为destination。

    下面的mode参数设置为adaptive的话,包含文件共享软件的流量的Class2的使用带宽在未达到保证带宽5900Kbit/s的90%,5310Kbit/s时,不限制文件共享软件的流量,可以继续使用。Class2中文件共享软件以外的流量的使用带宽在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伪装转换会话数到达限制值时,不管使用带宽为多少,都将开始控制。

    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
    

    另外,被限制的终端通过Web访问任意的HTTP服务器的话,显示以下的通知页面。

参考信息

返回顶部Return to Top