找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4976|回复: 2

[精华+资源帖]管道与队列模型图解

[复制链接]
发表于 2007-2-5 23:11:29 | 显示全部楼层 |阅读模式

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

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

×
管道与队列模型图解
申明:
本文章系Hotdll原创,
Hotdll版权所有!
转帖请保留申明和出处!

m0n0 采用dummynet+IPFW实现流量控制,核心有两个概念:管道和队列。
一个管道就像一个给定的宽带, 传播延迟,列队大小和包丢是的比率。包是按照自身的参数通过管道的。
一个列队,就是一个提取过程,执行WF2Q+方针()列队使没一个流程跟weight和reference管道发生联系。 然后,所有的流程按照管道WF2Q+方针按预定的比率指向预定的同样的管道。
管道和队列基本图解:(不带掩码的队列和这个情况相同)

图1

图1

管道和队列模型一(图1)

带掩码的管道图解:(假设有N个IP通过管道)

图2

图2

管道和队列模型二(图2)

带掩码的队列图解:

图3

图3

管道和队列模型三(图3)
以上是没有考虑管道和队列掩码的情况!当考虑掩码后,情况就复杂起来,不过明白了基本原理,掩码理解起来也很简单。这里详细介绍下管道和队列使用的掩码:
1、        管道和队列使用的掩码是反掩码,又称通配符掩码。作用是控制产生动态管道或动态队列的数量。
2、        反掩码的格式:dummynet可使你建立单一流程的列队。一个可识别的流程,是由ip地址的演化而成的,端口和协议类型和管道设置里一样。带有同样标示的包在演化后,进到同样的列队。可用的掩码定义为以下几种: dst-ip mask, src-ip mask, dst-port mask, src-port mask, proto mask or all, 后面的这个表示所有有意义的所有领域的所有字节。当用在管道的配置里时,每一个流程被指派一个和管道速度一样的速度。当用在列队配置的时候,每一个流程被指派一个和列队大小一样的大小,并且所有流程按他们大小比例分享在同样的管道的带宽
3、        反掩码的写法和作用:反掩码就是子网掩码的按位取反,例如子网掩码255.255.255.0;二进制表示就是:11111111.11111111.11111111.00000000;反掩码就是按位取反:00000000.00000000.00000000.11111111;十进制表示就是0.0.0.255;通常用十六进制表示反掩码:0x000000FF。反掩码在管道和队列的作用是限制动态管道和动态队列的数量!
4、        M0n0的管道和队列采用反掩码只有两种表示方式:0x00000000;0xFFFFFFFF;另外掩码可以选择是作用在目的IP还是源IP,默认是源和目的IP都是0x00000000;也就是只有一个管道或队列!默认情况下就是模型一的图解。

下面介绍带掩码的情况,因为m0n0的WEBGUI模式里没有这些功能,所以只提供有兴趣研究dummynet+IPFW的朋友提供!当然用m0n0也可以实现类似功能,不过要在exec.php里实现或在xml配置文件里实现!
假设我们希望产生64个队列,那么可以设置掩码为:0x0000003F。意思很简单,最大生成队列数为64,每4个IP共享一个队列!图我就不画了!那么回头看看m0m0掩码的方式:0x00000000和0xFFFFFFFF;很显然,0x00000000表示只有一个动态队列,所有IP共享一个队列!0xFFFFFFFF表示每个IP一个队列,用在管道上那就是一个IP独享一个队列(管道)拉。根据我的图(1)很容易就理解了!大家自己慢慢想想!

接下来我们详细介绍下队列,这也是我写这篇文章的初衷!队列有很多参数,我只讲一些与我们常用的流量控制相关的参数!先看队列模型:
队列模型图解:

图4

图4

队列的分析示意图(图4)
在m0n0中,流量控制工作在网络层和传输层中间,队列的长度是MTU的倍数;作用和MTU类似;是队列用来管理数据包的方法,因此也叫槽长!其值为2-200!这个值与延迟关系很大!原理与MTU类似,有兴趣的参考<<TCP/IP协议祥解>>!
权重是队列宽度占管道带宽的比例默认是1,依据官方的解释,权重是保证快速连接阻塞慢速连接而定义的一种比例值,我的理解是保证低速连接在带宽拥塞的情况下拥有所占比例值的带宽!也就是说在线路通畅的情况下,可以获得比权重大的带宽,但是不会小于权重所占的带宽!呵呵,也很好理解!
在这里有个特殊情况,就是如果权重设置的过大,造成队列与队列之间重叠,那么会引起队列宽度失效的现象,这也是为什么许多人争论m0n0到底有没有小包优先的原因吧!实际上在m0n0(IPFW+dummynet)中,并不存在优先这一词汇,m0n0官方对这点把握的也不是太好,这也是为什么m0n0官方一直没对m0n0的流量控制手册进行完善的原因!

