专利名称:一种基于报文缓存的网络限速方法及装置的制作方法
技术领域:
本发明涉及数据网络通信领域中的网络限速技术,尤其涉及一种基于报文缓存的网络限速方法和装置。
背景技术:
随着网络的不断发展,网络在人们生活中的地位不断提升,用户对网络的需求不断发生变化,要求传输的信息种类越来越多,要求提供的服务质量也越来越高。由于各种新型业务不断涌现,大量的视频点播、流媒体、网络游戏等事实业务以及P2P类型业务广泛应用于宽带网络,这些新业务不仅占用带宽大,而且具有实时性,对网络传输能力和服务质量提出了更高的要求,如何更好的控制网络带宽利用率,就成了日益重要的题目。
目前存在的网络限速技术普遍采用令牌桶算法进行报文的限速。如图I所示,首先,系统按照规定的速率往令牌桶中填充相应的令牌。其次,当数据报文到达时,先从令牌桶中获取相应令牌,如果能获取到足够的令牌,则发送数据报文,同时从令牌桶中减去数据报文长度所对应的令牌数;如果不能获取到足够令牌则丢弃该报文。由上述分析可知,现有技术的缺点主要表现为(1)将上述现有方法利用到具有传输特性的具体应用进行限速时,超过限速速率的报文将被系统丢弃,会导致发送失败的报文以原速率进行试探重传,所以限速后用户实际使用的带宽小于限速带宽,网络速度变慢。(2)当报文的流入速率远大于限速速率时,系统中会有大量的报文进行重传操作,从而大大降低了带宽利用率。并且限速策略刚生效时,这种重传操作,使得报文交互速率很难快速的稳定在限速值附近,延长了限速后速率的稳定时间。(3)当报文流入的速率比限速速率大很多时,令牌桶的值会在很短的时间内被消耗完,在回填令牌之前会有大量报文因为没有令牌而被丢包,所以令牌桶限速后报文输出的流量非常不均匀。
发明内容
本发明的目的在于提供一种基于报文缓存的网络限速方法及装置,针对现有的网络限速技术中带宽利用率低且限速后的稳定时间延长等缺陷,提出了一种新的网络限速方法和装置,将未到达发送时刻的报文进行缓存,然后通过定时触发、数据包触发缓存报文输出来实现限速功能。本发明的技术方案如下一种基于报文缓存的网络限速方法,其包括如下步骤A、根据网络限定速率值V和已发送的第N-I个报文的长度V1,计算第N个报文的可发送时刻N为大于I的自然数;TNS表示第N个报文的发送时刻,其中第一个报文的发送时刻T1为系统赋予的初始值;B、如果第N个报文的到达时刻Tna大于等于所述的发送时刻TN,则发送该报文并返回步骤A ;C、如果第N+M (M为大于等于O的整数)个报文的到达时刻T (N+M)A小于所述可发送时刻TN,则将该第N+M个报文缓存,并在Tn时刻到达时,发送第N个报文并返回步骤A。一种基于报文缓存的网络限速装置,其包括以下单元计时单元,用于根据网络限定速率值V和已发送的第N-I个报文的长度Lim,计算第N个报文的可发送时刻为大于I的自然数;TNS表不第N个报文的发送时刻,其中第一个报文的发送时刻T1为系统赋予的初始值;报文收发单元,用于,当第N个报文的到达时刻Tna大于等于所述的发送时刻Tn时发送该报文;报文收发单元,用于,当第N+M (M为大于等于O的整数)个报文的到达时刻T (N+M)a小于所述可发送时刻TN,则将该第N+M个报文缓存,并在Tn时刻到达时,发送第N个报文。本发明和现有技术相比,解决了传统令牌桶限速丢包导致的丢包率高,数据包重 传概率大,限速后速率值稳定较慢的缺点,有效的提高了网络带宽利用率。同时,系统对于不同定时时间的统计功能,复用相同的物理资源来实现,能够节省物理资源。
图I为现有技术中一种令牌桶限速流量示意图。图2为本发明中一种基于报文缓存的网络限速装置逻辑流程图。图3为本发明实施例中一种定时触发机制示意图。图4为本发明实施例中一种基于缓存的定时触发机实例制示意图。图5为本发明一种定时触发机制示意图。图6为本发明中一种基于缓存的定时触发机制实例示意图。图7为本发明中一种报文缓存触发机制示意图。
具体实施例方式本发明应用于网络设备上,本发明的实现可以基于各种常见硬件架构,通常这样网络设备主要包括CPU、内存、网络接口、非易失性存储器和业务硬件,其中业务硬件包括FPGA、CPLD、ASIC等逻辑器件,甚至可能是各种带有子系统的单板。本发明需要使用各个硬件与现有技术并无特别的要求,本发明不再一一详述。为了更加清楚和明白地表述本发明,以下结合实施例对本发明技术方案进行详细说明。请参考图2所示的本发明中一种基于报文传输的网络限速装置逻辑结构示意图,所述网络限速装置包括计时单元和报文收发单元。请进一步参照图3以及图4,所述的基于报文缓存的网路限速装置在网络设备上运行时,其执行其对应的方法包括如下步骤步骤I、在同一种应用报文交互比较频繁时,以第一个报文的到来时刻作为初始值,记为Tla,其发送时刻为报文发送的初始值T1,由于系统中第一个报文到达时立即发送,故可以认为Tla = T1,计时单元根据网络限定速率值V和第一个报文的长度L1,计算第2个报文的可发送时刻T2=UL1Z^系统刷新定时器的时间为U/V,并以报文的可发送时刻T2为地址存储缓存地址,并在定时器超时时确定T2的到达;本步骤由所述计时单元执行。举例而言,在一种实施例中当一种具体应用的网络限速值为IMb/s时,发送一个128B的小包需要消耗977us,在同一种应用报文交互比较频繁的时间段内,以第一个报文到来的时刻作为时间轴的初始值O,由计时单元计算第二个报文的可发送时间T2=0+128B/(IMb/s) =977us,系统刷新定时器的时间为977us,并在定时器超时时确定可以发送第二个报文。步骤2、如果第二个报文在T2或T2时刻之后到达报文收发单元,则报文收发单元输出第二个报文,然后返回步骤1,由计时单元计算第三个报文的可发送时刻T3 ;例如在步骤I中,如图3所示,如果第二个报文在977us或大于977us时到达报文收发单元,则报文收发单元输出第二个报文,且计时单元计算第三个报文的可发送时间T3。步骤3、如果第二个报文及其后续的M (Μ为大于等于O的整数)个报文在T2时刻之前到达报文收发单元,判断缓存队列是否有缓存空间,若有,则缓存报文,若否,则将报文做丢弃处理,并在T2时刻到达时触发第二个报文输出,并计算第三个报文的可发送时刻T3 ;前述步骤2以及步骤3由报文收发单元执行。例如在步骤I实施例中,如图4所示,考虑到用户有可能会在短时间内发送大量报文的情况,因此需要考虑缓存可能溢出的处理。在优选的实施方式中,如果第二个及其后续报文在977us之前到达报文收发单元,也就是说此时需要缓存报文,在缓存报文之前系统先判断缓存队列是否有缓存空间,若有,则缓存报文,若否,则将报文做丢弃处理,977us到达时触发输出第二个报文,计时单元计算第三个报文的可发送时刻T3,之后以此类推。请参考图5以及图6,本发明将上述网络限速方法步骤抽象归纳为步骤Α、当第N-I个报文发送时,计时单元根据网络限定速率值V和已发送的第N-I个报文的长度Ln_1;计算第N个报文的可发送时刻Tn=T0m^V1ZX N为大于I的自然数;TNS表示第N个报文的发送时刻,其中第一个报文的发送时刻T1为系统赋予的初始值, 在计算出Tn时刷新定时器的定时时间,所述定时时间为并在定时器超时时确定所述Tn时刻到达;本步骤有计时单元执行。步骤B、报文收发单元接收报文并判断输出,如果第N个报文的到达时刻Tna大于等于所述的发送时刻TN,报文收发单元发送该报文并返回步骤A。步骤C、报文收发单元接收报文并判断输出,如果第N+M (M为大于等于O的整数)个报文的到达时刻T (N+M)A小于所述可发送时刻Tn,判断缓存队列是否有缓存空间,若有,则缓存报文,若无,则报文做丢弃处理,并在Tn时刻到达时,报文收发单元发送第N个报文并返回步骤A ;所述步骤B和步骤C由报文收发单元完成。在优选的实施方式中,报文收发单元可以根据第N个报文的可发送时间来确定缓存地址在内存中的存放位置,这样可以大大提高从缓存中读取报文的速度。还是基于上述的例子而言,报文收发单元可以在缓存第二个报文时将其缓存到缓存中的某个地址,然后将该缓存地址的值保存在内存中,而内存的地址恰好与第二个报文的可发送时间T2是对应的,在一种简单的实施方式中,完全可以使用977这一数值作为内存的地址。这样一来,当定时器超时的时候,也就是需要发送第二个报文的时候,系统可以快速地通过977来寻找到内存中缓存地址,再根据缓存地址读出第二个报文然后发送出去。在优选的方式中,上述所指的缓存队列对应到具有交互性的应用,不同的应用对应于不同的缓存队列,或者所述缓存队列对应到不同用户的应用,每个缓存队列对应于特定用户的一个特定应用。在以上定时触发实施方式的基础上,本发明还提供另一种优化实施方式,该实施方式可以与以上定时触发的实施方式结合使用,主要是防止定时器精度不够造成报文发送不及时的问题。
请参考图7,本发明中当限定速率达到百兆级别时,报文发送时间则相应到达ns级别,此时对定时器的精度要求很高,考虑系统调用定时器需要耗费一定的时间,采用定时触发可能会产生误差。本实施方式中系统会自动采用报文缓存触发机制。当第N+Q(Q为大于等于I的自然数)个报文的到达时间T (N+Q)A大于可发送时刻Tn时,这说明此时定时器由于前述精度与调用时间的原因没有及时触发第N个报文发送,此时系统发现T (N+Q)A大于可发送时刻Tn,则可以缓存当前的新报文并触发缓存队列中第一个报文(也就是第N个报文)的输出;当限定速率达到百兆级别时,在同样的限速策略下报文进入系统的速率可以很好的得到保证,可以有效的执行网络限速技术,减少丢包个数和报文重传数。需要说明的是,本步骤的执行是对定时触发机制的一个补充,定时触发机制一般已经可以满足现有的限速要求,且本步骤的执行与系统装置和定时器的精度配置有关。如果一个系统的定时精度较高,而限速的级别又不是非常高的时候,其完全可以只采取定时触发的机制,这是因为如果定时触发机制总是能够及时触发缓存中的报文输出,也就是说T (N+Q)A大于可发送时刻Tn这个条件绝大部分情况都无法被满足,那么报文触发机制会一直无法生效。本发明利用对同一种网络应用超出限时速率的报文先进行缓存,到达发送时刻时 再进行发送,降低了现有技术中由于令牌数目不够导致报文被丢弃后报文重传的概率,能够有效地提高了带宽的利用率,并有效的提高限速后速率值的稳定性。本发明系统对于不同的定时时间采用相同的物理资源来实现,能够有效的节省物理资源。本发明中,为了避免硬件定时触发在高速率级别限速的情况下产生时间精度误差,采用了报文缓存触发机制,能够有效的减少硬件实现的压力。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种基于报文缓存的网络限速方法,其特征在于,包括步骤 A、根据网络限定速率值V和已发送的第N-I个报文的长度Lim,计算第N个报文的可发送时刻其中N为大于I的自然数;TNS表示第N个报文的发送时刻,其中第一个报文的发送时刻T1为系统赋予的初始值; B、如果第N个报文的到达时刻Tna大于等于所述的可发送时刻TN,则发送该报文,返回步骤A处理第N+1个报文; C、如果第N+M(M为大于等于O的整数)个报文的到达时刻T (N+M)A小于所述可发送时刻TN,则将该第N+M个报文缓存,并在Tn时刻到达时,发送第N个报文并返回步骤A处理第N+1个报文。
2.根据权利要求I所述的方法,其特征在于,当第N+Q(Q为大于等于I的自然数)个报文的到达时间T (N+M)A大于可发送时刻Tn时,缓存新报文并触发缓存队列中第一个报文输出。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括 D、在计算出1时刷新定时器的定时时间,所述定时时间为LnV^并在定时器超时时确定所述Tn时刻到达。
4.根据权利要求3所述的方法,其特征在于,其中步骤C所述将报文缓存具体包括将该报文的缓存地址保存在内存中,其中保存该缓存地址的内存地址与所述定时时间对应;所述从缓存中读取第N个报文包括根据定时时间对内存寻址并从内存中获得缓存地址,然后读取缓存地址中保存的第N个报文。
5.根据权利要求4所述的方法,其特征在于,所述缓存队列对应到具有交互性的应用,其中不同的应用对应于不同的缓存队列,或者所述缓存队列对应到不同用户的特定应用。
6.一种基于报文缓存的网络限速装置,其特征在于,包括 计时单元,用于根据网络限定速率值V和已发送的第N-I个报文的长度L1^1,计算第N个报文的可发送时刻N为大于I的自然数;TNS表不第N个报文的发送时亥IJ,其中第一个报文的发送时刻T1为系统赋予的初始值; 报文收发单元,用于在第N个报文的到达时刻Tna大于等于所述的发送时刻Tn时发送该报文,返回计时单元处理第N+1个报文; 报文收发单元,进一步用于在第N+M (M为大于等于O的整数)个报文的到达时刻T (N+M)a小于所述可发送时刻Tn时,将该第N+M个报文缓存,并在Tn时刻到达时发送第N个报文,返回计时单元处理第N+1个报文。
7.根据权利要求6所述的装置,其特征在于,所述报文收发单元进一步用于在第N+Q(Q为大于等于I的自然数)个报文的到达时间T (N+M)A大于可发送时刻Tn时,缓存新报文并触发缓存队列中第一个报文输出。
8.根据权利要求7所述的装置,其特征在于,所述计时单元进一步用于在计算出Tn时刷新定时器的定时时间,所述定时时间为Lh/V,并在定时器超时时确定所述Tn时刻到达。
9.根据权利要求8所述的装置,其特征在于,报文收发单元进一步用于在将报文缓存到缓存中的时候,将该报文的缓存地址保存在内存中,其中保存该缓存地址的内存地址与所述定时时间对应;从缓存中读取第N个报文时根据定时时间对内存寻址并从内存中获得缓存地址,然后读取缓存地址中保存的第N个报文。
10.根据权利要求9所述的装置,其特征在于,所述缓存队列对应到具有交互性的应 用,不同的应用对应于不同的缓存队列,或者所述缓存队列对应到不同用户的特定应用。
全文摘要
本发明公开了一种基于报文缓存的网络限速方法及装置。通过将未到达发送时刻的报文进行缓存,然后通过定时触发和报文触发缓存报文,实现网络限速功能。通过本发明,解决了传统令牌桶限速丢包导致的丢包率高,数据包重传概率大,限速后速率值稳定较慢的缺点,有效的提高了网络带宽利用率。
文档编号H04L12/861GK102882809SQ20121041927
公开日2013年1月16日 申请日期2012年10月26日 优先权日2012年10月26日
发明者刘彦静 申请人:杭州迪普科技有限公司