流量调度方法、设备、系统、交换机及计算机存储介质与流程

文档序号:22119142发布日期:2020-09-04 15:57阅读:196来源:国知局
流量调度方法、设备、系统、交换机及计算机存储介质与流程

本发明涉及通信技术领域,尤其涉及一种流量调度方法、设备、系统、交换机及计算机存储介质。



背景技术:

当前的数据中心中运行着许多与用户交互的应用,如网络搜索、在线游戏和网络购物等,这些应用都是对时延极其敏感的时延敏感应用,它们的响应时延直接决定了用户的体验。而应用的时延大小主要是由应用发送的流的平均流完成时间(flowcompletiontime,fct)决定的,因此,最小化平均流完成时间具有重要意义。

目前,通常采用近似最短任务优先(shortestjobfirst,sjf)的策略来最小化流完成时间。即,流量越小的流分配的优先级越高,流量越大的流则分配的优先级越低,因此,采用sjf策略可能会导致大流量的流长时间得到不到服务,即会出现大流饥饿问题,从而会影响平均流完成时间。此外,采用sjf策略得到的结果不是最优的,例如,假设链路每单位时间传送1个数据包,a、b两流分别是包括20个数据包和包括10个数据包的流,由于b流较小被分配了较高的优先级,在网络传输过程中,假设a流已经传输了19个数据包,只剩余了1个数据包,此时b流到达,然而b流拥有较高的优先级,所以开始发送b流的10个数据包,直到b流结束,a流才能发送剩余的1个数据包。此时,此种策略也会大大影响平均流完成时间。因此,如何在数据中心网络流传输过程中,最小化平均流完成时间是目前亟需解决的问题。



技术实现要素:

本发明的主要目的在于提供一种流量调度方法、设备、系统、交换机及计算机存储介质,旨在实现在数据中心网络流传输过程中,降低平均流完成时间。

为实现上述目的,本发明提供一种流量调度方法,应用于流量调度设备,所述流量调度方法包括:

所述流量调度设备在发送流的数据包时,获取流的当前剩余流量大小;

根据所述当前剩余流量大小和预设流区间阈值设定所述数据包的优先级;

将已设定优先级的数据包发送至交换机,使得所述交换机基于所述数据包的优先级将所述数据包分配至对应的优先级队列中,以进行转发。

可选地,所述当前剩余流量大小是基于流的预测流量大小和流中已发送数据包的数据包大小更新得到的,所述流量调度设备在发送流的数据包时,获取流的当前剩余流量大小的步骤之前,还包括:

在生成流时,所述流量调度设备获取流的第一特征数据,将所述第一特征数据输入至流区间预测模型,得到预测流区间;

根据所述预测流区间和所述预设流区间阈值,计算得到所述流的预测流量大小。

可选地,所述将所述第一特征数据输入至流区间预测模型,得到预测流区间的步骤之前,还包括:

获取训练样本数据,所述训练样本数据包括第二特征数据和样本流量大小;

根据所述样本流量大小和所述预设流区间阈值,得到样本流区间;

根据所述样本流区间和所述第二特征数据,构建得到训练样本集;

通过所述训练样本集对预设梯度提升树模型进行训练,得到所述流区间预测模型。

可选地,所述根据所述当前剩余流量大小和预设流区间阈值设定所述数据包的优先级的步骤之前,还包括:

获取数据中心的当前负载、带宽速率和优先级队列数量;

根据预设函数确定各优先级队列中流量大小的期望值;

根据所述当前负载、所述带宽速率和所述期望值计算得到各优先级队列中的数据到达率;

根据所述数据到达率和所述带宽速率计算各优先级队列占用的带宽比例;

将所述带宽比例、所述数据到达率输入至预设计算公式,得到所述预设流区间阈值。

为实现上述目的,本发明提供一种流量调度方法,应用于交换机,所述流量调度方法包括:

所述交换机在接收到流量调度设备发送的数据包时,获取所述数据包的优先级;

根据所述优先级将所述数据包分配至对应的优先级队列中,以在达到预设转发条件时,对所述优先级队列中的数据包进行转发。

可选地,所述根据所述优先级将所述数据包分配至对应的优先级队列中的步骤包括:

获取所述数据包对应流的流标识,查询流信息表中是否存在与所述流标识对应的目标流表项;

