tianci3982730 回复于:2004-08-03 10:29:31 |
cbq的实现原理是通过tc来实现的。所以系统首先装有tc哦 如果不用cbq可以把下面的内容改成适合你的就可 /sbin/tc qdisc del dev eth1 root /sbin/tc qdisc add dev eth1 root handle 1 cbq bandwidth 100Mbit avpkt 1000 cell 8 /sbin/tc class change dev eth1 root cbq weight 10Mbit allot 1514 /sbin/tc class add dev eth1 parent 1: classid 1:2 cbq bandwidth 100Mbit rate 4Mbit weight 400Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1 000 bounded /sbin/tc qdisc add dev eth1 parent 1:2 handle 2 tbf rate 4Mbit buffer 10Kb/8 limit 15Kb mtu 1500 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.2 00.86 classid 1:2 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.2 00.86 classid 1:2 /sbin/tc class add dev eth1 parent 1: classid 1:3 cbq bandwidth 100Mbit rate 4Mbit weight 40Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 10 00 bounded /sbin/tc qdisc add dev eth1 parent 1:3 handle 3 tbf rate 4Mbit buffer 10Kb/8 limit 15Kb mtu 1500 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1 00.21 classid 1:3 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1 00.21 classid 1:3 /sbin/tc class add dev eth1 parent 1: classid 1:4 cbq bandwidth 100Mbit rate 200Kbit weight 20Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded /sbin/tc qdisc add dev eth1 parent 1:4 handle 4 tbf rate 200Kbit buffer 10Kb/8 limit 15Kb mtu 1500 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1 00.51/32 classid 1:4 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1 00.51/32 classid 1:4 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1 00.41/32 classid 1:4 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1 00.41/32 classid 1:4 /sbin/tc class add dev eth1 parent 1: classid 1:10 cbq bandwidth 100Mbit rate 800Kbit weight 80Kbit prio 5 allot 1514 cell 8 maxburst 20 avpkt 1000 bounded /sbin/tc qdisc add dev eth1 parent 1:10 handle 10 tbf rate 800Kbit buffer 10Kb/8 limit 15Kb mtu 1500 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1081 0xffff match ip dst 192.168.1 00.0/24 classid 1:10 /sbin/tc filter add dev eth1 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.1.0/24 match ip sport 1080 0xffff match ip dst 192.168.1 00.0/24 classid 1:10 tc教程可参考http://www.ms555.cn/linux/sysadmin/39.html 不过个人觉得对于新手来说还是 cbq来的快 |
seacaptain 回复于:2004-08-03 10:33:40 |
实验一下。支持 |
tianci3982730 回复于:2004-08-03 10:41:51 |
如果没做NAT上传的做法跟下传的方法是一致的 好像要使用iptable才能应用限制带宽的(我也不是太肯定) 对于限制带宽的第一个地址如:xxx.xxx.xxx.1好像有问题,要避开限制第一个地址 如做了NAT上传带宽的限制在iptable的策略中要加 iptables -t mangle -A PREROUTING -s YOUR_INTERNAL_IP -j MARK --set-mark DECIMAL_NUMBER 无非是将你要限制的东西给标出来,再在你对应的cbq-xxx.xxx中 MARK=DECIMAL_NUMBER 这个数字可以很大的。 限制下传的: DEVICE=eth0,10Mbit,1Mbit RATE=240Kbit WEIGHT=24Kbit PRIO=5 RULE=172.16.0.100 限制上传的: DEVICE=eth1,10Mbit,1Mbit RATE=64Kbit WEIGHT=8Kbit PRIO=5 MARK=2 |
jingtuling 回复于:2004-08-03 17:24:22 |
我也同样的给你顶一下吧。让更多的人学习与了解。 |
llzqq 回复于:2004-08-03 17:39:52 |
限速的稳定性如何? |
tianci3982730 回复于:2004-08-04 08:50:52 |
一直在用,觉得非常稳定 |
platinum 回复于:2004-08-04 09:24:09 |
tc的缺点就是太复杂了!讲的详细的资料也不多…… |
tianci3982730 回复于:2004-08-04 10:43:46 |
tc是很复杂。不详细也是真的。不过觉得只有几处好象不必去深研究。 觉得tc 还是要比cbq.init好用对于高手而言哦 tc的配置更加灵活 |
wind521 回复于:2004-08-04 11:23:05 |
这样的东东我记得还有几个,主要是基于TC来实现的 如果想搞个明白的话,就多研究一下TC |
eagerlinuxer 回复于:2004-08-04 14:17:43 |
问一下,如果要定义的规则的端口是一段端口如5000-6000,这个规则怎么定义? |
tianci3982730 回复于:2004-08-04 16:01:36 |
的确很难哦。查了下英文文档,没有这方面的说明 看来只能自己写个脚本了 不知道还有什么方法 |
jgkc 回复于:2004-08-04 16:37:08 |
cbq的的实现是最复杂,最烦琐,当然也是最难理解的,但不能说作者不称职,这是各方面原因造成的, 咱们这些小人物在这儿还没有资格评论,呵呵 所以我现在就不用cbq了,用htb来实现,非常简单,完全能代替cbq. 还有,如果你有多个网卡,要考虑统一流量整型的话,建议用imq设备来实现 非常棒 我现在就是这么做的 |
tianci3982730 回复于:2004-08-04 17:09:10 |
楼上真是有见地哦 不过我目前的网络是直接用tc实现的 写这片文章的目的也只是想给新手介绍下cbq |
jgkc 回复于:2004-08-04 17:22:42 |
都是tc实现的啊, 只是用的队列不同而已, 目的就只有一个-流量控制 |
leehugh007 回复于:2004-10-19 01:43:37 |
請教學長: 關於CBQ的部份看起似乎無法突破多張網路介面卡的限制. 即是說假設混頻成功.即併線成功.有三張以上的網路介面卡的話 即無法達成成功把下面C class 的ip 限制在一個點上. 即假設你有三張網路卡.一張對內.兩張對外. 對內部份成功鎖住下載沒問題.不管妳有幾張卡.(這點是我比較搞不懂的地方.為何上傳不能一樣如此做) 即必須在兩張網卡都設定妳限制的頻寛.但這樣即失去混頻的義意. 在這裡有一個想法不知有沒有大大能夠提供不足之處. 假設下載是eth0, 上傳是eth1,eth2 原則上不管上傳下載是不是都得透過eth0之後再透過nat轉到eth1,eth2上面 那我能不能在eth1,eth2各設個母規則.即parent class 讓eth0去遵照eth1,eth2, 的規定來. 但目前來看在宣告部份都有特別指定裝置部份. 不知道有沒有辦法突破此一限制. 己找出為何下載部份不管如何設不管幾張網卡都可控制頻寬. 因為CBQ的規則裡.192.168.X.0/24 是由eth0 來配送ip的 所以不管妳有幾張網卡.nat底下的用戶都是依據eth0的母規則來走的 但上傳部份卻不能如此做. 不知學長能不能指教指教 |
wingger 回复于:2005-03-12 14:11:50 |
[quote:586dd40529="eagerlinuxer"]问一下,如果要定义的规则的端口是一段端口如5000-6000,这个规则怎么定义?[/quote:586dd40529] 用iptables的mark |
守夜人 回复于:2005-03-12 15:24:15 |
但TC有个非常大的问题,那就是只能针对单IP限速,对整段限速不行(就是整个网段所有IP使用同样带宽策略如每IP分100K/ser) |
leehugh007 回复于:2005-03-13 13:58:55 |
[quote:2cb82f1374="守夜人"]但TC有个非常大的问题,那就是只能针对单IP限速,对整段限速不行(就是整个网段所有IP使用同样带宽策略如每IP分100K/ser)[/quote:2cb82f1374] 那不知学长知道有何伫列能够实现上面学长所讲的方式 |