我们有台服务器位于BGP机房,BGP的带宽很贵,因此想对web服务器的80端口限一下速。服务器都是Linux,故可以用tc跟iptables结合来做这个工作。
脚本如下:
#!/bin/sh
# bw limit for port 80
# min and max bindwidth, MB
MIN=4
MAX=6
/sbin/iptables -t mangle -F
/sbin/tc qdisc del dev eth0 root
/sbin/tc qdisc add dev eth0 root handle 1:0 htb default 10
/sbin/tc class add dev eth0 parent 1:0 classid 1:10 htb rate ${MIN}mbps ceil ${MAX}mbps prio 0
/sbin/iptables -A OUTPUT -t mangle -p tcp –sport 80 -j MARK –set-mark 10
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
上述表示对eth0网卡的80端口进行限速,保证传输速率4MB,最大传输速率6MB。
运行这个脚本,再从web服务器下载,速率就得到控制了。
查看tc的配置:
/sbin/tc -s -d class show dev eth0
说明:本文参考了NixCraft的一篇文档。