基于分层令牌桶的通讯流量控制模型的设计
2009-09-18许冰晖
许冰晖
[摘要]当前,大流量的网络应用已越来越成为主流,而这些应用对网络带宽的占用也越来越大,如何对网络进行有效的通讯流量控制,已经成为一个急需解决的难题。提出一种基于分层令牌桶的通讯流量控制模型,利用分层令牌桶排队策略较好地实现对通讯流量的监控与限制,在很大程度上减轻网络负担。
[关键词]分层令牌桶通讯流量控制过滤器
中图分类号:TN91文献标识码:A文章编号:1671-7597(2009)0610016-01
一、引言
在Internet飞速发展的今天,P2P等大流量的网络应用已经成为上网的主要应用之一。一般人除了收发邮件、浏览网页外,越来越多人使用BitTorrent、eMule、电驴、迅雷等p2p工具进行网络资源的下载与上传。可是这些应用也有一个缺点,就是耗损的网络带宽非常巨大,往往是有多少带宽就用多少带宽,从而造成内网带宽、外网链路都被这些应用所占用,导致内网用户之间带宽分配不公平。如何对网络进行有效的通讯流量控制,从而地解决内外网的带宽问题,是现在面临的一个急需解决的难题。
二、当前通讯流量控制技术的局限性
传统的网络设备如交换机、路由器通常也提供了一定的通讯流量控制功能,但它们提供的流量控制功能一般都是一些附件功能模块,由于受限于硬件和软件算法,通常只能做到上下行限制,而无法应对大流量的网络环境。
防火墙主要是通过IP地址、TCP/UDP端口实现对网络通讯流量的控制,而路由器和交换机是通过IP包头、TCP包头等参数实现对通讯流量的控制,而当前很多应用软件都是通过跳跃端口或随机端口甚至是80端口进行数据传输的,这样一来,传统的网络设备对此就显得无能为力了。
而当前的专业流量管理设备主要基于第七层应用进行流量管理,虽然从一定程度上缓解了上述的这些问题,但是同时也带来了新的问题。互联网的应用及传输协议成千上万,不可能保证所有的应用都能正确识别,由于应用的不断增加不断变化,流量管理设备本身也需要不断更新识别库,且识别库的更新也很难保证快速及时从而跟上应用软件的不断更新。
目前各种网络应用的数据传输方式日益复杂,通过协议加密等方式实现数据传输,对于这些流量控制设备而言,控制难度也在日益加大。当应用是通过加密或压缩的方式进行流量传播时,设备很难再进行应用的识别。如此一来,之前所有制定的流量管理策略都失效了。网络应用是在时刻变化的,网络本身也是时刻变化的,这使得网络管理员要不断的监测网络中各种应用的流量,不断的升级各种新的应用的协议特征码。今天制定的流量管理策略有效,当明天出现新的应用时,又需要重新制定流量管理策略。这些硬伤都决定了这些设备无法大规模地应用到实际当中。
三、通讯流量控制系统的功能需求
通过上述分析和对网络实际应用的研究,我们可以确定一个较完善的通讯流量控制系统至少应该具备如下几下功能:
1、系统需能够针对每用户/IP定义流量使用份额;
2、系统需能够通过调整各项参数来减少整个网络的延时;
3、系统需能够提供“动态流量管理”来保证带宽的最大使用率。
四、分层令牌桶排队策略
分层令牌桶排队策略是由Martin Devera编写的一个等级化、基于类的连接共享的排队策略,目的是替代基于类的排队策略Qdisc(CBQ)。分层令牌桶排队策略比CBQ更快速。从2.4.20版本开始,标准的Linux内核开始提供这种新策略。
五、基于分层令牌桶的通讯流量控制模型的设计
基于分层令牌桶的通讯流量控制模型以透明桥接的方式连接在外线和三层交换机之间,用来改变或优化内部网络和互联网之间的数据流,这种数据流是双向的,即从内部网络流向互联网,以及从互联网流向内部网络。
我们将所有数据流都放置在队列中,因为数据流在网络中的传输速度不相同,总是有快有慢,如果没有队列将出现丢包的问题,这也是队列最主要的作用。而队列对数据流的处理是基于FIFO(先进先出)的策略。我们在队列中建立数据类别,如FTP、HTTP等,队列中的数据根据这些类别进行自动分类,然后设定不同数据类别的优先级别或时间顺序,从而控制队列中的数据流,确保高优先级的数据流总是比低优先级的数据流先进行处理。基于分层令牌桶的通讯流量控制方式的好处是在于可以根据应用来控制数据流,比如重要的应用如Citrix、VPN等可以优先进行处理,而P2P等可以滞后处理,从而达到优化网络流量的目的。
图1显示了基于分层令牌桶的通讯流量控制模型是如何起到控制网络通讯流量的作用的。
以下是其中一些重要定义:
ODisc-即排队策略,是一个安排网络包如何通过的调度者。FIFO是一种典型的简单调度模型。
Class-一个类仅可以在一个Classful QDisc的内部存在,并包含一系列的子类或一个单一的QDisc。
过滤器过滤器包含了分类器,其作用是基于特定的性质对包进行选择和分类,并引导选择的包到一个子类进行进一步的处理。过滤器可以被依附在一个Classful QDise或一个类上。
Classful QDisc一分类QDisc,一个基于类的QDisc能够包含许多类,而过滤器可以附属于这些类。
令牌桶过滤器是一个排队策略,它采用了令牌和桶的概念来控制某层的流量。每个桶可以含有特定数量的令牌,而桶也以一个给定的速率灌满。当一个网络包存在且仅存在一个空闲的令牌时,这个网络包将会被传输。
基于分层令牌桶的流量控制模型包含了一个桶的层次结构,这个结构使用令牌和借予模型(Borrowing Mode)来控制某层的流量。流量在子类和等级中的内部类中得到控制,并指定借予模型。各个类根据以下各种不同的参数来对流量进行控制。
Rate-最小速率,类似于提交信息速率或被保证的带宽;
Ceil-所允许的最大速率:
Burst-溢出,在获得更多的令牌前,系统可以解除队列中的溢出字节;
Quanrum-量,被用于控制借予的参数:
Prio-优先级,数值介于0—7之间,从属于某个子类。
六、结束语
本文对分层令牌桶排队策略在通讯流量控制中的应用进行了研究,提出了一种基于分层令牌桶的通讯流量控制模型,较好地解决了原有基于应用的通讯流量控制系统存在的缺陷,具有较强的灵活性。