少校
- 注册时间
- 2010-1-31
- 金币
- 2019 个
- 威望
- 5 个
- 荣誉
- 1 个
尚未签到
|
8mbsp带100 ip,准备怎么玩。
QOS其实最好的是原生linux tc+iptables+shell,各种iptables connmark restore结构是目前学习过的QOS应用的最高效的实现了。曾经被人鄙视说linux的qos不如ros,首先ros是linux的可以看作是精简命令解释版本。如果你仔细看ros的参数,大部分linux支持的参数,在ros下面仅仅是部分支持。ros没有tc,所谓的小包能玩的只有iptables length匹配,ros的htb还停留在过时的自上而下的包到链接的匹配过程。
当然那年跟那人争论半天所谓的QOS实现,最后都在扯 l7 的匹配上。在 l7匹配规则上这部分只能说没人在做,开源世界也确实不如那些商用软件。目前能玩的也仅仅是根据协议,ip,端口,部分iptables modules特性进行优先级控制。在多人环境,QOS的最佳实现无非就是下行方向防止少量用户占用99%以上的带宽,上行根据优先级有序的改变上行数据队列,根据tcp的握手过程继尔改变下行队列数据的优先级。最终都落在如何控制延迟和流量上面。所以8mbps带100ip就变得非常难。难度在于带宽非常有效,随便1个ip都可以抢占800kb/s总带宽。如果根据ip进行带宽分配,没开玩笑吧每ip 8kb/s-800kb/s。问题是这还涉及到规则自上而下导致的规则遍历效率,而且会导致越靠后的规则越没有足够的剩余带宽可以分配。这方面ros有它独家的pcq。但是pcq不具备connmark restore的将优先级标记由上行流量又带到下行流量。
办公环境能看得到的流量就是web浏览过程,而上行方向根据目的端口分级可以非常有效的防止p2p拥塞让高优先级的数据出列,所以基本这些年使用下面的端口规则都没碰到什么问题,而如何防止少量ip占用99%以上的带宽呢。使用脚本定时对网络进行扫描就可以了。想当初用rtn16用tomato带145ip时用脚本进行并发数量计算前后花费5分钟。。。而使用iptables connbytes,1秒级实现动态将这些ip进行限速。
l7这东西无非就是协议,ip,端口,再加上其它规则的集合。这东西有时候真觉得在QOS上面用场不大,它更多应该是做类似行为管理进行安全阻断用途的。
tomato的原版qos是非常不错的,openwrt的qos-scripts虽然没tomato那么方便也是可以马马虎虎用用的。主要是它们都是基于iptables connmark restore结构实现的。至于什么石像鬼之类的,效率上应该是远远不如这两个,但是大家都喜欢玩WEB管理界面也就马马虎虎用着吧。
root@lede:~# cat /tmp/port.tmp
udp_5000:5500,6060_0x10/0xff
tcp_2099,5222,5223,5060,6060,8088,8393:8400_0x10/0xff
udp_53_0x20/0xff
tcp_22,23,123,3389,8123_0x20/0xff
tcp_80,443,1080,1863,8080,12000,14000_0x30/0xff
udp_500,1701,4000:4030,4500,8000:8001_0x30/0xff
tcp_20,21,25,1024:65535_0x40/0xff
udp_1:65535_0x40/0xff
|
|