一种多核处理器及报文处理方法与流程

文档序号:15557792发布日期:2018-09-29 01:32阅读:86来源:国知局
本发明涉及网络通信
技术领域
,尤其涉及一种多核处理器及报文处理方法。
背景技术
:多核处理器是指在一个硬件芯片上集成有多个core(称为处理核或内核)的处理器。由于多核处理器中的多个处理核相对独立,可并行处理报文,因此,可提升基于多核处理器的网络设备的报文处理能力。现有多核处理器处理报文的方式为,基于报文的五元组信息为报文分配group(组),再基于预先配置的group与core的对应关系,由分配的group对应的core处理报文。该处理方式使具有相同五元组信息的报文(同一数据流的报文)由同一core处理,避免乱序。但是,网络中存在部分不需要保序的业务流量,若仍采用上述处理方式处理不需要保序的业务流量,则非保序报文的处理效率不高。技术实现要素:本发明的目的在于提供一种多核处理器及报文处理方法,用以提升非保序报文的处理效率。为实现上述发明目的,本发明提供了如下技术方案:第一方面,本发明提供一种多核处理器,所述多核处理器包括:pki(packetinputunit,报文接收)模块、sso(schedule/synchronize/orderunit,报文调度)模块、多个core;所述pki模块,用于在确定接收的报文为非保序报文时,为所述报文分配非保序报文对应的第一group,将所述第一group的group标识填写到所述报文对应的work(工作项)中,将所述work发送至所述sso模块;所述sso模块,用于在确定work中包括的group标识为所述第一group的group标识时,从所述多个core中为所述work对应报文分配第一core,并触发所述第一core从所述sso模块获取包括所述第一group的group标识的work,若所述第一core获取到包括所述第一group的group标识的work,则从内存中读取对应报文进行处理。第二方面,本发明提供一种报文处理方法,应用于多核处理器包括的pki模块,所述多核处理器还包括:sso模块、多个core,所述方法包括:在确定接收的报文为非保序报文时,为所述报文分配非保序报文对应的第一group;将所述第一group的group标识填写到所述报文对应的work中,将所述work发送至所述sso模块,以使所述sso模块在确定work中包括的group标识为所述第一group的group标识时,从所述多个core中为所述work对应报文分配第一core,并触发所述第一core从所述sso模块获取包括所述第一group的group标识的work,若所述第一core获取到包括所述第一group的group标识的work,则从内存中读取对应报文进行处理。第三方面,本发明还提供一种报文处理方法,应用于多核处理器包括的sso模块,所述多核处理器还包括:pki模块、多个core,所述方法包括:在确定work中包括的group标识为非保序报文对应的第一group的group标识时,从所述多个core中为所述work对应报文分配第一core;触发所述第一core从所述sso模块获取包括所述第一group的group标识的work,若所述第一core获取到包括所述第一group的group标识的work,则从内存中读取对应报文进行处理;其中,所述第一core获取的work为所述pki模块在确定接收的报文为非保序报文并为该报文分配所述第一group后,将分配的所述第一group的group标识填写到所述报文对应的work中,并将填写后的work发送至所述sso模块中的。由以上描述可以看出,本发明由pki模块为非保序报文分配预设的非保序报文对应的group,并将该非保序报文对应的group的group标识添加到非保序报文对应的work中,发送至sso模块;sso模块在确定work中的group标识为非保序报文对应的group的group标识时,从多个core中为非保序报文动态分配处理该非保序报文的core,也就是说,sso模块中不存在非保序报文对应的group与core的固定对应关系,因此,非保序报文不会被分配到固定的core上处理,也就不会受固定core处理能力的限制,从而提升非保序报文的处理效率。附图说明图1是本发明实施例示出的一种多核处理器的结构示意图;图2是本发明实施例示出的一种报文处理方法的流程图;图3是本发明实施例示出的另一种报文处理方法的流程图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。本发明实施例提供一种多核处理器,参见图1,为本发明实施例示出的一种多核处理器的结构示意图,该多核处理器包括pki模块、sso模块以及多个core,其中,该多个core包括core1~core5。本发明不对core的数量进行限制,图1所示core的数量仅为示例性说明。以下将对多核处理器包括的各个模块进行描述:pki模块:用于在确定接收的报文为非保序报文时,为报文分配非保序报文对应的第一group,将第一group的group标识填写到报文对应的work中,将work发送至sso模块。具体地,pki模块接收携带非保序报文的报文特征的配置命令。在一种可选的实施方式中,可通过命令行或预设配置接口(软件接口)获取非保序报文的报文特征。同时,配置非保序报文对应的group,记为第一group。当pki模块接收到报文时,判断报文的报文特征是否命中已配置的非保序报文的报文特征,若该报文的报文特征命中非保序报文的报文特征,则确定接收的报文为非保序报文。pki模块为确定为非保序报文的报文分配非保序报文对应的第一group,将第一group的group标识、以及报文在位于多核处理器之外的内存中的存放地址填写到报文对应的work中,将work发送至sso模块。sso模块:用于在确定work中包括的group标识为第一group的group标识时,从多个core中为work对应报文分配第一core,并触发第一core从sso模块获取包括第一group的group标识的work。具体地,当sso模块确定当前work中包括的group标识为第一group的group标识时,说明该work对应报文为非保序报文,由于非保序报文没有保序要求,因此,sso模块不必为确定为非保序报文的报文分配固定的core处理。在一种可选的实施方式中,sso模块可将所有core均作为第一core分配给当前work对应报文,即任一core均有处理非保序报文的可能。在另一种可选的实施方式中,sso模块统计模块中存在的基于group与core的对应关系分配给同一个core的work的数量。这里需要说明的是,对于有保序要求的报文,仍按照预先配置的group与core的对应关系进行分配,所以,本步骤中sso模块可根据存在的work包括的group标识,以及group与core的对应关系,统计分配给同一个core的work的数量;同时,本发明根据每一个core的处理能力,预设每一个core在sso模块中存放的work的数量阈值,若统计的当前core的work的数量大于预设数量阈值,说明需要当前core处理的报文较多,当前core比较繁忙;反之,若当前core的work的数量小于预设数量阈值,说明当前core相对空闲,有较充足的处理能力。本实施方式中,sso模块根据core当前的处理能力,为非保序报文分配相对较空闲的core作为第一core。在确定了处理当前work对应报文的第一core后,sso模块通知中断控制器触发第一core从sso模块获取包含第一group的group标识的work。当前处于空闲状态的第一core会快速响应中断,向sso模块发送获取work的指令,sso模块将包括第一group的group标识的work发送给该第一core,则该第一core基于work中的存放地址,从内存中读取对应报文进行处理。而其它后续响应中断的第一core,向sso模块发送获取work的指令后,若sso模块中存在包含该第一core对应group的group标识的work(即存在按照group与core的对应关系分配的work),则将该work发送给第一core,第一core基于该work处理对应报文;若第一core未从sso模块获取到work,则自动退出中断。从上述两种实施方式可以看出,对于没有保序要求的报文,本发明没有预设非保序报文对应group与core的对应关系,而是动态确定处理非保序报文的core,从而充分利用core资源,使非保序报文得到及时处理,提升非保序报文的处理效率。对于有保序要求的报文,如前所述,可基于预设的group与core的对应关系,将属于同一流的报文(对应相同group)送入同一core处理,以达到保序目的。现有多核处理器处理保序报文时,通常基于报文的五元组信息为报文分配group,但是,网络中部分业务要求按照三元组信息进行保序,此时,若仍按照五元组信息为报文分配group,则具有相同三元组信息的报文会分配到不同的group,进而由不同的core处理,无法达到保序的目的。为此,本发明在pki模块中预设匹配模式,该匹配模式包括:基于五元组信息的匹配模式、基于三元组信息的匹配模式。当需要更改匹配模型(例如,从基于五元组信息的匹配模式更改为基于三元组信息的匹配模式)时,可通过命令行或预设配置接口更改pki模块中的预设匹配模式。当pki模块接收的报文为保序报文时,根据当前pki模块中预设的匹配模式为报文分配group(记为第二group),将第二group的group标识填写到报文对应的work中,将work发送至sso模块,以使与第二group对应的core(记为第二core)从sso模块获取包括第二group的group标识的work,并基于获取的work从内存中读取报文进行处理。从而实现多核处理器基于五元组信息保序和基于三元组信息保序的灵活控制。本发明实施例还提供一种报文处理方法,参见图2,为本发明实施例示出的一种报文处理方法的流程图,该实施例从pki模块侧对报文处理过程进行描述。步骤201,在确定接收的报文为非保序报文时,为报文分配非保序报文对应的第一group。步骤202,将第一group的group标识填写到报文对应的work中,将work发送至sso模块,以使sso模块在确定work中包括的group标识为第一group的group标识时,从多个core中为work对应报文分配第一core,并触发第一core从sso模块获取包括第一group的group标识的work,若所述第一core获取到包括所述第一group的group标识的work,则从内存中读取对应报文进行处理。可选的,为报文分配非保序报文对应的第一group之前,还包括:接收携带非保序报文的报文特征的配置命令;若报文的报文特征命中非保序报文的报文特征,确定报文为非保序报文。可选的,所述pki模块中预设有匹配模式,所述匹配模式包括:基于五元组信息的匹配模式、基于三元组信息的匹配模式;当所述接收的报文为保序报文时,根据预设的匹配模式为所述报文分配第二group,将所述第二group的group标识填写到所述报文对应的work中,将所述work发送至所述sso模块,以使与所述第二group对应的第二core从所述sso模块获取包括所述第二group的group标识的work,并基于获取的work从所述内存中读取报文进行处理。本发明实施例还提供一种报文处理方法,参见图3,为本发明实施例示出的另一种报文处理方法的流程图,该实施例从sso模块侧对报文处理过程进行描述。步骤301,在确定work中包括的group标识为非保序报文对应的第一group的group标识时,从多个core中为work对应报文分配第一core;步骤302,触发第一core从sso模块获取包括第一group的group标识的work,若所述第一core获取到包括所述第一group的group标识的work,则从内存中读取对应报文进行处理;其中,第一core获取的work为pki模块在确定接收的报文为非保序报文并为该报文分配第一group后,将分配的第一group的group标识填写到报文对应的work中,并将填写后的work发送至sso模块中的。可选的,从多个core中为work对应报文分配第一core,包括:将多个core均作为第一core,分配给work对应报文。可选的,从多个core中为work对应报文分配第一core,包括:统计sso模块中存在的基于group与core的对应关系分配给同一个core的work的数量;将统计的work的数量小于预设数量阈值的core作为第一core,分配给work对应报文。上述报文处理方法的实现过程具体详见上述对多核处理器中各模块的描述,在此不再赘述。现仍以图1所示多核处理器为例,介绍该多核处理器以及报文处理过程。pki模块已通过命令行获取非保序报文的报文特征,且pki模块和sso模块均已预设非保序报文的group的group标识为group0。当pki模块接收到报文(记为packet1)时,提取packet1的报文特征,若packet1的报文特征与非保序报文的报文特征匹配,则确定packet1为非保序报文,即没有保序要求的报文。pki模块为packet1分配预设的非保序报文的group标识group0,并将group0以及packet1在内存中的存放地址(记为address1)写入packet1对应的work(记为work1)中,将work1发送至sso模块。参见表1,为sso模块中预先配置的group与core的对应关系。group标识core标识group1core1group2、group3core2group4~group6core3group7~group10core4group11~group15core5表1由表1可知,sso模块中不存在group0与core的对应关系。当sso模块确定work1中的group标识为本地预设的非保序报文的group标识group0时,确定处理packet1的core。在一种实施方式中,可将core1~core5均确定为处理packet1的core,通知中断控制器(图中未示出)触发core1~core5从sso模块中获取work。假设,core1最先响应中断,向sso模块发送获取work的指令,则sso模块将work1发送给core1,由core1基于work1中的地址address1从内存读取packet1处理。其它core(core2~core5)响应中断后,以core2为例,向sso模块发送获取work的指令,若sso模块中存在包含与core2对应的group2、group3的group标识的work,记为work2,则sso模块将work2发送给core2,core2从内存中获取work2对应报文进行处理;若core2未从sso模块中获取到work,则退出中断。在另一种实施方式中,sso模块基于表1记录的group与core的对应关系,统计每一个core对应的work的数量,例如,由1可知,core2与group2和group3存在对应关系,则统计sso模块中包含group2的work和包含group3的work的数量,即为core2对应的work的数量,同理,统计每一个core在sso模块中对应的work的数量。这里假设对core1~core5统计的结果依次为:100个、80个、60个、40个、20个,若每一个core的处理性能相同,则预设相同的数量阈值,例如,50个,其中,core1~core3的统计结果都大于50个,说明core1~core3的处理压力较大;core4和core5的统计结果小于50个,说明core4和core5的处理压力较小,则通知中断控制器触发core4和core5从sso模块中获取work。假设,core4最先响应中断,则sso模块可将packet1对应的work1发送给core4,由core4基于work1中的地址address1从内存读取packet1处理。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1