防火墙带宽控制技术的研究与实现(1)_第1页
防火墙带宽控制技术的研究与实现(1)_第2页
防火墙带宽控制技术的研究与实现(1)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、防火墙带宽控制技术的研究与实现(1)    摘要  随着网络应用的不断丰富,人们对网络服务质量提出了更高的要求,带宽控制则日益受到人们的关注。本文深入研究了Linux系统下的带宽控制工具TC,以及HTB队列规定,针对防火墙中不同的应用和服务,实现了带宽控制。     关键词  QoS;TC;HTB;队列;分类;过滤规则 1引言    随着网络多媒体技术的飞速发展,Internet上的多媒体应用层出不穷,如IP电话、视频会议、视频点播(VOD)、远程教育等多媒体实时业

2、务;另外,电子商务作为一种新兴的网络经济模式日益受到人们的青睐。同时,在很多企业的局域网内部,网络应用也极为丰富,如MIS系统、Web服务、邮件服务,甚至还有数据流量较大的视频点播等业务。面对网络服务与应用的不断增长,人们对其质量提出了更高的要求。    近年来,网络带宽不断扩大,但是依然无法满足网络应用的要求。为此,带宽控制逐渐为人们所关注。一般说来,企业内部网络有足够的带宽可以使用。但是,企业接入Internet的带宽是有限的。为了提高网络带宽的利用率,保证用户关键性业务的正常运行,越来越多的企业和组织意识到了带宽控制的重要性。  

3、0; QoS,即质量服务,是网络中的一种安全机制, 用来解决网络延迟和阻塞等问题。带宽控制是实现QoS的重要组成部分,它根据源/目的端口(服务类型)、源/目的地址等数据包的关键字段,对网络带宽进行分类,限制每个分类中数据包发送的速率,从而达到控制网络流量,保障关键业务带宽的目的。    防火墙是目前最有效、使用最广泛的网络安全产品,它处于网络的边界处,而这里也是实现带宽控制最合适的位置。本文深入分析了Linux下的带宽控制工具TC,并且结合最新的HTB队列规定和iptables工具,给出了在防火墙上实现带宽控制的具体实现。2Linux下的带宽控制工具TC 

4、;   TC(Traffic Control),即带宽控制,是Linux中功能强大的带宽控制工具。通过TC,可以很方便地管理网络带宽,实现QoS。TC拥有数据包分类、优先级设定、数据共享、输入和输出流量限制等多种功能。2.1  TC的结构    TC共分为三个模块:队列规定模块、分类模块和过滤模块。它们之间的关系如图1所示,队列规定模块是TC实现的基础,在这个模块中封装了其它两个模块。而分类和过滤规则是实现TC的主体。2.1.1 队列    每一个网络接口上都可以绑定一个队列规定,用于控制经过这个接口的数

5、据流。它把一条物理链路模拟成几条更慢的链路或者把发出的不同类型的流量模拟成不同的连接。Linux内核中支持的队列规定有许多。有些是不可以分类的,如FIFO,pfifo-fast,red,sfq,tbf,另一些是可以分类的,如CBQ、HTB、优先级队列规定。其中,CBQ和HTB的功能最为丰富,它们可以为每个模拟链路设置优先级,优先级高的先发送;还可以实现链路共享,当一个分类上的带宽空闲时可以借用给其它的分类;还有突发流量控制,速率限制等。如果一个接口上没有绑定任何队列,则使用默认的FIFO队列。2.1.2 分类    在一个队列上必须有一个主干分类,它拥有全部的带宽

6、。在主干分类上可创建多个分类,每个分类可以再创建它们的子类,以此类推,但是每一个子类只能有一个父类。它们的主要作用是将数据流依据各种条件进行分类,便于对它们进行控制。针对各个不同的网络接口可创建相同的分类,但是同一个接口上的分类不能相同。每个分类都分配了一定的带宽值,属于同一个父类的所有子类的带宽总和不能超过父类的带宽值。分类就好像是为数据包建立了几条通道,而数据包的流向则由过滤规则来决定。2.1.3过滤规则    每一个分类可以设置一条或者多条过滤规则,每一条规则由两部分组成:匹配和判决。匹配部分根据数据报的某些特征来区分数据报,如数据报的源IP地址、目地IP地