若存在与所述流标识对应的目标流表项,则从所述目标流表项中获取所述流标识对应流的当前包数量;

判断所述当前包数量是否为第一预设值;

若所述当前包数量为第一预设值,则将所述数据包分配至所述优先级对应的优先级队列中;

若所述当前包数量不为第一预设值,则从所述目标流表项中查询所述流标识对应流的当前优先级,将所述数据包分配至所述当前优先级对应的优先级队列中。

可选地,所述根据所述优先级将所述数据包分配至对应的优先级队列中的步骤之后,所述流量调度方法还包括:

更新所述目标流表项中对应流的当前包数量、当前优先级和老化位。

可选地,所述流量调度方法还包括:

每隔预设时间检测所述流信息表中是否存在老化位为第二预设值的表项;

若不存在老化位为第二预设值的表项,则将所述流信息表中各表项的老化位更新为第三预设值;

若存在老化位为第二预设值的表项,则检测老化位为第二预设值的表项所对应的当前包数量是否为第一预设值;

若为第一预设值,则从所述流信息表中删除老化位为第二预设值的表项,并将经删除处理的流信息表中各表项的老化位更新为第三预设值;

若不为第一预设值,则将所述流信息表中各表项的老化位更新为第三预设值。

此外,为实现上述目的,本发明还提供一种流量调度设备,所述流量调度设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的流量调度程序,所述流量调度程序被所述处理器执行时实现如上所述的第一种流量调度方法的步骤。

此外,为实现上述目的,本发明还提供一种交换机,所述交换机包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的流量调度程序,所述流量调度程序被所述处理器执行时实现如上所述的流量调度方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有流量调度程序,所述流量调度程序被处理器执行时实现如上所述的第一种或第二种流量调度方法的步骤。

本发明提供一种流量调度方法、设备、系统、交换机及计算机存储介质,通过。该流量调度方法应用于流量调度设备,该方法包括:流量调度设备在发送流的数据包时,先获取流的当前剩余流量大小;然后,根据当前剩余流量大小和预设流区间阈值设定数据包的优先级;将已设定优先级的数据包发送至交换机,使得交换机基于数据包的优先级将数据包分配至对应的优先级队列中,以进行转发。本发明中,在设定数据包的优先级时,是基于流的当前剩余流量大小来设定的,进而使得交换机根据该优先级对数据包进行分配和转发,实现了近似的最短剩余处理时间优先(shortestremainingprocessingtime,srpt)策略,相比于现有技术中直接基于流的优先级来设定数据包的优先级,本发明可避免大流量的流长时间得到不到服务的现象,同时亦可避免背景技术中提及的优先级较低的流因在传输中途等待另一优先级较高的流、而影响平均流完成时间的现象,从而可降低平均流完成时间。此外,本发明只需对数据中心中流量调度设备的软件层实现逻辑进行改进,而无需修改硬件,从而可实现在降低平均流完成时间的同时降低成本。

附图说明

图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图;

图2为本发明应用于流量调度设备的流量调度方法第一实施例的流程示意图。

图3为本发明应用于交换机的流量调度方法第一实施例的流程示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图。

本发明实施例终端为流量调度设备或交换机,其中流量调度设备可以为数据中心的服务器或物理服务器上的虚拟机等。

如图1所示,该终端可以包括:处理器1001,例如cpu,通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。

本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块以及流量调度程序。

在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信。

若终端为流量调度设备,处理器1001可以用于调用存储器1005中存储的流量调度程序,并执行以下操作:

所述流量调度设备在发送流的数据包时,获取流的当前剩余流量大小;

根据所述当前剩余流量大小和预设流区间阈值设定所述数据包的优先级;

将已设定优先级的数据包发送至交换机,使得所述交换机基于所述数据包的优先级将所述数据包分配至对应的优先级队列中,以进行转发。

进一步地,所述当前剩余流量大小是基于流的预测流量大小和流中已发送数据包的数据包大小更新得到的,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

在生成流时,所述流量调度设备获取流的第一特征数据,将所述第一特征数据输入至流区间预测模型,得到预测流区间;

根据所述预测流区间和所述预设流区间阈值,计算得到所述流的预测流量大小。

进一步地,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

获取训练样本数据,所述训练样本数据包括第二特征数据和样本流量大小;

根据所述样本流量大小和所述预设流区间阈值,得到样本流区间;

