Chinaunix

标题: 请教如何用TC限制流量 [打印本页]

作者: 独孤九贱    时间: 2006-10-12 15:27
标题: 请教如何用TC限制流量
想做一个限制内网每一个IP,对其指定上传/下载流量的脚本,请教熟悉TC的朋友,应该如何写呢?
类似于下图:


作者: liuzhuan23    时间: 2006-10-12 16:07
1)你可以参考 Linux的高级路由和流量控制HOWTO 一书,他详尽的介绍了tc,可以帮助你

2) http://bbs.chinaunix.net/viewthr ... 3Ddigest&page=1
这篇帖子对你也许有帮助

3)如果你希望对上下行均做控制,你需要给kernel打上imq这个补丁,imq可以做上下行控制
作者: 独孤九贱    时间: 2006-10-12 16:35
原帖由 liuzhuan23 于 2006-10-12 16:07 发表
1)你可以参考 Linux的高级路由和流量控制HOWTO 一书,他详尽的介绍了tc,可以帮助你

2) http://bbs.chinaunix.net/viewthr ... 3Ddigest&page=1
...


刚才看了《Linux的高级路由和流量控制HOWTO 》,依葫芦画瓢,大家看看菜鸟写得对不——控制上行速率的脚本:

  1. UPLINK=220
  2. DEV=eth1   #eth1是外网网卡
复制代码


# 清空已有的队列
  1. tc qdisc del dev $DEV root 2> /dev/null > /dev/null
复制代码


###### uplink
# 建立HTB父类
  1. tc qdisc add dev $DEV root handle 1: htb default 20
复制代码


# 设定uplink的最大速率:
  1. tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 6k
复制代码


# 为每一个IP地址开一个子类0-255:
  1. tc class add dev $DEV parent 1:1 classid 1:10 htb rate ${ip1}kbit burst 6k
  2. tc class add dev $DEV parent 1:1 classid 1:11 htb rate ${ip2}kbit burst 6k
  3. tc class add dev $DEV parent 1:1 classid 1:12 htb rate ${ip3}kbit burst 6k
  4. ……
  5. ……
  6. tc class add dev $DEV parent 1:1 classid 1:264 htb rate ${ip255}kbit burst 6k
复制代码


#相应的队列规则
  1. tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
  2. tc qdisc add dev $DEV parent 1:10 handle 11: sfq perturb 10
  3. tc qdisc add dev $DEV parent 1:10 handle 12: sfq perturb 10
  4. ……
  5. ……
  6. tc qdisc add dev $DEV parent 1:264 handle 12: sfq perturb 10
复制代码


#u32过滤器
  1. tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip src 192.168.0.1 flowid 1:10
  2. tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip src 192.168.0.2 flowid 1:11
  3. tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip src 192.168.0.3 flowid 1:12
  4. ……
  5. ……
  6. tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 match ip src 192.168.0.255 flowid 1:264
复制代码

[ 本帖最后由 独孤九贱 于 2006-10-12 16:44 编辑 ]
作者: platinum    时间: 2006-10-12 16:38
应该是这样的
作者: cexoyq    时间: 2006-10-12 16:41
呵呵,搞内核的果然历害,学得这么快。
作者: liuzhuan23    时间: 2006-10-12 16:47
分类原则是:根->主干类->用户类,我们主要在用户类上面做文章,根与主干类就是一个宏观上的范围(你可以抽象的想象为一颗树与她的主干,而用户类就是叶子)
作者: 独孤九贱    时间: 2006-10-12 16:54
原帖由 liuzhuan23 于 2006-10-12 16:47 发表
分类原则是:根->主干类->用户类,我们主要在用户类上面做文章,根与主干类就是一个宏观上的范围(你可以抽象的想象为一颗树与她的主干,而用户类就是叶子)


是这样的,哎,刚才那个脚本里边好多错的,想当然了,还是得踏踏实实一点点地学起走……




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2