还有一个重要的参数: buckets hash-table-size ;指定哈西表大小,是为了储存不同的列队。由net.inet.ip.dummynet.hash_size默认为64,允许范围是16到1024。 有效的动态队列不完全由掩码决定,必须能通过哈西表引用队列才行,因此当IP数量超过64的时候,有可能会导致某些队列失效(从哈西表中删除其引用)!有几种方法可以解决这个问题,配置xml文件可以解决,也可以在webgui页面中为不同组的IP分配不同的管道来解决!

最后介绍一种变通的均匀分享网络带宽的方法:
比如在一个拥有100台机器的网络中,带宽只有6M,LAN网地址192.168.1.0为了充分利用带宽,又不至于让某些人的大流量下载影响到其他人,可以这么设置:
(1)        起用流量管理,但是什么都不要设置:
(2)        编辑xml文件,利用<shellcmd></shellcmd>命令:
a)        创建两个管道pipe1 pipe2 分别是上行5.4M和下行5.4M
b)        创建两个队列queue1 queue2 ,分别属于pipe1 和pipe2 ;
c)        设置队列的权为2;
d)        修改队列哈西表的值为128
(3)        参考命令如下:
a)        <shellcmd>ipfw add pipe 1 ip from any to 192.168.1.0/25</shellcmd>
b)        <shellcmd>ipfw pipe 1 config bw 5.4mbit/s
c)        <shellcmd>ipfw add queue 1 ip from any to 192.168.1.0/25 </shellcmd>
d)        <shellcmd>ipfw queue 1 config weight 2 pipe 1 mask dst-ip 0x000000ff  buckets 128</shellcmd>
e)        <shellcmd>ipfw add pipe 2 ip from 192.168.1.0/25 to any </shellcmd>
f)        <shellcmd>ipfw pipe 2 config bw 5.4mbit/s
g)        <shellcmd>ipfw add queue 2 ip from 192.168.1.0/25 to any </shellcmd>
h)        <shellcmd>ipfw queue 2 config weight 2 pipe 2  mask src-ip 0x000000ff buckets 128</shellcmd>
最后希望大家都能看懂我这篇文章,本人对网络知识也算是初学,如果看不懂相关术语,请认真复习其他基础网络知识,如果有错误,还请回帖批评指正!另外本文结尾提供的例子仅供参考,本人不对其负任何责任!为了达到更好的效果,你至少还要为上例增加DNS和ACK队列!

附录:
设置掩码的队列或管道修改队列哈西表数目后,可以实现简单的单IP流量查看!
查看方法以本例子中m0n0为192.168.1.1为准:
打开http://192.168.1.1:80/exec.php
输入ipfw list 可以查看规则
输入ipfw –a list可以查看那些规则有流量那些规则是无效规则
输入ipfw pipe list 可以查看所有管道和队列
输入ipfw pipe N list N表示管道号,可以查看管道号为N的所有队列流量
输入ipfw queue list可以查看所有队列的流量
输入ipfw queue N list N表示队列号,可以查看所有队列号为N的队列流量

[ 本帖最后由 hotdll 于 2007-2-5 23:23 编辑 ]
routeros
 楼主| 发表于 2007-2-6 13:31:16 | 显示全部楼层
补充遗忘的一点理解

补充一下:
当采用队列时候,管道的带宽设置不应太高,应该按实际带宽的90%去设置,这是因为采用队列的时候,管道的带宽是WF2Q+算法的一个触发机制,动态创建管道的时候,并非立即按照权重来分配队列的带宽,只有当通过管道的实际带宽超过或等于管道的设置带宽时,WF2Q+算法才重新按权重来计算各动态队列的带宽,以防止快速连接阻塞慢速连接!
routeros
回复

使用道具 举报

发表于 2007-2-6 23:00:25 | 显示全部楼层
支持一下 请问这样进行设置以后网络速度比以前如何,如果影响较大在网吧一类的就不太适用了。
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 05:37 , Processed in 0.052258 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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