关于tc中不受流量控制的问题!

发布于 2022-07-24 19:49:07 字数 449 浏览 15 评论 7

大家好!在这里有些tc的问题想跟大家探讨一下!
应用模式是一个用户上来生成一条类和这个类下面的一个过滤器。
语句如下:
tc class add dev eth0 parent 1:1 classid 1:1 cbq rate 1Mbit prio 7 allot 1514 bounded
tc filter add dev eth0 parent 1:1 protocol ip prio 7 u32 match ip src 172.111.1.116 flowid 1:1
每个用户登录上来的时候都生成自己对应的类和这个类下面的一个过滤器。
现在出现的一个情况是,用户已经生成了自己的类和过滤器,但是它却不受流量的限制,也就是说不受tc控制。请问,这种情况是怎么一回事,如何才能避免?欢迎大家发表自己的看法!
(注:本人可能说问题说得不够详细,也欢迎大家多提出自己对这问题的疑问以获取更详细的说法,谢谢!)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

北渚 2022-07-24 22:06:15

我以前测试过cbq,总是控制不好,不知是否参数的问题,后来改用HTB,效果就不错,建议楼主试一下,脚本如下:

初始化脚本

  1. tc qdisc add dev eth0 root handle 1: htb default 99
  2. tc qdisc add dev eth1 root handle 1: htb default 99
  3. tc class add dev eth0 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit
  4. tc class add dev eth1 parent 1: classid 1:1 htb rate 100Mbit ceil 100Mbit

复制代码
设置带宽控制

  1. tc class add dev eth0 parent 1:1 classid 1:10 htb rate {上行带宽} ceil {最高上行带宽} prio {优先级}
  2. tc class add dev eth1 parent 1:1 classid 1:10 htb rate {下行带宽} ceil {最高下行带宽} prio {优先级}
  3. tc filter add dev eth0 parent 1:1 protocol ip prio {优先级} handle 10 fw classid 1:10
  4. tc filter add dev eth1 parent 1:1 protocol ip prio {优先级} handle 10 fw classid 1:10
  5. iptables -t mangle -s xxx.xxx.xxx.xxx -j MARK --set-mark 10
  6. iptables -t mangle -d xxx.xxx.xxx.xxx -j MARK --set-mark 10

复制代码
注意 iptables mark 的数值 中和 tc filter 中的hangle 要对应

[ 本帖最后由 ippen 于 2006-7-5 13:41 编辑 ]

一百个冬季 2022-07-24 22:06:15

好,我先试试~~~~~~~~~~~

十二 2022-07-24 22:06:15

有了新进展,有些东西是我搞错了,原来不受控制的用户没有在队列生成~!

抚你发端 2022-07-24 22:06:12

我描述一下实现思路吧:
eth0:控制上行
eth1:控制下行

tc程序做了两个,一个是控制上行,一个是控制下行的。
当有用户登录上来的时候,根据这用户的带宽设定生成对应的控制。生成规则是一个用户在一个方向上生成一条class和一条filter,就是说如果有10个用户的话就有10条class和对应10条filter。

eth0:
class生成语句:
dev eth0 parent 1:1 classid 1:31 cbq bandwidth 100Mbit rate 1Mbit maxburst 20 allot 1514 prio 7 avpkt 1000 cell 8 weight 100kbit split 1:0 bounded
filter生成语句:
dev eth0 parent 1: protocol ip prio 100 handle 800::1 u32 match ip src 172.111.1.116 flowid 1:31

eth1:
class生成语句:
dev eth1 parent 1:1 classid 1:31 cbq bandwidth 100Mbit rate 2Mbit maxburst 20 allot 1514 prio 7 avpkt 1000 cell 8 weight 100kbit split 1:0 bounded
filter生成语句:
dev eth1 parent 1: protocol ip prio 100 handle 800::1 u32 match ip dst 某一IP flowid 1:31

在使用中发现,如果只起某一方向的限制,也是会出现不受流量控制的现象,但用户对应的class和filter还是生成了。
请大家踊跃发言。谢谢!

[ 本帖最后由 chancecui 于 2006-7-4 10:34 编辑 ]

混浊又暗下来 2022-07-24 21:56:24

贴一下 另外的一个方向的控制脚本

会傲 2022-07-24 21:46:41

回2楼:
1.不受限制是指完全的不受限制。不太准确也是说也能限制,只是不太准而已!
2.已经在两个方向做了,结果还是不受限制呢!
谢谢2楼的回答,请继续!
其它人也可以多提问啊~~~!

无可置疑 2022-07-24 20:17:36

两个可能的原因
1. CBQ限速不太准确,试试用HTB
2. 限速要在两个方向上做,如果eth0是接外网的,那么你的限速规则是限制上传流量了,限制下载流量要在内网的网卡上做

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文