|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
阅读基础:
仔细翻看linux流量控制 htb和u32分类器部分
完全明白ip数据流向和带宽。
能看明白限制下载的同理写上传很容易。
- #!/bin/sh
- tc qdisc del dev eth2 root 2>/dev/null (清空tc规则,eth2为内网NIC)
- tc qdisc add dev eth2 root handle 10: htb default 2254 (定义一个根,默认匹配2254"通道")
- tc class add dev eth2 parent 10: classid 10:1 htb rate 12500kbps ceil 12500kbps (定义一个类10:1隶属于根,速度写死,100M)
- i=1 (定义一个计数器,初始化为1)
- while [ $i -le 256 ] (当i小于256:一个c类子网)
- do
- j=0 (定义一个变量j,每次循环把i的值+100付给他)
- j=`expr $i + 100`
- echo "$j" (用作标记排错,看有没有“撞车”的) 下面以第一个循环为例,代进变量值去。
- tc class add dev eth2 parent 10:1 classid $j htb rate 125kbps ceil 125kbps prio 1 (定义一个类10:101。101是j变量,每次递增1,隶属于根,速度写死,1M)
- echo "pfifo" (用作标记排错,看有没有“撞车”的)
- tc filter add dev eth2 parent 10: protocol ip prio 1 u32 match ip dst 10.0.0.$i/32 classid 10:$j (定义源地址如果是$i。$i这时等于1,也就是源地址是10.0.0.1/32,并且协议是ip,划归给类10:$j $j=101 也就是classid 10:101)
- echo "match"
- i=`expr $i + 1` (i加一,下次循环等于2)
- done (返回去跑循环)
- 就是不用打mangle!!比起iptables mangle节约了80%的开支。如果有4个c,那么可以跑4个脚本,完成1220个client的限速。
- 作用于网桥或者纯路由不起nat的话可以在外网口也跑这么个脚本,
- tc filter add dev eth2 parent 10: protocol ip prio 1 u32 match ip dst 10.0.0.$i/32 classid 10:$j 这句把dst 改成src 用以完成上传流量的限制。
- 一句话概括:有几个源ip就有几个classid,每个class限速xx兆,用u32能根据ip地址分类来实现把 src地址的数据流匹配到已限速的class里。
- 完成限速的效果。让1k client单ip限速成为轻松的事情。
复制代码
[ 本帖最后由 hb2k 于 2007-7-26 15:12 编辑 ] |
|