- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
防火墙带宽控制技术的的研究与实现
防火墙带宽控制技术的研究与实现
摘 要 随着网络应用的不断丰富,人们对网络服务质量提出了更高的要求,带宽控制则日益受到人们的关注。本文深入研究了Linux系统下的带宽控制工具TC,以及HTB队列规定,针对防火墙中不同的应用和服务,实现了带宽控制。 关键词 QoS;TC;HTB;队列;分类;过滤规则1 引言 随着网络多媒体技术的飞速发展,Internet上的多媒体应用层出不穷,如IP电话、视频会议、视频点播(VOD)、远程教育等多媒体实时业务;另外,电子商务作为一种新兴的网络经济模式日益受到人们的青睐。同时,在很多企业的局域网内部,网络应用也极为丰富,如MIS系统、Web服务、邮件服务,甚至还有数据流量较大的视频点播等业务。面对网络服务与应用的不断增长,人们对其质量提出了更高的要求。 近年来,网络带宽不断扩大,但是依然无法满足网络应用的要求。为此,带宽控制逐渐为人们所关注。一般说来,企业内部网络有足够的带宽可以使用。但是,企业接入Internet的带宽是有限的。为了提高网络带宽的利用率,保证用户关键性业务的正常运行,越来越多的企业和组织意识到了带宽控制的重要性。 QoS,即质量服务,是网络中的一种安全机制, 用来解决网络延迟和阻塞等问题。带宽控制是实现QoS的重要组成部分,它根据源/目的端口(服务类型)、源/目的地址等数据包的关键字段,对网络带宽进行分类,限制每个分类中数据包发送的速率,从而达到控制网络流量,保障关键业务带宽的目的。 防火墙是目前最有效、使用最广泛的网络安全产品,它处于网络的边界处,而这里也是实现带宽控制最合适的位置。本文深入分析了Linux下的带宽控制工具TC,并且结合最新的HTB队列规定和iptables工具,给出了在防火墙上实现带宽控制的具体实现。2 Linux下的带宽控制工具TC TC(Traffic Control),即带宽控制,是Linux中功能强大的带宽控制工具。通过TC,可以很方便地管理网络带宽,实现QoS。TC拥有数据包分类、优先级设定、数据共享、输入和输出流量限制等多种功能。2.1 TC的结构 TC共分为三个模块:队列规定模块、分类模块和过滤模块。它们之间的关系如图1所示,队列规定模块是TC实现的基础,在这个模块中封装了其它两个模块。而分类和过滤规则是实现TC的主体。2.1.1 队列 每一个网络接口上都可以绑定一个队列规定,用于控制经过这个接口的数据流。它把一条物理链路模拟成几条更慢的链路或者把发出的不同类型的流量模拟成不同的连接。Linux内核中支持的队列规定有许多。有些是不可以分类的,如FIFO,pfifo-fast,red,sfq,tbf,另一些是可以分类的,如CBQ、HTB、优先级队列规定。其中,CBQ和HTB的功能最为丰富,它们可以为每个模拟链路设置优先级,优先级高的先发送;还可以实现链路共享,当一个分类上的带宽空闲时可以借用给其它的分类;还有突发流量控制,速率限制等。如果一个接口上没有绑定任何队列,则使用默认的FIFO队列。2.1.2 分类 在一个队列上必须有一个主干分类,它拥有全部的带宽。在主干分类上可创建多个分类,每个分类可以再创建它们的子类,以此类推,但是每一个子类只能有一个父类。它们的主要作用是将数据流依据各种条件进行分类,便于对它们进行控制。针对各个不同的网络接口可创建相同的分类,但是同一个接口上的分类不能相同。每个分类都分配了一定的带宽值,属于同一个父类的所有子类的带宽总和不能超过父类的带宽值。分类就好像是为数据包建立了几条通道,而数据包的流向则由过滤规则来决定。2.1.3过滤规则 每一个分类可以设置一条或者多条过滤规则,每一条规则由两部分组成:匹配和判决。匹配部分根据数据报的某些特征来区分数据报,如数据报的源IP地址、目地IP地址,协议类型、TOS字节、网络接口、端口等。如果没有匹配到,就调用下一条过滤规则;如果匹配到了就通过判决部分来决定是将它丢弃、延迟还是传入下层分类。目前,Linux可以使用的过滤器有:fwmark分类器,u32分类器,RSVP分类器等。其中,fwmark 分类器允许使用Linux netfilter代码选择流量,而u32分类器允许选择基于ANY头的流量。图1 队列规定、分类和过滤模块三者的关系2.2 TC的实现原理 TC将流经网络接口的数据放入一个队列中,对它们进行分类,并根据过滤规则把数据包放入每个分类的分队列中,通过控制每个分队列数据包发送的速率来限制每个分类的带宽。 首先,TC在网络接口处绑定一个队列规定,并为这个队列创建多个分类,如果需要,还可以为每个分类创建多个子分类,每个子分类都有一个数据包分队列,它们形成了一个树型的结构(如图1)。同属一个父类的各个分类之间可以互相共享带宽,当然在创建分类时也可以设置为不共享自己的带宽。 其次,
文档评论(0)