|
Using Tomato's QOS System
Using Tomato's QOS System
http://tomatousb.org/tut:using-tomato-s-qos-system
Easy Toastman QoS setup
http://tomatousb.org/tut:easy-toastman-qos-setup
上面是有关tomato固件实施QOS的文档。这两份资料已经非常的完整的涉及到tomato原版QOS的方方面面。相对dualwan tomato那一堆的QOS实现。我想它唯一缺少的就是有关并发数限制的实现吧,但其实并发数根本就不是个问题的问题,虽然按文档描述TC通过tcp协议的三次握手来实施TCP连接控制,但这中间还有个问题存在就是tcp timeout的设定,如果大量的并发无法及时消亡的话对路由的响应还是有点问题的,偶手头的dir600在3000左右并发就感觉访问WEB管理界面非常的缓慢,就算n16这种配置不知道它的所谓30万并发连接直接根据它的物理内存进行换算的,还是现实环境中实际测试过的,实际刷了tomato以后根本就不能体会到这个所谓的30万并发值。
我现在给的是针对家里的设置,家里电脑不多。需要解决两种类型的用户一种需要延迟的玩游戏用户(电脑高手),另外一种需要流量看电影的普通用户(电脑菜鸟)。
我非常清楚我要干嘛,我只要游戏,我不喜欢下载,必要时我需要占用全部上传带宽。我是管理员我当然是Highest
From 192.168.12.133-192.168.12.135 Highest d
但是这种设置也是非常郁闷的。你迅雷试试,由于这是基于IP的规则,所以该用户就无法控制他自己电脑的相应端口的优先权。所以如果带宽有限的情况下。同样会发生网页打开慢问题。
这是给我们家用的,她只喜欢PPS,给她个Class A并且限制上传速率(ADSL线路不想因为上传带宽大量占用而导致延迟增加,可以又迅雷又游戏,吹的吧。网络延迟是计算出来的不是臆测出来的,光纤用户会有特别吗?不清楚。)
From 192.168.12.100 A mn
Class A 5 - 260 kbit/s
这个是给N16控制访问它上面架设的服务带宽用的。因为很多软件本身也是使用8080,所以就想办法找对IP就可以了。把它加到Administration/Scripts/WAN Up,这样当wan口重新拔号时就可以获得相应的wan口IP,请根据自己的QOS规则相应修改。你可以telnet到路由使用nvram show | grep qos_或者nvram get qos_orules之类的来查询2<`nvram get wan_ipaddr`<6<a<<0<<<1<tcp21,8080>- nvram set qos_orules="2<192.168.12.133-192.168.12.135<-2<a<<0<<<0<d>2<`nvram get wan_ipaddr`<6<a<<0<<<1<tcp21,8080>0<<6<d<80,443<0<<0:512<2<WWW>0<<6<d<80,443<0<<512:<3<WWW (512K+)>0<<-1<d<53<0<<0:2<0<DNS>0<<-1<d<53<0<<2:<4<DNS (2K+)>2<192.168.12.100<-2<a<<0<<<5<mn";service qos restart
复制代码 From 114.91.XXX.XXX TCP High tcp21,8080
有时候觉得还是她比我幸福,这样的执行顺序基于端口优先规则。可以让她边看pps时还能浏览网页。原先在dd下一直使用基于ip的QOS规则,一直在想如何解决可以边pps边浏览网页的问题。后来发现还是直接写iptables语句最简单。由于iptables时执行命令时从上至下,所以写在前面的语句就有更快的效率。可以通过iptables -t mangle -vnL QOSO进行查询
TCP
Dst Port: 80,443
Transferred: 0 - 512KB Medium WWW
TCP
Dst Port: 80,443
Transferred: 512KB+ Low WWW (512K+)
TCP/UDP
Dst Port: 53
Transferred: 0 - 2KB Highest DNS
TCP/UDP
Dst Port: 53
Transferred: 2KB+ Lowest DNS (2K+)
总的带宽设定
我的猫里显示上行576Kbps 下行4608Kbps,理论值应该是72KB,576KB。实际找个好点的网站单线程http下载,大概是65KB,480KB左右吧。注意这个值可能跟路由固件有关系,偶用n16刷dd 18xxx型号的只能跑到430KB,刷了tomato usb最后稳定在480KB左右吧。所以根据实际情况设置好总的上下行速率以避免设置值过大而导致没有实现效果
Outbound Rate / Limit 上行
Max Bandwidth 520 kbit/s
Inbound Limit 下行
Max Bandwidth 4000 kbit/s
还有什么要注意的。实施了两年的QOS偶现在也不喜欢控制下行带宽了,大家平等尽量的使用带宽。但是玩CS时偶还是需要解决带宽和延迟的问题。所以做了个脚本侦测270XX端口的存在,再相应的自动调整下载带宽。在每天隔壁MM 19点下班回来时疯狂PPS时,偶要顺畅的玩CS,呵呵。关于它的实现请看Easy Toastman QoS setup文档的描述。这其实就是所谓的智能QOS,依据特定的条件实施动态调整。- root@Da:/tmp# cru l
- 45 10,14,18,22,2,6 * * * ntpsync --cron #ntpsync#
- 15 9 10 1 * ddns-update 0 force #ddnsf0#
- 45 4 * * 1 rm /tmp/log #rm_log#
- 15 9 * * * /tmp/renewip_dato.sh #renewip#
- 5 7,17 * * * /tmp/3_adblock1.dato && /tmp/3_adblock2.dato #adblock#
- */10 0-23 * * * /tmp/redial_dato.sh #redial#
- */15 19-23 * * * /tmp/all_conn_dato.sh #all_conn#
- */10 19-23 * * * /tmp/crate_dato.sh #crate#
- 10 9-23 * * * /tmp/awstats_dato.sh #awstats#
复制代码 qos_orates控制上行带宽
qos_irates控制下行带宽- root@Da:/tmp# cat crate_dato.sh
- #!/bin/sh
- a=`grep ort=270 /proc/net/ip_conntrack`;b=`nvram get qos_irates | cut -d "," -f4`
- if [ -z "$a" ]; then if [ "$b" != "0" ];then nvram set qos_orates="80-100,10-100,5-100,3-100,2-95,1-50,1-40,1-30,1-20,1-10";nvram set qos_irates="0,0,0,0,0,60,0,0,0,0";service qos restart;echo "`(date +"%m/%d/%Y %T")` change rate 20kbps successfully_" >> /tmp/log;fi
- else if [ "$b" != "35" ];then nvram set qos_orates="80-100,10-75,5-100,3-100,2-95,1-50,1-40,1-30,1-20,1-10";nvram set qos_irates="0,0,0,35,35,50,0,0,0,0";service qos restart;echo "`(date +"%m/%d/%Y %T")` change rate 15kbps successfully_" >> /tmp/log;fi;fi
复制代码 还有什么要注意的,为什么那篇Using Tomato's QOS System罗列了一堆的端口设定。
原则上应该没错吧,但是看起来太夸张了。将公司里dd由原先的基于IP的QOS设定改为基于port的QOS曾经遇到QQ一直掉线或者登录故障。后来设置了这样的优先控制就再也没有人反应过有问题。其实问题当然仍然存在的,只是平时上网的时候大家的实际感觉就是网页打开快不快,下载快不快,至于其它的网络延迟,丢包之类的东东不用软件是分析不了的。目前使用情况良好。
root@onlyit:/tmp# cat port.tmp
tcp_53,22,23,123,3389,5060,8123_2 #高优先响应端口
udp_53,5060_2
tcp_80,443,1080,8080_4 #中等级别,主要是网页浏览
udp_433,4000:4030,8000_4 #中等级别,主要用于解决QQ连接
tcp_20,21,25,1024:65535_6 #最次级别
udp_1024:65535_6
其它问题,添加下面的内容到Administration/Scripts/WAN Up以让相应的设置回复到初始状态。- nvram set qos_orates="80-100,10-100,5-100,3-100,2-95,1-50,1-40,1-30,1-20,1-10";nvram set qos_irates="0,0,0,0,0,0,0,0,0,0";service qos restart #nvram set "qos_enable=0
复制代码 更新日志
* 2012年1月9日星期一
- 今天竟然看到论坛有朋友短信问QOS实现的经验,汗这种东西哪这么好回答,最后发现自己写的比他问的还多,所以就记录下来。
- 最近发现自己写文档的水平越来越差了,前后无序,也没有人反应哪里看不懂,哪里有问题,就这样吧以后慢慢修正吧。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|