基于系统的流量控制(Qos)

 

一、 Linux 系统

1. 限制流出速度

限制流出速度,主要通过tc这个工具,常用的有三个队列:

tbf队列,令牌桶队列,适用于流量整形;

cbq队列,分类的队列,用于实现精细的qos控制,配置复杂;

htb队列,分层的令牌桶队列,用于实现精细的qos控制,配置比cbq简单些;

通过tbf限制流程速度的例子:

tc qdisc add dev eth0 root tbf rate 51200kbit latency 50ms minburst 200k burst 200k

限制网卡eth0流出速度为51200kbit,正确的设置方法,和minburst这个参数有很大的关系,不同的硬件环境和系统需要具体调试。

通过htb实现不同目标地址的限速

删除

tc qdisc del dev eth0 root tbf

修改

tc qdisc change dev eth0 root tbf rate 2200kbit latency 5000ms burst 1540

查看当天队列

tc -s -d qdisc ls

通过htb队列,针对不同ip源限速

删除已有的队列

tc qdisc del dev eth0 root

建立一个htb根队列

tc qdisc add dev eth0 root handle 1: htb

建立一个父类1:1,速度为100mbit

tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

建立一个子类1:10,速度50mbit,这里的50mbit包含在1:1的100mbit中

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit ceil 50mbit

指定1:10是一个随机公平队列

tc qdisc add dev eth0 parent 1:10 sfq perturb 10

通过过滤器,保证1.1.1.1这个ip通过1:1这个队列,优先级是2。

tc filter add dev eth0 protocol ip parent 1: prio 2 u32 match ip dst 1.1.1.1/32 flowid 1:1

通过过滤器,保证所有的其他ip通过1:10这个队列,优先级是50。

tc filter add dev eth0 protocol ip parent 1: prio 50 u32 match ip dst 0.0.0.0/0 flowid 1:10

2. 限制流进速度

通过iptables 限制流进速度

#iptables -A INPUT -s 61.61.61.61/32 -m limit --limit 60/s -j ACCEPT

#iptables -A INPUT -s 61.61.61.61/32 -j DROP

限制ip每秒流进速度不超过60个,通过iptables不能精确控制网速,只能控制包的个数,具体数对可以用mtu乘包的个数计算。

Linux系统速度限制非常不错的参考资料,《Linux高级路由和流量控制》

http://www.docin.com/p-4929331.html

二、 Windows系统

1. Windows server 2008 windows 2012 windows 7 windows 8系统

通过组策略可以限制流出速度,在开始运行输入gpedit.msc

通过本地计算机---计算机配置----基于策略的qos选项,可以实现网络限速、源ip、基于应用的限速。

clip_image002

clip_image004

clip_image006

clip_image008

2. Windows server 2003 windows xp 系统

可以下载Windows Server 2003 Resource Kit Tools,安装后,运行安装目录下的tcmon.bat这个批处理安装。

http://www.microsoft.com/en-us/download/details.aspx?id=17657

clip_image010

然后网卡属性—服务—添加qos包队列服务。

clip_image012

然后运行tcmon.exe程序。

clip_image014

可以根据需要设置速率

clip_image016

需要过滤的ip

clip_image018

协议

clip_image020

但是这个工具我只在xp上测试通过, 在windows 2003上不能正常使用,查阅了许多国外的网站,也有许多人碰到类似的问题,目前没有找到解决的方法,推测是微软已经放弃了对这个工具的支持吧。另外这个工具只能现在流出速度,重启后需要重新配置。

3. 第三方工具

windows系统还可以使用netlimit这个工具,这是一个收费工具,就不详细介绍了,官网是http://www.netlimiter.com/,上面有详细的介绍。

通过360卫生也可以实现限速的功能,但是只能基于应用。

clip_image022

clip_image024

你可能感兴趣的:(linux,windows,qos'流量控制)