CN110704211B - 一种在多核系统下跨cpu收包的方法及系统 - Google Patents
一种在多核系统下跨cpu收包的方法及系统 Download PDFInfo
- Publication number
- CN110704211B CN110704211B CN201910930107.9A CN201910930107A CN110704211B CN 110704211 B CN110704211 B CN 110704211B CN 201910930107 A CN201910930107 A CN 201910930107A CN 110704211 B CN110704211 B CN 110704211B
- Authority
- CN
- China
- Prior art keywords
- message
- cpu
- core
- timer
- packet receiving
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在多核系统下跨CPU收包的方法及系统,涉及家庭网关设备技术领域。该方法包括:根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列,并分配一个定时器;配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;当DMA收取报文时,将需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;当定时器到期后,所绑定的指定CPU核从其对应的收包队列中取出相应报文进行处理。本发明不但能在需要CPU参与处理的报文流量过大时,有效保证业务报文(特别是时效性高的报文)得到及时处理,而且硬件复杂度低,使用成本低,满足了实际应用需求。
Description
技术领域
本发明涉及家庭网关设备技术领域,具体来讲是一种在多核系统下跨CPU收包的方法及系统。
背景技术
在家庭网关设备中,随着技术的发展,家庭的带宽也越来越大,从以前的ADSL(Asymmetric Digital Subscriber Line,非对称数字用户线路)到现在的XGPON(XG-Passive Optical Network,万兆吉比特无源光网络),上网速率有了显著的提升。
而随着宽带技术的发展,家庭用户越来越多的使用了WIFI接入家庭网关,减少了大量的布线,使家居环境更和谐美观。但对于家庭网关设备来说,价格在不断降低,需求却在不断提高,导致在某些场景下必须使用软件来完成硬件的一些功能,从而减少硬件成本。例如,在使用大流量的WIFI转发时,从高速接口——PON(Passive Optical Network,无源光网络)口或GE(Gigabit Ethernet,千兆以太网)口过来的数据,需要转发到WIFI。这时,由于WIFI速率跟不上,很可能就导致该收包DMA(Direct Memory Access,直接内存存取)占满这个CPU了。而由于WIFI报文的处理都是在底层驱动中,这样就会造成其他业务进程的报文无法上交到上层业务程序,可能造成VoIP类业务通话不能正常,或者延时较大;对网管TR069业务,则可能造成网管服务器认为设备脱管的现象。
目前,在嵌入式设备中处理上述问题的方法通常为以下两种:一是使用专有的多通道DMA,将指定特征的报文分发到多个CPU核上,不同的业务在不同的CPU核上进行处理。但由于需要使用专有的多通道DMA,这样无疑增加了硬件成本。另外一种方法是使用IPI(Inter-Processor Interrupt,处理器间中断)让其他CPU处理,但这种IPI中断方法也存在与上述业务进程一样的问题,即该收包CPU满负载运行时,连IPI中断也无法发起,同样会有该问题产生。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种在多核系统下跨CPU收包的方法及系统,不但能在需要CPU参与处理的报文流量过大时,有效保证业务报文(特别是时效性高的报文)得到及时处理,而且硬件复杂度低,使用成本低,满足了实际应用需求。
为达到以上目的,本发明提供一种在多核系统下跨CPU收包的方法,包括以下步骤:
根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器;
配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;
当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;
当定时器到期后,所述指定CPU核从其对应的收包队列中取出相应报文进行处理。
在上述技术方案的基础上,配置需要跨CPU收包的报文时,通过设置需要跨CPU收包的报文的元组信息来进行配置;所述元组信息包括:三层IP头中的目的IP、四层传输层的协议号以及四层目的端口号。
在上述技术方案的基础上,配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核,具体包括以下步骤:
当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;将该业务进程绑定到所述指定CPU核上运行。
在上述技术方案的基础上,当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列,具体包括以下步骤:
当DMA收取报文时,检查该报文的元组信息;判断该报文的元组信息是否与需要跨CPU收包的报文的元组信息相匹配,若匹配,将此报文挂接到所述指定CPU核的收包队列上;若不匹配,按照DMA收包流程进行收包处理。
在上述技术方案的基础上,所述指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
在上述技术方案的基础上,该方法还包括以下操作:当所述指定CPU核处理一定数量的报文后或收包队列为空时,重启定时器。
本发明还提供一种在多核系统下跨CPU收包的系统,包括:资源分配模块、参数配置模块、报文挂接模块以及报文处理模块;
所述资源分配模块,用于:根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器;
所述参数配置模块,用于:配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;
所述报文挂接模块,用于:当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;
所述报文处理模块,用于:当定时器到期后,利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理。
在上述技术方案的基础上,所述参数配置模块配置需要跨CPU收包的报文时,通过设置需要跨CPU收包的报文的元组信息来进行配置;所述元组信息包括:三层IP头中的目的IP、四层传输层的协议号以及四层目的端口号。
在上述技术方案的基础上,所述参数配置模块进行参数配置的具体流程包括:
当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;将该业务进程绑定到所述指定CPU核上运行。
在上述技术方案的基础上,所述报文挂接模块进行报文挂接的具体流程包括:当DMA收取报文时,检查该报文的元组信息;判断该报文的元组信息是否与需要跨CPU收包的报文的元组信息相匹配,若匹配,将此报文挂接到所述指定CPU核的收包队列上;若不匹配,按照DMA收包流程进行收包处理。
在上述技术方案的基础上,所述报文处理模块利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
在上述技术方案的基础上,该系统还包括定时器重启模块,用于:当所述指定CPU核处理一定数量的报文后或队列为空时,重启定时器。
本发明的有益效果在于:
(1)本发明中,在多核系统下,为每一个CPU分配一个或多个收包队列,并分配一个定时器资源;利用元组信息实现指定特征的报文分类,将需要跨CPU收包的报文挂接到指定CPU核的收包队列,并利用定时器实现将需要跨CPU收包的报文导向到指定CPU核上进行处理。该方案充分利用了CPU多核的特性,并采用定时器绑核技术,确保定时器只会在指定的CPU上响应。整体方案不需要修改硬件,纯软件功能,节约成本,满足了实际应用需求。
(2)本发明中,报文处理和业务进程都在同一个指定的CPU上运行,增加了CPU的亲和性,cache命中率也大大提高,延时从而得到降低,也不会出现业务进程由于被中断抢占,而得不到调度运行的问题。并且,操作过程中,包括最大响应时间,响应的CPU核等都可根据需要进行配置,配置灵活,特别对于时间敏感的像语音类业务,效果显著。
(3)本发明可适用于任意多核CPU但DMA简单的场景,应用范围较广。
附图说明
图1为本发明实施例中在多核系统下跨CPU收包的方法流程图;
图2为本发明实施例中步骤B的具体流程图;
图3为本发明实施例中步骤C的具体流程图;
图4为本发明实施例中在多核系统下跨CPU收包的系统的结构框图。
具体实施方式
首先,对本发明的设计原理作进一步说明:在嵌入式多核通信设备终端中,存在着对时延较为敏感的一些业务,比如语音业务。在某些场景下(如需要某CPU参与处理的报文流量过大时),某个CPU资源占用较高,导致语音的数据包以及语音进程得不到处理,会造成通话断断续续的。而此时,其他的CPU却是空闲的,如果将数据包交给其他空闲CPU处理,就可以避免这种问题。但实际应用中,一般由于成本问题,嵌入式系统的网卡设计比较简单,并不能将不同的报文交到不同的CPU处理。目前,要么采用专有的多通道DMA,将指定特征的报文分发到多个CPU核上,不同的业务在不同的CPU核上进行处理,但增加了硬件成本;要么使用IPI中断让其他CPU处理,但使用IPI中断会使CPU利用率升高,当该收包CPU满负载运行时,连IPI中断也无法发起,同样会有该问题产生。
为了解决上述问题,本发明提出的解决方案是:在多核系统下,为每一个CPU分配一个或多个收包队列,并分配一个定时器资源;利用元组信息实现指定特征的报文分类,将需要跨CPU收包的报文挂接到指定CPU核的收包队列,并利用定时器实现将需要跨CPU收包的报文导向到指定CPU核上进行处理。该方案充分利用了CPU多核的特性,并采用定时器绑核技术,确保定时器只会在指定的CPU上响应。整体方案不需要修改硬件,纯软件功能,节约成本,满足了实际应用需求;配置灵活,包括最大响应时间,响应的CPU核等都可根据需要进行配置,特别对于时间敏感的像语音类业务,效果显著;且应用范围较广,可适用于任意多核CPU但DMA简单的场景。
为了使本领域技术人员更好地理解本发明,下面结合附图和具体实施方式对本发明作进一步详细说明。
但需说明的是:接下来要介绍的示例仅是一些具体的例子,而不作为限制本发明的实施例必须为如下具体的步骤、数值、条件、数据、顺序等。本领域技术人员可以通过阅读本说明书来运用本发明的构思来构造本说明书中未提到的更多实施例。
实施例一
参见图1所示,本实施例提供了一种在多核系统下跨CPU收包的方法,该方法包括以下步骤:
A、根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器。可以理解的是,此时所分配的定时器是没有工作的,且所分配的收包队列也是空的。
B、配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核。可以理解的是,用于处理该报文的指定CPU核不能为DMA收包的核。也就是说,所指定的用于处理跨CPU收包报文的CPU,为除DMA收包的核以外的其他的CPU,这样就可以有效减轻DMA收包核的负荷,充分利用多核系统中的其他空闲CPU核,提高系统利用率。
C、当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列。
D、当定时器到期后,所述指定CPU核从其对应的收包队列中取出相应报文进行处理。
进一步地,作为一种优选的实施方式,步骤B中,配置需要跨CPU收包的报文时,是通过设置需要跨CPU收包的报文的元组信息来进行配置的。其中,所设置的报文的元组信息包括但不限于:三层IP头中的目的IP、四层传输层的协议号(TCP或UDP)以及四层目的端口号。
更进一步地,如图3所示,实际应用时,步骤C中,当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列,具体包括以下操作:
C1、当DMA收取报文时,检查该报文的元组信息;
C2、判断该报文的元组信息是否能与需要跨CPU收包的报文的元组信息相匹配,若匹配,转入步骤C3;若不匹配,转入步骤C4;
C3、将此报文挂接到所述指定CPU核的收包队列上;
C4、按照正常的DMA收包流程进行收包处理,即由DMA收包的核进行报文处理。
再进一步地,实际应用时,步骤D中,当定时器到期后,会在所绑定的指定的CPU核上进入处理函数,在这个处理函数中,该指定CPU核会从与之对应的收包队列上取出相应报文的数据包。并且,该指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
实施例二
参见图2所示,本实施例提供的一种在多核系统下跨CPU收包的方法,其基本步骤与实施例一相同,不同之处在于,作为一种可选的实施方式,该方法的步骤B具体包括以下操作:
B1、当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;
B2、驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;本实施例中,优选地将该定时器的超时间隔设置为业务进程最大容忍时延的一半,实际操作时,可根据具体情况进行调整,本实施例不做具体限定;
B3、将该业务进程绑定到所述指定CPU核上运行。
从上述操作可看出,本实施例中,由于报文处理和业务进程都在同一个指定的CPU上进行运行,增加了CPU的亲和性,cache命中率都大大增高,延时从而得到降低,也不会出现业务进程由于被中断抢占,而得不到调度运行的问题。并且,操作过程中,包括最大响应时间,响应的CPU核等都可根据需要进行配置,配置灵活,特别对于时间敏感的像语音类业务,效果显著。
实施例三
本实施例提供的一种在多核系统下跨CPU收包的方法,其基本步骤与实施例一相同,不同之处在于,作为一种优选的实施方式,该方法的步骤D之后,还包括以下操作:
当所述指定CPU核处理一定数量的报文后(例如处理了100条报文),或队列为空时,按之前设置的定时器的超时间隔重启定时器,重复步骤C和D的操作。
实施例四
基于同一发明构思,参见图4所示,本发明实施例还提供了一种在多核系统下跨CPU收包的系统,该系统包括:资源分配模块、参数配置模块、报文挂接模块以及报文处理模块。
其中,资源分配模块,用于:根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器;
参数配置模块,用于:配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;
报文挂接模块,用于:当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;
报文处理模块,用于:当定时器到期后,利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理。
进一步地,作为一种优选的实施方式,所述参数配置模块配置需要跨CPU收包的报文时,是通过设置需要跨CPU收包的报文的元组信息来进行配置的。其中,所设置的报文的元组信息包括但不限于:三层IP头中的目的IP、四层传输层的协议号(TCP或UDP)以及四层目的端口号。
再进一步地,在一种可选的实施方式中,所述报文挂接模块进行报文挂接的具体流程包括:当DMA收取报文时,检查该报文的元组信息;判断该报文的元组信息是否与需要跨CPU收包的报文的元组信息相匹配,若匹配,将此报文挂接到所述指定CPU核的收包队列上;若不匹配,按照DMA收包流程进行收包处理。
更进一步地,在一种可选的实施方式中,所述报文处理模块利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
实施例五
本实施例提供的一种在多核系统下跨CPU收包的系统,其基本结构与实施例四相同,不同之处在于,作为一种可选的实施方式,所述参数配置模块进行参数配置的具体流程包括:
当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;
驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;本实施例中,优选地将该定时器的超时间隔设置为业务进程最大容忍时延的一半,实际操作时,可根据具体情况进行调整,本实施例不做具体限定;
将该业务进程绑定到所述指定CPU核上运行。
实施例六
本实施例提供的一种在多核系统下跨CPU收包的系统,其基本结构与实施例四相同,不同之处在于,该系统还包括定时器重启模块,用于:当所述指定CPU核处理一定数量的报文后(例如处理了100条报文),或队列为空时,按之前设置的定时器的超时间隔重启定时器。可以理解的是,定时器重启后,报文挂接模块和报文处理模块会再次重新进行操作。
注意:上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本发明的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本发明的效果,这种合并和组合而成的实施例也被包括在本发明中,在此不一一描述这种合并和组合。
本发明实施例中提及的优点、优势、效果等仅是示例,而非限制,不能认为这些优点、优势、效果等是本发明的各个实施例必须具备的。另外,本发明实施例公开的上述具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本发明实施例必须采用上述具体的细节来实现。
本发明实施例中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子,并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。本发明实施例所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。本发明实施例所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本发明实施例中的步骤流程图以及以上方法描述仅作为例示性的例子,并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本发明各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本发明的概念来结合本文中的各个实施例中相关的部分步骤和部分装置,以构思新的实施例,而这些新的实施例也包括在本发明的范围内。
本发明实施例中的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路或处理器。
本发明实施例的方法包括用于实现上述的方法的一个或多个动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
本发明实施例中的功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为一个或多个指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、DVD(Digital Versatile Disc,数字多功能光盘)、软碟和蓝光盘,其中碟通过磁再现数据,而盘利用激光光学地再现数据。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。
其他例子和实现方式在本发明实施例和所附权利要求的范围和精神内。例如,由于软件的本质,以上所述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。
本领域技术人员可以不脱离由所附权利要求定义的教导的技术而进行对在此所述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上所述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此所述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本发明。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本发明的范围。因此,本发明不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本发明的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。且本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种在多核系统下跨CPU收包的方法,其特征在于,该方法包括以下步骤:
根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器;
配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;并且,配置需要跨CPU收包的报文时,通过设置需要跨CPU收包的报文的元组信息来进行配置;
当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;
当定时器到期后,所述指定CPU核从其对应的收包队列中取出相应报文进行处理;
其中,配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核,具体包括:
当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;
驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;
若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;
将该业务进程绑定到所述指定CPU核上运行。
2.如权利要求1所述的在多核系统下跨CPU收包的方法,其特征在于:所述元组信息包括:三层IP头中的目的IP、四层传输层的协议号以及四层目的端口号。
3.如权利要求2所述的在多核系统下跨CPU收包的方法,其特征在于:当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列,具体包括以下步骤:
当DMA收取报文时,检查该报文的元组信息;判断该报文的元组信息是否与需要跨CPU收包的报文的元组信息相匹配,若匹配,将此报文挂接到所述指定CPU核的收包队列上;若不匹配,按照DMA收包流程进行收包处理。
4.如权利要求1所述的在多核系统下跨CPU收包的方法,其特征在于:所述指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
5.如权利要求1所述的在多核系统下跨CPU收包的方法,其特征在于,该方法还包括以下操作:当所述指定CPU核处理一定数量的报文后或收包队列为空时,重启定时器。
6.一种在多核系统下跨CPU收包的系统,其特征在于,该系统包括:资源分配模块、参数配置模块、报文挂接模块以及报文处理模块;
所述资源分配模块,用于:根据多核系统的CPU核的数量,为每个CPU分配至少一个收包队列;并分配一个定时器;
所述参数配置模块,用于:配置需要跨CPU收包的报文以及用于处理该报文的指定CPU核到驱动层,启动定时器并绑定到所述指定CPU核;并且,配置需要跨CPU收包的报文时,通过设置需要跨CPU收包的报文的元组信息来进行配置;
所述报文挂接模块,用于:当DMA收取报文时,将识别出的需要跨CPU收包的报文挂接到所述指定CPU核的收包队列;
所述报文处理模块,用于:当定时器到期后,利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理;
其中,所述参数配置模块进行参数配置的具体流程包括:
当业务进程需要使用跨CPU收包功能时,配置需要跨CPU收包的报文的元组信息以及用于处理该报文的指定CPU核,并配置该业务进程对时延的最大容忍时间;将上述配置信息发送到驱动层;
驱动层收到配置信息后,检查所述指定CPU核是否为DMA收包的核以及其他配置参数的合法性;若指定CPU核不为DMA收包的核且其他配置参数均为有效,则保存配置的元组信息并启动定时器;启动定时器时,根据业务进程对时延的最大容忍时间设置该定时器的超时间隔,并将该定时器超时响应的CPU设置为所述指定CPU核;
将该业务进程绑定到所述指定CPU核上运行。
7.如权利要求6所述的在多核系统下跨CPU收包的系统,其特征在于:所述元组信息包括:三层IP头中的目的IP、四层传输层的协议号以及四层目的端口号。
8.如权利要求7所述的在多核系统下跨CPU收包的系统,其特征在于,所述报文挂接模块进行报文挂接的具体流程包括:当DMA收取报文时,检查该报文的元组信息;判断该报文的元组信息是否与需要跨CPU收包的报文的元组信息相匹配,若匹配,将此报文挂接到所述指定CPU核的收包队列上;若不匹配,按照DMA收包流程进行收包处理。
9.如权利要求6所述的在多核系统下跨CPU收包的系统,其特征在于:所述报文处理模块利用所述指定CPU核从其对应的收包队列中取出相应报文进行处理时,若收包队列有多个,则根据通用调度算法,从调度算法给出的收包队列中取出相应报文进行处理。
10.如权利要求6所述的在多核系统下跨CPU收包的系统,其特征在于,该系统还包括定时器重启模块,用于:当所述指定CPU核处理一定数量的报文后或队列为空时,重启定时器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930107.9A CN110704211B (zh) | 2019-09-29 | 2019-09-29 | 一种在多核系统下跨cpu收包的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910930107.9A CN110704211B (zh) | 2019-09-29 | 2019-09-29 | 一种在多核系统下跨cpu收包的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704211A CN110704211A (zh) | 2020-01-17 |
CN110704211B true CN110704211B (zh) | 2022-03-11 |
Family
ID=69197221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910930107.9A Active CN110704211B (zh) | 2019-09-29 | 2019-09-29 | 一种在多核系统下跨cpu收包的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704211B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015555B (zh) * | 2020-08-28 | 2023-09-15 | 瑞斯康达科技发展股份有限公司 | 一种组播报文处理方法和装置及设备 |
CN112162901A (zh) * | 2020-09-21 | 2021-01-01 | 东软集团股份有限公司 | Cpu利用率的确定方法、系统、存储介质和电子设备 |
CN112511460B (zh) * | 2020-12-29 | 2022-09-09 | 安徽皖通邮电股份有限公司 | 单收发通道多核网络通讯设备的无锁共享报文转发方法 |
CN113225257B (zh) * | 2021-04-27 | 2022-04-12 | 深圳星耀智能计算技术有限公司 | 一种upf数据处理的方法、系统及存储介质 |
CN114500470A (zh) * | 2021-12-29 | 2022-05-13 | 天翼云科技有限公司 | 一种数据包处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763480A (zh) * | 2016-04-12 | 2016-07-13 | 烽火通信科技股份有限公司 | 一种基于fpga实现流采样的装置及方法 |
CN106713185A (zh) * | 2016-12-06 | 2017-05-24 | 瑞斯康达科技发展股份有限公司 | 一种多核cpu的负载均衡方法及装置 |
CN108984327A (zh) * | 2018-07-27 | 2018-12-11 | 新华三技术有限公司 | 报文转发方法、多核cpu及网络设备 |
CN109117270A (zh) * | 2018-08-01 | 2019-01-01 | 湖北微源卓越科技有限公司 | 提高网络数据包处理效率的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2703188C1 (ru) * | 2017-10-05 | 2019-10-15 | НФВаре, Инц | Способ распределения нагрузки в многоядерной системе |
-
2019
- 2019-09-29 CN CN201910930107.9A patent/CN110704211B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105763480A (zh) * | 2016-04-12 | 2016-07-13 | 烽火通信科技股份有限公司 | 一种基于fpga实现流采样的装置及方法 |
CN106713185A (zh) * | 2016-12-06 | 2017-05-24 | 瑞斯康达科技发展股份有限公司 | 一种多核cpu的负载均衡方法及装置 |
CN108984327A (zh) * | 2018-07-27 | 2018-12-11 | 新华三技术有限公司 | 报文转发方法、多核cpu及网络设备 |
CN109117270A (zh) * | 2018-08-01 | 2019-01-01 | 湖北微源卓越科技有限公司 | 提高网络数据包处理效率的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110704211A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704211B (zh) | 一种在多核系统下跨cpu收包的方法及系统 | |
US11422839B2 (en) | Network policy implementation with multiple interfaces | |
US9608917B1 (en) | Systems and methods for achieving high network link utilization | |
US8213305B2 (en) | Dynamic service management for multicore processors | |
EP2466824B1 (en) | Service scheduling method and device | |
US9639403B2 (en) | Receive-side scaling in a computer system using sub-queues assigned to processing cores | |
EP3404533A1 (en) | Method and apparatus for data processing based on multicore | |
US10516599B1 (en) | Link priority for loop-protect | |
US11218402B2 (en) | Blockchain systems, and message transmission methods and apparatuses | |
US11316916B2 (en) | Packet processing method, related device, and computer storage medium | |
WO2022089175A1 (zh) | 网络拥塞控制方法及装置 | |
WO2016131299A1 (zh) | 一种设备内部处理器网口收包方法及装置 | |
CN112631788A (zh) | 数据传输方法及数据传输服务器 | |
CN103501282B (zh) | 网络报文发送控制方法、虚拟交换机和物理机 | |
WO2012116540A1 (zh) | 流量管理的方法和管理装置 | |
WO2014173366A2 (zh) | 一种实现电信能力群发的方法、装置及系统 | |
CN110515728A (zh) | 服务器调度方法、装置、电子设备及机器可读存储介质 | |
WO2012119414A1 (zh) | 交换网的流量控制方法和装置 | |
CN102223311A (zh) | 一种队列调度方法及装置 | |
US20220046647A1 (en) | Logical channel management in a communication system | |
CN111193904A (zh) | 巡检控制方法、装置及可读存储介质 | |
CN109670691A (zh) | 用于客服队列管理及客服分配的方法、设备与客服系统 | |
JP2011091711A (ja) | ノード及び送信フレーム振り分け方法並びにプログラム | |
CN114531399B (zh) | 一种内存阻塞平衡方法、装置、电子设备和存储介质 | |
CN111245794B (zh) | 数据传输方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |