运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

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

运维开发网 https://www.qedev.com 2020-02-20 18:05 出处:51CTO 作者:高鹏举
1 限制流出速度限制流出速度,主要通过tc这个工具,常用的有三个队列:tbf队列,令牌桶队列,适用于流量×××;cbq队列,分类的队列,用于实现精细的qos控制,配置复杂;htb队列,分层的令牌桶队列,用于实现精细的qos控制,配置比cbq简单些;通过tbf限制流程速度的例子:tc qdisc add dev eth0 root tbf rate 51200kbit latency 50ms min

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高级路由和流量控制》

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消