一种数据流处理方法、装置和系统制造方法及图纸

技术编号:14818602 阅读:78 留言:0更新日期:2017-03-15 12:07
本发明专利技术实施例提供的数据流处理方法、装置及系统,将对报文执行的处理过程划分为多个处理动作,在确定当前数据流的流量满足预设的条件时,才将部分处理动作展开,从而多个处理核可以采用流水线的形式对报文进行处理,提高处理效率。在数据流带宽波动幅度较大,且数据流峰值带宽较大的情况下,相对于采用静态流水线的方式,本发明专利技术实施例提供的方法一定程度上避免了流量较小时的处理资源浪费,同时也能够更好地支持流量较大时数据流的处理。

【技术实现步骤摘要】

本专利技术涉及计算机技术,尤其涉及一种在多核计算机上进行数据流处理的方法,以及应用该方法的装置和系统。
技术介绍
随着网络技术的发展,通信流量将会呈现两个明显的新特点:一个是越来越高的单用户数据流峰值流量的带宽,另一个是越来越宽的单用户数据流带宽波动幅度。通信流量的这两个特点必将对网络设备的处理能力提出更高的要求。以网关为例,现有的网关还不能很好的适应通信流量的这两个新特点。网关又称网间连接器或协议转换器,是用于实现不同体系结构的网络之间通信互联的网络设备。为了实现高性能的数据流量处理,网关在内部逻辑上一般包括控制面(controlplane)和转发面(forwardingplane)。控制面执行对转发数据流的控制管理。转发面(或称为数据面)在控制面的管理下,执行数据流的转发。在物理部署上,控制面和转发面通常部署在不同的处理核或者不同的处理器上。为了提升转发能力,转发面一般为多核处理器。目前,主流的转发技术为两种:一种是将不同用户的数据流分配到不同的处理核上处理,另一种是静态流水线技术,即将转发过程根据功能划分为多个处理动作,并将该多个处理动作静态绑定到多个不同的处理核上,每个处理核在对报文执行完对应的处理动作之后,通过队列将报文传递给下一个处理核。前者由于单用户数据流的转发过程集中在一个处理核上完成,导致单用户数据流带宽峰值严重受限于单核的处理能力;后者由于是静态绑定,所以需要按照峰值带宽预留处理核资源,而由于通信流量带宽波动幅度大,导致大部分情况下严重的处理资源浪费。因此,以网关为代表的网络设备急需一种新的数据流处理方法以适应通信流量的以上两个新特点,在尽可能避免资源浪费的前提下支持大流量的数据流处理。
技术实现思路
下面首先对本专利技术实施例中可能出现的术语予以解释。本申请中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本专利技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。本申请中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。数据流:也可称为报文流,体现为一段数据报文(也可简称为报文),例如网络协议(InternetProtocol,IP)报文,这些数据报文通常被网络设备顺序接收和处理。数据流可以按照不同的用户会话或承载分为多条。流水线:一种对数据流中的报文进行处理的方式,即将对报文的处理过程划分为具有先后顺序的多个处理动作(也可简称为动作),并由多个处理核按照所述多个处理动作的先后顺序执行所述多个处理动作,其中一个处理核可以执行所述多个处理动作中的一个或多个处理动作。静态流水线:执行报文处理的处理核的数量被预先设置且在预设后不再发生变化,而且多个处理核与多个处理动作之间存在预设的绑定关系,即某个处理核只能执行与该处理核存在绑定关系的一个或多个处理动作。动态流水线:执行报文处理的处理能力随着需求的变化动态增加或减少。多个处理核与多个处理动作之间可以不存在预设的绑定关系。需要说明的是,处理能力的增加或减少在一种实现方式下体现为处理核个数的增加或减少,在另一种实现方式下体现为处理核用于报文处理的能力的增加或减少。展开/收缩处理动作(也可称为处理动作展开/收缩):每个处理动作都具备各自的展开属性,该展开属性用于指示处理动作已展开或未展开。展开处理动作指的是修改未展开的处理动作的展开属性使该展开属性指示该处理动作展开。收缩处理动作指的是修改已展开的处理动作的展开属性使该展开属性指示该处理动作未展开。需要说明的是,若一个处理动作的展开属性指示该处理动作已展开,则通常该处理动作将不会在之前执行它的处理核上继续被执行,但也存在其他实现方式,实施例中将会具体介绍。展开/收缩流水线(也可称为流水线展开/收缩):展开流水线指的是展开一个或多个未展开的处理动作;收缩流水线指的是收缩一个或多个已展开的处理动作。在本专利技术的一些实施例提供的网络设备中可以存在流水线展开和未展开这两种状态,其中,流水线未展开意味着所有处理动作均被同一处理核执行,即所有处理动作均未展开;流水线展开意味着至少一个处理动作已展开,已展开的处理动作和未展开的处理动作通常不在同一处理核上执行(具体实施例中会介绍例外的情况)。而当网络设备处于流水线已展开的状态时,还可以继续选择更多的处理动作,让这些选择出的处理动作在当前处理核之外的其他处理核上执行,也就是在流水线已展开的状态下继续展开流水线。队列(queue):计算机领域常用的一种数据结构。队列中存储的数据元素又称为队列元素,在队列中插入一个队列元素(例如前述报文)称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在后端插入,在前端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(firstinfirstout,FIFO)线性表。具体的,串行队列中的任意一个队列元素在同一时刻只能被一个处理核处理,而并行队列中的任意一个队列元素可以被多个处理核同时处理。队列的具体实现方式包括链表、数组或其他。流水线队列:有时也被简称为队列。动态流水线方法中处理核之间传递报文使用的队列被称为流水线队列,其实现原理与通常队列无异。入口报文队列:在本专利技术的一些实施例中,报文未被处理核处理之前需暂时缓存在一个队列中,该队列被称为入口报文队列,其实现原理与通常队列无异。线程(thread):又称为轻量级进程(light-weightprocess,LWP),是程序执行的最小单元。流量超载:计算机系统中当前正应用于数据流处理的处理能力(例如处理资源的数量或处理方式所带来的处理能力)已经不能满足该数据流当前的流量所需。流量轻载:与流量超载相反,计算机系统中当前正应用于数据流处理的处理能力远大于数据流当前的流量所需。多核处理器:在一枚处理器中集成两个或两个以上完整的计算引擎,计算引擎在本申请中也称之为核。在某些网络设备中,核又分为控制核和处理核,控制核和处理核代表的是执行不同功能的计算引擎,控制核主要用于网络设备上各种资源或功能的控制和管理,而处理核则主要用于实现该网络设备的主体功能。例如,在网关中,控制核属于控制面,主要用于处理核的分配、回收,以及对数据流的控制管理(例如连接的建立和释放,向转发面下发转发信息)。处理核(又称为转发核)属于转发面,主要执行数据流中报文的转发处理。在其他一些实施例中,处理核也可以用来表示核,即核为处理核的简称而已。需要说明的是,在本专利技术的一些实施例中使用的处理器不一定是多核处理器,也可以是多个单核处理器。本专利技术实施例提供一种数据流处理方法、装置及系统,在数据流流量变大时动态增加处理能力,既能一定程度上避免流量过小时处理资源的浪费,又能满足流量较大时数据流的处理需求。第一方面,本专利技术实施例提供一种数据流处理方法,该方法应用于包括多个处理核的计算机系统,所述计算机系统用于接收数据流,并对所述数据流中的报文执行M个处理动作,M为大于或等于2的整本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/62/201610946437.html" title="一种数据流处理方法、装置和系统原文来自X技术">数据流处理方法、装置和系统</a>