根据所述样本流区间和所述第二特征数据,构建得到训练样本集;

通过所述训练样本集对预设梯度提升树模型进行训练,得到所述流区间预测模型。

进一步地,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

获取数据中心的当前负载、带宽速率和优先级队列数量;

根据预设函数确定各优先级队列中流量大小的期望值;

根据所述当前负载、所述带宽速率和所述期望值计算得到各优先级队列中的数据到达率;

根据所述数据到达率和所述带宽速率计算各优先级队列占用的带宽比例;

将所述带宽比例、所述数据到达率输入至预设计算公式,得到所述预设流区间阈值。

若终端为交换机,处理器1001可以用于调用存储器1005中存储的流量调度程序,并执行以下操作:

所述交换机在接收到流量调度设备发送的数据包时,获取所述数据包的优先级;

根据所述优先级将所述数据包分配至对应的优先级队列中,以在达到预设转发条件时,对所述优先级队列中的数据包进行转发。

进一步地,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

获取所述数据包对应流的流标识,查询流信息表中是否存在与所述流标识对应的目标流表项;

若存在与所述流标识对应的目标流表项,则从所述目标流表项中获取所述流标识对应流的当前包数量;

判断所述当前包数量是否为第一预设值;

若所述当前包数量为第一预设值,则将所述数据包分配至所述优先级对应的优先级队列中;

若所述当前包数量不为第一预设值,则从所述目标流表项中查询所述流标识对应流的当前优先级,将所述数据包分配至所述当前优先级对应的优先级队列中。

进一步地,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

更新所述目标流表项中对应流的当前包数量、当前优先级和老化位。

进一步地,处理器1001可以调用存储器1003中存储的流量调度程序,还执行以下操作:

每隔预设时间检测所述流信息表中是否存在老化位为第二预设值的表项;

若不存在老化位为第二预设值的表项,则将所述流信息表中各表项的老化位更新为第三预设值;

若存在老化位为第二预设值的表项,则检测老化位为第二预设值的表项所对应的当前包数量是否为第一预设值;

若为第一预设值,则从所述流信息表中删除老化位为第二预设值的表项,并将经删除处理的流信息表中各表项的老化位更新为第三预设值;

若不为第一预设值,则将所述流信息表中各表项的老化位更新为第三预设值。

基于上述硬件结构,提出本发明流量调度方法的各实施例。

本发明提供一种流量调度方法。所述流量调度方法应用于流量调度设备。

参照图2,图2为本发明应用于流量调度设备的流量调度方法第一实施例的流程示意图。

在本实施例中,所述流量调度方法应用于流量调度设备,所述流量调度方法包括:

步骤s10,所述流量调度设备在发送流的数据包时,获取流的当前剩余流量大小;

其中,所述当前剩余流量大小是基于流的预测流量大小和流中已发送数据包的数据包大小更新得到的,上述步骤s10之前,该流量调度方法还包括:

步骤a40,在生成流时,所述流量调度设备获取流的第一特征数据,将所述第一特征数据输入至流区间预测模型,得到预测流区间;

步骤a50,根据所述预测流区间和所述预设流区间阈值,计算得到所述流的预测流量大小。

在本实施例中,该流量调度方法应用于流量调度设备,该流量调度设备可以为数据中心的服务器,也可以为物理服务器上的虚拟机,本发明实施例以服务器为例进行说明。

在生成流时,服务器获取流的第一特征数据,将第一特征数据输入至流区间预测模型,得到预测流区间。其中,流是由多个数据包构成的,可以为数据流、信息流等。第一特征数据为流生成时刻的一些特征值,可以包括但不限于:内存使用率、磁盘i/o(input/output,输入/输出)、网络i/o、cpu(centralprocessingunit,中央处理器)使用率和前k(一预设值,可选地为优先级队列数量)条流的流量大小。流区间预测模型是预先基于梯度提升树(gradientboostingdecisiontree,gbdt)模型训练得到的,其训练过程可参照下述第二实施例。预测流区间,即为预测得到的该流所属的流区间。

然后,根据预测流区间和预设流区间阈值,计算得到流的预测流量大小。

