摘要:文章总结了带宽控制技术的相关知识及方法,对RouterOS软路由系统进行全面的概述,并从大学公共机房的实际应用出发,运用RouterOS软路由系统解决了带宽分配问题。
关键词:RouterOS;带宽控制;P2P限速;大学公共机房
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2012)34-8146-04
1 带宽控制技术
带宽控制是利用互联网数据包的特性,针对来源、目的、应用或其他特殊格式,进行阻拦或允许,使得带宽在不同的应用和用户之间灵活分配。
QoS(Quality of Service)服务质量,它为各种应用程序提供尽力服务以满足不同程序特定需求的服务,可用于解决网络拥塞、延迟等问题,是网络传输中的一种机制,也可以理解为对通信数据的特定服务。QoS工作方法是通过丢包实现的,它与提供尽力型的服务的网络IP协议族不同。网络IP协议族会平等对待业务流,但QoS则力图区分用户和业务流,以根据不同需求情况分配带宽,保证数据流的质量。Qos在形成新的网络流时,会出现丢包的情况,但并会因此丢失 TCP信息,因为被丢掉的包会被再次发送,确保了不会丢弃TCP协议。可以说QoS不止是限流,更多的是提供优良品质的网络服务。
作为实现QoS重要部分,带宽控制能达到控制网络流量、保障特定业务流带宽的目的。它主要是通过对网络业务流进行分类,分配不同的带宽并限制其数据包的传输速率来实现的。依据业务流的服务类型(通过源/目的端口判断)以及源地址、目的地址等数据包关键内容进行具体的带宽分类。可以说管理带宽的本质就是QoS概念的体现。
一般常用速率控制与队列的方法进行带宽控制。其中,使用队列控制带宽的常用方法有两种:基于分类的队列、优先级队列。基于分类的队列,是指网络管理员会根据某些标准,对数据包进行分类与排队,并为每一种分类划分固定的带宽。这种方法的弊病是,当带宽划分后,分类队列的应用无法使用其他分类的带宽,即便这一分类的带宽仍有剩余,这样带宽并没有得到有效的使用。还有一种与之类似队列――加权公平队列,它是在分类队列的基础上给不同分类添加优先权,重要的分类会拥有较高级别的优先权,但仍旧不可避免的存在分类队列的弊病。优先级队列与加权公平队列也有一定的相似之处,它们都会为不同的业务流添加不同的优先权。不同的是,优先级队列会先为要传输的数据包添加不同的优先权,然后根据优先权的不同分成不同的队列。但低优先权的数据包的传输往往会在高优先权流量突发出现时,停滞传输,这时管理员也无法控制带宽的分配,导致了低优先权数据包迟迟也等不到传输的机会。
通过的速率控制带宽分配的常用方法也有两种,分别是ATM通用信元速率算法与TCP速率控制。ATM通用信元速率算法主要用于ATM网络,它会检查信元流,并判断每一个信元有没有遵从虚电路的参数,通过控制信元流来达到带宽控制的目的。这一算法适合数据流相对恒定的网络,因为当有突发性数据包输入时,有可能会丢掉数据分组。TCP速率控制算法就是在TCP可靠传输的基础上,对滑动窗口协议的进一步应用,TCP的滑动窗口协议主要应用于流量控制以及管理丢失的数据。滑动窗口协议中的窗口大小,指的是发送方主机在收到接收方的确认消息之前的传输能力,即可以传输的数据大小。TCP速率控制算法会计算任何一个TCP会话往返的时间,并且修改TCP的头部内容,延迟TCP的确认,在给分类业务流的流量分配上,有较高的工作效率。但这种算法要求准确测量传输往返的时间以及数据传输的速度,这样精确的数据要求难度很大,并且测量过程会增加带宽的开销,算法本身也相当复杂,因此应用不广。
一般局域网中,使用较多的带宽控制方法是基于队列分类的,因为队列分类符合日常的业务流情况,对于网络设备以及算法本身也比较容易实现。在网络结点设备上,一般对队列进行如下分类:FIFO(先进先出队列)、SFQ (随机公平队列)、 RED( 随机早先探测) 、PCQ (每次连接队列)以及 HTB(等级令牌桶)等五种队列规则。
2 RouterOS带宽控制
RouterOS是一种路由操作系统,通过该软件将标准的PC电脑变成专业路由器。RouterOS可通过网络安装、U盘安装以及CD镜像文件安装三种安装方式,其兼容x86架构平台,所需最小内存32MB即可,一台586PC机就可以实现路由功能,并且在提高硬件性能同样也能提高网络的访问速度和吞吐量。
RouterOS能对特定的IP地址、子网、协议,端口以及其他参数限制数据率;限制P2P流量以保证优先考虑一些数据包流;还能使用队列脉冲串已获得更快的WEB浏览体验;并且队列不仅可以应用在数据包通过的路由器真实接口上,还可以应用在虚拟接口上。
2.1 RouterOS带宽控制的队列规则
RouterOS能支持PFIFO(包先进先出)、 BFIFO(字节先进先出)、 SFQ (随机公平队列)、RED( 随机早先探测) 、PCQ (每次连接队列)以及 HTB(等级令牌桶)6种队列规则。
1)PFIFO(包先进先出)与BFIFO(字节先进先出)
PFIFO 和BFIFO两种队列都是采用先进先出算法的,即以业务流到达的先后次序作为带宽分配的顺序。两者的主要区别在于衡量的单位不同,PFIFO是以数据包位单位,而BFIFO以字节为单位。这两种队列类似于顺序队列,队列的长度是预先设置的,用PFIFO-limit(BFIFO-limit)这一参数,定义队列可以容纳的数据量。如果队列满了,后面的数据要被丢弃,不能排队。
2)SFQ随机公平排序
并不会限制流量,它主要的作用是在连接完全满的时候均衡业务流,以保证一些连接不至于空等待。当连接队列完全满的时候,SFQ的散列算法会将队列中的数据包,进行分解随机分散到有限数量的子队列中,再由Round-robin算法把从每个子队列的字节按照顺序出队。整个 SFQ队列可以容纳 128个数据包,有1024个子队列可用。SFQ队列如图1所示。 3)RED随机早先探测
RED是一种通过控制平均队列长度避免网络拥塞的排序机制,应用在高数据率的拥挤的连接上,它在 TCP协议上工作很好,但在 UDP上并不理想。当平均队列长度达到 RED规定的某个值(red-min-threshold)时,RED就会随机选择该丢弃队列中的某个包。而当平均队列长度达到red-max-threshold时,随后进入的包会被直接丢弃,有时候真实队列长度会远远大于red-max-threshold,这时RED会丢弃所有超过 red-limit的数据包,如图2所示。
4)PCQ (每次连接队列)
PCQ (Per Connection Queuing, 每次连接队列), 可以说它是去掉了随机特性的进化版SFQ。PCQ会根据 pcq-classifier(组分类器)产生子队列,但PCQ队列的总大小不能大于 pcq-total-limit包。它可以将不同源 IP地址的包集合到不同的子队列中,并由参数 pcq-limit规定进入子队列数据包数,每个子队列都有一个 pcq-rate参数,对每一个子队列进行限制或均衡,最后每个子队列还可以根据需求附属到某个特定接口上。PCQ用来均衡多用户动态形成的流量,有很好的效果,它也是唯一一种能限流的无等级排序类型。
5)HTB(等级令牌桶)
RouterOS中的HTB(等级令牌桶)队列规则,允许创建一个类似于树型结构的等级队列结构,并确定队列之间的关系。每个队列在 HTB有2个速率限制:约定信息速率(在 RouterOS中的参数为limit-at)和最大信息速率(在RouterOS中的参数为 max-limit),通过双重限制,对队列进行流量管理。
在HTB中,一旦队列添加了一个 Child(子队列)时,HTB就会将其变为 inner(内部队列),仅负责传输的分配,而对符合的数据进行处理这项工作则由Leaf(叶队列)即向下没有 Children(子队列)的队列负责。 在RouterOS中规定,必须指定 Parent(父级)选项和一个子队列。
2.2 RouterOS对P2P流量的限制方法
在用RouterOS进行BT流量封堵时,常常采用限制端口的方式进行,因为BT的服务端口比较固定。同样,我们可以使用类似的方法限制P2P流。虽然P2P应用采用可变端口,这些P2P应用软件都必须进行登录才能使用,因此可以在客户端登录服务器时,获取验证登录的服务器IP地址,然后使用IP屏蔽的方式,达到屏蔽该P2P应用的目的。首先使用RouterOS的WINBOX界面远程登录P2P应用的服务器,注意在RouterOS上的Interface配置,必须是内网的局域网网卡,并做好相应的标识,如标注Ether1,在Src.Address项配置好要进行限制P2P应用的主机IP/掩码。然后在成功获取了IP之后,在IP-Firewall中对IP进行屏蔽。这种方式会完全现在某种特定的P2P应用,但很多时候网络管理并不是想要完全限制某些P2P的应用,而是希望当其在占用大量带宽时,进行合理及必要的限制。所以往往他们会降低数据包分级并且限制数据包总流量大小,这样能达到带宽控制的目的,又不会完全限制P2P下载的使用。具体的限制方法可以通过代码实现,例如要将网络的总流量限制在512KB时,可在RouterOS中配置如下脚本代码:
3 RouterOS在公共机房中的带宽控制实践
在搭建RouterOS系统平台时,只需要设置好PC机的串口连接参数,然后将RouterOS软件安装在电子磁盘中,然后再进行初始化设置,就可以开始使用RouterOS系统了。软件的安装方式有三种,分别可以通过光盘安装、USB安装和ISO镜像文件安装。在使用光盘安装时要注意,首先要在PC机的BIOS设置成光盘为第一启动盘,然后在安装过程中必须勾选system包必须为默认安装。在使用USB方式安装时,需要使用Netintall软件协助安装。当U盘插入USB接口后,启动Netintall软件,然后选择RouterOSx86安装包,然后通过Netintall软件将RouterOS系统安装到U盘上,取出U盘。将PC机的BIOS设置成USB引导启动。使用ISO镜像文件安装的方式,与光盘类似,这里就不多做介绍。
RouterOS安装到电脑后,就可以开始系统的初始化配置。首先启动设备,检查各个接口网卡是否连接正常。然后对RouterOS服务器进行如下配置:
在服务器端配置好后,使用内网IP连接到RouterOS服务器。使用Winbox软件进行其他具体的配置,具体步骤可分为5步。首先,刚才区分确定了内外网卡,所以第一步,应该在系统上配置内网网卡名称,如:内网卡命名为:lan,外网卡命名为:wan,这样能方便以后系统的使用和配置。配置名字后,进行第二步IP地址的配置,在winbox的IP―address中配置内网和外网的IP,lan上使用:192.168.0.1/24,wan上使用192.168.48.7/24。随后就开始第三步网关路由的配置,具体的配置步骤在winbox的IP-routers中配置静态默认路由,0.0.0.0/0 192.168.48.1。第四步要进行NAT转换规则配置,通过IP-Firewall-NAT中配置:192.168.0.0/24,注意action参数的配置一定要选择masquerade。最后,在IP-DNS-setings配置DNS。所有的配置完成后,可以通过Files保存配置。以上五个步骤之后,RouterOS平台就搭建好了,可以进行带宽分配。可以通过建立简单队列来对具体的单个ip主机进行带宽限速。第一步要配置队列名字,要限速的IP地址,然后配置详细的限速,分别有MAX limit 、Burst limit和Burst threshold,注意Burst threshol的值必须小于或等于Burst limit,超出后将提示错误,无法完成配置。所有的配置完成后,可以开始检验限速是否成功。
4 结论
通过对带宽控制的理论总结和对RouterOS对带宽控制的具体情况的分析,成功地运用RouterOS对公共机房的带宽流量进行了分配和有效控制,发现实际运行效果良好。
参考文献:
[1] 李俊民,郭丽艳.网络安全与黑客攻防[M]. 2版.北京:电子工业出版社, 2010.
[2] 胡俊,程瑾.网络流量管理控制技术在校园网的应用研究[J].中国教育信息化,2009(21):29-30.
[3] 孙寒冰.关于RouterOS在校园网中的应用[A].科学之友,2011.
[4] 袁丽慧,张世禄.P2P 模式探讨与应用研究[J].西华师范大学学报,2005,26(4).
[5] 王俭,刘渊.基于P2P 应用的校园网安全策略及防护技术[J].信息技术,2006(7).
[6] 成都网大科技. RouterOS防火墙与过滤详解[EB/OL].2008.