找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 6742|回复: 10

折腾完固件后 弄qos 求解啊

[复制链接]
发表于 2012-1-8 12:35 | 显示全部楼层 |阅读模式
sdy大大d  固件 ip限速  不能用d吧  貌似原版d 也不行啊,,,  dw固件d zhoutao大大d 脚本也   不能在其他番茄 正常使用,除了dw固件  一直很有爱d,  怎么办呢。。 有在使用的qos的朋友能分享下   自己的qos设置,给小弟一个参考,,, 谢谢 各位留言d大大l
发表于 2012-1-8 15:13 | 显示全部楼层
QOS方面dualwan论坛会多点。
http://bbs.dualwan.cn/thread-201752-1-3.html
发表于 2012-1-9 19:18 | 显示全部楼层

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>
  1. 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,依据特定的条件实施动态调整。
  1. root@Da:/tmp# cru l
  2. 45 10,14,18,22,2,6 * * * ntpsync --cron #ntpsync#
  3. 15 9 10 1 * ddns-update 0 force #ddnsf0#
  4. 45 4 * * 1 rm /tmp/log #rm_log#
  5. 15 9 * * * /tmp/renewip_dato.sh #renewip#
  6. 5 7,17 * * * /tmp/3_adblock1.dato && /tmp/3_adblock2.dato #adblock#
  7. */10 0-23 * * * /tmp/redial_dato.sh #redial#
  8. */15 19-23 * * * /tmp/all_conn_dato.sh #all_conn#
  9. */10 19-23 * * * /tmp/crate_dato.sh #crate#
  10. 10 9-23 * * * /tmp/awstats_dato.sh #awstats#
复制代码
qos_orates控制上行带宽
qos_irates控制下行带宽
  1. root@Da:/tmp# cat crate_dato.sh
  2. #!/bin/sh
  3. a=`grep ort=270 /proc/net/ip_conntrack`;b=`nvram get qos_irates | cut -d "," -f4`
  4. 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
  5. 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以让相应的设置回复到初始状态。
  1. 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实现的经验,汗这种东西哪这么好回答,最后发现自己写的比他问的还多,所以就记录下来。
- 最近发现自己写文档的水平越来越差了,前后无序,也没有人反应哪里看不懂,哪里有问题,就这样吧以后慢慢修正吧。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2012-1-10 14:50 | 显示全部楼层
多谢楼上大大指点迷津,小弟先扣谢,慢慢折腾qos  的确迅雷得到udp和tcp会自动调节,非常恶。   不得不说zhoutao大大的脚本的确不错 ,。我不大懂,,linux  很迷茫为什么他的脚本不能运行在一般的番茄机里,蛮遗憾d
发表于 2012-1-10 15:49 | 显示全部楼层
他的代码太复杂了应该就是原先写根据多少IP的用户圴分带宽的那位吧。

原版的够用够强大了。他的代码如果出现死机效率低下的话,可能就是imq队列的问题,曾经也想写imq队列这样到任何机器上应该代码方面比较通用,可惜在dd dir600上测试过,至少在dir600上效果非常的差劲,到最后直接路由死机状态。如果你一定要用pppoe用户可以尝试更改imq0为br0下行端口 imq1为ppp0上行端口。