7、址,协议类型、TOS字节、网络接口、端口等。如果没有匹配到,就调用下一条过滤规则;如果匹配到了就通过判决部分来决定是将它丢弃、延迟还是传入下层分类。目前,Linux可以使用的过滤器有:fwmark分类器,u32分类器,RSVP分类器等。其中,fwmark 分类器允许使用Linux netfilter代码选择流量,而u32分类器允许选择基于ANY头的流量。图1队列规定、分类和过滤模块三者的关系2.2 TC的实现原理    TC将流经网络接口的数据放入一个队列中,对它们进行分类,并根据过滤规则把数据包放入每个分类的分队列中,通过控制每个分队列数据包发送的速率来限制每个

8、分类的带宽。    首先,TC在网络接口处绑定一个队列规定,并为这个队列创建多个分类,如果需要,还可以为每个分类创建多个子分类,每个子分类都有一个数据包分队列,它们形成了一个树型的结构(如图1)。同属一个父类的各个分类之间可以互相共享带宽,当然在创建分类时也可以设置为不共享自己的带宽。    其次,针对每个分类,设置一条或多条过滤规则与它相对应。当数据包进入分类后,相应的过滤规则根据数据包的各个字段或者标志位进行匹配,这些字段或者标志位中,有的是数据包创建的时候就有的,如源、目的端口,源、目的地址等;有些是在数据包进入系统时由ipta

9、bles命令设置的(用以区分不同的数据流),如mark值。当一个数据包被匹配后就会对它执行相应的判决,决定这个数据包是丢弃、延迟还是继续流入下一层分类。    最后,所有没有被丢弃,需要通过网络接口发送的数据包都会被放入某个子类的分队列中等待发送。TC按照不同的速率到每个队列中取出数据包,交给网络接口进行发送。每个分队列都有它的优先级,优先级高(设置的数值低)的队列先发送,当优先级高的队列中的数据包全部发送完毕后,再发送优先级低的。也可以为分队列设置其它排队方法,防止优先级高的队列长期占用网络接口。3带宽控制在防火墙中的实现3.1 队列的选择  

10、;  对于防火墙来说,选择一个功能强大,适合具体应用环境的队列规定有助于提高系统实现带宽控制的成功率和精确度。相对于其它的队列规定,CBQ和HTB提供了分类、链路共享、限速等丰富的功能,是构建带宽控制模块的首选队列。    CBQ作为一个经历长久考验的排队算法,它功能强大,且较早地被Linux所支持,有许多成功的实例。CBQ队列在内核中依靠粗糙的计时信息来固定带宽,虽然在一个较长的时间段内,可以维持很好的精度,但是在以秒为单位进行计量的时间段内,其结果就不准确了。CBQ是通过计算连接的空闲时间来限制带宽的,如果要把某个应用的带宽限制为整个带宽的10%,则

11、这个应用的相关连接的空闲时间应为90%。其空闲时间的计算标准是数据包离队事件发生的频率和下层连接(数据链路层)的带宽。当一个连接长期处于空闲时,就会造成对空闲时间计算的偏差,导致带宽限制失效。虽然CBQ中也可以通过设定某些参数(如maxidle,minburst等)来纠正这个问题,但是由于纠正参数不止一个,且每一个参数的改变都会影响到其它参数,较为复杂。所以在这个问题上,CBQ始终无法很好地解决。    HTB是一个更好理解更容易掌握的可以快速替换CBQ队列规定的队列,它是CBQ的一个精简改进版,继承了CBQ的多项功能,去掉了一些复杂且不实用的部分。HTB可以实现带宽分类、带宽共享、设置优先级、设定突发流量等功能。更重要的是,HTB改变了限制带宽的方法。它通过限制每个分队列上数据包的发送速率来限制每个分类的带宽。提高了带宽限制的精确度。对于每一个网络接口来说,同一时刻只能发送一个数据包,所以网络接口处数据包的发送速率是一定的。HTB队列规定通过在一个固定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论