一种在数据转发网络中实现流量均衡的方法及装置与流程

文档序号:15061906发布日期:2018-07-31 22:00阅读:150来源:国知局

本发明涉及数据转发网络领域,特别涉及一种在数据转发网络中实现流量均衡的方法及装置。



背景技术:

在大多数网络应用中,数据转发多采用多队列模式来满服务质量(qualityofservice,qos)。

队列是一片基于存储转发的缓冲区,报文先进先出。基于带宽的调度技术可以严格地控制出口数据业务流量的大小,并且在数据接口发生拥塞时,即出口数据业务流量超过最大带宽时,限制某些低优先级报文的流量。

对于网络数据转发设备上行方向,可根据服务分类(classofservice,cos)对数据业务进行分类并指定到不同队列。数据流经分类进入到相应队列后,按照队列调度模式进行调度出队。在网络数据转发设备上行方向,数据基于上行分配带宽进行调度,当传输数据达到带宽要求时则终止数据传输,相应的传输队列开始缓冲数据,当达到缓冲区阈值时,数据无法入队,数据开始丢失。

假如网络设备上行带宽10mbps,上行数据流a和数据流b分别以10mbps的速率,相同包长进入到队列0,由于队列对数据流以串行的方式处理,即数据流a和数据流b按照顺序依次进入队列。图1是理论数据流a和流b发送顺序及入队列情况示意图,如图1所示,当流a和流b以相同的速率依次进入队列时,入队情况如图1所示,即每条流会依次进入队列。

由于数据入队顺序的不确定性以及带宽分配限制,导致其中某条数据流被调度出去的同时,造成另一条数据流的丢失,此时很容易出现数据流a或者数据流b全部丢失或者大部分丢失的情况。也就是说,当上行带宽小于数据流量时,此时存在数据拥塞,即调度出去的数据流量小于入队数据流量,这种情况下,按照队列先进先出的机制,数据包在队列的尾部进行丢弃。图2是数据丢失原理图,如图2所示,当数据流b正在被调度的时候,数据流a被丢弃,在数据流b被完整调度出去时,队列会释放一个缓存,此时后续的数据流b可以正常入队。图3是数据丢失后队列情况示意图,按照图2的数据出队、丢失、入队情况分析,最后队列中仅存在数据流b,这种情况下,数据流a被完全丢弃,导致数据流a出现在网络中不通的情况。



技术实现要素:

本发明实施例提供的一种在数据转发网络中实现流量均衡的方法及装置,解决网络数据拥塞时出现的数据流的部分数据或全部数据丢失的问题。

根据本发明实施例提供的一种在数据转发网络中实现流量均衡的方法,包括:

多条数据流进入同一缓存队列期间,对所述缓存队列的缓存占用情况进行监控;

根据监控结果,确定待进入所述缓存队列的数据流是否存在数据丢失风险;

若确定待进入所述缓存队列的数据流存在数据丢失风险则按照预设比例清除所述缓存队列的数据。

优选地,在对所述缓存队列的缓存占用情况进行监控之前,还包括:

根据所述缓存队列的总缓存能力和网络发包速率,确定所述缓存队列的缓存空间被全部占用所需的时间,并根据所述缓存队列的缓存空间被全部占用所需的时间,启动对所述缓存队列的监控。

优选地,所述对所述缓存队列的缓存占用情况进行监控包括:

通过对所述缓存队列进行扫描,获取所述缓存队列的缓存占用值。

优选地,所述根据监控结果,确定待进入所述缓存队列的数据流是否存在数据丢失风险包括:

将所述缓存队列的缓存占用值与预设门限值进行比较,若所述缓存队列的缓存占用值大于所述预设门限值,则确定待进入所述缓存队列的数据流存在数据丢失风险。

优选地,所述按照预设比例清除所述缓存队列的数据包括:

由所述缓存队列的尾部至所述缓存队列的头部,按照预设比例逐步清除所述存在数据丢失风险的缓存队列中的已有数据。

优选地,所述预设比例为50%至100%中的任意比例。

根据本发明实施例提供的存储介质,其存储用于实现上述在数据转发网络中实现流量均衡的方法的程序。

根据本发明实施例提供的一种在数据转发网络中实现流量均衡的装置,包括:

监控模块,用于多条数据流进入同一缓存队列期间,对所述缓存队列的缓存占用情况进行监控;

判断模块,用于根据监控结果,确定待进入所述缓存队列的数据流是否存在数据丢失风险;

老化模块,用于确定待进入所述缓存队列的数据流存在数据丢失风险时,按照预设比例清除所述缓存队列的数据。

优选地,还包括:

启动模块,用于在对所述缓存队列的缓存占用情况进行监控之前,根据所述缓存队列的总缓存能力和网络发包速率,确定所述缓存队列的缓存空间被全部占用所需的时间,并根据所述缓存队列的缓存空间被全部占用所需的时间,启动对所述缓存队列的监控。

优选地,所述判断模块将监控得到的所述缓存队列的缓存占用值与预设门限值进行比较,若所述缓存队列的缓存占用值大于所述预设门限值,则确定待进入所述缓存队列的数据流存在数据丢失风险。

优选地,所述老化模块由所述缓存队列的尾部至所述缓存队列的头部,按照预设比例逐步清除所述存在数据丢失风险的缓存队列中的已有数据。

优选地,所述预设比例为50%至100%中的任意比例。

本发明实施例提供的技术方案具有如下有益效果:

本发明实施例通过老化队列中已有数据的方式,防止网络数据转发设备部分数据全部或者大部分丢失的情况。

附图说明

图1是理论数据流a和流b发送顺序及入队列情况示意图;

图2是数据丢失原理图;

图3是数据丢失后队列情况示意图;

图4是本发明实施例提供的在数据转发网络中实现流量均衡的方法框图;

图5是本发明实施例提供的在数据转发网络中实现流量均衡的装置框图;

图6和图7是队列老化后缓存占用情况示意图;

图8是软件解决数据丢失的工作原理图。

具体实施方式

以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

实施例1

图4是本发明实施例提供的在数据转发网络中实现流量均衡的方法框图,如图4所示,步骤包括:

步骤s401:多条数据流进入同一缓存队列期间,对所述缓存队列的缓存占用情况进行监控。

在步骤s401之前,还包括:是否对缓存队列进行监控的判断步骤,具体为,根据所述缓存队列的总缓存能力和网络发包速率,确定所述缓存队列的缓存空间被全部占用所需的时间,并根据所述缓存队列的缓存空间被全部占用所需的时间,启动对所述缓存队列的监控。例如缓存队列的缓存空间被全部占用所需的时间小于预设时间值(例如1s),则说明网络发包速率较大,容易出现网络数据拥塞而导致数据流不同,此时需要通过启动队列缓存扫描线程,启动对所述缓存队列的监控。

步骤s401进一步包括:利用已启动的队列缓存扫描线程,对所述缓存队列进行扫描,从而获取所述缓存队列的缓存占用值。

步骤s402:根据监控结果,确定待进入所述缓存队列的数据流是否存在数据丢失风险。

步骤s402进一步包括:将缓存队列的缓存占用值与预设门限值进行比较,若缓存队列的缓存占用值大于预设门限值,则确定待进入该缓存队列的数据流存在数据丢失风险。

步骤s403:若确定待进入所述缓存队列的数据流存在数据丢失风险,则按照预设比例清除所述缓存队列的数据,例如清空所述缓存队列的数据,以便保持该缓存队列的多条数据流的流量均衡。

步骤s403进一步包括:由所述缓存队列的尾部至所述缓存队列的头部,按照预设比例清除逐步清除所述存在数据丢失风险的缓存队列中的已有数据。通过步骤s403,后续进入队列的多个业务的多条数据流能够按照顺序正常入队,进一步说,数据老化后发端重传的数据能够进入队列并被调度,避免出现图2和图3中某条数据流的部分或全部数据被完全丢弃而导致的数据流不通的情况。

其中,本实施例的预设比例为50%至100%中的任意比例。具体地说,针对存在数据丢失风险的缓存队列,可以清除该缓存队列中50%及以上的已有数据。该预设比例可选50%、60%、70%、80%、90%、100%。优选100%,即将该缓存队列的已有数据全部清空。

本发明实施例能够避免网络数据转发设备上行方向,网络数据拥塞情况下出现数据流不通的问题。

本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,包括步骤s401至步骤s403。其中,所述的存储介质可以为rom/ram、磁碟、光盘等。

实施例2

图5是本发明实施例提供的在数据转发网络中实现流量均衡的装置框图,如图5所示,包括:

监控模块10,用于多条数据流进入同一缓存队列期间,对所述缓存队列的缓存占用情况进行监控,具体地说,监控模块10通过对所述缓存队列进行扫描,获取所述缓存队列的缓存占用值。

判断模块20,用于根据监控结果,确定待进入所述缓存队列的数据流是否存在数据丢失风险。

老化模块30,用于确定待进入所述缓存队列的数据流存在数据丢失风险时,按照预设比例清除所述缓存队列的数据,例如清空所述缓存队列的数据。

进一步地,所述装置还包括:

启动模块40,用于在对所述缓存队列的缓存占用情况进行监控之前,根据所述缓存队列的总缓存能力和网络发包速率,确定所述缓存队列的缓存空间被全部占用所需的时间,并根据所述缓存队列的缓存空间被全部占用所需的时间,启动对所述缓存队列的监控。

所述装置的工作流程如下:若启动模块40根据缓存队列的总缓存能力和网络发包速率,判断队列将会产生拥塞时,启动对所述缓存队列的监控。启动监控后,监控模块10通过对所述缓存队列进行扫描,获取所述缓存队列的缓存占用值,判断模块20将所述缓存队列的缓存占用值与预设门限值进行比较,若大于预设门限值,则确定待进入所述缓存队列的数据流存在数据丢失风险,此时,老化模块30由所述缓存队列的尾部至所述缓存队列的头部,按照预设比例逐步清除所述存在数据丢失风险的缓存队列中的已有数据,释放缓存队列的缓存空间,以便后续数据(包括重传数据)按照正常顺序入队,从而避免某条数据流的部分或全部数据丢失。所述预设比例为50%至100%中的任意比例,例如清除该缓存队列中55%或65%或75%或85%或95%或100%的已有数据。

实施例3

网络数据转发设备上行方向,由于带宽限制,两条或者多条数据流进入同一个队列时,出现其中一条流全部丢失或者大部分丢失问题,在极端情况下,当流b被调度出队列时,流a正好被丢弃,后续队列一直只有流b进入,这种情况下造成流a不通。为防止流a不通,本发明实施例的装置包括以下模块:基于队列的调度模块,基于队列的缓存模块,基于队列缓存的控制模块,以及基于队列缓存的监控模块。

队列调度模块(即基于队列的调度模块)负责队列数据的调度,调度算法有严格优先级调度(strictpriority,sp)和加权轮询调度(weightedroundrobin,wrr)。网络设备上行方向基于带宽进行调度,调度速率受带宽影响。

队列缓存模块(即基于队列的缓存模块)缓存网络设备中的数据包,即当数据包到达转发端口时,该模块负责缓存数据包,以便在下个带宽周期进行调度。

队列控制模块(即基于队列缓存的控制模块)负责控制队列缓存的老化以及数据包的入队出队。

队列缓存监控模块(即基于队列缓存的监控模块,实现图5装置的功能)负责监控队列缓存的占用情况,根据监控的占用情况控制队列缓存的老化。

在网络数据转发设备中,队列调度、队列缓存以及队列控制模块只能保证数据包在分配带宽内发送数据,并且根据队列缓存大小对数据流执行尾部丢弃,其并不能解决某些数据流完全丢失或者大部分丢失造成的网络数据不通的问题。而本发明实施例的装置增加的队列缓存监控模块可以有效的防止由于网络拥塞,部分数据完全丢失或者大部分丢失时造成的数据流不通的情况。

所述的队列缓存监控模块实施步骤如下:

步骤一:假设队列总缓存大小为x,即队列最多可缓存x个数据报文,网络发包速率为vmbps,数据包长度为lbytes,则该缓存占满需要时间t=(lx*8)/(v*106)。

步骤二:当t小于1s时,在系统内核态开启队列缓存扫描线程,每个扫描周期为(t*1000*90/100)ms,即对所有队列缓存做一次扫描后,该线程睡眠(t*1000*90/100)ms,当该周期小于10ms时,则取队列扫描周期时间为10ms。

步骤三:在队列缓存扫描周期内读取该队列的缓存占用值y,如果该队列缓存占用比例超过该队列总缓存的80%,即y>x*80%,则认为该队列存在数据丢失的风险,此时老化该队列中已有数据包。

因为芯片队列老化过程与内核态线程是异步过程,此时需要延时微秒函数(udelay)延时100us,即调用udelay函数延迟100us。

需要说明的是,此处不要采用睡眠微秒函数(usleep),防止线程唤醒延时。

步骤四:继续读取下一个队列缓存情况,直到所有存在风险的队列全部被老化。

步骤五:所有队列缓存检查完成后,线程进入睡眠,释放线程资源,睡眠时间为一个扫描周期时间。

图6和图7是队列老化后缓存占用情况示意图,如图6和图7所示,如果当队列存储超过队列总缓存的80%时,软件执行队列数据老化,即从队列尾部老化队列缓存中的数据,这样后面网络中的数据又可以按照网络数据顺序正常入队,从而解决数据流a的丢失问题。

实施例4

图8是软件解决数据丢失的工作原理图,针对数据流丢失的问题,可以通过软件处理方式进行规避,如图8所示,步骤包括:

步骤s801:软件内核态开启一个线程。

启动内核模块后,创建并启动一个线程,以监控队列缓存情况,并老化存在数据丢失风险的队列的数据。

步骤s802:定时一个周期扫描每个队列的缓存占用情况,例如读取0队列缓存占用情况。

步骤s803:判断该被扫描队列缓存占用是否超过80%,如果是,则认为该队列存在数据丢失的风险,执行步骤604;

步骤s804:对存在数据丢失风险的队列执行缓存老化机制,从队列尾部老化缓存数据。

从队列尾部向队列头部依次老化队列中的已有数据,直至老化队列中的全部数据,也就是说,对于存在数据丢失风险的队列,将其中缓存的数据全部清除,以保证后续进入该队列的多个业务的多个数据流流量均衡。

步骤s805:一个队列老化完毕后,软件udelay100us。

因为软件的执行过程和硬件老化不是同步过程,所以软件应尽可能保证硬件对队列缓存数据的老化完成。

步骤s806:当所有队列老化完成后,线程sleep一个周期时间,当线程再次被唤醒后,开始执行下一个老化周期流程,执行步骤602。

步骤s807,当该队列数据老化完成后,软件继续老化后面的队列,直到老化完所有队列为止。

通过以上流程,可以避免某条数据流全部丢失或者大部分被丢失的情况。

综上所述,本发明实施例具有以下技术效果:

本发明实施例针对数据转发网络,基于队列管控实现各种业务数据流流量均衡,其可以有效防止产品中部分网络数据全部或者大部分丢失造成的数据流不通的情况。本发明实施例适用于涉及所有满足qos标准定义的网络数据转发设备,包括无源光网络(passiveopticalnetwork,pon)、路由器、交换机等设备。

尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1