用于多输入单输出的网络流量整形和带宽分配的方法

文档序号:7597365阅读:386来源:国知局
专利名称:用于多输入单输出的网络流量整形和带宽分配的方法
技术领域
本发明涉及可变长的包交换网络中QoS服务的一种带宽控制方法,具体地说,是一种可以应用在数据通信网络中多用户接入的QoS服务流量整形及带宽分配方法。
背景技术
当前的网络带宽分配大多采用保证带宽分配方法对某个用户专门提供带宽,其他用户不能使用这段带宽,即使该用户的数据没有达到该带宽,例如当调度到某个输入一流发送包时,那么如果该队列没有包存在,则该次调度时间轮空。
质量服务QoS的一个重要问题是整形,整形是指对输入的突发性流量进行缓冲延缓其输出以防止路由器内阻塞和输出链路的阻塞。大多数流量整形方法采用传统的漏桶算法,如图4所示的,其应用系统包括多个输入链路1~n,分别连接有对应的整形器1~n,然后连接输出链路;所述输入链路、整形器通讯连接一由带宽控制器控制的读控制器。所述漏桶算法的流量整形方法的一般过程是采用一个计数器设置初值,该计数器定期的更新为最大值。每过一预定时间间隔发送不超过该计数器的包的总长队列前面的几个包,每发送一个包计数器减去包长,如果包长超出了剩余计数器,则等待下一时钟间隔计数器重新初始化最大值再来发包。每个流设有一个输入缓冲队列,队列满了则进行丢弃。这种方法通过限制计数器防止短时间内大量包过来的突发流输出导致网络或路由器缓冲区拥塞。但是这种方法只能限制输出带宽,而不能有效的调节带宽和保证带宽。
对其他带宽控制方法分析,如附图4所示,其他带宽控制也有采用漏桶算法的,能够近似的分配带宽。采取近似于带宽状态方法的,通过带宽控制器计算出应该给哪个队列分配带宽。但是大多数采用硬件的方法,缺乏足够的用户数目增加的灵活性,不易满足大量的用户的使用。又因为其设置计数器不够灵活,不能够有效地衡量带宽,这种现有技术的方式不能实时反应用户带宽的实际情况,扩展和伸缩性比较差。
还有的带宽控制是根据链路状态来控制带宽资源的使用,但不能保证用户的有效带宽。因此这种带宽分配方法一般用在中心节点的控制,而不是网络接入的地方。
因此,现有技术存有缺陷,而有待于改进和发展。

发明内容
本发明的目的在于提供一种用于多输入单输出的网络流量整形和带宽分配的方法,针对以上现有技术的缺点,提出一种新的改进的带宽控制方法和流量整形方法,保证每个输入用户的最小输出带宽并且限制其最大输出带宽,当最小带宽都得到满足时让每个用户根据其最小保证带宽大小按比例分配剩余带宽。
本发明的技术方案如下一种多输入单输出链路的带宽分配的方法,其包括以下步骤a)针对每一输入链路,设置与之连接的缓冲队列及包长缓冲队列,所述的输入链路将其包长信息发送到一队列号选择模块;b)所述队列号选择模块通过比较带宽状态与最小带宽的差额,选择最大差额的输入链路作为输出,至少每个用户分配到最小带宽后,然后根据每个用户多出带宽的大小进行调度,选择多出带宽的余数为最小值的输入链路作为输出,保证剩余带宽分给各个用户;c)所述队列号选择模块选择需要发送的队列号,输出给所述输出链路;d)所述输出链路在输出数据包后将刚刚发送的包长和队列号发送给一带宽状态维护模块。
所述的方法,其中,所述带宽状态维护模块状态维护时包括以下步骤e)维护每个队列的带宽计数器,该计数器每过一较小时钟周期减少一定数,每到的一较大时钟周期开始发送包;f)对于带宽状态维护模块中每个队列对应的带宽计数器减少的速率等于给队列设定的最小带宽为准;g)当发送包时间到时,首先检查发送包的上次发送的队列号,得到上次发送的队列号和包的长度之和,该队列的带宽计数器就增加发送的包长度之和,然后通知调度模块发送包;h)当所述调度模块收到所述带宽状态维护模块的发包命令时,根据各个输入流的带宽状态来选择队列发包。
所述的方法,其中,所述调度模块还读取每一输入链路对应的带宽计数器,并对每一输入链路的带宽计数器与最大可允许带宽进行比较;如果带宽计数器不大于最大可允许带宽,设定对于每个输入流,将其带宽计数器减去最小带宽,得到差额如果小于零则将差额赋值为0,如果不小于0则差额保持不变;当带宽计数器大于最大允许带宽时,将设置差额设定为总带宽减去最小带宽。
所述的方法,其中,所述输出链路在输出链路发包的时候,选择输入队列后,根据每个用户事先设置的权重确定发送包的量;每个队列预先设定最大突发值Mb,发送满足包长之和<=权重<=Mb。
所述的方法,其中,所述输入链路包括g1)所述输入链路有一写控制器用于检测数据包缓冲队列的状态是否已满,如果已经满了,则将包丢弃;如果队列未满,则写入包,并将包长放到包长缓冲队列;g2)在每个输入接口进来的包如果存放在一个单独的包缓冲队列上,所述输入链路具有计算包长的能力,将包长放进相应的包长缓冲队列中,以供调度模块发送包时计算要发送的包的量,以保证每次发送的流量不超过权重.
本发明所提供的一种用于多输入单输出的网络流量整形和带宽分配的方法,通过设定用户分配的最小带宽,然后对剩余带宽进行分配,保证了各个用户分配的带宽不低于最小带宽,同时又能够利用剩余带宽,从而避免了带宽的浪费;本发明的带宽控制方法既防止了突发串造成网络拥塞,又能够控制用户带宽的上限同时提高了控制方法的灵活性,通过设定时间间隔能有效提高发送效率,满足了每个用户的发送权重和之间的公平性,从而大大提高了服务质量。


图1为本发明的所述用于多输入单输出的网络流量整形和带宽分配的方法中带宽分配方法的总体运行环境图,其中示出了包括多个输入链路,缓存队列,输出链路,和带宽状态维护模块,调度发送队列的模块;图2为本发明方法的带宽状态的维护的流程图,图中示出了计算带宽的当前状态,发送带宽状态值给调度队列模块;图3示出的是本发明的所述方法的利用带宽状态的进行发送队列调度的流程图,其中示出了计算调度值,将选出的队列号发送给输出链路进行发包的过程;图4为现有技术的带宽分配结构图。
具体实施例方式
以下将详细描述本发明的较佳实施例,以使本发明的技术方案及其有益效果显而易见。
本发明方法总的目标是保证各个用户分配的带宽不低于最小带宽,同时又能够利用剩余带宽。当总带宽高于所有用户最小保证带宽之和时就会出现剩余带宽,如果总体带宽多出所有最小带宽之和,那么会出现剩余带宽。这说明所有输入流的最小带宽都得到满足,剩余带宽将运用轮转法被公平分享给所有的输入流,而对于输入数据较少的已经被发送完的用户却不给其发送的机会,从而避免带宽的浪费,这样的调度发送选择方法能够达到大家都分享剩余带宽的目的。这对于同级用户来说是公平的。针对传统的带宽分配方法,本发明方法避免了其分配的带宽未用时其他用户用不了的浪费情况。
本发明方法中如果总带宽不够将按最小保证带宽的比例来分配总体带宽,最小保证带宽高的,实际使用的带宽也要高,一旦用户超过了最高限制输出带宽,将很难获得发送机会。直到过了一段时间,带宽降下来后,该输入流才有更多机会发送。
如附图1所示的,本发明方法为一个运行在多输入单输出的汇聚节点上的流量整形和带宽分配方法,其实现可通过软件,其应用系统包括多个输入链路101和102,分别连接对应的缓冲队列1和2,并通过一输出链路或驱动程序将发送的包长和队列号发送给一带宽状态维护和分配模块,同时所述的输入链路101和102将其包长信息发送到一队列号选择模块,即调度模块;所述队列号选择模块根据所述带宽状态维护和分配模块提供的各输入队列的带宽值,选择需要发送的队列号,输出给所述输出链路或驱动程序;所述输出链路或驱动程序将对应的包输出给带宽控制过程。每输入流量整形功能使用软件维护计数器,已经不是普通的漏桶算法的整形,整形通过队列丢弃方法来实现多余的包丢弃,通过带宽状态的维护与比较来限制每输入的最大出口量;发送的时候通过带宽调度器来选择最小带宽的输入队列发包并且平衡最大实际带宽的发包。
本发明方法的实现例子和运行环境如附图2所示,所述方法的应用系统包括一组输入链路、包缓冲队列、包长缓冲队列;有一输出带宽状态模块专门维护带宽状态;另外有一负责选择队列号并负责选择发送包的调度模块,输出链路负责将发送包的总大小和队列号反馈给带宽状态维护模块。
每个输入接口进来的包存放在一个单独的包缓冲队列上,所述输入链路具有计算包长的能力,将包长放进相应的包长缓冲队列中,以供调度模块发送包时计算包长。
所述输入链路有一写控制器负责检测输入队列的状态是否已满,如果已经满了,则将包丢弃,也不往包长缓冲队列中写包长;如果队列未满,则写入包,并将包长放到包长缓冲队列。
设计输出带宽状态模块维护每个输入流的带宽计数器bandcount,判断时钟是否到达,该计数器每过一小的时钟周期减少一定数,每到一大的时钟周期开始发送包过程,首先检查发送包的结果队列,读取调度模块的包的发送量和队列号,得到上次发送的队列号和包的长度之和,那么该输入流的bandcount计数器就增加发送的包长度之和,该队列号对应的带宽计数器按包的发送量多少增加,然后发送命令到调度模块,通知调度模块发送包,并根据包的发送量和队列号更新相应的带宽计数器。循环上述过程。
对于带宽状态维护模块中每个输入流对应的bandcount减少的量和时间应该以最小带宽为准,当发送速率达到最小带宽时,bandcount始终平衡保持在最小带宽的水平,也就是说bandcount减少的速度与发送达到最小带宽的速度基本持平。
设计发送队列调度模块的方法步骤当调度模块收到带宽状态维护和分配模块的发包命令时,将根据各个输入流的带宽状态来选择队列发包;选择输入队列后,发包的时候根据每个用户事先设置的权重来发送包的量,如果有三个包的长度和最接近的权重而这四个包的长度和超过了权重,那么只发送前面三个包。由于流量整形的需要每个输入流有预先设定的最大burst值(Mb),因此发送必须满足包长之和<=W(权重)<=Mb(burst)。最后调度模块将总长度之和和发送的队列号反馈给带宽状态维护模块,以便维护所述带宽状态维护模块更新该输入的对应的带宽状态,通过这种调度实现公平分配带宽,通过发送链路实现输出流量的整形。
对调度模块的队列选择方法的补充这个选择方式是本发明的关键特征,如图3所示的,在流程开始,循环处于等待状态,直至有命令消息过来;然后读取所有的带宽计数器,并对每一输入链路的带宽计数器bandcount与最大可允许带宽maxband进行比较;如果带宽计数器bandcount不大于最大可允许带宽maxband,设定差值diff=bandcount-miniband,即对于每个输入流,将其带宽计数器bandcount减去最小带宽,得到差值diff如果小于零则将差值赋值为0,如果不小于0则差值保持不变;为了限制最大带宽,当带宽计数器bandcount大于最大允许带宽maxband时,将设置差值diff设定为总带宽(MAX_BOUND)减去最小带宽(min_band)。
通过该选择步骤可有效地调节每个输入流的输出带宽,既保证每个输入流的最小带宽,又能够公平分享剩余带宽。
选出那些差值最小且相等的队列,如果只有一个队列的差值是最小的,那么选择该队列发送。如果有多个队列的差值都是最小的,那么从中用轮转法Round robin进行选出其中一个来发送。另外如果当前带宽计数器bandcount大于最大允许带宽,则将差值设置为输出链路总带宽MAXbound减去输入队列号的最小保证带宽min[i](其中i为输入队列号),一般来说这样的差值太大,很能有机会发包。
根据权重计算出发送包的个数,发送给输出驱动程序,并将包长之和以及队列号发送给带宽状态维护和分配模块;然后循环上述过程。
所述包的发送过程为包的缓冲队列有一读控制器,收到队列号、发包的个数,将要发送的几个包读出来,一个一个发给输出链路,将包发送出去即可。
如附图3所示的,本发明的所述用于多输入单输出的网络流量整形和带宽分配的方法通过比较带宽状态与最小保证指标的差额,根据最大差额来实现选择输入链路发包,实现带宽分配功能,包括保证每个用户的最小带宽得到满足。
为防止用户的最小输出带宽较高,每个用户又有最高允许带宽的约束,如果每个用户都满足了最小带宽,那么根据每个用户多出带宽的大小公平地的调度,将剩余带宽分给各个用户。
发包时,通过设置相应的限制权重,可以在一定的范围内一次发送若干流量的包。通过限制权重,可以限制突发性。
本发明方法主要用于多用户输入的网络汇聚节点,例如视频点播的媒体服务器多路视频的入口,可用于运营商的提供SLA服务。本发明方法也可以用在网络边缘路由器,将路由器转发部分取代输出链路,将选择的输入队列的包进行转发处理。
针对传统的整形方法,本发明方法中的带宽控制方法既防止了突发串造成网络拥塞,又能够控制用户带宽的上限,因此,本发明提供动态分配的方法很好的解决了带宽的优化使用问题。
应当理解的是,本发明的上述针对具体较佳实施例的描述过于具体,并不能因此而理解为对本发明的专利保护范围的限制,专利保护范围应以所附权利要求为准。
权利要求
1.一种多输入单输出链路的带宽分配的方法,其包括以下步骤a)针对每一输入链路,设置与之连接的缓冲队列及包长缓冲队列,所述的输入链路将其包长信息发送到一队列号选择模块;b)所述队列号选择模块通过比较带宽状态与最小带宽的差额,选择最大差额的输入链路作为输出,至少每个用户分配到最小带宽后,然后根据每个用户多出带宽的大小进行调度,选择多出带宽的余数为最小值的输入链路作为输出,保证剩余带宽分给各个用户;c)所述队列号选择模块选择需要发送的队列号,输出给所述输出链路;d)所述输出链路在输出数据包后将刚刚发送的包长和队列号发送给一带宽状态维护模块。
2.根据权利要求1所述的方法,其特征在于,所述带宽状态维护模块状态维护时包括以下步骤e)维护每个队列的带宽计数器,该计数器每过一较小时钟周期减少一定数,每到的一较大时钟周期开始发送包;f)对于带宽状态维护模块中每个队列对应的带宽计数器减少的速率等于给队列设定的最小带宽为准;g)当发送包时间到时,首先检查发送包的上次发送的队列号,得到上次发送的队列号和包的长度之和,该队列的带宽计数器就增加发送的包长度之和,然后通知调度模块发送包;h)当所述调度模块收到所述带宽状态维护模块的发包命令时,根据各个输入流的带宽状态来选择队列发包。
3.根据权利要求2所述的方法,其特征在于,所述调度模块还读取每一输入链路对应的带宽计数器,并对每一输入链路的带宽计数器与最大可允许带宽进行比较;如果带宽计数器不大于最大可允许带宽,设定对于每个输入流,将其带宽计数器减去最小带宽,得到差额如果小于零则将差额赋值为0,如果不小于0则差额保持不变;当带宽计数器大于最大允许带宽时,将设置差额设定为总带宽减去最小带宽。
4.根据权利要求2所述的方法,其特征在于,所述输出链路在输出链路发包的时候,选择输入队列后,根据每个用户事先设置的权重确定发送包的量;每个队列预先设定最大突发值Mb,发送满足包长之和<=权重<=Mb。
5.根据权利要求3所述的方法,其特征在于,所述输入链路包括g1)所述输入链路有一写控制器用于检测数据包缓冲队列的状态是否已满,如果已经满了,则将包丢弃;如果队列未满,则写入包,并将包长放到包长缓冲队列;g2)在每个输入接口进来的包如果存放在一个单独的包缓冲队列上,所述输入链路具有计算包长的能力,将包长放进相应的包长缓冲队列中,以供调度模块发送包时计算要发送的包的量,以保证每次发送的流量不超过权重。
全文摘要
一种用于多输入单输出的网络流量整形和带宽分配的方法,涉及可变长的包交换网络中QoS服务的一种带宽控制方法,其包括设置与输入链路连接的缓冲队列及包长缓冲队列,输入链路将其包长信息发送到一队列号选择模块;所述队列号选择模块通过比较带宽状态与最小带宽的差额,选择最大差额的输入链路作为输出,然后根据每个用户多出带宽的大小进行调度,选择多出带宽的余数为最小值的输入链路作为输出;所述队列号选择模块选择需要发送的队列号,输出给所述输出链路;所述输出链路在输出数据包后将包长和队列号发送给一带宽状态维护模块。本发明方法通过设定用户分配的最小带宽,然后对剩余带宽进行分配,避免了带宽的浪费;大大提高了服务质量。
文档编号H04L12/56GK1798087SQ20041007770
公开日2006年7月5日 申请日期2004年12月30日 优先权日2004年12月30日
发明者游南林, 熊韬, 刘丽娜 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1