其中,预设流区间阈值是预先计算得到的,其获取过程可参照下述第三实施例,通过预设流区间阈值可将数据中心的流量大小分布划分为多个流区间。例如,假设交换机中优先级队列的数量为k,可用(k-1)个阈值(即预设流区间阈值)将该数据中心的流大小分布划分为k个流区间,为便于说明,将第i个阈值记为αi,当i=0时,α0=0,而αk是这个数据中心中流量大小可达到的最大值。对于α0≤α<α1,这一区间记为区间1,αi-1≤α<αi,这一区间记为区间i。

对于预测流量大小的计算,可采用一个近似值来进行计算,可选地,预测流量大小可设为预测流区间大小所在区间的两端阈值的平均值。假设预测流区间为i,则预测流量大小s=(αi-1+αi)/2。

服务器在发送流的数据包时,先获取流的当前剩余流量大小。其中,当前剩余流量大小是基于流的预测流量大小和流中已发送数据包的数据包大小更新得到的。具体的,得到一条流的预测流量大小s值后,服务器每发送这条流的一个数据包,则用该预测流量大小s减去发出的数据包的大小得到新的流量大小,即当前剩余流量大小。

步骤s20,根据所述当前剩余流量大小和预设流区间阈值设定所述数据包的优先级;

然后,根据当前剩余流量大小和预设流区间阈值设定数据包的优先级。例如,上述例中,开始时,当前剩余流量大小即为预测流量大小,为(αi-1+αi)/2,此时,根据预设流区间阈值可设定数据包的优先级为i;随着数据包的发送,当前剩余流量大小会逐渐减小,在当前剩余流量大小小于αi-1后,则将之后发送数据包的优先级设为i-1,依次类推,在当前剩余流量大小为负值时,则设定数据包的优先级为最高优先级1。

步骤s30,将已设定优先级的数据包发送至交换机,使得所述交换机基于所述数据包的优先级将所述数据包分配至对应的优先级队列中,以进行转发。

在设定数据包的优先级之后,将已设定优先级的数据包发送至交换机,使得交换机基于数据包的优先级将数据包分配至对应的优先级队列中,以进行转发。在发送数据包时,服务器可将设定的优先级标记在数据包头部的dscp(differentiatedservicescodepoint,差分服务代码点)字段处,其中,dscp在每个数据包ip(internetprotocol,网际互连协议)头部的服务类别tos(typeofservice,服务类型)标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。

本发明实施例提供一种流量调度方法,应用于流量调度设备,该方法包括:流量调度设备在发送流的数据包时,先获取流的当前剩余流量大小;然后,根据当前剩余流量大小和预设流区间阈值设定数据包的优先级;将已设定优先级的数据包发送至交换机,使得交换机基于数据包的优先级将数据包分配至对应的优先级队列中,以进行转发。本发明实施例中,在设定数据包的优先级时,是基于流的当前剩余流量大小来设定的,进而使得交换机根据该优先级对数据包进行分配和转发,实现了近似的最短剩余处理时间优先(shortestremainingprocessingtime,srpt)策略,相比于现有技术中直接基于流的优先级来设定数据包的优先级,本发明实施例可避免大流量的流长时间得到不到服务的现象,同时亦可避免背景技术中提及的优先级较低的流因在传输中途等待另一优先级较高的流、而影响平均流完成时间的现象,从而可降低平均流完成时间。此外,本发明实施例只需对数据中心中的流量调度设备软件层实现逻辑进行改进,而无需修改硬件,从而可实现在降低平均流完成时间的同时降低成本。

进一步地,基于上述第一实施例,提出本发明流量调度方法的第二实施例。

在本实施例中,在上述步骤a10之前,该流量调度方法还包括:

步骤a60,获取训练样本数据,所述训练样本数据包括第二特征数据和样本流量大小;

在本实施例中,介绍了流区间预测模型的训练过程,具体如下:

先获取训练样本数据,训练样本数据包括第二特征数据和样本流量大小。其中,第二特征数据为流生成时刻的一些特征值,可以包括但不限于:内存使用率、磁盘i/o、网络i/o、cpu使用率和前k条流的流量大小。样本流量大小即样本流的流量大小。

步骤a70,根据所述样本流量大小和所述预设流区间阈值,得到样本流区间;

然后,根据样本流量大小和预设流区间阈值,得到样本流区间。例如,预设流区间阈值包括α1、α2、α3、……、αk时,可划分得到k个样本流区间,对于α0≤α<α1(α0=0),这一区间记为区间1;对于αi-1≤α<αi,这一区间记为区间i;对于αk-1≤α<αk,这一区间记为区间k。

