CN102752198A - 多核报文转发方法、多核处理器及网络设备 - Google Patents
多核报文转发方法、多核处理器及网络设备 Download PDFInfo
- Publication number
- CN102752198A CN102752198A CN2012102119336A CN201210211933A CN102752198A CN 102752198 A CN102752198 A CN 102752198A CN 2012102119336 A CN2012102119336 A CN 2012102119336A CN 201210211933 A CN201210211933 A CN 201210211933A CN 102752198 A CN102752198 A CN 102752198A
- Authority
- CN
- China
- Prior art keywords
- dotted line
- line journey
- message
- journey object
- obtains
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明提供一种多核报文转发方法、多核处理器及网络设备。其中,方法包括:将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中;多核处理器中的处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象,其中全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中;处理核执行获取的虚线程对象中的处理函数,以完成对获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。本发明技术方案提高了多核处理器的并行处理能力。
Description
技术领域
本发明涉及通信技术,尤其涉及一种多核报文转发方法、多核处理器及网络设备。
背景技术
随着社会信息化程度的加深,人们对互联网的依赖性越来越强,连接到网络上的计算机节点也呈级数式的增长。网络设备等作为计算机互联的数据交换节点,其数据转发性能决定了整个网络的质量。随着用户连接数的急剧增长和各种高带宽应用的出现,主频提升受限的单核处理器越来越难以满足高速数据转发的性能需求,而多核处理器凭借其较低成本的可扩展能力和并行计算的特性,逐渐在网络通信领域得到广泛应用。所谓多核处理器,是指在一个硬件芯片上集成多个核心处理器(Core-CPU,简称为Core)的处理器,通常是共享内存式结构。多核处理器具备相对独立的多个处理核,可以并行地执行报文转发处理程序,报文转发性能得到较大幅度提高,从而提高了系统整体的吞吐率。
但是,并行执行报文转发处理程序的多个处理核,由于共享许多硬件和软件资源,在数据转发繁忙时,如何使各个处理核协同参与转发,减少彼此之间的相互等待,充分发挥并行处理能力却有很大挑战。另外,由于处理器运行程序的随机性,各个处理核处理报文的时间不一定相同,造成先进入的报文可能后输出,产生报文乱序的问题,而对于一个报文流来说,经网络设备转发后出现乱序是不被允许的。
为了发挥多核处理器的并行处理能,解决上述报文转发过程中出现的报文乱序问题,现有技术存在以下解决方案:流水线模式,即将整个报文转发过程划分为多个处理阶段(Stage),每个处理核负责一个处理阶段,组成一条串行的报文处理流水线,但该方式的特点是流水线的每个处理阶段都与固定的处理核绑定,每个处理核只会参与唯一一条流水线的一个处理阶段,如果各条流水线或者同一条流水线中任务划分不均衡,可能出现某些处理核很忙,甚至超出其处理能力,但另一些处理核却很空闲,但是由于每个处理核仅能参与自己绑定的处理阶段,所以无法去帮助很忙的处理核,限制了多核处理器的并行能力的提高。报文流与处理核绑定模式,即使用一个前置报文流散列单元,将不同报文流的报文分散到不同的处理核,保证同一报文流被分散到某一个处理核,而该报文流的整个转发过程均由该处理核完成,但是,该方案的缺陷在于不同报文流的处理负担差异可能很大,即使报文流散列单元实现均衡散列,也会造成某些处理核比较空闲,而另一些处理核比较繁忙,同样限制了多核处理器的并行能力的提高。
发明内容
本发明提供一种多核报文转发方法、多核处理器及网络设备,用以提高多核处理器的并行处理能力。
本发明提供一种多核报文转发方法,包括:
将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中;其中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称,每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自于每条改进流水线对应的报文组,其中,同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同;
多核处理器中的处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象,其中所述全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中;
所述处理核执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
本发明提供一种多核处理器,包括:多个处理核;
每个处理核包括:
第一处理单元,用于按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象;其中所述全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中;其中,同一报文流的报文被散列存储到同一改进流水线对应的报文组中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称,每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自每条改进流水线对应的报文组中,其中,同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同;
第二处理单元,用于执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
本发明提供一种网络设备,包括本发明提供的任一多核处理器。
本发明提供的多核报文转发方法、多核处理器及网络设备,通过对接收到的报文进行散列存储处理,将同一报文流的报文散列到同一改进报文流水线对应的报文组中,每条改进流水线划分为多个处理阶段,每个处理阶段封装成不同的虚线程对象,为每个虚线程对象分配优先级,其中,每条改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,而不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同,并通过全局虚线程对象序列存储各个优先级下处于就绪状态的虚线程对象,并且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中,多核处理器中的每个处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取就绪虚线程对象,然后执行就绪虚线程对象中的处理函数,以完成对就绪虚线程对象中的私有对象指针对应的待处理报文的转发处理,与现有技术相比,各处理核并未与特定改进流水线的特定处理阶段进行绑定,只要处理核空闲就可以按照优先级从全局虚线程对象中获取就绪虚线程对象,解决了某些处理核很忙,另外一些处理核很闲的问题,提高了多核处理器的并行处理能力,同时由于同一条报文流的报文被散列存储到同一条改进流水线,在提高多核处理器的并行处理能力的同时实现了报文保序。
附图说明
图1为本发明一实施例提供的多核报文转发方法的流程图;
图2为本发明一实施例提供的报文流的转发处理流程的示意图;
图3为本发明一实施例提供的改进流水线中的报文接收处理阶段的流程图;
图4为本发明一实施例提供的改进流水线中的报文入业务处理阶段的流程图;
图5为本发明一实施例提供的改进流水线中的报文路由业务处理阶段的流程图;
图6为本发明一实施例提供的改进流水线中的报文出业务处理阶段的流程图;
图7为本发明一实施例提供的改进流水线中的报文发送处理阶段的流程图;
图8为本发明一实施例提供的多核处理器的结构示意图;
图9为本发明另一实施例提供的多核处理器的结构示意图。
具体实施方式
图1为本发明一实施例提供的多核报文转发方法的流程图。如图1所示,本实施例的方法包括:
步骤101、将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中。
在本实施例中,通过散列处理方式将网络设备的一个或多个接口接收到的报文散列存储到不同改进流水线对应的报文组中,其中属于同一报文流的报文被散列存储到同一改进流水线对应的报文组中,这样在对报文进行转发处理后可以达到报文保序的目的。
可选的,可以由网络设备中前置的硬件模块或软件模块将接收到的报文散列到不同报文组中,但不限于此。
可选的,散列处理过程可以采用哈希算法实现。例如,可以对报文的网际协议(Internet Protocol,简称为IP)五元组:源IP、目的IP、源端口、目的端口和报文协议类型进行哈希计算,将哈希计算的结果与预设的掩码相与,将该报文散列存储到与该与运算结果对应的一条改进流水线对应的报文组中。例如,如果与运算结果为0,则将该报文散列存储到标识为0的改进流水线对应的报文组中,如果与运算结果为1,则将该报文散列存储到标识为1的改进流水线对应的报文组中,等等。其中,哈希计算的结果与预设掩码相与的结果唯一对应一条改进流水线。另外,对所有改进流水线来说,共用上述预设的掩码。
在本实施例中,每个报文组与唯一一条改进流水线对应(或者说是绑定),但多个不同报文组可被绑定到同一条改进流水线。每条改进流水线除与之绑定的报文组不同之外,每条改进流水线对报文的处理过程都是相同的。
在本实施例中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象。
可选的,每个改进流水线对象还可以包括每条改进流水线对应的掩码等其他信息。也就是说,改进流水线对象负责维护改进流水线的所有信息。
可选的,改进流水线的标识可以是整数数值,也就是改进流水线的编号。例如,假设有4条改进流水线,则编号可以分别为小于4的整数值。
在本实施例中,每条改进流水线根据需要划分成多级,每级对应一个处理阶段,每个处理阶段被封装成一个虚线程对象。所划分的处理阶段的个数(或者级数)可以由报文转发处理任务复杂度、比例关系和处理核的数目等参数共同确定。例如,整个报文转发处理过程可划分为报文接收、入业务、出业务和报文发送4个处理阶段,那么对应的改进流水线级数就是4级。
其中,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称。每个虚线程对象中各处理阶段使用的处理函数表明了处理核执行该虚线程对象时的具体操作。每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自于每条改进流水线对应的报文组。滑动窗口中每个位置(即每个窗口)均可挂载一个报文链,每个报文链中存储有报文,报文链中的报文可以是未经任何处理的报文,也可以是已经经过一个或多个处理阶段处理过的报文。其中,为了提高指令缓存(Cache)命中率,接口接收报文时通常一次会接收多个报文,可以将多个报文形成报文链挂载到对应的滑动窗口下。可选的,本实施例可以为报文链长度设定一个阈值,该阈值用于指示每个处理阶段一次所能处理的报文的个数。该阈值若设定的太大,则需要接口一次接收的报文太多,会造成处理核执行虚线程对象中的处理函数时数据缓存不命中(Data Cache Miss,D-CacheMiss)率上升,若阈值设定的太小,则不能发挥指令缓存命中(Instruction CacheHit,I-Cache Hit)的优势,难以提升性能。
其中,虚线程优先级表明该虚线程对象被调度运行的次序,优先级高的虚线程对象将被优先调度运行。同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同。本实施例中设置同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,其目的是避免由于硬件资源不足而需要把前面处理阶段执行完的报文丢弃所作的无用功,以便于提高报文处理效率、避免资源浪费。
在本实施例中,虚线程对象与现有技术中的虚线程不同,不像现有虚线程那样具有运行、就绪、暂停、休眠以及阻塞的五种状态,而是只包括阻塞、就绪和运行三种状态。当该虚线程对象被初始创建时默认为处于阻塞状态,当有报文需要处理时该虚线程对象将会被置为就绪状态,若该虚线程对象被处理核调度执行则状态变为运行状态,若该虚线程对象执行完毕且没有其他报文需要进行该虚线程对象对应的处理阶段的处理则其状态将被重新置为阻塞状态。
其中,每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,同时也可以标识该虚线程对象,例如虚线程对象名称可以是对应处理阶段的名称,但不限于此。例如,对于改进流水线分为4级的情况,虚线程对象名称可以是报文接收、入业务、出业务和报文发送等。
步骤102、多核处理器中的处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象。
在本实施例中,全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中。本实施例的全局虚线程对象序列是一个二维结构。
在本实施例的一个可选实施方式中,步骤102的实施过程可以为:所述处理核按照优先级由高到低的顺序,依次判断全局虚线程对象序列中各优先级下是否满足有处于就绪状态的虚线程对象且没有其他处理核正在获取所述优先级下处于就绪状态的虚线程对象,若判断结果为满足,则获取所述优先级下的处于就绪状态的虚线程对象。例如,如果另一个处理核按照优先级由高到低的顺序,正在获取全局虚线程对象序列中第一优先级下处于就绪状态的虚线程对象,则该处理核按照优先级由高到低的顺序,从比第一优先级低的优先级下获取处于就绪状态的虚线程对象,直到获取到一个处于就绪状态的虚线程对象作为就绪虚线程对象为止,其中,第一优先级为当前存在处于就绪状态的虚线程对象的最高优先级。简单来说,各个处理核按照优先级大小从高到低循环获取全局虚线程对象队列中各个处于就绪状态的虚线程对象,并且各个处理核之间以互斥的方式获取虚线程对象;当各个处理核以互斥方式获取虚线程对象时,若获取全局虚线程对象队列中高优先级的锁获取失败,则不进行阻塞等待,而是继续获取更低一级优先级的锁,直至锁成功后,从中摘取一个虚线程对象,然后执行步骤103。
步骤103、处理核执行所获取的虚线程对象中的处理函数,以完成对所获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
当处理核获取到虚线程对象后,执行所获取的虚线程对象中的处理函数,实现对所获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。其中,对于同一报文或报文流来说,处理核需要执行多个所获取的虚线程对象中的处理函数,以完成对所述报文或报文流的整个转发处理。其中,由于每个处理核并未与固定的改进流水线或改进流水线的某个或某些处理阶段绑定,所以完成同一报文或报文流的转发处理的处理核可能是一个也可能是多个。
由上述可见,本实施例的改进流水线与现有标准流水线不同,改进流水线中的各处理阶段的任务不再与固定处理核绑定,且改进流水线各处理阶段的任务的划分相对自由,各处理阶段的任务繁重程度不必完全均衡。即改进流水线的平台适应能力更强,可适应于各种核数目的处理器硬件环境,同时基于改进流水线的网络设备其报文转发性能不再严格受限于处理时间最长的处理阶段。
本实施例通过对接收到的报文进行散列存储处理,将同一报文流的报文散列到同一改进报文流水线对应的报文组中,每条改进流水线划分为多个处理阶段,每个处理阶段封装成不同的虚线程对象,为每个虚线程对象分配优先级,并通过全局虚线程对象序列存储各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中,多核处理器中的每个处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象,然后执行所获取的虚线程对象中的处理函数,以完成对所获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理,与现有技术相比,各处理核并未与特定改进流水线的特定处理阶段进行绑定,只要处理核空闲就可以按照优先级从全局虚线程对象中获取虚线程对象,解决了某些处理核很忙,另外一些处理核很闲的问题,提高了多核处理器的并行处理能力,同时由于同一条报文流的报文被散列存储到同一条改进流水线,在提高多核处理器的并行处理能力的同时实现了报文保序。
在本实施例的一个可选实施方式中,若根据所获取的虚线程对象中的虚线程对象名称确定出所获取的虚线程对象对应的处理阶段为报文接收处理阶段,则步骤103的一种可选实施方式包括:
步骤1031、处理核创建报文接收链表,所述报文接收链表的表头指针和表尾指针均指向空节点。
步骤1032、处理核判断所获取的虚线程对象所属改进流水线对应的报文组中是否有报文,如果判断结果为是,则执行步骤1033,如果判断结果为否,执行步骤1037。
具体的,处理核判断所获取的虚线程对象所属改进流水线对应的报文组中是否有新报文到达,即判断是否有报文需要进行转发处理。如果判断结果为是,说明有报文需要进行转发处理,则执行步骤1033及其它步骤;如果判断结果为否,说明没有报文需要进行转发处理,故执行步骤1037,结束此次接收处理。
步骤1033、从所获取的虚线程对象所属改进流水线对应的报文组中获取指定数量的报文作为待处理报文,对待处理报文进行解析后挂载到报文接收链表的表尾,并更新所述报文接收链表的表尾指针,然后执行步骤1034。
在实现时,接收每个报文的内存空间通常会组织一种数据结构形式,该数据结构含有成员变量,其中部分成员变量是为了存放分析结果、链表指针等,另一些成员变量也存放报文数据本身。而存放每个报文的数据结构最终是作为节点,挂载在报文接收链表中。基于此,步骤1033的一种可选实施方式包括:处理核在确定有报文需要进行转发处理后,可以确定报文接口属性,对报文进行一层(L1)或二层(L2)的错误检测,然后解析报文的L2/L3/L4层报文头信息,并对存储报文的数据结构的相关成员变量赋值,例如源IP、目的IP、协议类型、源端口、目的端口等;然后把存储该报文的数据结构挂载到报文接收链表的表尾,并更新报文接收链表的表尾指针,返回继续执行确定报文接口属性,对报文进行一层(L1)或二层(L2)的错误检测,然后解析报文的L2/L3/L4层报文头信息,并对存储报文数据结构的相关成员变量赋值,例如源IP、目的IP、协议类型、源端口、目的端口等;然后把该报文挂载到报文接收链表的表尾,并更新报文接收链表的表尾指针等操作,直到循环次数达到预设的指定数量,即直到从报文组中获取到指定数量的报文为止。在该处理阶段中,从报文组中获取的指定数量的报文即为所获取的虚线程对象中的私有对象指针对应的待处理报文。
上述是通过循环的方式获取指定数量的报文,也可以一次获取指定数量的报文,然后再对获取的报文进行L1/L2层错误校验,L2/L3/L4层解析等处理,最后将处理后的报文挂载到报文接收链表中,并更新报文接收链表的表尾指针。
步骤1034、处理核将报文接收链表挂载到,所获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置,并将所获取的虚线程对象中的私有对象指针指向滑动窗口中的下一个位置,然后执行步骤1035。
在该处理阶段中,所获取的虚线程对象中的私有对象指针指向的滑动窗口是所获取的虚线程对象所属改进流水线进程的滑动窗口。
步骤1035、处理核将所获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所获取的虚线程对象的下一个虚线程对象存储到全局虚线程对象序列中,然后执行步骤1036。
其中,所获取的虚线程对象的下一个虚线程对象为对应于所获取的虚线程对象所属改进流水线中所获取的虚线程对象对应的处理阶段的下一个处理阶段的虚线程对象。
在本实施例中,由上一处理阶段封装成的虚线程对象激活下一处理阶段封装成的虚线程对象,并将激活后的虚线程对象按照其优先级存储到全局虚线程对象序列中相应优先级下。所谓激活就是将虚线程对象的状态由阻塞状态设置为就绪状态。
步骤1036、处理核将所述所获取的虚线程对象的状态重新设置为就绪状态,并重新存储到所述全局虚线程对象序列中,以完成对所述待处理报文的转发处理中的接收解析,然后执行步骤1037。
在本实施例中,对应报文接收处理阶段(也就是改进流水线进程的第一个处理阶段)的虚线程对象是自激活的,即在系统上电或启动时,该虚线程对象会自动将自己的状态设置为就绪状态并将自己加载到全局虚线程对象序列中,等待处理核的调度执行,当被处理核调度执行时其状态就会变为执行状态,当被处理核调度执行结束后,该虚线程对象能够自动将自己的状态由运行设置为就绪状态,并重新进入全局虚线程对象序列中相应优先级下,以备下一次被调度执行。
步骤1037、一次报文接收处理完成。
在本实施例的另一可选实施方式中,如果根据所获取的虚线程对象中的虚线程对象名称确定出所获取的虚线程对象对应的处理阶段为除报文接收处理阶段之外的其他报文处理阶段,则步骤103的另一种实施方式包括:
步骤103a、处理核判断所述所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为否,即所述滑动窗口为非空,则执行步骤103b;反之,执行步骤103f。
步骤103b、处理核对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止。
步骤103c、处理核将所获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并返回执行步骤103a,即继续执行判断所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止的操作,直到所获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置与所获取的虚线程对象的上一个虚线程对象中的私有对象指针所指向的滑动窗口中的位置相等为止。
其中,所获取的虚线程对象的上一个虚线程对象为对应于所获取的虚线程对象所属改进流水线中所获取的虚线程对象对应的处理阶段的上一个处理阶段的虚线程对象。
步骤103d、如果所获取的虚线程对象对应的处理阶段不是所述所获取的虚线程对象所属改进流水线中的最后处理阶段,处理核将所获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所获取的虚线程对象的下一个虚线程对象存储到全局虚线程对象序列中。
步骤103e、如果所获取的虚线程对象所属改进流水线的滑动窗口中还有报文需要进行报文处理子过程,则处理核将所获取的虚线程对象的状态重新设置为就绪状态,并重新存储到全局虚线程对象序列中,否则将所获取的虚线程对象的状态重新设置为阻塞状态,以完成对待处理报文的转发处理中的相应报文处理的处理。
步骤103f、一次相应报文处理完成。
根据改进流水线划分的级数,即划分的处理阶段的个数的不同,步骤103的具体实现过程会有所不同,但是从同一报文或报文流的转发处理过程来看最终实现都是一样的。其中,报文流的转发处理的可选流程如图2所示,包括:报文输入;前置报文散列,被散列到报文组G_0至报文组G_n中,其中,报文组G_0至报文组G_n分别对应改进流水线0-n,每条改进流水线包括多个虚线程对象;处理核C_1-C_N根据全局虚线程对象序列对改进流水线0-n中的虚线程对象进行轮询调度并执行;最后生成报文序列Q_1-Q_m并由后置输出单元输出。
下面本发明实施例以每条改进流水线包括5个处理阶段,分别是报文接收处理阶段、报文入业务处理阶段、报文路由处理阶段、报文出业务处理阶段和报文发送处理阶段为例,详细说明在每个处理阶段时步骤103的具体实施方式。
改进流水线中的报文接收处理阶段,如图3所示,步骤103包括如下步骤:
步骤31、创建空的临时报文接收链表,报文接收链表的表头指针、表尾指针均指向空结点。
步骤32、探测所获取的虚线程对象所属改进流水线对应的报文组中是否有新报文到达,若没有,则跳转至步骤39,否则接收报文,并确定该报文接口属性,进行报文L1/L2层错误检测。
步骤33、解析报文的L2/L3/L4层报文头信息,并对存储报文数据结构的相关成员变量赋值,如源IP地址、目的IP地址、协议类型、报文源端口号、报文目的端口号等。
步骤34、解析完之后,把报文挂载到临时报文接收链表的表尾,并更新报文接收链表的表尾指针。
步骤35、判断循环次数是否超过预设的指定数量,如果是,则跳转到步骤36,如果否,则返回执行步骤32~步骤34直至循环次数达到预设的指定数量为止。
步骤36、把报文接收链表挂载到所获取的虚线程对象中私有对象指针所指向的滑动窗口的位置,将私有对象指针指向滑动窗口的下一个位置。
步骤37、激活改进流水线的下一个处理阶段,即报文入业务处理阶段对应的虚线程对象,即把该条改进流水线的报文入业务处理阶段所对应的虚线程对象的状态从阻塞状态置为就绪状态,并把它挂载到全局虚线程对象序列中对应优先级下。
步骤38、把报文接收处理阶段对应的所获取的虚线程对象自身的状态从执行改为就绪状态,挂载到全局虚线程对象序列中对应的优先级下,也称为重新进行自激活。
步骤39、一次报文接收处理完成。
改进流水线中的报文入业务处理阶段,如图4所示,步骤103包括如下步骤:
步骤41、判断所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,若不为空,则跳转至步骤42,否则跳转到步骤46。
步骤42、对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载报文接收链表中的报文,逐个进行报文入业务处理,判断对该报文接收链表中的所有报文是否都完成报文入业务处理或已完成报文入业务处理的报文个数是否已超过预设的个数阈值,如果是,则跳转至步骤44,如果否,执行步骤43。
其中。入业务处理不仅限于访问控制规则(Access Control List,简称为ACL)过滤、目的网络地址转换(Destination Network Address Translation,简称为Dst-NAT)、创建或查询流表项等;若处理的报文个数已超过预设阈值。
步骤43、把所获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并判断该指针所指向的滑动窗口的位置是否与报文接收处理阶段对应的虚线程对象中的私有对象指针所指向的滑动窗口的位置相等,若相等,则说明该条改进流水线当前没有等待需要入业务处理的报文,跳转至步骤44;若不相等,则跳转到步骤42对当前所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文继续进行入业务处理。
步骤44、在完成报文入业务处理的报文个数大于0时,激活改进流水线的下一处理阶段,即把该条改进流水线的报文路由处理阶段对应的虚线程对象的状态从阻塞置为就绪,并把它挂载到全局虚线程对象序列中对应优先级下。
步骤45、若还有剩余等待进行报文入业务处理的报文,则重新把所获取的虚线程对象的状态设置为就绪状态,并重新挂载到全局虚线程对象序列中对应的优先级下;否则,把所获取的虚线程对象的状态重新设置为阻塞状态等待被重新激活。
步骤46、一次报文入业务处理完成。
改进流水线中的报文路由业务处理阶段,如图5所示,步骤103包括如下步骤:
步骤51、判断所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,若不为空,则跳转至步骤52,否则跳转到步骤56。
步骤52、对所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载报文接收链表中的报文,逐个进行报文路由业务处理,判断对该报文接收链表中的所有报文是否都完成报文路由业务处理或已经完成报文路由业务处理的报文个数是否已超过预设的个数阈值,如果是,则跳转至步骤54,如果否,执行步骤53。
其中,报文路由业务处理可以利用报文入业务中查询流表得到的同一条报文流前面报文的路由处理缓存结果。
步骤53、把所获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并判断所获取的虚线程对象中的私有对象指针所指向的滑动窗口的位置是否与报文入业务处理对应的虚线程对象的指针所指向的滑动窗口的位置相等,若相等,则说明该条改进流水线当前没有等待需要进行报文路由业务处理的报文,跳转至步骤54;若不相等,则跳转到步骤52继续对当前所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表进行报文路由业务处理。
步骤54、在完成报文路由业务处理的报文个数大于0时,则激活改进流水线的下一处理阶段,即把该条改进流水线的报文出业务处理阶段对应的虚线程对象从阻塞状态置为就绪状态,并把它挂载到全局虚线程对象序列中对应的优先级下。
步骤55、若此时还有剩余等待进行报文路由业务处理的报文,则重新把所获取的虚线程对象自身的状态设置为就绪状态并挂载到全局虚线程对象序列中对应优先级下;否则,把所获取的虚线程对象自身的状态重新设置为阻塞状态等待被重新激活。
步骤56、一次报文路由业务处理完成。
改进流水线中的报文出业务处理阶段,如图6所示,步骤103包括如下步骤:
步骤61、判断所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,若不为空,则跳转至步骤62,否则跳转到步骤66。
步骤62、对所获取的虚线程对象中的私有对象指针指向滑动窗口的位置所挂载报文接收链表中的报文,逐个进行报文出业务处理,判断对该报文接收链表中的所有报文是否都完成报文出业务处理或已经完成报文出业务处理的报文个数是否已超过预设的个数阈值,如果是,则跳转至步骤64,如果否,则执行步骤63。
其中,出业务处理不仅限于Src-NAT、ACL过滤、流量审计等业务,也可以利用入业务中查询流表得到的同一条流前面报文的出业务处理缓存结果。
步骤63、把所获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并判断该指针所指向的滑动窗口的位置是否与报文路由业务处理阶段对应的虚线程对象中的私有对象指针所指向的滑动窗口的位置相等,若相等,则说明该条改进流水线当前没有等待需要进行报文路由业务处理的报文,跳转至步骤64;若不相等,则跳转到步骤62对当前所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表进行报文出业务处理。
步骤64、在完成报文出业务处理的报文个数大于0时,激活改进流水线的下一处理阶段,即把该条改进流水线的报文发送处理阶段对应的虚线程对象的状态从阻塞状态置为就绪状态,并把它挂载到全局虚线程对象序列中对应优先级下。
步骤65、若此时还有剩余等待出业务处理的报文,则重新把所获取的虚线程对象的状态设置为就绪状态,并挂载到全局虚线程对象序列中对应的优先级下,否则,把所获取的虚线程对象自身的状态重新设置为阻塞状态等待被重新激活。
步骤66、一次报文出业务处理完成。
改进流水线中的报文发送处理阶段,如图7所示,步骤103包括如下步骤:
步骤71、判断所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,若不为空,则跳转至步骤72,否则跳转到步骤75。
步骤72、对所获取的虚线程对象中的私有对象指针所指向滑动窗口的位置所挂载的报文接收链表中的报文,逐个把报文按之前业务处理阶段确定的出接口发送出去(也可以是发送到出接口的输出队列中,等待接口输出单元处理),判断对该报文接收链表中的所有报文是否都完成报文发送业务处理或已经完成报文发送业务处理的报文个数是否已超过预设的个数阈值,如果是,则跳转至步骤74,如果否,则执行步骤73。
步骤73、把所获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并判断该指针所指向的滑动窗口的位置是否与报文出业务处理阶段对应的虚线程对象中的私有对象指针所指向的滑动窗口的位置相同,若相同,则说明该条改进流水线当前没有需要进行报文发送处理的报文,跳转至步骤74;若不相同,则跳转到步骤72对当前所获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文进行发送处理。
步骤74、若此时还有剩余等待从接口发送出去的报文,则重新把所获取的虚线程对象的状态设置为就绪状态,并挂载到全局虚线程对象序列中对应的优先级下;否则,把所获取的虚线程对象自身的状态重新设置为阻塞状态等待被重新激活。
步骤75、一次报文发送处理完成。
由上述可见,本发明实施例主要是把报文处理过程划分为若干处理阶段,每个处理阶段对应改进流水线中的一级,表现为全局虚线程对象序列中的某个虚线程对象,数据转发面的所有处理核均可对全局虚线程对象队列中虚线程对象进行并行调度运行,提高了处理核之间的并行执行能力。
在上述实施例中,改进流水线被划分为5个处理阶段,只是其中的一种划分方法,例如还可以划分为报文从接口接收、业务处理、队列分发和从端口发送等四个阶段,把五阶段中的业务入处理和业务出处理合并为业务处理。
进一步,本发明各实施例中的改进流水线数目以及划分的处理阶段都可以进行适应性改变,甚至在中间处理阶段还可以划分出流水子分支,上述虚线程的名称也可能换成处理函数的名称等,凡是不脱离本发明的原理的变形技术方案,也应视为属本发明的保护范围。
图8为本发明一实施例提供的多核处理器的结构示意图。如图8所示,本实施例的多核处理器包括:多个处理核81。每个处理核81包括:第一处理单元811和第二处理单元812。
其中,第一处理单元811,用于按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象。其中,全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中。其中,同一报文流的报文被散列存储到同一改进流水线对应的报文组中。在本实施例中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称。每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自每条改进流水线对应的报文组中。其中,同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同。
第二处理单元812,与第一处理单元811连接,用于执行第一处理单元811获取的虚线程对象中的处理函数,以完成对第一处理单元811获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
本实施例提供的多核处理器的各功能单元可用于执行上述方法实施例提供的多核报文转发方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
在本实施例中,同一报文流的报文散列到同一改进报文流水线对应的报文组中,每条改进流水线划分为多个处理阶段,每个处理阶段封装成不同的虚线程对象,为每个虚线程对象分配优先级,其中,每条改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,而不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同,并通过全局虚线程对象序列存储各个优先级下处于就绪状态的虚线程对象,并且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中,多核处理器中的每个处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取就绪虚线程对象,然后执行就绪虚线程对象中的处理函数,以完成对就绪虚线程对象中的私有对象指针对应的待处理报文的转发处理,与现有技术相比,各处理核并未与特定改进流水线的特定处理阶段进行绑定,只要处理核空闲就可以按照优先级从全局虚线程对象中获取就绪虚线程对象,解决了某些处理核很忙,另外一些处理核很闲的问题,提高了多核处理器的并行处理能力,同时由于同一条报文流的报文被散列存储到同一条改进流水线,在提高多核处理器的并行处理能力的同时实现了报文保序。
图9为本发明另一实施例提供的多核处理器的结构示意图。本实施例基于图8所示实施例实现,如图9所示,本实施例的每个处理核还包括:报文散列单元813。
报文散列单元813,用于将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中。可选的,报文散列单元813与第二处理单元812连接,用于向第二处理单元812完成所获取的虚线程对象的私有对象指针对应的待处理报文的转发处理提供条件。
在本实施例的一个可选实施方式中,第一处理单元811具体可用于按照优先级由高到低的顺序,依次判断全局虚线程对象序列中各优先级下是否满足有处于就绪状态的虚线程对象且没有其他处理核正在获取所述优先级下处于就绪状态的虚线程对象,若判断结果为满足,则获取所述优先级下的处于就绪状态的虚线程对象。
在本实施例的一个可选实施方式中,第二处理单元812包括:创建模块8121、解析处理模块8122、挂载处理模块8123、第一状态设置模块8124和第一状态改变模块8125。
创建模块8121,用于在根据第一处理单元811获取的虚线程对象中的虚线程对象名称确定第一处理单元811获取的虚线程对象对应的处理阶段为报文接收处理阶段时,创建报文接收链表,所述报文接收链表的表头指针和表尾指针均指向空节点。
可选的,根据第一处理单元811获取的虚线程对象中的虚线程对象名称确定第一处理单元811获取的虚线程对象对应的处理阶段为报文接收处理阶段可由第二处理单元812执行,例如,可由创建模块8121执行,或者可由第二处理单元812中的另一模块来执行。
解析处理模块8122,与创建模块8121连接,用于如果判断出第一处理单元811获取的虚线程对象所属改进流水线对应的报文组中有报文,从第一处理单元811获取的虚线程对象所属改进流水线对应的报文组中获取指定数量的报文作为所述待处理报文,对所述待处理报文进行解析后挂载到创建模块8121所创建的报文接收链表的表尾,并更新所述报文接收链表的表尾指针。可选的,解析处理模块8122与报文散列单元813连接。
挂载处理模块8123,与解析处理模块8122连接,用于将解析处理模块8122处理后的报文接收链表挂载到,第一处理单元811获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置,并将第一处理单元811获取的虚线程对象中的私有对象指针指向滑动窗口中的下一个位置。
第一状态设置模块8124,与第一处理单元811连接,用于将第一处理单元811获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据第一处理单元811获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将第一处理单元811获取的虚线程对象的下一个虚线程对象存储到全局虚线程对象序列中;第一处理单元811获取的虚线程对象的下一个虚线程对象为对应于第一处理单元811获取的虚线程对象所属改进流水线中第一处理单元811获取的虚线程对象对应的处理阶段的下一个处理阶段的虚线程对象。可选的,第一状态设置模块8124与挂载处理模块8123连接。
第一状态改变模块8125,与第一处理单元811连接,用于将第一处理单元811获取的虚线程对象的状态重新设置为就绪状态,并重新存储到全局虚线程对象序列中,以完成对所述待处理报文的转发处理中的接收解析。
在本实施例的另一可选实施方式中,第二处理单元812还包括:第一判断处理模块8126、第二判断处理模块8127、第二状态设置模块8128和第二状态改变模块8129。
其中,第一判断处理模块8126,与第一处理单元811连接,用于在根据第一处理单元811获取的虚线程对象中的虚线程对象名称确定出第一处理单元811获取的虚线程对象对应的处理阶段为除所述报文接收处理阶段之外的其他报文处理阶段时,判断第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止。
可选的,根据第一处理单元811获取的虚线程对象中的虚线程对象名称确定出第一处理单元811获取的虚线程对象对应的处理阶段为除所述报文接收处理阶段之外的其他报文处理阶段可由第二处理单元812执行,例如,可由第一判断处理模块8126执行,或者可由第二处理单元812中的另一模块来执行。
第二判断处理模块8127,与第一处理单元811和第一判断处理模块8126连接,用于将第一处理单元811获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并触发第一判断处理模块8126执行判断第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对第一处理单元811获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止的操作,直到第一处理单元811获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置与第一处理单元811获取的虚线程对象的上一个虚线程对象中的私有对象指针所指向的滑动窗口中的位置相等为止。其中,第一处理单元811获取的虚线程对象的上一个虚线程对象为对应于第一处理单元811获取的虚线程对象所属改进流水线中第一处理单元811获取的虚线程对象对应的处理阶段的上一个处理阶段的虚线程对象。
第二状态设置模块8128,与第一处理单元811连接,用于如果第一处理单元811获取的虚线程对象对应的处理阶段不是第一处理单元811获取的虚线程对象所属改进流水线中的最后处理阶段,将第一处理单元811获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据第一处理单元811获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将第一处理单元811获取的虚线程对象的下一个虚线程对象存储到全局虚线程对象序列中;
第二状态改变模块8129,与第一处理单元811连接,用于如果第一处理单元811获取的虚线程对象所属改进流水线的滑动窗口中还有报文需要进行报文处理子过程,将第一处理单元811获取的虚线程对象的状态重新设置为就绪状态,并重新存储到全局虚线程对象序列中,否则将第一处理单元811获取的虚线程对象的状态设置为阻塞状态,以完成对第一处理单元811待处理报文的转发处理中的相应报文处理子过程的处理。
在本实施例的一个可选实施方式中,每条改进流水线包括4个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文出业务处理阶段和报文发送处理阶段。
在本实施例的一个可选实施方式中,每条改进流水线包括5个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文路由处理阶段、报文出业务处理阶段和报文发送处理阶段。
在此说明,图9仅示出一个处理核81的详细结构,每个处理核的详细结构相同,为简化图示,其他处理核81用方框代替。
上述各单元或模块可用于执行上述多核报文转发方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
在本实施例中,同一报文流的报文散列到同一改进报文流水线对应的报文组中,每条改进流水线划分为多个处理阶段,每个处理阶段封装成不同的虚线程对象,为每个虚线程对象分配优先级,其中,每条改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,而不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同,并通过全局虚线程对象序列存储各个优先级下处于就绪状态的虚线程对象,并且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中,多核处理器中的每个处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取就绪虚线程对象,然后执行就绪虚线程对象中的处理函数,以完成对就绪虚线程对象中的私有对象指针对应的待处理报文的转发处理,与现有技术相比,各处理核并未与特定改进流水线的特定处理阶段进行绑定,只要处理核空闲就可以按照优先级从全局虚线程对象中获取就绪虚线程对象,解决了某些处理核很忙,另外一些处理核很闲的问题,提高了多核处理器的并行处理能力,同时由于同一条报文流的报文被散列存储到同一条改进流水线,在提高多核处理器的并行处理能力的同时实现了报文保序。
本发明一实施例提供一种网络设备,包括多核处理器。其中,多核处理器可以为上述实施例提供的多核处理器,其工作原理和结构可参见上述各实施例的相应描述,在此不再赘述。
在本实施例中,同一报文流的报文散列到同一改进报文流水线对应的报文组中,每条改进流水线划分为多个处理阶段,每个处理阶段封装成不同的虚线程对象,为每个虚线程对象分配优先级,其中,每条改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,而不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同,并通过全局虚线程对象序列存储各个优先级下处于就绪状态的虚线程对象,并且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到全局虚线程对象序列中,本实施例网络设备中的多核处理器中的每个处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取就绪虚线程对象,然后执行就绪虚线程对象中的处理函数,以完成对就绪虚线程对象中的私有对象指针对应的待处理报文的转发处理,与现有技术相比,各处理核并未与特定改进流水线的特定处理阶段进行绑定,只要处理核空闲就可以按照优先级从全局虚线程对象中获取就绪虚线程对象,解决了某些处理核很忙,另外一些处理核很闲的问题,提高了多核处理器的并行处理能力,同时由于同一条报文流的报文被散列存储到同一条改进流水线,在提高多核处理器的并行处理能力的同时实现了报文保序。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种多核报文转发方法,其特征在于,包括:
将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中;其中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称,每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自于每条改进流水线对应的报文组,其中,同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同;
多核处理器中的处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象,其中所述全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中;
所述处理核执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
2.根据权利要求1所述的多核报文转发方法,其特征在于,所述多核处理器中的处理核按照优先级由高到低的顺序,从全局虚线程对象序列中获取就绪虚线程对象包括:
所述处理核按照优先级由高到低的顺序,依次判断所述全局虚线程对象序列中各优先级下是否满足有处于就绪状态的虚线程对象且没有其他处理核正在获取所述优先级下处于就绪状态的虚线程对象,若判断结果为满足,则获取所述优先级下的处于就绪状态的虚线程对象。
3.根据权利要求1或2所述的多核报文转发方法,其特征在于,若根据所述获取的虚线程对象中的虚线程对象名称确定出所述获取的虚线程对象对应的处理阶段为报文接收处理阶段,所述处理核执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理包括:
所述处理核创建报文接收链表,所述报文接收链表的表头指针和表尾指针均指向空节点;
如果所述处理核判断出所述获取的虚线程对象所属改进流水线对应的报文组中有报文,从所述获取的虚线程对象所属改进流水线对应的报文组中获取指定数量的报文作为所述待处理报文,对所述待处理报文进行解析后挂载到所述报文接收链表的表尾,并更新所述报文接收链表的表尾指针;
所述处理核将所述报文接收链表挂载到,所述获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置,并将所述获取的虚线程对象中的私有对象指针指向滑动窗口中的下一个位置;
所述处理核将所述获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所述获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所述获取的虚线程对象的下一个虚线程对象存储到所述全局虚线程对象序列中;所述获取的虚线程对象的下一个虚线程对象为对应于所述获取的虚线程对象所属改进流水线中所述获取的虚线程对象对应的处理阶段的下一个处理阶段的虚线程对象;
所述处理核将所述获取的虚线程对象的状态重新设置为就绪状态,并重新存储到所述全局虚线程对象序列中,以完成对所述待处理报文的转发处理中的接收解析。
4.根据权利要求3所述的多核报文转发方法,其特征在于,若根据所述获取的虚线程对象中的虚线程对象名称确定出所述获取的虚线程对象对应的处理阶段为除所述报文接收处理阶段之外的其他报文处理阶段;
所述处理核执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理包括:
所述处理核判断所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止;
所述处理核将所述获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并继续执行判断所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止的操作,直到所述获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置与所述获取的虚线程对象的上一个虚线程对象中的私有对象指针所指向的滑动窗口中的位置相等为止;所述获取的虚线程对象的上一个虚线程对象为对应于所述获取的虚线程对象所属改进流水线中所述获取的虚线程对象对应的处理阶段的上一个处理阶段的虚线程对象;
如果所述获取的虚线程对象对应的处理阶段不是所述获取的虚线程对象所属改进流水线中的最后处理阶段,所述处理核将所述获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所述获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所述获取的虚线程对象的下一个虚线程对象存储到所述全局虚线程对象序列中;
如果所述获取的虚线程对象所属改进流水线的滑动窗口中还有报文需要进行报文处理子过程,所述处理核将所述获取的虚线程对象的状态重新设置为就绪状态,并重新存储到所述全局虚线程对象序列中,否则将所述获取的虚线程对象的状态重新设置为阻塞状态,以完成对所述待处理报文的转发处理中的相应报文处理。
5.根据权利要求1或2所述的多核报文转发方法,其特征在于,每条改进流水线包括4个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文出业务处理阶段和报文发送处理阶段;或者
每条改进流水线包括5个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文路由处理阶段、报文出业务处理阶段和报文发送处理阶段。
6.一种多核处理器,其特征在于,包括:多个处理核;
每个处理核包括:
第一处理单元,用于按照优先级由高到低的顺序,从全局虚线程对象序列中获取虚线程对象;其中所述全局虚线程对象序列存储有各个优先级下处于就绪状态的虚线程对象,且同一优先级下各个处于就绪状态的虚线程对象按照先进先出的顺序存储到所述全局虚线程对象序列中;其中,同一报文流的报文被散列存储到同一改进流水线对应的报文组中,每条改进流水线由改进流水线对象维护,每个改进流水线对象包括所维护的改进流水线的标识以及由所维护的改进流水线的每个处理阶段分别封装成的虚线程对象,每个虚线程对象包括对应的处理阶段使用的处理函数、私有对象指针、虚线程优先级、虚线程状态和虚线程对象名称,每个虚线程对象中的虚线程对象名称用于标识每个虚线程对象对应的处理阶段,每个虚线程对象中的私有对象指针指向每个虚线程对象所属改进流水线的滑动窗口的一个位置,每条改进流水线的滑动窗口中的报文来自每条改进流水线对应的报文组中,其中,同一改进流水线中对应的处理阶段越往后的虚线程对象的优先级越高,不同改进流水线中对应相同处理阶段的虚线程对象的优先级相同;
第二处理单元,用于执行所述获取的虚线程对象中的处理函数,以完成对所述获取的虚线程对象中的私有对象指针对应的待处理报文的转发处理。
7.根据权利要求6所述的多核处理器,其特征在于,每个处理核还包括:
报文散列单元,用于将接收到的报文散列存储到不同改进流水线对应的报文组中,以使同一报文流的报文被散列存储到同一改进流水线对应的报文组中。
8.根据权利要求6所述的多核处理器,其特征在于,所述第一处理单元具体用于按照优先级由高到低的顺序,依次判断所述全局虚线程对象序列中各优先级下是否满足有处于就绪状态的虚线程对象且没有其他处理核正在获取所述优先级下处于就绪状态的虚线程对象,若判断结果为满足,则获取所述优先级下的处于就绪状态的虚线程对象。
9.根据权利要求6或7或8所述的多核处理器,其特征在于,所述第二处理单元包括:创建模块,用于在根据所述获取的虚线程对象中的虚线程对象名称确定所述获取的虚线程对象对应的处理阶段为报文接收处理阶段时,创建报文接收链表,所述报文接收链表的表头指针和表尾指针均指向空节点;
解析处理模块,用于如果所述处理核判断出所述获取的虚线程对象所属改进流水线对应的报文组中有报文,从所述获取的虚线程对象所属改进流水线对应的报文组中获取指定数量的报文作为所述待处理报文,对所述待处理报文进行解析后挂载到所述报文接收链表的表尾,并更新所述报文接收链表的表尾指针;
挂载处理模块,用于将所述报文接收链表挂载到,所述获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置,并将所述获取的虚线程对象中的私有对象指针指向滑动窗口中的下一个位置;
第一状态设置模块,用于将所述获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所述获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所述获取的虚线程对象的下一个虚线程对象存储到所述全局虚线程对象序列中;所述获取的虚线程对象的下一个虚线程对象为对应于所述获取的虚线程对象所属改进流水线中所述获取的虚线程对象对应的处理阶段的下一个处理阶段的虚线程对象;
第一状态改变模块,用于将所述获取的虚线程对象的状态重新设置为就绪状态,并重新存储到所述全局虚线程对象序列中,以完成对所述待处理报文的转发处理中的接收解析。
10.根据权利要求9所述的多核处理器,其特征在于,
所述第二处理单元还包括:
第一判断处理模块,用于在根据所述获取的虚线程对象中的虚线程对象名称确定出所述获取的虚线程对象对应的处理阶段为除所述报文接收处理阶段之外的其他报文处理阶段时,判断所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止;
第二判断处理模块,用于将所述获取的虚线程对象中的私有对象指针指向滑动窗口的下一个位置,并触发所述第一判断处理模块执行判断所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置是否为空,如果判断结果为非空,则对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的报文,逐个进行相应报文处理,直到对所述获取的虚线程对象中的私有对象指针指向的滑动窗口的位置所挂载的报文接收链表中的所有报文都完成相应报文处理,或者已完成相应报文处理的报文个数大于预设个数阈值为止的操作,直到所述获取的虚线程对象中的私有对象指针所指向的滑动窗口中的位置与所述获取的虚线程对象的上一个虚线程对象中的私有对象指针所指向的滑动窗口中的位置相等为止;所述获取的虚线程对象的上一个虚线程对象为对应于所述获取的虚线程对象所属改进流水线中所述获取的虚线程对象对应的处理阶段的上一个处理阶段的虚线程对象;
第二状态设置模块,用于如果所述获取的虚线程对象对应的处理阶段不是所述获取的虚线程对象所属改进流水线中的最后处理阶段,将所述获取的虚线程对象的下一个虚线程对象的状态由阻塞状态设置为就绪状态,并根据所述获取的虚线程对象的下一个虚线程对象中的虚线程优先级,将所述获取的虚线程对象的下一个虚线程对象存储到所述全局虚线程对象序列中;
第二状态改变模块,用于如果所述获取的虚线程对象所属改进流水线的滑动窗口中还有报文需要进行报文处理子过程,将所述获取的虚线程对象的状态重新设置为就绪状态,并重新存储到所述全局虚线程对象序列中,否则将所述获取的虚线程对象的状态设置为阻塞状态,以完成对所述待处理报文的转发处理中的相应报文处理子过程的处理。
11.根据权利要求6或7或8所述的多核处理器,其特征在于,每条改进流水线包括4个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文出业务处理阶段和报文发送处理阶段;或者
每条改进流水线包括5个处理阶段,分别为报文接收处理阶段、报文入业务处理阶段、报文路由处理阶段、报文出业务处理阶段和报文发送处理阶段。
12.一种网络设备,其特征在于,包括:权利要求6-11任一项所述的多核处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210211933.6A CN102752198B (zh) | 2012-06-21 | 2012-06-21 | 多核报文转发方法、多核处理器及网络设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210211933.6A CN102752198B (zh) | 2012-06-21 | 2012-06-21 | 多核报文转发方法、多核处理器及网络设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102752198A true CN102752198A (zh) | 2012-10-24 |
CN102752198B CN102752198B (zh) | 2014-10-29 |
Family
ID=47032102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210211933.6A Active CN102752198B (zh) | 2012-06-21 | 2012-06-21 | 多核报文转发方法、多核处理器及网络设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102752198B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746806A (zh) * | 2013-12-13 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN104506452A (zh) * | 2014-12-16 | 2015-04-08 | 福建星网锐捷网络有限公司 | 一种报文处理方法及装置 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
WO2015131445A1 (zh) * | 2014-03-07 | 2015-09-11 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法、计算机存储介质 |
CN105227493A (zh) * | 2015-10-15 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 多核平台下提高数据报文转发性能的方法 |
CN106557358A (zh) * | 2015-09-29 | 2017-04-05 | 北京东土军悦科技有限公司 | 一种基于双核处理器的数据存储方法及装置 |
CN106941457A (zh) * | 2016-01-04 | 2017-07-11 | 普天信息技术有限公司 | 基于多核处理器的ip报文分片重组的方法及装置 |
CN108270520A (zh) * | 2018-01-31 | 2018-07-10 | 杜民 | 报文传输方法、装置、存储介质及计算机设备 |
CN109617833A (zh) * | 2018-12-25 | 2019-04-12 | 深圳市任子行科技开发有限公司 | 多线程用户态网络协议栈系统的nat数据审计方法和系统 |
CN109921990A (zh) * | 2017-12-13 | 2019-06-21 | 丛林网络公司 | 多线程路由处理 |
CN111181948A (zh) * | 2019-12-25 | 2020-05-19 | 潍柴动力股份有限公司 | 非标准报文驱动已有功能的方法及装置 |
CN112152940A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 报文处理方法、装置以及系统 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
US11356369B1 (en) | 2020-03-31 | 2022-06-07 | Juniper Networks, Inc. | Border gateway protocol update packing for a distributed routing information base |
CN114629714A (zh) * | 2022-03-29 | 2022-06-14 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
US11502946B2 (en) | 2020-03-10 | 2022-11-15 | Juniper Networks, Inc. | Distributed label assignment for labeled routing protocol routes |
US11561823B1 (en) | 2020-05-12 | 2023-01-24 | Juniper Networks, Inc. | Lockless management of immutable objects by multi-threaded processes using multiple counters |
US11734017B1 (en) | 2020-12-07 | 2023-08-22 | Waymo Llc | Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor |
US11762710B2 (en) | 2020-06-23 | 2023-09-19 | Juniper Networks, Inc. | Multithreaded route processing for routing information display |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1941735A (zh) * | 2005-09-29 | 2007-04-04 | 华为技术有限公司 | 一种报文处理方法及系统 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN101610209A (zh) * | 2008-11-28 | 2009-12-23 | 北京网康科技有限公司 | 一种多核并行的网络业务流处理方法及设备 |
CN101616083A (zh) * | 2009-08-06 | 2009-12-30 | 杭州华三通信技术有限公司 | 一种报文转发方法和装置 |
-
2012
- 2012-06-21 CN CN201210211933.6A patent/CN102752198B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1941735A (zh) * | 2005-09-29 | 2007-04-04 | 华为技术有限公司 | 一种报文处理方法及系统 |
CN101610209A (zh) * | 2008-11-28 | 2009-12-23 | 北京网康科技有限公司 | 一种多核并行的网络业务流处理方法及设备 |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN101616083A (zh) * | 2009-08-06 | 2009-12-30 | 杭州华三通信技术有限公司 | 一种报文转发方法和装置 |
Non-Patent Citations (1)
Title |
---|
向军: "网络处理器线速并行处理关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103746806A (zh) * | 2013-12-13 | 2014-04-23 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN103746806B (zh) * | 2013-12-13 | 2017-02-15 | 福建星网锐捷网络有限公司 | 一种网页认证方法、装置及网络设备 |
CN104821924B (zh) * | 2014-01-30 | 2018-11-27 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
WO2015131445A1 (zh) * | 2014-03-07 | 2015-09-11 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法、计算机存储介质 |
CN104394096A (zh) * | 2014-12-11 | 2015-03-04 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN104394096B (zh) * | 2014-12-11 | 2017-11-03 | 福建星网锐捷网络有限公司 | 一种基于多核处理器的报文处理方法及多核处理器 |
CN104506452A (zh) * | 2014-12-16 | 2015-04-08 | 福建星网锐捷网络有限公司 | 一种报文处理方法及装置 |
CN104506452B (zh) * | 2014-12-16 | 2017-12-26 | 福建星网锐捷网络有限公司 | 一种报文处理方法及装置 |
CN106557358A (zh) * | 2015-09-29 | 2017-04-05 | 北京东土军悦科技有限公司 | 一种基于双核处理器的数据存储方法及装置 |
CN106557358B (zh) * | 2015-09-29 | 2020-08-11 | 北京东土军悦科技有限公司 | 一种基于双核处理器的数据存储方法及装置 |
CN105227493A (zh) * | 2015-10-15 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 多核平台下提高数据报文转发性能的方法 |
CN106941457B (zh) * | 2016-01-04 | 2019-09-06 | 普天信息技术有限公司 | 基于多核处理器的ip报文分片重组的方法及装置 |
CN106941457A (zh) * | 2016-01-04 | 2017-07-11 | 普天信息技术有限公司 | 基于多核处理器的ip报文分片重组的方法及装置 |
CN113504985B (zh) * | 2016-07-29 | 2022-10-11 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN113504985A (zh) * | 2016-07-29 | 2021-10-15 | 华为技术有限公司 | 一种任务处理方法以及网络设备 |
CN109921990A (zh) * | 2017-12-13 | 2019-06-21 | 丛林网络公司 | 多线程路由处理 |
CN109921990B (zh) * | 2017-12-13 | 2021-08-20 | 瞻博网络公司 | 多线程路由处理 |
CN108270520A (zh) * | 2018-01-31 | 2018-07-10 | 杜民 | 报文传输方法、装置、存储介质及计算机设备 |
CN109617833A (zh) * | 2018-12-25 | 2019-04-12 | 深圳市任子行科技开发有限公司 | 多线程用户态网络协议栈系统的nat数据审计方法和系统 |
CN109617833B (zh) * | 2018-12-25 | 2021-12-31 | 深圳市任子行科技开发有限公司 | 多线程用户态网络协议栈系统的nat数据审计方法和系统 |
CN112152940B (zh) * | 2019-06-28 | 2022-08-09 | 华为云计算技术有限公司 | 报文处理方法、装置以及系统 |
CN112152940A (zh) * | 2019-06-28 | 2020-12-29 | 华为技术有限公司 | 报文处理方法、装置以及系统 |
CN111181948A (zh) * | 2019-12-25 | 2020-05-19 | 潍柴动力股份有限公司 | 非标准报文驱动已有功能的方法及装置 |
CN111181948B (zh) * | 2019-12-25 | 2023-04-07 | 潍柴动力股份有限公司 | 非标准报文驱动已有功能的方法及装置 |
US11502946B2 (en) | 2020-03-10 | 2022-11-15 | Juniper Networks, Inc. | Distributed label assignment for labeled routing protocol routes |
US11909632B2 (en) | 2020-03-10 | 2024-02-20 | Juniper Networks, Inc. | Distributed label assignment for labeled routing protocol routes |
US11356369B1 (en) | 2020-03-31 | 2022-06-07 | Juniper Networks, Inc. | Border gateway protocol update packing for a distributed routing information base |
US11561823B1 (en) | 2020-05-12 | 2023-01-24 | Juniper Networks, Inc. | Lockless management of immutable objects by multi-threaded processes using multiple counters |
US11762710B2 (en) | 2020-06-23 | 2023-09-19 | Juniper Networks, Inc. | Multithreaded route processing for routing information display |
US11734017B1 (en) | 2020-12-07 | 2023-08-22 | Waymo Llc | Methods and systems for processing vehicle sensor data across multiple digital signal processing cores virtually arranged in segments based on a type of sensor |
CN114629714A (zh) * | 2022-03-29 | 2022-06-14 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
CN114629714B (zh) * | 2022-03-29 | 2023-08-04 | 济南大学 | 蜜罐和沙箱相互增强的恶意程序行为处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102752198B (zh) | 2014-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102752198B (zh) | 多核报文转发方法、多核处理器及网络设备 | |
CN103309738B (zh) | 用户作业调度方法及装置 | |
US10015062B2 (en) | Techniques for analytics-driven hybrid concurrency control in clouds | |
CN104050041B (zh) | 用于在处理器中调度规则匹配的调度方法和装置 | |
CN103914399B (zh) | 一种并行计算系统中的磁盘缓存方法及装置 | |
CN101296114B (zh) | 基于流的并行模式匹配方法和系统 | |
CN105511954A (zh) | 一种报文处理方法及装置 | |
CN109726004B (zh) | 一种数据处理方法及装置 | |
CN101604261B (zh) | 超级计算机的任务调度方法 | |
CN109154897A (zh) | 可重新配置的分布式处理 | |
US20180097748A1 (en) | Partitioned Topic Based Queue with Automatic Processing Scaling | |
Xie et al. | FlexChain: Bridging parallelism and placement for service function chains | |
Ke et al. | Aggregation on the fly: Reducing traffic for big data in the cloud | |
Islam et al. | Task scheduling for big data management in fog infrastructure | |
CN103595654A (zh) | 基于多核CPU的HQoS实现方法、装置及网络设备 | |
Tan et al. | Coupling scheduler for mapreduce/hadoop | |
CN103412790A (zh) | 移动安全中间件的多核并发调度方法与系统 | |
Stavrinides et al. | Security and cost aware scheduling of real-time IoT workflows in a mist computing environment | |
US20150195122A1 (en) | Method and System for Transparent Network Acceleration | |
CN106599184B (zh) | 一种Hadoop系统优化方法 | |
CN104506452B (zh) | 一种报文处理方法及装置 | |
Sayuti et al. | Simultaneous optimisation of task mapping and priority assignment for real-time embedded NoCs | |
CN101299758A (zh) | 一种大规模事件处理的规则群组系统及处理方法 | |
Dai et al. | A resource occupancy ratio-oriented load balancing task scheduling mechanism for flink | |
Zhanikeev | A lockfree shared memory design for high‐throughput multicore packet traffic capture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |