启动脚本

CBQ的设置使用tc(traffic control)命令来进行。但是tc命令的选项很多,非常复杂。iproute工具包中含有读入配置文件并自动执行tc命令的启动脚本,这里就使用这个脚本。

这个启动脚本默认读入/etc/sysconfig/cbq/中的cbq-*文件。由于这里已经存在示例文件,因此可以尝试运行脚本。


chmod 777/usr/share/doc/iproute-2.6.18/examples/cbq.init-v0.7.3

/usr/share/doc/iproute-2.6.18/examples/cbq.init-v0.7.3 start

**CBQ:failed to compile CBQ configuration!


小贴士:RHEL6中有/etc/sysconfig/cbq/,但是没有cbq.init文件。RHEL6中的/sbin/cbq就相当于cbq.init。

在这个示例中进行CBQ的设置,就会出错。脚本已运行的命令记录在/var/cache/cbq.init中。


cat/var/cache/cbq.init

/sbin/tc qdisc del dev eth0 root

/sbin/tc qdisc add dev eth0 root handle 1 cbq bandwidth 10Mbit avpkt 3000 cell 8

/sbin/tc class change dev eth0 root cbq weight 1Mbit allot 1514

**CBQ:class ID of cbq-0000.example must be in range<0002-FFFF>!


最后显示的是错误的详细信息。cbq的配置文件名为/etc/sysconfig/cbq/cbq-<类ID>,类ID必须设置2以上的数值。

在上例中,对于配置文件由于类ID为0,因此启动失败。根据环境将文件名改为cbq-2.eth3再次运行。在eth3中将发往IP地址192.168.0.100的分组通信设置为100Mbit/sec。


cat/etc/sysconfg/cbq/cbq-2.eth3

DEVICE=eth3,1000Mbit,100Mbit

RATE=100Mbit

WEIGHT=10Mbit

RULE=192.168.0.100

mv/etc/sysconfg/cbq/cbq-0000.example/etc/sysconfg/cbq/_cbq-0000.example

/usr/share/doc/iproute-2.6.22/examples/cbq.init-v0.7.3 start


设置内容可以使用tc命令来确认。

tc-s-d class show dev eth3

或者也可以通过/var/cache/cbq.init的内容来确认。


cat/var/cache/cbq.init

/sbin/tc qdisc del dev eth3 root

/sbin/tc qdisc add dev eth3 root handle 1 cbq bandwidth 1000Mbit avpkt 3000

cell 8

/sbin/tc class change dev eth3 root cbq weight 100Mbit allot 1514

/sbin/tc class add dev eth3 parent 1:classid 1:2 cbq bandwidth 1000Mbit rate

100Mbit weight 10Mbit

prio 5 allot 1514

cell 8 maxburst 20 avpkt 3000 bounded

/sbin/tc qdisc add dev eth3 parent 1:2 handle 2 tbf rate 100Mbit buffer 10Kb/8 limit 15Kb mtu 1500

/sbin/tc filter add dev eth3 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.100 classid 1:2


使用下列命令也可以确认。


/usr/share/doc/iproute-2.6.22/examples/cbq.init-v0.7.3 list