偶现在对所谓的智能QOS没概念,给一段在dd 上实施的也可以在tomato上实施的如何在公司环境屏蔽p2p用户,根本就用不到什么很复杂的方法。无视任何p2p用户的存在。直接用iptables --limit进行发包限制。 如果有熟悉tomato的朋友可以直接用tomato内置的iptables module来实现,不过偶一直用的很好。
  1. root@onlyit:/tmp# nvram get cron_jobs
  2. 5 20 * * * root /tmp/crate_dato.sh
  3. 5 6 * * * root /tmp/free_dato.sh
  4. 0 8,9,11,13,17 * * * root stopservice firewall && startservice firewall
  5. */3 9-21 * * * root /tmp/all_conn_dato.sh
  6. */10 7 * * * root /tmp/ddns_dato.sh
  7. */10 0-23 * * * root /tmp/redial_dato.sh
  8. 30 6 * * * root /tmp/bicmp_dato.sh
  9. 55 6 * * * root /sbin/rc restart
  10. 15 7 * * * root /tmp/renewip_dato.sh
  11. 15 8,12 * * * root /tmp/dns2ip_dato.sh
  12. 45 3 * * 1 root /bin/rm /tmp/log
  13. 1 0 1 * * root /tmp/rmtraff_dato.sh
  14. root@onlyit:/tmp# cat all_conn_dato.sh
  15. #!/bin/sh
  16. if [ ! -f "/tmp/ipignore_dato.lst" ];then ipignore="200 201 202 203 204 205"
  17. for ip in $ipignore;do echo $lan_addr.$ip >> /tmp/ipignore_dato.lst;done;fi
  18. for i in `grep 0x /proc/net/arp | cut -d ' ' -f1`;
  19. do grep -q $i /tmp/ipignore_dato.lst
  20. if [ $? -gt 0 ];then U_count=$(grep $i /proc/net/ip_conntrack | grep -c ^udp)
  21. if [ $U_count -gt 50 ];then a=`iptables -vnL FORWARD | grep "$i"`
  22. if [ -z "$a" ];then
  23. echo "`(date +"%m/%d/%Y %T")` I_limit $i connection count: $U_count successfully_" >> /tmp/log
  24. a="`iptables -vnL FORWARD --line-numbers | grep "PMTU" | cut -c1-4` + 1";a=`expr $a`
  25. iptables -I FORWARD $a -s $i -j DROP
  26. iptables -I FORWARD $a -s $i -p udp -j REJECT --reject-with icmp-proto-unreachable
  27. iptables -I FORWARD $a -s $i -p tcp -j REJECT --reject-with icmp-proto-unreachable
  28. iptables -I FORWARD $a -s $i -p ICMP --icmp-type echo-request -m limit --limit 4/sec -j ACCEPT
  29. iptables -I FORWARD $a -s $i -m limit --limit 30/s -j ACCEPT
  30. iptables -I FORWARD $a -s $i -p tcp -m multiport --dport 25,80,443,8080 -m limit --limit 60/s  -j ACCEPT
  31. iptables -I FORWARD $a -s $i -p udp --dport 1024:65535 -j REJECT --reject-with icmp-proto-unreachable
  32. fi;else while true;do b=`iptables -vnL FORWARD --line-numbers | grep "$i" | cut -c1-4 | awk '{printf "%s ",$1}'|awk '{print $NF}'`
  33. if [ -z "$b" ];then break;else iptables -D FORWARD $b;fi;done;fi;fi;done
  34. root@onlyit:/tmp# cat log | grep connect
  35. 01/09/2012 09:06:01 I_limit 192.168.7.104 connection count: 55 successfully_
  36. 01/09/2012 09:06:02 I_limit 192.168.7.123 connection count: 145 successfully_
  37. 01/09/2012 09:27:01 I_limit 192.168.7.104 connection count: 62 successfully_
  38. 01/09/2012 09:45:01 I_limit 192.168.7.104 connection count: 56 successfully_
  39. 01/09/2012 09:57:01 I_limit 192.168.7.104 connection count: 65 successfully_
  40. 01/09/2012 10:12:03 I_limit 192.168.12.32 connection count: 193 successfully_
  41. 01/09/2012 10:18:01 I_limit 192.168.7.104 connection count: 60 successfully_
  42. 01/09/2012 10:33:02 I_limit 192.168.7.104 connection count: 75 successfully_
  43. 01/09/2012 10:48:01 I_limit 192.168.7.104 connection count: 58 successfully_
  44. 01/09/2012 10:57:01 I_limit 192.168.7.104 connection count: 52 successfully_
  45. 01/09/2012 11:00:01 I_limit 192.168.7.124 connection count: 490 successfully_
  46. 01/09/2012 11:03:01 I_limit 192.168.7.104 connection count: 59 successfully_
  47. 01/09/2012 11:18:01 I_limit 192.168.7.104 connection count: 65 successfully_
  48. 01/09/2012 11:21:02 I_limit 192.168.12.32 connection count: 57 successfully_
  49. 01/09/2012 11:27:01 I_limit 192.168.12.32 connection count: 104 successfully_
复制代码
发表于 2012-2-12 01:37 | 显示全部楼层
额。。。完全看不懂。。。这些代码放到哪去呢?大神不要笑话我,我是一只小小菜鸟。。。。
发表于 2012-2-14 15:43 | 显示全部楼层
同样看不懂,要从最简单的开始学呀!
发表于 2012-3-18 20:24 | 显示全部楼层
N16目前用原版的固件后缀108版的,智能QOS已经非常不错。迅雷下载,电影,游戏都非常流畅稳定,而且功能一个都不少。
双拨失败,原版固件是最合适的的选择了。
发表于 2012-4-3 07:09 | 显示全部楼层
缥缈雷霆 发表于 2012-3-18 20:24
N16目前用原版的固件后缀108版的,智能QOS已经非常不错。迅雷下载,电影,游戏都非常流畅稳定,而且功能一个 ...

早知我也直接买个N16算了。。。不折腾啊。
发表于 2012-4-3 10:37 | 显示全部楼层
家庭用户随便用用呗。那是因为你不会设置那没办法,公司的话,你要在指定时间约束网站。指定时间解封网站,做很多很多的自动化排程。那我就只能无视所谓的任何原厂固件,不是它们不够好,实在是它们不够智能。学点linux shell编程掌握网络管理方面的东西。你就会发现dd tt之类的linux路由强大无比。
发表于 2012-8-13 15:44 | 显示全部楼层
路过,思考思考
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-3 20:35

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表