根据样本流量大小与预设流区间阈值之间的大小关系,确定其对应的样本流区间。

步骤a80,根据所述样本流区间和所述第二特征数据,构建得到训练样本集;

步骤a90,通过所述训练样本集对预设梯度提升树模型进行训练,得到所述流区间预测模型。

根据样本流区间和第二特征数据,构建得到训练样本集,进而通过训练样本集对预设梯度提升树模型进行训练,得到流区间预测模型。具体的训练方法可参照现有技术,此处不再赘述。

需要说明的是,本实施例中选用梯度提升树模型来进行训练,得到区间预测模型,是因为:梯度提升树模型训练完成后是一系列的if/else语句,可以用一些工具将其转化为if/else语句执行,也可以用其它语言编写这些if/else语句,从而在进行预测时,可快速地执行,节省了中间的处理时间,因此,相比于其他模型,可进一步节省平均流完成时间。

此外,本实施例中,是对流区间进行预测,相比于对具体的流量大小进行预测,大大提高精确率。

通过上述方式,通过构建训练样本集,以训练得到流区间预测模型,以便于后续通过该流区间预测模型对流的流区间进行预测。本实施例中,流区间预测模型采用梯度提升树模型,相比于其他模型,可快速地执行,节省了中间的处理时间,从而可进一步节省平均流完成时间。此外,本实施例中,通过对流区间进行预测,相比于对具体的流量大小进行预测,可大大提高精确率。

进一步地,基于上述第一和第二实施例,提出本发明流量调度方法的第三实施例。

在本实施例中,在上述步骤s20之前,该流量调度方法还包括:

步骤a100,获取数据中心的当前负载、带宽速率和优先级队列数量;

在本实施例中,预设流区间阈值的获取过程如下:

先获取数据中心的当前负载、带宽速率和优先级队列数量,为便于后续说明,将当前负载记为ρ,带宽速率记为μ,优先级队列数量记为k,第i个队列用qi表示,其优先级为i,其中1≤i≤k。第一个队列q1的优先级最高。

步骤a110,根据预设函数确定各优先级队列中流量大小的期望值;

然后,根据预设函数确定各优先级队列中流量大小的期望值。其中,预设函数记为f(x),f(x)是数据中心流量大小的累积分布函数。用αi来表示qi和qi+1的阈值,即小于αi的流量属于qi队列,而大于或等于αi的流量属于qi+1队列。因此,优先级队列qi中流量大小的期望值如下:

e[si]≤(αi+1-αi)(1-f(αi))

步骤a120,根据所述当前负载、所述带宽速率和所述期望值计算得到各优先级队列中的数据到达率;

根据当前负载、带宽速率和期望值计算得到各优先级队列中的数据到达率。具体的,先计算当前的流到达速率λ,然后,再计算各优先级队列中的数据到达率,其计算方式如下:

λi=λe[si]

其中,λi表示优先级队列i中的数据到达率。

步骤a130,根据所述数据到达率和所述带宽速率计算各优先级队列占用的带宽比例;

根据数据到达率λi和带宽速率μ计算各优先级队列占用的带宽比例。在优先级队列中,由于各优先级队列获得服务的速率取决于比它优先级更高的队列是否为空。假设数据中心链路的带宽速率为μ,则最高优先级的队列q1获得的服务速率为μ1=μ。所以q1占用带宽的比例(即带宽比例)为ρ1=λ1/μ1,q1空闲出来的带宽比例为(1-ρ1)。所以q2可以得到的带宽比例为μ2=(1-ρ1)μ。同理可得到优先级队列i占用的带宽比例ρi的计算方式如下:

ρi=λi/μi

其中,ρ0=0。

步骤a140,将所述带宽比例、所述数据到达率输入至预设计算公式,得到所述预设流区间阈值。

最后,将带宽比例、数据到达率输入至预设计算公式,得到预设流区间阈值。具体的,先根据各优先级队列占用的带宽比例及各优先级队列的数据到达率,计算各优先级队列的平均延时时间(记为t)。计算公式如下:

ti=1/(μi-λi)

其中,ti表示优先级队列i中的平均延时时间。

