我的Pcq+htb动态限速、优化网络设置,有图+脚本+http下载流量标记(connection-rate)
本帖最后由 zouwenxin 于 2011-1-3 12:55 编辑先说下我的网络环境:寝室4个人,2M网通ADSL带dr.com认证。湖南的网通,带宽不稳定。
我的目的:寝室四人可以随意做自己想做的,只求,游戏不卡,开网页速度在可忍耐的范围内(本人不看在线视频,偶尔下点东西,看网页为主),由于其他人不懂流控这东西,疯狂占用带宽。苦不堪言。{:3_65:}
采取的措施:
1.HTB,按照端口分类,游戏端口最优先(39311_跑跑卡丁车),其次http(这个是l7的,本来是想用80端口,结果迅雷有时候用80端口)0-1023,最后是1024-65535端口(统计分析下载时,此类端口大量占用带宽)。http的包设置了的busrt,若达到阈值就判定为是下载,虽然有在开大型网站或同时打开许多网站的时候会有误判,但是基本上不影响下次网页突发流量。没用connection-rate和byte,个人认为,其判断还不如burst准确,不过其可以根据单个连接判断,所以在再多http请求的时候,比较准确,其次是routeros的标记不大好用,只能作一次标记,我想没必要在http包中在分离出非下载的包吧,反正就4个人上网。
2.pcq,有两类,一类是以 ip分类,另外一类是ip+端口(ports)。想法是:在高负载的时候,http包根据ip动态分配。0-65535端口不仅需要根据ip动态分配带宽,而且要根据端口动态分配,因为我没法找出所有的服务端口,比如qq,只求其实现动态分配。
用routeros不到一个星期,所有东西都是在虚拟机里面折腾,好处是可以分配n多的网卡,也方便调试。期间翻阅了大量的文档,也看了官方的2.9,3.x,4.x文档(流控部分)。最后被折腾得莫名其妙,感觉官方一套说法,众网友又是一套方案,自己又是根据自己的现状整出一套东西。比如那个 down,up,out,in,dst,src总是和某些文档说得相反,我有时候得反置配置才有效果。
基本做法:
1.mangle中标记链接 2.mangle中标记包,包括端口,l7协议,目前单独标记的ip连接仅为监测流量用。
3.创建 queue trees。如图。
4.创建pcq。
部分代表性的具体设置图
现在我的疑惑时,我的ip是192.168.124.1,从图中,是我本机在用Http下载东西,暂时均匀分配带宽。一般时候,无法通过pcq动态分配带宽,总是被.22ip占用大量1024-65536端口的带宽(大约是1500kbps:200kbps)。官方的说法是不设置pcq的rate就等于是动态分配带宽。莫非是因为我用bt下载,争不过.22的迅雷下载。
其次,启用htb后,开网页的速度确实能让我能忍受,不过我总感觉这是我在max-limite中对端口1024-65535限速的效果,也就是说,在simple queues中也可以做到,而且更简单。
我设置的priority似乎没多大作用,我也预留的足够大的带宽,甚至削减其他包的limite-at值。
为了测试有效性,我特意用tools 中ping测试200个包,结论是差距为5ms,我的网络在当前负载时,ping百度延迟基本上在50ms左右。同时有感觉是,半夜网络稳定的时候,开网页的速度快,关闭htb时,明显感觉速度慢了很多。倘若是白天,学校上网人多,网络不稳定,发现是否启用htb,感觉不出来。是不是白天带宽平均不足2m导致的,如果我把总带宽(limite-max)下调,是否会好些?
恳请各位高人,仔细分析我的配置,我没有发出脚本,因为各个人的需求和情况不同。需要什么内容,我可以补充。
如有需要,联系方式:mail:305239863@qq.com QQ:305239863 个人小博http://www.zouwx.cn/
更新用connection-rate标记下载的http流量的方法,欢迎拍砖。
http://www.zouwx.cn/technology/connection-byte-rate-routeros-thunder-traffic.html
补充脚本:
/ip firewall mangle
add action=mark-packet chain=forward comment="" disabled=yes in-interface=Lan \
new-packet-mark=up_packets passthrough=yes
add action=mark-packet chain=forward comment="" disabled=yes new-packet-mark=\
down_packets out-interface=Lan passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.1 new-connection-mark=192.168.124.1 out-interface=Lan \
passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.58 new-connection-mark=192.168.124.58 passthrough=yes
add action=mark-connection chain=forward comment="" disabled=yes dst-address=\
192.168.124.3 new-connection-mark=192.168.124.3 out-interface=Lan \
passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.22 new-connection-mark=192.168.124.22 out-interface=Lan \
passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.0/24 new-connection-mark=192.168.124.0/24_cnn passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no \
layer7-protocol=ftp new-connection-mark=ftp_cnn passthrough=yes
add action=mark-packet chain=forward comment="" connection-mark=ftp_cnn \
disabled=no new-packet-mark=ftp_packets passthrough=no
add action=mark-connection chain=forward comment="" disabled=no \
layer7-protocol=http new-connection-mark=http_cnn passthrough=yes
add action=mark-packet chain=forward comment="" connection-mark=http_cnn \
disabled=no new-packet-mark=http_packets passthrough=no
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=0-1023_cnn passthrough=yes port=0-1023 protocol=tcp
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=0-1023_cnn passthrough=yes port=0-1023 protocol=udp
add action=mark-packet chain=forward comment="" connection-mark=0-1023_cnn \
disabled=no new-packet-mark=0-1023_packets passthrough=no
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.0/24 new-connection-mark=1024-65535_cnn passthrough=yes port=\
!0-1023 protocol=tcp
add action=mark-connection chain=forward comment="" disabled=no dst-address=\
192.168.124.0/24 new-connection-mark=1024-65535_cnn passthrough=yes port=\
!0-1023 protocol=udp
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=1024-65535_cnn passthrough=yes port=!0-1023 protocol=\
tcp src-address=192.168.124.0/24
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=1024-65535_cnn passthrough=yes port=!0-1023 protocol=\
udp src-address=192.168.124.0/24
add action=mark-packet chain=forward comment="" connection-mark=\
1024-65535_cnn disabled=no new-packet-mark=1024-65535_packets \
passthrough=yes
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=39311_cnn passthrough=yes port=39311 protocol=tcp
add action=mark-connection chain=forward comment="" disabled=no \
new-connection-mark=39311_cnn passthrough=yes port=39311 protocol=udp
add action=mark-packet chain=forward comment="" connection-mark=39311_cnn \
disabled=no new-packet-mark=39311_packets passthrough=no
add action=mark-packet chain=forward comment="" connection-mark=Games \
disabled=no new-packet-mark=game_packets passthrough=no
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=1200k name=1_ports_up parent=Wan_pppoe priority=8
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 \
max-limit=1900k name=1_ports_down parent=Lan priority=8
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=200k \
max-limit=1800k name=2_1_down parent=1_ports_down priority=1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=800k \
max-limit=1700k name=2_2_down parent=1_ports_down priority=3
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=500k \
max-limit=1200k name=2_1_up parent=1_ports_up priority=1
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=500k \
max-limit=1200k name=2_2_up parent=1_ports_up priority=3
/queue type
set default kind=pfifo name=default pfifo-limit=50
set ethernet-default kind=pfifo name=ethernet-default pfifo-limit=50
set wireless-default kind=sfq name=wireless-default sfq-allot=1514 \
sfq-perturb=5
set synchronous-default kind=red name=synchronous-default red-avg-packet=1000 \
red-burst=20 red-limit=60 red-max-threshold=50 red-min-threshold=10
set hotspot-default kind=sfq name=hotspot-default sfq-allot=1514 sfq-perturb=\
5
add kind=pcq name=pcq_ip_down pcq-classifier=dst-address pcq-limit=50 \
pcq-rate=0 pcq-total-limit=2000
add kind=pcq name=pcq_ip_up pcq-classifier=src-address pcq-limit=50 pcq-rate=\
0 pcq-total-limit=2000
add kind=pcq name=pcq_ports_ip_down pcq-classifier=dst-address,dst-port \
pcq-limit=50 pcq-rate=0 pcq-total-limit=2000
add kind=pcq name=pcq_ports_ip_up pcq-classifier=src-address,src-port \
pcq-limit=50 pcq-rate=0 pcq-total-limit=2000
set default-small kind=pfifo name=default-small pfifo-limit=10
三大关键部分,adsl拨号。 用那么复杂吗 有必要做的那么复杂吗?
4个人就用ROS,太浪费了吧 回复 tmd 的帖子
其实我也不想那么复杂,实在是这网络不行。 回复 hzp2188 的帖子
那您有什么经验给介绍介绍。 回复 ypw 的帖子
的确是有些大财小用,但是在虚拟机环境中也还行。其实也是实在找不着合适的这样的软件。。 :)大家给点评点评。。。 谢谢了。。。。。。。。。。。。。 真不嫌折腾CPU啊。 呵呵,发脚本来参考下更好 同上 回复 macxie 的帖子
脚本已经贴出。 本帖最后由 workbaby 于 2011-1-3 09:29 编辑
首先.你用forward就是一个错误.
forward只通过gobal-out接口.所以使用并不明智
第二你使用http的l7也是个错误.那个是很久以前的.现在很多网页都不能识别.
其次.在有子类的列表里只起到了优先的做用.并不能起到平均带宽的做用.你多想了
而层级太多或过于复杂会导致cpu极速提升.cpu过小会起到到反效果.
通常优先的做法都是在接口上优先
之后数据包gobal-in和gobal-out口上分带宽.
这样才能达到真正意义上实际应用. 回复 workbaby 的帖子
版主把你发的HTB优化里的标记跟HTB里的做法截图看一下。不要求发脚了,我看了你的贴上传用PRE下载用FOR标记包 HTB里用GO-IN来做上传,GO-OUT来做下载,好像有点效果,但在SIM QUEUE里静态限速的用户不显示流量。越搞越蒙了。
页:
[1]
2