【技术保护点】
一种数据流处理方法,其特征在于,所述方法应用于包括多个处理核的计算机系统,所述计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的M个处理动作,M为大于或等于2的整数,所述方法包括:第一处理核确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。

【技术特征摘要】
2016.02.05 CN 20161008270131.一种数据流处理方法,其特征在于,所述方法应用于包括多个处理核的计算机系统,所述计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的M个处理动作,M为大于或等于2的整数,所述方法包括:第一处理核确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。2.根据权利要求1所述的方法,其特征在于,所述第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,包括:所述第一处理核根据处理动作的展开属性确定N个未展开的处理动作,所述属性用于指示所述展开属性所属的处理动作是否展开;所述第一处理核将所述N个未展开的处理动作的展开属性修改为指示相应的处理动作已展开,并通过存储区将执行已展开的处理动作的报文传递给所述第二处理核,以便于所述第二处理核对所述报文执行所述已展开的处理动作。3.根据权利要求2所述的方法,其特征在于,所述第一处理核通过存储区将执行已展开的处理动作的报文传递给所述第二处理核,以便于所述第二处理核对所述把稳执行所述已展开的处理动作包括:所述第一处理核确定所述N个处理动作中每个处理动作对应的流水线队列,以便于所述第一处理核或所述第二处理核将待执行已展开的处理动作的报文在所述已展开的处理动作对应的流水线队列入队,以及所述第二处理核从流水线队列中获取报文并对所述报文执行所述流水线队列对应的处理动作,其中,流水线队列用于存储待执行所述流水线队列对应的处理动作的报文。4.根据权利要求3所述的方法,其特征在于,所述第一处理核或所述第二处理核将待执行已展开的处理动作的报文在所述已展开的处理动作对应的流水线队列入队包括:所述第一处理核或所述第二处理核判断待处理报文的待执行的处理动作的展开属性是否指示所述待执行的处理动作已展开;若是,则将所述待处理报文存储到所述待执行的处理动作对应的流水线队列中,所述待处理报文中被添加有所述待执行的处理动作的标识;若否,则继续对所述待处理报文执行所述待执行的处理动作。5.根据权利要求4所述的方法,其特征在于,当处理核为所述第一处理核时,所述判断步骤在所述当前处理核执行任意一个处理动作之前均执行。6.根据权利要求4所述的方法,其特征在于,当处理核为所述第一处理核时,所述判断步骤在所述当前处理核执行入口动作以及入口动作后续的处理动作之前均执行,所述入口动作是预先设置的指示所述判断步骤启动的处理动作。7.根据权利要求4所述的方法,其特征在于,当处理核为所述第二处理核时,所述判断步骤在所述处理核第一次执行完一个处理动作之后、在执行后续的任意一个处理动作之前执行。8.根据权利要求3-7任意一项所述的方法,其特征在于,处理动作的所述展开属性包括流水线队列标识,所述流水线队列标识为空或无效值表示所述处理动作未展开,所述流水线队列标识为有效标识表示所述处理动作已展开;所述第一处理核修改所述N个处理动作的展开属性为指示相应的处理动作已展开包括:所述第一处理核将所述N个处理动作的流水线队列标识分别设置为所述N个处理动作各自对应的流水线队列的标识。9.根据权利要求1-8任意一项所述的方法,其特征在于,所述未展开的N个处理动作包括所述N个处理动作中任意一个处理动作的所有未展开的后继动作,其中,一个处理动作的后继动作的执行在所述处理动作完成之后。10.根据权利要求3-9任意一项所述的方法,其特征在于,所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理。11.根据权利要求10所述的方法,其特征在于,所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:一个并行流水线队列对应可同时被多个处理核处理的一个或多个处理动作;且一个串行流水线队列对应不可同时被多个处理核处理的一个处理动作。12.根据权利要求11所述的方法,其特征在于,处理动作还包括并行属性,所述并行属性用于指示所述处理动作是否可同时被多个处理核处理,所述第一处理核根据所述并行属性确定所述处理动作是否可同时被多个处理核处理。13.根据权利要求3-12任一项所述的方法,其特征在于,处理动作还包括优先级属性,所述优先级属性用于表示所述处理动作的优先级;且不同的流水线队列具有不同的优先级;所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:每个处理动作对应的流水线队列的优先级与相应的处理动作的优先级匹配。14.根据权利要求3-8任意一项所述的方法,其特征在于,所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理;所述第一处理核确定所述N个处理动作中每个处理动作对应的流水线队列包括:若第一动作集合中所有处理动作均可同时被多个处理核处理,则所述第一处理核确定并行流水线队列为处理动作对应的流水线队列;否则,所述第一处理核确定串行流水线队列为所述处理动作对应的流水线队列;其中,所述第一动作集合包括所述处理动作以及在所述处理动作之后的,且在第一个已展开的处理动作之前的所有处理动作,所述第一个已展开的处理动作为在所述处理动作之后的第一个已展开的处理动作。15.根据权利要求14所述的方法,其特征在于,所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:每个处理动作对应的流水线队列的优先级与所述第一动作集合中优先级最高的处理动作的优先级匹配。16.根据权利要求13或14所述的方法,其特征在于,若在所述N个处理动作中第一个处理动作之前存在已展开的处理动作,则所述方法还包括:根据第二动作集合重新确定第一处理动作对应的流水线队列,所述第一处理动作为所述N个处理动作中第一个处理动作之前的第一个已展开的处理动作;其中,第二动作集合包括所述第一处理动作以及在所述第一处理动作之后的、且在所述N个处理动作中第一个处理动作之前的所有处理动作。17.根据权利要求3-16中任意一项所述的方法,其特征在于,所述第二处理核从流水线队列中获取报文并对所述报文执行所述流水线队列对应的处理动作包括:所述第二处理核通过轮询的方式从多个流水线队列中获取待处理报文,所述待处理报文中携带有处理动作的标识,所述处理动作为所述待处理报文来自的流水线队列对应的处理动作;所述第二处理核根据所述处理动作的标识对所述待处理报文执行所述处理动作。18.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括入口报文队列中存储的报文个数大于或等于第一阈值,所述入口报文队列中存储有所述计算机系统接收到的、还未被执行任何一个处理动作的报文。19.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括所述第一处理核从上次空接收开始累计接收到的报文个数大于或等于第二阈值,所述空接收表示接收到的报文个数等于0。20.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括接收到用户的配置信息,所述配置信息用于指示流水线展开或所述配置信息包含需要展开的处理动作的所述个数N或所述配置信息包含需要展开的所述N个处理动作的标识。21.根据权利要求1-20任意一项所述的方法,其特征在于,所述方法还包括:所述第一处理核确定预设的流水线收缩条件是否满足;若确定所述预设的流水线收缩条件满足,则所述第一处理核确定已展开的P个处理动作,并将所述P个处理动作设置为未展开,P为大于0的整数。22.根据权利要求1-21任意一项所...

【专利技术属性】
技术研发人员:高雄吴杰李保松
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1