对于在优先级队列qi中的流fi,它会经历从每一个队列到第i个队列的所有排队时延,所以它的平均流完成时间t(fi)满足如下关系:

因此,我们可以将其转化为在瓶颈链路上选取一系列θ值的去最小化平均流完成时间的优化问题,其可以表达为:

θi≥0,i=1,...,k

进而,可解出一组最优化值,从通过得到的一组θ值计算出阈值集合{α},其中,该阈值集合{α}包括α0、α1、α2、α3、……、αk,其中,α0=0,而αk是这个数据中心中流量大小可达到的最大值。

本实施例中,通过上述方式,可准确计算得到预设流区间阈值,以便于后续基于预设流区间阈值确定各优先级队列对应的流区间,进而基于流区间来设定数据包的优先级。

本发明还提供一种流量调度方法。所述流量调度方法应用于交换机。

参照图3,图3为本发明应用于交换机的流量调度方法第一实施例的流程示意图。

在本实施例中,所述流量调度方法应用于交换机,所述流量调度方法包括:

步骤s1000,所述交换机在接收到流量调度设备发送的数据包时,获取所述数据包的优先级;

在本实施例中,流量调度设备在设定流中数据包的优先级之后,将已设定优先级的数据包发送至交换机,此时,交换机在接收到流量调度设备发送的数据包时,获取数据包的优先级。其中,数据包的优先级是基于流的当前剩余流量大小设定的。

服务器在发送数据包时,可将设定的优先级标记在数据包头部的dscp字段处,其中,dscp在每个数据包ip头部的服务类别tos标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。对应的,交换机在获取数据包的优先级时,可对数据包头部的dscp字段解析得到。当然,可以理解,该数据包除携带设定的优先级外,还可以携带对应的流标识,其中,流标识可以为字符串,具有唯一性,用于区分不同流。

步骤s1100,根据所述优先级将所述数据包分配至对应的优先级队列中,以在达到预设转发条件时,对所述优先级队列中的数据包进行转发。

在获取到数据包的优先级之后,根据优先级将数据包分配至对应的优先级队列中,以在达到预设转发条件时,对该优先级队列中的数据包进行转发。其中,预设转发条件即为该数据包在优先级队列中具有最高优先权,即,比该数据包所在优先级队列更高优先级的队列中的数据包转发完成、且该数据包在其所在优先级队列中排在第一位时。

其中,步骤“根据所述优先级将所述数据包分配至对应的优先级队列中”包括:

步骤a1110,获取所述数据包对应流的流标识,查询流信息表中是否存在与所述流标识对应的目标流表项;

本实施例中,数据包的分配原则如下:

先获取数据包对应流的流标识,然后,查询流信息表中是否存在与流标识对应的目标流表项。其中,各个交换机均会维持一张流信息表,流信息表中包含经过该交换机的每条流的信息,该流信息表至少包括流标识(记为id)、当前优先级(记为cur_pri)、当前包数量(记为cur_pri),当然还可以包括老化位(记为age),如下表1所示。其中,流标识、当前优先级和当前包数量的设定,是用于确定如何对数据包进行分配;老化位的设定,是用于确定是否已完成各条流全部数据包的分配,进而确定是否对各条流所对应表项进行删除,以节省内存。

表1

若存在与所述流标识对应的目标流表项,则执行步骤a1120,从所述目标流表项中获取所述流标识对应流的当前包数量;

若流信息表中存在与该流标识对应的目标流表项,则从该目标流表项中获取所述流标识对应流的当前包数量。例如,若流标识为f1_id,则目标流表项为f1_id所在行,即上表1中第一行。

进一步地,若流信息表中不存在与该流标识对应的目标流表项,此时,则在流信息表中创建该流标识对应的流表项,其中,该流表项对应的流信息设定如下:当前优先级cur_pri设为该数据包的优先级i,当前包数量cur_num设为1,老化位age设为0。进而,将数据包分配至该优先级对应的优先级队列中,即分配至优先级队列i中。

步骤a1130,判断所述当前包数量是否为第一预设值;

在从目标流表项中获取流标识对应流的当前包数量之后,判断该当前包数量是否为第一预设值,其中,第一预设值可选地设为0。

若所述当前包数量为第一预设值,则执行步骤a1141,将所述数据包分配至所述优先级对应的优先级队列中,并更新所述目标流表项中对应流的当前包数量信息和当前优先级信息;

若当前包数量为第一预设值0,则说明该流中之前发送至交换机的数据包已完成转发,此时,则可以直接将该数据包分配至其优先级标记对应的优先级队列中。例如,交换机接收到一个流标识为f1_id的数据包,其优先级为7,从流信息表中查询到其当前包数量cur_num=0,此时,则将该数据包分配至优先级为7的优先级队列中。

若所述当前包数量不为第一预设值,则执行步骤a1142,从所述目标流表项中查询所述流标识对应流的当前优先级,将所述数据包分配至所述当前优先级对应的优先级队列中。

若当前包数量不为第一预设值0,则说明该流中之前发送至交换机的数据包还未全部完成转发,此时,为避免该流的数据包转发顺序混乱,需将数据包分配至同一流未完成转发的数据包的后面,因此,先从目标流表项中查询流标识对应流的当前优先级,然后,将数据包分配至该当前优先级对应的优先级队列中。例如,交换机接收到一个流标识为f2_id的数据包,其优先级为3,从流信息表中查询到其当前包数量cur_num=10、而非第一预设值0,此时,则获取f2_id的当前优先级,得到cur_pri为5,则该数据包分配至优先级为5的优先级队列中。

本发明实施例提供一种流量调度方法,应用于交换机,通过在接收到流量调度设备发送的数据包时,获取数据包的优先级;根据优先级将数据包分配至对应的优先级队列中,以在达到预设转发条件时,对优先级队列中的数据包进行转发。本发明实施例中,是根据流中数据包的优先级来进行分配和转发,而该优先级是基于流的当前剩余流量大小来设定的,通过结合流量调度设备实现了近似的最短剩余处理时间优先(shortestremainingprocessingtime,srpt)策略,相比于现有技术中直接基于流的优先级来设定数据包的优先级,本发明可避免大流量的流长时间得到不到服务的现象,同时亦可避免背景技术中提及的优先级较低的流因在传输中途等待另一优先级较高的流、而影响平均流完成时间的现象,从而可降低平均流完成时间。此外,本发明只需对数据中心中交换机的软件层实现逻辑进行改进,而无需修改硬件,从而可实现在降低平均流完成时间的同时降低成本。

进一步地,基于上述应用于交换机的第一实施例,提出本发明应用于交换机的流量调度方法的第二实施例。

在本实施例中,在上述步骤“根据所述优先级将所述数据包分配至对应的优先级队列中”之后,所述流量调度方法还包括:

步骤a1200,更新所述目标流表项中对应流的当前包数量、当前优先级和老化位。

本实施例中,交换机在根据优先级将数据包分配至对应的优先级队列中之后,需对流信息表进行更新,以便于后续对接收到的各流中的数据包进行分配。具体的,更新目标流表项中对应流的当前包数量、当前优先级和老化位。当然,可以理解,如上所述,在具体实施时,流信息表中可不设置老化位,此时,则只需更新目标流表项中对应流的当前包数量、当前优先级。

具体的更新方式包括以下2种情况:

1)在获取到优先级为i的数据包之后,查询到流信息表中存在与该数据包对应流的流标识所对应的目标流表项,且目标流表项中的当前包数量为0,则将该数据包分配至优先级为i的优先级队列中,然后,更新该目标流表项中的当前包数量和当前优先级。具体的,将该目标流表项中的当前包数量cur_num加1,更新为1,同时,将当前优先级更新为数据包携带的标记优先级i,将老化位更新为第三预设值(可设为0)。

2)在获取到优先级为i的数据包之后,查询到流信息表中存在与该数据包对应流的流标识所对应的目标流表项,当目标流表项中的当前包数量不为0时,则获取目标流表项的当前优先级(记为j),并将该数据包分配至优先级为j的优先级队列中,然后,更新该目标流表项中的当前包数量和老化位,无需更新当前优先级。具体的,将该目标流表项中的当前包数量cur_num加1,同时,将老化位更新为第三预设值(可设为0)。

进一步地,在步骤s1100之后,所述流量调度方法还包括:

当交换机准备转发优先级队列中的数据包时,会查询流信息表,得到该数据包对应流的表项,并将该表项中的当前包数量cur_num减1,然后转发该数据包。

进一步地,所述流量调度方法还包括:

步骤a1300,每隔预设时间检测所述流信息表中是否存在老化位为第二预设值的表项;

本实施例中,交换机每隔预设时间检测流信息表中是否存在老化位为第二预设值的表项。其中,预设时间是预先设定的,其设定依据在于若经过该预设时间,流未发送任一数据包,可认定该流已结束了数据包的发送,可选地可设为1s。为便于说明,以将第二预设值设为1进行说明。

若不存在老化位为第二预设值的表项,则执行步骤a1410,将所述流信息表中各表项的老化位更新为第三预设值;

若不存在老化位为第二预设值的表项,则说明该流信息表中各条流在上一预设时间均未完成数据包的发送,此时,将流信息表中各表项的老化位更新为第三预设值。为便于说明,以将第三预设值设为0进行说明。

若存在老化位为第二预设值的表项,则执行步骤a1420,检测老化位为第二预设值的表项所对应的当前包数量是否为第一预设值;

若存在老化位为第二预设值的表项,则说明该流信息表中可能存在已完成数据包发送的流,此时,检测老化位为第二预设值的表项所对应的当前包数量是否为第一预设值,以检测该流中的数据包是否已被交换机全部转发。其中,第一预设值为0。

若为第一预设值,则执行步骤a1510,从所述流信息表中删除老化位为第二预设值的表项,并将经删除处理的流信息表中各表项的老化位更新为第三预设值;

若不为第一预设值,则执行步骤a1520,将所述流信息表中各表项的老化位更新为第三预设值。

若为第一预设值0,则从流信息表中删除老化位为第二预设值1的表项,并将经删除处理的流信息表中各表项的老化位更新为第三预设值0。

若不为第一预设值0,则将流信息表中各表项的老化位更新为第三预设值0。

需要说明的是,在具体实施例中,第二预设值和第三预设值的设定只需不同即可,不限于设为1和0。

本实施例中,在流信息表中设定老化位,以用于判定各流中的数据包是否已完成转发,并在检测到完成转发时,在流信息表中删除其对应的表项,以节省内存。

进一步地,基于上述应用于交换机的第一和第二实施例,该流量调度方法还包括:

在接收到流量调度设备发送的数据包时,检测数据包的当前缓存(buffer)是否已满;若已满,则将buffer中优先级最低的数据包与新接收到的数据包,丢弃两者中优先级较低的数据包,留下优先级更高的数据包。本实施例中采用优先级丢包策略,实现了在缓存已满时,根据优先级保留优先级较高的数据包,从而使得更高优先级数据包可优先转发,从而可进一步节省处理时间。

本发明还提供一种流量调度系统,所述流量调度系统包括流量调度设备和交换机。

其中,所述流量调度设备为如上所述的流量调度设备,用于执行上述第一种流量调度方法实施例中的各步骤,具体的功能和实现过程可参照上述实施例,此处不作赘述。

所述交换机为如上所述的交换机,用于执行上述第二种流量调度方法实施例中的各步骤,具体的功能和实现过程可参照上述实施例,此处不作赘述。

本实施例提供一种流量调度系统,该流量调度系统包括流量调度设备和交换机,流量调度设备在发送流的数据包时,获取流的当前剩余流量大小;然后,根据当前剩余流量大小和预设流区间阈值设定数据包的优先级;进而将已设定优先级的数据包发送至交换机,此时,交换机在接收到该数据包时,根据优先级将数据包分配至对应的优先级队列中,以在达到预设转发条件时,对优先级队列中的数据包进行转发。通过构建上述流量调度系统,流量调度设备在设定数据包的优先级时,是基于流的当前剩余流量大小来设定的,进而交换机根据该优先级将数据包分配至对应的优先级队列中,以进行转发,由于数据包的优先级是基于流的当前剩余流量大小动态设定的,相比于现有技术中直接基于流的优先级来设定,本发明结合流量调度设备和交换机实现了近似的最短剩余处理时间优先(shortestremainingprocessingtime,srpt)策略,可降低平均流完成时间。同时,本系统无需对硬件进行修改,只需修改流量调度设备和交换机的软件层实现逻辑,因此可节省成本,提高可行性。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有流量调度程序,所述流量调度程序被处理器执行时实现如以上任一项实施例所述的流量调度方法的步骤。

本发明计算机可读存储介质的具体实施例与上述流量调度方法各实施例基本相同,在此不作赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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