CN102970244A - 一种多cpu核间负载均衡的网络报文处理方法 - Google Patents
一种多cpu核间负载均衡的网络报文处理方法 Download PDFInfo
- Publication number
- CN102970244A CN102970244A CN2012104846532A CN201210484653A CN102970244A CN 102970244 A CN102970244 A CN 102970244A CN 2012104846532 A CN2012104846532 A CN 2012104846532A CN 201210484653 A CN201210484653 A CN 201210484653A CN 102970244 A CN102970244 A CN 102970244A
- Authority
- CN
- China
- Prior art keywords
- cpu
- message
- processing method
- receiving queue
- nuclear
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种多CPU核间负载均衡的网络报文处理方法,该方法首先指定一个CPU核从网卡接收队列收取报文,并分发到其他CPU核的报文接收队列中,直至报文接收队列达到其最大阀值,其他CPU核从与其对应的报文接收队列收取报文,然后对报文进行协议栈处理。与现有技术相比,本发明具有充分利用CPU资源、可实现自动均衡等优点。
Description
技术领域
本发明涉及一种网络数据处理方法,尤其是涉及一种多CPU核间负载均衡的网络报文处理方法。
背景技术
现有技术对于单一接收队列网卡芯片,接收报文处理往往采用硬中断触发轮询收报文方式,由于受限于单一队列的特性,报文一般送往一个CPU核上,这样其他CPU核无法和一起从单一接收队列并行取报文,当网卡接收报文负荷大于CPU处理能力时,造成一个CPU核繁忙,其他所有CPU核空闲的局面。单一接收队列网卡芯片,接收报文时只会送往CPU的一个核处理,造成处理能力无法有效利用等问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种充分利用CPU资源、可实现自动均衡的多CPU核间负载均衡的网络报文处理方法。
本发明的目的可以通过以下技术方案来实现:
一种多CPU核间负载均衡的网络报文处理方法,该方法首先指定一个CPU核从网卡接收队列收取报文,并分发到其他CPU核的报文接收队列中,直至报文接收队列达到其最大阀值,其他CPU核从与其对应的报文接收队列收取报文,然后对报文进行协议栈处理。
所述的每个CPU核均设有对应的ID,所述的ID的取值范围为[0,CPU_CORE_NUMBERS-1]间的整数,其中,CPU_CORE_NUMBERS为CPU核的总数。
所述的网络报文处理方法具体包括以下步骤:
1)指定ID为CURRENT_CPU_ID的CPU核为当前从网卡接收队列收取报文的当前核;
2)当前核从网卡接收队列收取报文,且变量recv_packet_count的值加一,所述的变量recv_packet_count表示当前核已收取的报文个数;
3)判断hash_cpu是否大于或等于CURRENT_CPU_ID,若是,则hash_cpu的值加一,执行步骤4),若否,直接执行步骤4);
其中,hash_cpu=recv_packet_count%(CPU_CORE_NUMBERS-1);
4)判断ID为hash_cpu的CPU核上的报文接收队列中的报文数是否达到最大阀值,若是,则执行步骤5),若否,则执行步骤6);
5)当前核直接对收取的报文进行协议栈处理,返回步骤1);
6)当前核将收取的报文发送至ID为hash_cpu的CPU核的报文接收队列中,并通知该CPU核处理报文,返回步骤1)。
所述的recv_packet_count和hash_cpu均为静态无符号整数变量。
与现有技术相比,本发明具有以下优点:
1)本发明方法在单一队列网卡配合多核CPU硬件架构下,能够充分使用CPU各个核,从而达到最大网络报文处理能力,不浪费CPU资源;
2)本发明单核分发和其他核协议栈处理能力之间实现了流水的自动均衡。
附图说明
图1为本发明的结构示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
如图1所示,一种多CPU核间负载均衡的网络报文处理方法,该方法总体可描述为:首先指定一个CPU核从网卡接收队列收取报文,并分发到其他CPU核的报文接收队列中,直至报文接收队列达到其最大阀值,其他CPU核从与其对应的报文接收队列收取报文,然后对报文进行协议栈处理。其中,每个CPU核均设有对应的ID,所述的ID的取值范围为[0,CPU_CORE_NUMBERS-1]间的整数,其中,CPU_CORE_NUMBERS为CPU核的总数。
定义静态无符号整数变量:recv_packet_count,用于表示已接收的报文个数;定义静态无符号整数变量:hash_cpu,用于表示要分发到的CPU核的ID。
所述的网络报文处理方法具体包括以下步骤:
1)指定ID为CURRENT_CPU_ID的CPU核为当前从网卡接收队列收取报文的当前核;
2)当前核从网卡接收队列收取报文,且变量recv_packet_count的值加一,所述的变量recv_packet_count表示当前核已收取的报文个数;
3)判断hash_cpu是否大子或等于CURRENT_CPU_ID,若是,则hash_cpu的值加一,执行步骤4),若否,直接执行步骤4);
其中,hash_cpu=recv_packet_count%(CPU_CORE_NUMBERS-1),采用基于已接收报文个数对CPU核总数减一后取余的完全平均算法求取;
4)判断ID为hash_cpu的CPU核上的报文接收队列中的报文数是否达到最大阀值,若是,则执行步骤5),若否,则执行步骤6);
5)当前核直接对收取的报文进行协议栈处理,从而减少当前核从网卡接收队列取报文的机会,减少其他核报文处理压力,达到分发和协议栈流水处理的自动均衡,然后返回步骤1);
6)当前核将收取的报文发送至ID为hash_cpu的CPU核的报文接收队列中,并通知该CPU核处理报文,返回步骤1),进入下一次从网卡接收队列收报文过程。
上述多CPU核间负载均衡的网络报文处理方法在单一队列网卡配合多核CPU硬件架构下,能够充分使用CPU各个核,从而达到最大网络报文处理能力,不浪费CPU资源;单核分发和其他核协议栈处理能力之间实现了流水的自动均衡。
Claims (4)
1.一种多CPU核间负载均衡的网络报文处理方法,其特征在于,该方法首先指定一个CPU核从网卡接收队列收取报文,并分发到其他CPU核的报文接收队列中,直至报文接收队列达到其最大阀值,其他CPU核从与其对应的报文接收队列收取报文,然后对报文进行协议栈处理。
2.根据权利要求1所述的一种多CPU核间负载均衡的网络报文处理方法,其特征在于,所述的每个CPU核均设有对应的ID,所述的ID的取值范围为[0,CPU_CORE_NUMBERS-1]间的整数,其中,CPU_CORE_NUMBERS为CPU核的总数。
3.根据权利要求2所述的一种多CPU核间负载均衡的网络报文处理方法,其特征在于,所述的网络报文处理方法具体包括以下步骤:
1)指定ID为CURRENT_CPU_ID的CPU核为当前从网卡接收队列收取报文的当前核;
2)当前核从网卡接收队列收取报文,且变量recv_packet_count的值加一,所述的变量recv_packet_count表示当前核已收取的报文个数;
3)判断hash_cpu是否大于或等于CURRENT_CPU_ID,若是,则hash_cpu的值加一,执行步骤4),若否,直接执行步骤4);
其中,hash_cpu=recv_packet_count%(CPU_CORE_NUMBERS-1);
4)判断ID为hash_cpu的CPU核上的报文接收队列中的报文数是否达到最大阀值,若是,则执行步骤5),若否,则执行步骤6);
5)当前核直接对收取的报文进行协议栈处理,返回步骤1);
6)当前核将收取的报文发送至ID为hash_cpu的CPU核的报文接收队列中,并通知该CPU核处理报文,返回步骤1)。
4.根据权利要求3所述的一种多CPU核间负载均衡的网络报文处理方法,其特征在于,所述的recv_packet_count和hash_cpu均为静态无符号整数变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210484653.2A CN102970244B (zh) | 2012-11-23 | 2012-11-23 | 一种多cpu核间负载均衡的网络报文处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210484653.2A CN102970244B (zh) | 2012-11-23 | 2012-11-23 | 一种多cpu核间负载均衡的网络报文处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102970244A true CN102970244A (zh) | 2013-03-13 |
CN102970244B CN102970244B (zh) | 2018-04-13 |
Family
ID=47800131
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210484653.2A Active CN102970244B (zh) | 2012-11-23 | 2012-11-23 | 一种多cpu核间负载均衡的网络报文处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102970244B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015067118A1 (zh) * | 2013-11-08 | 2015-05-14 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
CN104969533A (zh) * | 2013-12-25 | 2015-10-07 | 华为技术有限公司 | 一种数据包处理方法和装置 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN106533978A (zh) * | 2016-11-24 | 2017-03-22 | 东软集团股份有限公司 | 一种网络负载均衡方法及*** |
CN107888626A (zh) * | 2017-12-25 | 2018-04-06 | 新华三信息安全技术有限公司 | 一种报文检测方法及装置 |
CN108259369A (zh) * | 2018-01-26 | 2018-07-06 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN109218226A (zh) * | 2017-07-03 | 2019-01-15 | 迈普通信技术股份有限公司 | 报文处理方法及网络设备 |
CN110166373A (zh) * | 2019-05-21 | 2019-08-23 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和*** |
CN111277514A (zh) * | 2020-01-21 | 2020-06-12 | 新华三技术有限公司合肥分公司 | 一种报文队列分配方法、报文转发方法及相关装置 |
CN111314249A (zh) * | 2020-05-08 | 2020-06-19 | 深圳震有科技股份有限公司 | 一种5g数据转发平面的避免数据包丢失的方法和服务器 |
CN112073332A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 报文分发方法、多核处理器及可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599028A (zh) * | 2009-07-08 | 2009-12-09 | 成都市华为赛门铁克科技有限公司 | 一种多核cpu中统一资源定位符过滤的方法及装置 |
CN101719872A (zh) * | 2009-12-11 | 2010-06-02 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多队列报文发送和接收方法和装置 |
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
CN102004673A (zh) * | 2010-11-29 | 2011-04-06 | 中兴通讯股份有限公司 | 多核处理器负载均衡的处理方法及*** |
US20110179416A1 (en) * | 2010-01-21 | 2011-07-21 | Vmware, Inc. | Virtual Machine Access to Storage Via a Multi-Queue IO Storage Adapter With Optimized Cache Affinity and PCPU Load Balancing |
CN102364455A (zh) * | 2011-10-31 | 2012-02-29 | 杭州华三通信技术有限公司 | 一种级联多核cpu间vcpu均衡分担控制方法及其装置 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
-
2012
- 2012-11-23 CN CN201210484653.2A patent/CN102970244B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599028A (zh) * | 2009-07-08 | 2009-12-09 | 成都市华为赛门铁克科技有限公司 | 一种多核cpu中统一资源定位符过滤的方法及装置 |
CN101877666A (zh) * | 2009-11-13 | 2010-11-03 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多应用程序报文接收方法和装置 |
CN101719872A (zh) * | 2009-12-11 | 2010-06-02 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多队列报文发送和接收方法和装置 |
US20110179416A1 (en) * | 2010-01-21 | 2011-07-21 | Vmware, Inc. | Virtual Machine Access to Storage Via a Multi-Queue IO Storage Adapter With Optimized Cache Affinity and PCPU Load Balancing |
CN102004673A (zh) * | 2010-11-29 | 2011-04-06 | 中兴通讯股份有限公司 | 多核处理器负载均衡的处理方法及*** |
CN102364455A (zh) * | 2011-10-31 | 2012-02-29 | 杭州华三通信技术有限公司 | 一种级联多核cpu间vcpu均衡分担控制方法及其装置 |
CN102571580A (zh) * | 2011-12-31 | 2012-07-11 | 曙光信息产业股份有限公司 | 数据接收方法和计算机 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104639578B (zh) * | 2013-11-08 | 2018-05-11 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
CN104639578A (zh) * | 2013-11-08 | 2015-05-20 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
WO2015067118A1 (zh) * | 2013-11-08 | 2015-05-14 | 华为技术有限公司 | 多协议栈负载均衡方法及装置 |
CN104969533A (zh) * | 2013-12-25 | 2015-10-07 | 华为技术有限公司 | 一种数据包处理方法和装置 |
CN104969533B (zh) * | 2013-12-25 | 2018-11-06 | 华为技术有限公司 | 一种数据包处理方法和装置 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN106533978A (zh) * | 2016-11-24 | 2017-03-22 | 东软集团股份有限公司 | 一种网络负载均衡方法及*** |
CN106533978B (zh) * | 2016-11-24 | 2019-09-10 | 东软集团股份有限公司 | 一种网络负载均衡方法及*** |
CN109218226A (zh) * | 2017-07-03 | 2019-01-15 | 迈普通信技术股份有限公司 | 报文处理方法及网络设备 |
CN107888626A (zh) * | 2017-12-25 | 2018-04-06 | 新华三信息安全技术有限公司 | 一种报文检测方法及装置 |
CN107888626B (zh) * | 2017-12-25 | 2020-11-06 | 新华三信息安全技术有限公司 | 一种报文检测方法及装置 |
CN108259369A (zh) * | 2018-01-26 | 2018-07-06 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN108259369B (zh) * | 2018-01-26 | 2022-04-05 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
CN110166373A (zh) * | 2019-05-21 | 2019-08-23 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和*** |
CN110166373B (zh) * | 2019-05-21 | 2022-12-27 | 优刻得科技股份有限公司 | 源物理机向目的物理机发数据的方法、装置、介质和*** |
CN111277514A (zh) * | 2020-01-21 | 2020-06-12 | 新华三技术有限公司合肥分公司 | 一种报文队列分配方法、报文转发方法及相关装置 |
CN111314249A (zh) * | 2020-05-08 | 2020-06-19 | 深圳震有科技股份有限公司 | 一种5g数据转发平面的避免数据包丢失的方法和服务器 |
CN111314249B (zh) * | 2020-05-08 | 2021-04-20 | 深圳震有科技股份有限公司 | 一种5g数据转发平面的避免数据包丢失的方法和服务器 |
CN112073332A (zh) * | 2020-08-10 | 2020-12-11 | 烽火通信科技股份有限公司 | 报文分发方法、多核处理器及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102970244B (zh) | 2018-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102970244A (zh) | 一种多cpu核间负载均衡的网络报文处理方法 | |
EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
CN102868635B (zh) | 多核多线程的报文保序方法及*** | |
CN101345652B (zh) | 数据采集方法及数据采集设备 | |
CN101547150A (zh) | 数据通信输入端口调度的方法及装置 | |
CN111163018B (zh) | 网络设备及其降低传输时延的方法 | |
CN102821164A (zh) | 一种高效并行分布式数据处理*** | |
CN102945185B (zh) | 任务调度方法及装置 | |
CN109445921A (zh) | 一种分布式数据任务处理方法及装置 | |
CN105430030A (zh) | 基于osgi技术的可平行扩展的应用服务器 | |
CN103248583A (zh) | 一种基于有限深度的先进先出报文队列管理方法及装置 | |
CN101753584A (zh) | VxWorks***下提高智能变电站快速报文处理速度的方法 | |
CN110647392A (zh) | 一种基于容器集群的智能弹性伸缩方法 | |
CN112383585A (zh) | 消息处理***、方法及电子设备 | |
CN105978821B (zh) | 网络拥塞避免的方法及装置 | |
CN103532955B (zh) | 嵌入式多协议移动网络数据采集探针设备 | |
CN102891809A (zh) | 多核网络设备报文按接口保序方法及*** | |
CN107479966B (zh) | 一种基于多核心cpu的信令采集方法 | |
CN103544098B (zh) | 一种压力测试的方法和装置 | |
CN1984119B (zh) | 一种利用时分技术实现流量控制的方法 | |
CN106570011B (zh) | 一种分布式爬虫url种子分发方法、调度节点及抓取节点 | |
CN102073548A (zh) | 一种任务的执行方法及*** | |
CN102281202A (zh) | 一种调度方法、服务器及*** | |
CN105516276B (zh) | 基于仿生分级通信的消息处理方法与*** | |
CN112019589B (zh) | 一种多层级负载均衡数据包处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |