发明内容
本发明的目的是针对现有技术的不足,提出了一种面向多任务的控制面实现协同流量调度的方法与系统。本发明填补了使用控制面进行协同流量调度领域的技术空白。通过可编程网络设备的控制面,以资源隔离的形式,面向多个分布式计算任务,采用独立的调度策略完成任务间以及协同流量间的流量调度。
本发明是通过以下技术方案来实现的:本发明实施例的第一方面提供了一种面向多任务的控制面实现协同流量调度方法,包括以下步骤:
配置可编程数据面的报文过滤条件,对解包后的报文进行过滤;
接收协同流量调度任务的任务参数,根据任务参数生成调度策略,再基于调度策略和任务参数中的任务优先级生成流表;并接收资源约束条件,并以此申请网络交换设备控制面资源;
判断控制面资源中的空闲资源是否满足调度需求,若满足则分配调度器资源,若不满足则监控控制面当前的可用资源;判断是否满足资源约束条件,若满足则进行资源分配,生成执行该调度任务的执行单元,若不满足则按照任务优先级排队进行资源分配;
执行单元依据流表执行所有的协同流量调度任务,直至任务结束,回收控制面可用资源。
进一步地,配置可编程数据面的报文过滤条件具体为:通过包括新增、删除、更新在内的配置方式对可编程数据面的报文过滤条件进行配置;所述报文过滤条件为需要上送网络交换设备控制面的协同流量报文的数据结构。
进一步地,所述协同流量调度任务的任务参数包括任务基本信息、任务协同流量优先级、不同任务之间的优先级以及执行该调度任务需要的带宽、内存资源约束条件;其中,所述任务参数中的任务基本信息包括作业标识、用户标识信息;所述任务参数中的任务协同流量优先级包括作业标识、协同流量标识、优先级数值。
进一步地,根据任务参数生成调度策略的过程具体为:基于任务参数中的任务协同流量优先级生成调度策略,在每个执行单元中存在N个按照优先级进行轮询的报文转发管道,不同的协同流量进入指定的报文转发管道中进行排队并完成转发,并将每个协同流量的优先级映射成要转发的报文转发管道的序号。
进一步地,所述资源约束条件包括该任务所需内存、CPU核数、带宽要求及其容忍度;监控控制面当前的可用资源,若当前可用资源满足申请资源与容忍度的差值,则进行资源分配。
进一步地,若不满足则按照任务优先级排队进行资源分配具体为:每个单位时间监控并获取控制面全局资源信息,并在不满足分配条件的情况下,按照优先级将资源请求申请放入等待队列中;并将当前状态设置为等待资源分配状态,并在满足资源约束条件时唤醒,进行资源分配。
进一步地,判断控制面资源中的空闲资源是否满足调度需求还包括:定时进行资源监控,以获取控制面的全局资源信息,所述控制面的全局资源信息包括内存、带宽、CPU系统资源在内的资源使用情况。
本发明实施例的第二方面提供了一种面向多任务的控制面实现协同流量调度系统,用于实现上述的面向多任务的控制面实现协同流量调度方法,包括数据面条件过滤组件、控制面资源调度组件、控制面协同流量调度执行体池;
所述数据面条件过滤组件通过配置可编程数据面的报文过滤条件对解包后的报文进行过滤;
所述控制面资源调度组件接收协同流量调度任务的调度策略以及任务优先级,并以此生成流表;接收资源约束条件,并以此申请网络交换设备控制面资源;所述控制面资源调度组件用于监控控制面当前的可用资源,判断是否满足资源约束条件,若满足则进行资源分配,若不满足则按照任务优先级排队进行资源分配;监控控制面资源和控制面协同流量调度执行体池中的运行状态,并在任务结束,回收控制面可用资源;
所述控制面协同流量调度执行体池用于执行并遍历所有的协同流量调度任务。
本发明实施例的第三方面提供了一种面向多任务的控制面实现协同流量调度装置,包括存储器和处理器,所述存储器与所述处理器耦接;其中,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现上述的面向多任务的控制面实现协同流量调度的方法。
本发明实施例的第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述的面向多任务的控制面实现协同流量调度的方法。
本发明的有益效果是:(1)控制面和数据面支持报文格式的自定义,在数据面报文解包过程中,可判断进入数据面的报文是否为实验数据,若是则送入控制面,否则正常转发。在不影响其它报文转发的基础上,完成协同流量报文调度环境的构建。(2)控制面采用资源隔离的形式进行多个分布式计算任务系统流量的调度试验,可以并行多组调度试验,提升模型训练速度。(3)控制面面向多个协同流量任务调度,可支持研究验证任务间的优先级算法实验。(4)本系统可解决实验用网络设备数据面计算能力受限以及调度策略支持受限的实验场景,有利于研究人员快速构建实验环境。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
下面结合附图,对本发明的面向多任务的控制面实现协同流量调度的方法与系统进行详细说明。在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
本发明提出了一种面向多任务的控制面实现协同流量调度的系统,其系统结构框图如图1所示,包括数据面条件过滤组件、控制面资源调度组件、控制面协同流量调度执行体池。
所述数据面条件过滤组件通过配置可编程数据面的报文过滤条件对解包后的报文进行过滤,由过滤条件配置模块及流量过滤模块两部分组成。所述过滤条件配置模块接收控制面下发的过滤条件配置命令,执行过滤条件的加载、更新、删除操作。所述流量过滤模块对进入数据面的报文进行报文解包操作,并根据上述数据面过滤条件配置模块所配置的过滤条件对进入的报文进行分流,满足过滤条件的报文上送控制面,其余报文则根据流表进行直接进行转发。
所述控制面资源调度组件由协同流量调度任务接收模块、资源分配模块、资源监控模块组成;所述协同流量调度任务接收模块负责接收、处理用户下发的协同流量调度任务的详细策略、任务优先级、资源约束条件,并在通过资源分配模块申请流量调度资源;资源分配模块负责协同流量调度任务资源的分配工作,接收到任务调度接收模块的资源请求后,在满足资源要求的情况下,为该申请分配调度资源并将该任务状态标记为准备完成,若不满足资源申请条件,则进入等待队列;资源监控模块负责统计、回收控制面资源以控制面协同流量调度执行体池中的运行状态。
所述控制面协同流量调度执行体池是由上述资源分配模块分配的承担协同流量调度的执行单元组成的集合。所述控制面协同流量调度执行体池中每个执行单元接收上述流量调度任务接收模块生成的流表,作为该任务的调度规则,并接收从数据面上送的协同流量报文进行解包,并按照调度规则进行转发,根据按照转发顺序将报文送入数据面的出端口,并在传送任务结束时,将该执行单元状态置为空闲状态。
如图2和图3所示所示,本发明提出了应用上述系统的面向多任务的控制面实现协同流量调度的方法,具体包括以下步骤:
(1)用户通过配置可编程数据面的报文过滤条件,对解包后的报文进行过滤。
所述配置方式包括新增、删除、更新三种方式,配置操作后向控制面反馈配置结果,若配置失败则进行重传。多个报文过滤条件之间为或的关系。数据面对入端口的数据报文进行解包处理,若解包后的报文字段满足过滤条件,则将该报文上送到控制面,否则将按照数据面中的流表直接转发该报文。
所述报文过滤条件为需要上送控制面的协同流量报文的数据结构,数据面根据该报文数据结构进行报文解包处理。
数据面支持配置多个过滤条件,每个过滤条件具备唯一的标识。用户可以通过过滤条件标识管理过滤条件,包括新增、删除、更新。若数据面不进行过滤条件的配置,则按照数据面默认的流表配置进行协同流量的转发。为提升匹配效率,允许用户调整匹配条件的顺序。
(2)控制面资源调度组件的协同流量调度任务接收模块负责接收协同流量调度任务的任务参数,根据该任务参数生成调度策略,再基于调度策略和任务参数中的任务优先级生成流表;并接收资源约束条件,并以此申请网络交换设备控制面资源。
所述协同流量调度任务的任务参数包括任务基本信息、任务协同流量优先级、不同任务之间的优先级以及执行该调度任务需要的带宽、内存资源约束条件;接收任务参数成功后,反馈操作状态。
所述任务参数中的任务基本信息包括作业标识、用户标识信息,用于用户查询特定用户或任务的执行情况。
所述任务参数中的任务协同流量优先级包括作业标识、协同流量标识、优先级数值。用户将同一个任务中不同协同流量的优先级按照所述格式组织成一个json格式下发给控制面,并由控制面根据任务基本信息和协同流量优先级生成具体的转发流表。
其中,基于该任务参数中的不同任务之间的优先级生成调度策略的过程具体为:所述调度策略是基于任务参数中的协同流量优先级信息生成的,在每个执行单元中存在N个按照优先级进行轮询的报文转发管道(pipeline),该任务中不同的协同流量进入所述策略指定的报文转发管道中进行排队并完成转发,所述组件将每个协同流量的优先级映射成具体要转发的管道的序号。该映射关系即为调度策略。
其中,生成转发流表的过程具体为:所述流表是用来指导控制面执行单元进行协同流量报文转发的依据,流表中一条信息包含的字段包括两部分,其中一部分包括作业标识、协同流量标识、方向信息、端口号、队列序号,目的是使得对应的协同流量可以正确的进入到指定端口的指定队列中;第二部分的字段包括端口号、队列序号以及队列的优先级,目的是使特定的队列正确配置对应的优先级。这两部分保证了协同流量报文进入指定端口的指定队列,并按照策略中的优先级顺序完成转发。
所述任务参数中的不同任务之间的优先级由用户进行定义,用于在任务资源申请排队时的分配顺序。
此外,由该协同流量调度任务接收模块向控制面资源调度组件申请任务调度所需资源。
(3)控制面资源调度组件的资源分配模块接收上述任务接收模块发送的资源申请,并通过调度器资源监控获取控制面当前可用资源。若控制面可用资源满足任务的资源约束条件,则分配一个配备该资源的执行单元,并将执行单元的唯一标识返回给资源申请模块,资源申请模块将在该执行单元中执行该协同流量调度任务,下发生成的流表并将任务状态置为已准备好,通知用户开始进行流量调度实验。若控制面可用资源不满足任务约束条件,则进入资源分配等待队列,不同任务之间按照任务优先级确定排队顺序,并通知用户当前任务处于待分配资源阶段。
(3.1)资源约束条件包括该任务所需内存、CPU核数、带宽要求及其容忍度。若申请
资源为
,其容忍度为
。其中,所述容忍度为用户自行设定的最低资源配
置。则在系统可用资源满足
的约束条件时分配执行单元。
(3.2)资源分配模块完成执行单元分配后,通过订阅-发布模式通知用户环境已准备完成,开始进行协同流量调度实验。用户接收到该消息后,报文开始构造并传输到数据面,此前,该实验任务需处于等待状态。
(3.3)资源分配模块定时询问资源监控模块获取控制面全局资源信息,并在不满足分配条件的情况下,按照优先级将资源请求申请放入等待队列中。此时需通知用户该任务处于等待资源分配状态,并在满足条件时唤醒。
(4)执行单元依据流表执行所有的协同流量调度任务,直至任务结束,回收控制面可用资源。
具体地,协同流量上送到控制面后,根据任务标识进入执行体池中对应的执行单元中。执行单元采用和数据面过滤组件相同的解包规则解析报文,并根据已配置完成的流表对协同流量进行调度转发。若执行单元接收到任务结束标识报文并完成转发后,将执行单元状态置为Finish状态(任务完成状态),并通知控制面资源调度组件中的资源监控模块进行资源回收。再由资源监控模块更新资源使用统计。同时资源监控模块接收资源分配模块的资源查询,反馈数据支撑资源分配模块。并在传送任务结束时,将该执行单元状态置为空闲状态。
所述资源监控模块负责实时统计控制面的资源使用情况,包括内存、带宽、CPU等系统资源。
与前述面向多任务的控制面实现协同流量调度方法的实施例相对应,本发明还提供了面向多任务的控制面实现协同流量调度装置的实施例。
参见图4,本发明实施例提供的一种面向多任务的控制面实现协同流量调度装置,包括一个或多个处理器,用于实现上述实施例中的面向多任务的控制面实现协同流量调度方法。
本发明面向多任务的控制面实现协同流量调度装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本发明面向多任务的控制面实现协同流量调度装置所在任意具备数据处理能力的设备的一种硬件结构图,除了图4所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的面向多任务的控制面实现协同流量调度方法。
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
以上实施例仅用于说明本发明的设计思想和特点,其目的在于使本领域内的技术人员能够了解本发明的内容并据以实施,本发明的保护范围不限于上述实施例。所以,凡依据本发明所揭示的原理、设计思路所作的等同变化或修饰,均在本发明的保护范围之内。