Linux下的带宽控制通过队列实现,原理有通过延时和令牌的。而且广泛使用的是cbq队列。可笑的是这个恰恰是最复杂最难搞的一种队列,而且文档比较难懂。现在有一种新的htq队列相对配置比较简单,但是需要手工编译内核才能支持。
其实cbq如果有中文的文档,或许会比较好懂一点。:o
cbq基本使用步骤为:
1) 针对网络物理设备(如以太网卡eth0)绑定一个CBQ队列
2) 在该队列上建立分类
3) 为每一分类建立一个过滤器
给出偶的配置和注释,大家可能就会清楚了。偶的网络是用adsl拨号上网的,单网卡。
tc qdisc del dev eth0 root#删除从前的队列
tc qdisc add dev eth0 root handle 100: cbq bandwidth 10Mbit avpkt 1000
#在eth0上绑一个队列,物理带宽为10Mbit
tc class add dev eth0 parent 100:0 classid 100:1 cbq bandwidth 10Mbit rate 10Mbit allot 1514 weight 2Kbit prio 8 maxburst 8 avpkt 1000 bounded
#建立根类,根类不限速,所以偶没有指明adsl的实际速度,而是用网卡的速度来代替
tc class add dev eth0 parent 100:1 classid 100:2 cbq bandwidth 10Mbit rate 10Mbit allot 1513 weight 1Mbit prio 5 maxburst 8 avpkt 1000 bounded
#第一个子类,是为那些要全速的ip建立,比方偶:p
tc class add dev eth0 parent 100:1 classid 100:3 cbq bandwidth 10Mbit rate 1000Kbit allot 1513 weight 100Kbit prio 6 maxburst 8 avpkt 1000 bounded
#第二个子类,给网段中其他的人用
tc qdisc add dev eth0 parent 100:2 sfq quantum 1514b perturb 15
tc qdisc add dev eth0 parent 100:3 sfq quantum 1514b perturb 15
Linux下的带宽控制心得体会
内容版权声明:除非注明,否则皆为本站原创文章。