免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1061 | 回复: 0

linux tc 流量控制问题? 请高手看看对不对? 急急急!!! [复制链接]

论坛徽章:
0
发表于 2005-08-17 17:01 |显示全部楼层
#Linux从kernel 2.1.105开始支持QOS
#不过,需要重新编译内核。运行 'make config'时将 EXPERIMENTAL _OPTIONS 设置成 'y'
#并且将Class Based Queueing (CBQ), Token Bucket Flow, Traffic Shapers 设置为 'y'
#运行 'make dep; make clean; make bzilo',生成新的内核

traffic control

#!/bin/bash
#
#  定义上下带宽
#  注意是 Kbit
DOWNLOAD=4000Kbit
UPLOAD=4000Kbit
#  定义内网IP段
INET=10.0.0.
#  定义限制的IP范围
IPS=10
IPE=254
#  定义进出设备 eth0 IS LOCAL NETWORK,eth1 IS WAN NETWORK
IDEV=eth0
ODEV=eth1
#
#
/sbin/tc qdisc del dev $IDEV root
/sbin/tc qdisc del dev $ODEV root
#
#我们配置了 eth0 的队列规定,root 表示这是根(root)规定
#其句柄 (handle)设定为 10:'。 其类型为 CBQ
#带宽为 100 Mbit(内)4Mbit(外),平均包大小为 1000 字节
#包间隔发送单元的大小为8字节,最小传输包大小为64字节
/sbin/tc qdisc add dev $IDEV root handle 10: cbq bandwidth 100Mbit avpkt 1000 cell 8 mpu 64
/sbin/tc qdisc add dev $ODEV root handle 20: cbq bandwidth 4Mbit avpkt 1000 cell 8 mpu 64
#
#生成root类
#prio 8 为先级,越小优先级越高
/sbin/tc class add dev $IDEV parent 10:0 classid 10:1 cbq bandwidth 100Mbit rate \
95Mbit allot 1514 weight 95Mbit prio 8 maxburst 20 avpkt 1000
#
/sbin/tc class add dev $ODEV parent 20:0 classid 20:1 cbq bandwidth 4Mbit rate \
3800Kbit allot 1514 weight 3800Kbit prio 8 maxburst 20 avpkt 1000
#
#限制下载速度
COUNTER=$IPS
while [ $COUNTER -le $IPE ]
do
#   以下三句限制各IP的下载带宽
/sbin/tc class  add dev $IDEV parent 10:1 classid 10:1$COUNTER cbq bandwidth 100Mbit rate $DOWNLOAD allot 1514 \
weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded
/sbin/tc qdisc  add dev $IDEV parent 10:1$COUNTER sfq quantum 1514b perturb 15
/sbin/tc filter add dev $IDEV parent 10:0 protocol ip prio 100 u32 match ip dst $INET$COUNTER flowid \
10:1$COUNTER
    COUNTER=` expr $COUNTER + 1 `
done
#
#限制上传速度
COUNTER=$IPS
while [ $COUNTER -le $IPE ]
do
#   以下三句限制各IP的上传带宽
    /sbin/tc class  add dev $ODEV parent 20:1 classid 20:1$COUNTER cbq bandwidth 3800Kbit rate $UPLOAD allot 1514 \
weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded
    /sbin/tc qdisc  add dev $ODEV parent 20:1$COUNTER sfq quantum 1514b perturb 15
    /sbin/tc filter add dev $ODEV parent 20:0 protocol ip prio 100 handle $COUNTER fw classid 20:1$COUNTER
    COUNTER=` expr $COUNTER + 1 `
done
#特殊照顾的IP在以上范围的用户,可以借用未使用带宽
#优先级较高
NIP=78
#10.0.0.4 这个用户要大量下载,可以快一点
ND=400Kbit
NU=400Kbit
/sbin/tc class change dev $IDEV  parent 10:1 classid 10:1$NIP bandwidth 100Mbit rate $ND allot 1514 weight 400Kbit \
prio 4 maxburst 20 avpkt 1000  
/sbin/tc class change dev $ODEV parent 20:1 classid 20:1$NIP cbq bandwidth 4Mbit rate $NU allot 1514 weight 400Kbit \
prio 4 maxburst 20 avpkt 1000  
#
NIP=1
# 10.0.0.100 增加自已的带宽
ND=1600Kbit
NU=1600Kbit
/sbin/tc class change dev $IDEV  parent 10:1 classid 10:1$NIP bandwidth 100Mbit rate $ND allot 1514 weight 1600Kbit \
prio 4 maxburst 20 avpkt 1000
/sbin/tc class change dev $ODEV parent 20:1 classid 20:1$NIP cbq bandwidth 4Mbit rate $NU allot 1514 weight 1600Kbit \
prio 4 maxburst 20 avpkt 1000
#
#你的iptables中的set-mark必须和tc中的handle相对应
#  修改防火墙,增加上传限制
COUNTER=$IPS
while [ $COUNTER -lt $IPE ]
do
    iptables -t mangle -A PREROUTING -i $IDEV -s $INET$COUNTER  -j MARK --set-mark $COUNTER
    COUNTER=` expr $COUNTER + 1 `
done
# 这里是NAT
iptables -t nat -A POSTROUTING -o $EXTIF -s 10.0.0.0/24 -j MASQUERADE



#监视流量
#tc -s qdisc ls dev eth0
#tc -s qdisc ls dev eth1
#tc -s class ls dev eth0
#tc -s class ls dev eth1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP