基于IP的限速方案,ROS路由里有两种,一种叫简单限速。这种我们基本常见的路由上都有,它的问题是亢长的匹配规则,而且往往因为一些算法效率问题,最后导致写在前面的IP优先拿到流量,写在后面的IP没什么机会拿到流量。所以ROS又出现了一种PCQ算法,可惜现在没环境测试这个到底有多优异。
由于ros也是linux就用ddwrt的ip限速来说明,第一种写法会出现亢长匹配过程,不管是192.168.1.1,还是192.168.1.254规则都要遍历完整个PREROUTING链,然后才匹配成功。所以第二种方法加入了RETURN只要规则匹配成功不再匹配剩余规则,但是这样最后一个IP 192.168.1.254仍然最倒霉,所以ROS引入了PCQ算法。
192.168.1.1
192.168.1.2
.。。。。。
192.168.1.253
192.168.1.254
1# 设定上传方面
iptables -t mangle -A PREROUTING -s $lan_addr .1 -j MARK –set-mark 1
iptables -t mangle -A PREROUTING -s $lan_addr .2 -j MARK –set-mark 2
.。。。。。。。。
iptables -t mangle -A PREROUTING -s $lan_addr .254 -j MARK –set-mark 254
2# 设定上传方面
iptables -t mangle -A PREROUTING -s $lan_addr.1 -j MARK –set-mark 1
iptables -t mangle -A PREROUTING -s $lan_addr.1 -j RETURN
iptables -t mangle -A PREROUTING -s $lan_addr.2 -j MARK –set-mark 2
iptables -t mangle -A PREROUTING -s $lan_addr.2 -j RETURN
.。。。。。
iptables -t mangle -A PREROUTING -s $lan_addr.254 -j MARK –set-mark 254
iptables -t mangle -A PREROUTING -s $lan_addr.254 -j RETURN
但是即便是PCQ用来解决这种亢长匹配的效率问题,我依然不觉得在低流量像这种20KB的上行能带给用户多大的网络流畅性体验,效果应该是非常差。所以依然还是在下行采用PCQ的限速防止一用户占用所有带宽,用HTB队列来根据上行访问端口做优先级出列,只有上行的QOS算法才是真正可以改变电信局端数据排列顺序的。IP限速的感觉效果还不错表现在每分每秒其实网络中有大量的剩余带宽有很多人不在网络,但是如果真正在一个繁忙的网络所有的带宽都接近100%的时候,那效果将差得一踏糊涂,由于上行带宽过低已经无需采用什么并发数限制,这点带宽想并发都并不起来。最后你会发现打开一个网页半天还在那转圈,IP限速不适合在上行采用的。