找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 20030|回复: 28

[限速] 我的Pcq+htb动态限速、优化网络设置,有图+脚本+http下载流量标记(connection-rate)

  [复制链接]
发表于 2011-1-1 05:21:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 zouwenxin 于 2011-1-3 12:55 编辑

先说下我的网络环境:寝室4个人,2M网通ADSL带dr.com认证。湖南的网通,带宽不稳定。
我的目的:寝室四人可以随意做自己想做的,只求,游戏不卡,开网页速度在可忍耐的范围内(本人不看在线视频,偶尔下点东西,看网页为主),由于其他人不懂流控这东西,疯狂占用带宽。苦不堪言。

采取的措施:
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连接仅为监测流量用。
mark_packets.PNG
3.创建 queue trees。如图。
queue_trees.PNG
4.创建pcq。
pcq.PNG

部分代表性的具体设置图
mark_192.168.124.0.PNG
mark_http.PNG
ports_pcq_htb.PNG
http_htb_pcq_burst.PNG

现在我的疑惑时,我的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/c ... hunder-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拨号。
routeros
发表于 2011-1-1 09:57:42 | 显示全部楼层
用那么复杂吗
routeros
回复

使用道具 举报

发表于 2011-1-1 11:27:37 | 显示全部楼层
有必要做的那么复杂吗?
routeros
回复

使用道具 举报

发表于 2011-1-1 14:08:39 | 显示全部楼层
4个人就用ROS,太浪费了吧
routeros
回复

使用道具 举报

 楼主| 发表于 2011-1-1 14:33:15 | 显示全部楼层
回复 tmd 的帖子

其实我也不想那么复杂,实在是这网络不行。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-1-1 14:36:18 | 显示全部楼层
回复 hzp2188 的帖子

那您有什么经验给介绍介绍。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-1-1 14:40:14 | 显示全部楼层
回复 ypw 的帖子

的确是有些大财小用,但是在虚拟机环境中也还行。其实也是实在找不着合适的这样的软件。。
routeros
回复

使用道具 举报

 楼主| 发表于 2011-1-1 19:59:26 | 显示全部楼层
大家给点评点评。。。
routeros
回复

使用道具 举报

发表于 2011-1-1 20:53:03 | 显示全部楼层
谢谢了。。。。。。。。。。。。。
routeros
回复

使用道具 举报

发表于 2011-1-1 23:19:05 | 显示全部楼层
真不嫌折腾CPU啊。
routeros
回复

使用道具 举报

发表于 2011-1-2 09:31:53 | 显示全部楼层
呵呵,发脚本来参考下更好
routeros
回复

使用道具 举报

发表于 2011-1-2 12:17:10 | 显示全部楼层
同上  
routeros
回复

使用道具 举报

 楼主| 发表于 2011-1-2 14:43:48 | 显示全部楼层
回复 macxie 的帖子

脚本已经贴出。
routeros
回复

使用道具 举报

发表于 2011-1-3 09:24:23 | 显示全部楼层
本帖最后由 workbaby 于 2011-1-3 09:29 编辑

首先.你用forward就是一个错误.
forward只通过gobal-out接口.所以使用并不明智
第二你使用http的l7也是个错误.那个是很久以前的.现在很多网页都不能识别.
其次.在有子类的列表里只起到了优先的做用.并不能起到平均带宽的做用.你多想了
而层级太多或过于复杂会导致cpu极速提升.cpu过小会起到到反效果.
通常优先的做法都是在接口上优先
之后数据包gobal-in和gobal-out口上分带宽.
这样才能达到真正意义上实际应用.
routeros
回复

使用道具 举报

发表于 2011-1-3 11:14:36 | 显示全部楼层
回复 workbaby 的帖子

版主把你发的HTB优化里的标记跟HTB里的做法截图看一下。不要求发脚了,我看了你的贴上传用PRE下载用FOR标记包 HTB里用GO-IN来做上传,GO-OUT来做下载,好像有点效果,但在SIM QUEUE里静态限速的用户不显示流量。越搞越蒙了。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-6 05:17 , Processed in 0.074202 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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