CN104753814A - 基于网卡的报文分流处理方法 - Google Patents
基于网卡的报文分流处理方法 Download PDFInfo
- Publication number
- CN104753814A CN104753814A CN201310751648.8A CN201310751648A CN104753814A CN 104753814 A CN104753814 A CN 104753814A CN 201310751648 A CN201310751648 A CN 201310751648A CN 104753814 A CN104753814 A CN 104753814A
- Authority
- CN
- China
- Prior art keywords
- memory block
- core
- message
- network adapter
- memory
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于网卡的报文分流处理方法,应用于网络服务器,包括:服务器控制核根据内存拆分算法,将共享内存拆分成多个内存块,并将共享内存基地址、内存块数量以及内存块大小发送给网卡;网卡从外部接收到报文后,网卡控制核根据调度算法,确定传送该报文的网卡数据核编号和对应存放该报文的内存块编号,并将该内存块编号发送给对应的网卡数据核;网卡数据核从网卡控制核接收到内存块编号后,根据所述共享内存基地址、内存块编号以及内存块大小,计算出存放该报文的内存块地址,将报文存入该内存块。本发明能够有效提升网络服务器中网卡多核CPU的利用率,避免了网卡多核CPU的资源浪费,真正实现网卡多核CPU对共享内存的并行访问。
Description
技术领域
本发明涉及网络数据处理领域,尤其涉及一种基于网卡的报文分流处理方法。
背景技术
伴随当今互联网网络环境的普及和网络流量的瞬间暴涨,网络服务器作为一种为用户提供共享信息资源和各种服务的高性能网络设备,其处理网络数据的能力显得尤为重要。
网卡作为网络服务器的网络接口部件,负责接收和处理网络数据,其网络数据处理能力决定了网络服务器的性能。随着多核CPU技术在网卡上的应用,其并行处理数据的方式大大提升了网络数据的处理速度。
在现有具体实现方式中,服务器给网卡分配了一块共享内存,当网卡接收到报文后,网卡多核CPU根据哈希算法得到传送该报文的目的CPU,该目的CPU将报文写入共享内存。在此过程中,目的CPU对共享内存的访问,需进行加锁操作,防止其他CPU访问共享内存。目的CPU完成对共享内存的访问后,将对共享内存执行解锁操作,释放对共享内存的控制,此时,其他CPU才可以访问此共享内存。
综上所述,从宏观上看是进行了并行数据处理,但是从微观上看实际各CPU对于共享内存的访问都是串行的。这种串行的访问方式降低了CPU的利用率,导致CPU资源的浪费,从而限制了网络数据的处理能力。
发明内容
有鉴于此,本发明提供一种基于网卡的报文分流处理方法,应用于网络服务器,该服务器包括第一多核CPU、网卡以及共享内存,其中,网卡包括第二多核CPU,其中第一多核CPU包括第一控制核以及多个第一数据核;所述第二多核CPU包括第二控制核以及多个第二数据核,其特征在于,该方法包括以下步骤:
步骤A,第一控制核根据内存拆分算法,将共享内存拆分成多个内存块,并将共享内存基地址、内存块数量以及内存块大小发送给网卡,其中,内存块的数量不小于第一数据核的数量;
步骤B,网卡从外部接收到报文后,第二控制核根据预定调度算法确定传送该报文的第二数据核编号以及对应存放该报文的内存块编号,并将该内存块编号发送给对应的传送该报文的第二数据核;
步骤C,第二数据核从第二控制核接收到内存块编号后,根据所述共享内存基地址、内存块编号以及内存块大小,计算出存放该报文的内存块地址,将报文存入该内存块。
本发明能够有效提升网络服务器中网卡多核CPU的利用率,避免了网卡多核CPU的资源浪费,真正实现了网卡多核CPU对共享内存的并行访问。
附图说明
图1是本发明一种实施方式中网络服务器内部基础硬件环境的示意图。
图2是本发明一种实施方式中基于网卡的报文分流处理方法的流程图。
图3是本发明一种实施方式中基于网卡的报文分流实施例的流程图。
具体实施方式
以下结合附图对本发明进行详细描述。
在一种较佳的实施方式中,本发明提供一种基于软件实施方式实现的基于网卡的报文分流处理方法,该方法应用于网络服务器上,本发明并不排除诸如硬件或者逻辑器件等其他实现方式。如图1所示,该网络服务器通常包括多核CPU、共享内存、网卡以及其他硬件,该网卡又包括多核CPU和其他硬件。该基于网卡的报文分流处理方法通过所述网络服务器硬件、服务器多核CPU上运行的驱动程序以及网卡多核CPU上运行的驱动程序配合实现。请参考图2,该方法的实现包括以下步骤:
步骤101,服务器控制核根据内存拆分算法,将共享内存拆分成多个内存块,并将共享内存基地址、内存块数量以及内存块大小发送给网卡,其中,内存块的数量不小于服务器数据核的数量;
步骤102,网卡从外部接收到报文后,网卡控制核根据调度算法,确定传送该报文的网卡数据核编号和对应存放该报文的内存块编号,并将该内存块编号发送给对应的网卡数据核;
步骤103,网卡数据核从网卡控制核接收到内存块编号后,根据所述共享内存基地址、内存块编号以及内存块大小,计算出存放该报文的内存块地址,将报文存入该内存块。
上述服务器多核CPU和网卡多核CPU均包括一个控制核和多个数据核。在所述基于网卡的报文分流处理方法中,控制核用于运行驱动程序,并控制、管理其对应的数据核进行业务处理;数据核专注于数据处理。
现以具体实施例来说明该基于网卡的报文分流处理方法的实现过程,请参考图3。在一种优选的方式中,假设服务器多核CPU包括1个控制核和4个数据核,并分别称为服务器控制核、服务器数据核0、服务器数据核1、服务器数据核2以及服务器数据核3。假设网卡多核CPU包括1个控制核和2个数据核,并分别称为网卡控制核、网卡数据核0以及网卡数据核1。同时,服务器控制核为网卡开辟了一块共享内存,用于存放网卡从外部接收的报文。
为了实现网卡多核CPU对共享内存的并行访问,服务器控制核需将共享内存拆分成多个内存块,优选地,每个内存块的大小相等。服务器控制核拆分内存块的数量取决于服务器数据核的数量,根据公式y=x*2n求得,其中,x为服务器数据核的数量,n为大于或等于0的整数,y为可拆分内存块数量。此拆分内存算法充分考虑了服务器侧和网卡侧对共享内存的需求,因为服务器多核CPU处理的任务量很大,通常服务器多核CPU的数据核数量不少于网卡多核CPU的数据核数量,所以根据服务器数据核数量计算的内存块数量可以满足网卡对内存的访问需求。在一种较优的实施方式中,取n等于0,则y=x。由此可看出,当n为大于或等于0的整数时,内存块数量不小于服务器数据核的数量。如图3所示,服务器数据核的数量为4,则n=0时,服务器控制核拆分共享内存的数量为4,分别编号为内存块0、内存块1、内存块2以及内存块3。共享内存拆分完成后,服务器控制核会将整个共享内存的基地址、内存块的数量以及内存块的大小发送给网卡,以便网卡多核CPU访问共享内存使用。
当网卡从外部接收到报文时,根据预定调度算法,确定传送该报文的网卡数据核编号和对应存放该报文的内存块编号。优选地,该预定调度算法为同源同宿分担算法,但不局限于此算法。该算法在Linux操作系统中的实现方式如下:
sip=sip^dip;//计算源IP地址
dip=sip;//计算目的IP地址
CRC=jhash_3words(sip,(sip|(dip<<16)),0,0x5123598);//计算哈希值
Ringid=CRC%Ringnum;//根据哈希值得到存放报文的内存块编号
dst_vc=Ringid%CPUnum;//根据内存块编号得到传送该报文的网卡数据核
编号
其中,sip为发送报文的源IP地址,dip为接收报文的目的IP地址,当网卡接收到报文后,网卡控制核从接收的报文中获得源IP地址和目的IP地址,通过将sip与dip异或后,得到新的sip与dip,此操作可保证报文的同源同宿,即具有相同异或值的两个IP地址间的报文传送由同一网卡数据核完成,并存入同一内存块。然后,将新的sip与dip代入Linux内核函数jhash_3words得到哈希值CRC,此哈希函数用于保证报文在网卡数据核和内存上的均匀分布。上述算法在得到哈希值CRC后,利用此哈希值CRC对内存块数量Ringnum取余,得到存放该报文的内存块编号Ringid,并利用此内存块编号Ringid对网卡数据核数量CPUnum取余,得到传送该报文的网卡数据核编号dst_vc,网卡控制核根据此网卡数据核编号,将上述内存块编号发送给该网卡数据核。
如图3所示,假设一个报文从源IP地址192.168.14.10发送到目的IP地址192.168.22.22。根据上述算法,首先将IP地址转换为十六进制数,则sip为0xc0a80e0a,dip为0xc0a81616,将sip与dip异或后,得到新的sip与dip,均为0x181c,代入哈希函数jhash_3words,得到哈希值CRC为0x6991997a,此实施例中内存块数量Ringnum为4,通过CRC对Ringnum取余,得到内存块编号Ringid为2,即该报文应存放到内存块2中,利用该内存块编号2,对网卡数据核数量CPUnum取余,在此实施例中网卡数据核数量CPUnum为2,计算可得网卡数据核编号dst_vc为0,即传送该报文的网卡数据核为网卡数据核0。因此,可以得出,从源IP地址192.168.14.10发送到目的IP地址192.168.22.22的报文通过网卡数据核0发送到内存块2中存放。通过此调度算法,仅可得出存放该报文的内存块编号为2,网卡控制核将此内存块编号2发送该网卡数据核0,由网卡数据核0确定存放该报文的内存块2的地址。
在网卡数据核0接收到存放报文的内存块编号后,网卡数据核0根据该内存块编号以及服务器控制核分配的共享内存的基地址和内存块大小,计算出存放该报文的内存块地址,将报文存入该内存块,从而完成整个报文的接收过程。
通过重复上述报文接收过程,每一个报文通过指定的数据核存入该数据核对应的某一个内存块中。由于网卡数据核的确定是通过内存块编号对网卡数据核数量取余得到的,因此,在上述实施例中,内存块0和内存块2是通过数据核0访问的,内存块1和内存块3是通过数据核1访问的。每一个数据核对内存块的访问不会出现重叠,进而实现了网卡多核CPU对共享内存的并行访问。而对于服务器的多核CPU而言,事实上共享内存的划分对其处理没有影响,因为报文都在共享内存中,其可以按照现有技术一样进行处理。所谓的内存块编号只对网卡多核CPU有意义。
在上述实施例中,通过将共享内存拆分成多个内存块,避免了多核CPU对单一共享内存的互斥访问,使得各数据核对内存块的访问互不干扰,真正实现了多核CPU的并行数据处理。同时,所采用的调度算法,进一步保证了报文处理过程中的同源同宿及负载均衡。综上所述,采用本发明的实现,能够有效提升网络服务器中网卡多核CPU的利用率,避免了网卡多核CPU的资源浪费,提高了网络数据的处理能力。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (6)
1.一种基于网卡的报文分流处理方法,应用于网络服务器,该服务器包括第一多核CPU、网卡以及共享内存,其中,网卡包括第二多核CPU,其中第一多核CPU包括第一控制核以及多个第一数据核;所述第二多核CPU包括第二控制核以及多个第二数据核,其特征在于,该方法包括以下步骤:
步骤A,第一控制核根据内存拆分算法,将共享内存拆分成多个内存块,并将共享内存基地址、内存块数量以及内存块大小发送给网卡,其中,内存块的数量不小于第一数据核的数量;
步骤B,网卡从外部接收到报文后,第二控制核根据预定调度算法确定传送该报文的第二数据核编号以及对应存放该报文的内存块编号,并将该内存块编号发送给对应的传送该报文的第二数据核;
步骤C,第二数据核从第二控制核接收到内存块编号后,根据所述共享内存基地址、内存块编号以及内存块大小,计算出存放该报文的内存块地址,将报文存入该内存块。
2.如权利要求1所述的方法,其特征在于,所述多个内存块大小相等。
3.如权利要求1所述的方法,其特征在于,步骤A中所述内存拆分算法具体为:
y=x*2n
其中,
x为第一数据核的数量;
n为大于或等于0的整数;
y为可拆分内存块数量。
4.如权利要求1所述的方法,其特征在于:步骤B中所述预定调度算法为同源同宿分担算法。
5.如权利要求1所述的方法,其特征在于,步骤B中所述预定调度算法具体为:
求所述报文中的两个报文特征的异或值,将该异或值作为哈希函数参数,计算出哈希值,利用该哈希值对所述内存块数量取余,得到存放该报文的内存块编号;并利用该内存块编号对所述第二数据核的数量取余,得到传送该报文的第二数据核编号。
6.如权利要求5所述的方法,其特征在于:所述报文特征为源IP地址和目的IP地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310751648.8A CN104753814B (zh) | 2013-12-31 | 2013-12-31 | 基于网卡的报文分流处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310751648.8A CN104753814B (zh) | 2013-12-31 | 2013-12-31 | 基于网卡的报文分流处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104753814A true CN104753814A (zh) | 2015-07-01 |
CN104753814B CN104753814B (zh) | 2018-04-06 |
Family
ID=53592943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310751648.8A Active CN104753814B (zh) | 2013-12-31 | 2013-12-31 | 基于网卡的报文分流处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104753814B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN106385379A (zh) * | 2016-09-14 | 2017-02-08 | 杭州迪普科技有限公司 | 报文缓存方法及装置 |
WO2020134153A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 一种分流方法、系统和处理设备 |
CN113467930A (zh) * | 2021-05-31 | 2021-10-01 | 翱捷科技股份有限公司 | 一种硬件管理共享内存的处理方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002008907A2 (en) * | 2000-07-26 | 2002-01-31 | Times N Systems, Inc. | Multiple block sequential memory management |
US20050198438A1 (en) * | 2004-03-04 | 2005-09-08 | Hidetaka Aoki | Shared-memory multiprocessor |
CN101180802A (zh) * | 2005-03-25 | 2008-05-14 | 安太科技株式会社 | 共享内存分块的访问控制 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作系统之间的通信方法及系统 |
CN101359321A (zh) * | 2008-09-02 | 2009-02-04 | 北京中星微电子有限公司 | 一种实现处理器相互通讯的方法及装置 |
CN103376772A (zh) * | 2012-04-27 | 2013-10-30 | 沈阳高精数控技术有限公司 | 一种嵌入式数控系统性能监测的方法 |
-
2013
- 2013-12-31 CN CN201310751648.8A patent/CN104753814B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002008907A2 (en) * | 2000-07-26 | 2002-01-31 | Times N Systems, Inc. | Multiple block sequential memory management |
US20050198438A1 (en) * | 2004-03-04 | 2005-09-08 | Hidetaka Aoki | Shared-memory multiprocessor |
CN101180802A (zh) * | 2005-03-25 | 2008-05-14 | 安太科技株式会社 | 共享内存分块的访问控制 |
CN101216814A (zh) * | 2007-12-26 | 2008-07-09 | 杭州华三通信技术有限公司 | 一种多核多操作系统之间的通信方法及系统 |
CN101359321A (zh) * | 2008-09-02 | 2009-02-04 | 北京中星微电子有限公司 | 一种实现处理器相互通讯的方法及装置 |
CN103376772A (zh) * | 2012-04-27 | 2013-10-30 | 沈阳高精数控技术有限公司 | 一种嵌入式数控系统性能监测的方法 |
Non-Patent Citations (1)
Title |
---|
梁洪波等: "基于分布式共享内存的RTI通信机制研究", 《系统仿真学报》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105068817A (zh) * | 2015-08-26 | 2015-11-18 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
WO2017032152A1 (zh) * | 2015-08-26 | 2017-03-02 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN105068817B (zh) * | 2015-08-26 | 2019-02-19 | 华为技术有限公司 | 将数据写入存储设备的方法及存储设备 |
CN106385379A (zh) * | 2016-09-14 | 2017-02-08 | 杭州迪普科技有限公司 | 报文缓存方法及装置 |
WO2020134153A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 一种分流方法、系统和处理设备 |
CN111371694A (zh) * | 2018-12-26 | 2020-07-03 | 中兴通讯股份有限公司 | 一种分流方法、装置和系统、处理设备和存储介质 |
CN111371694B (zh) * | 2018-12-26 | 2022-10-04 | 中兴通讯股份有限公司 | 一种分流方法、装置和系统、处理设备和存储介质 |
CN113467930A (zh) * | 2021-05-31 | 2021-10-01 | 翱捷科技股份有限公司 | 一种硬件管理共享内存的处理方法及装置 |
CN113467930B (zh) * | 2021-05-31 | 2023-04-14 | 翱捷科技股份有限公司 | 一种硬件管理共享内存的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104753814B (zh) | 2018-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11799952B2 (en) | Computing resource discovery and allocation | |
WO2020052605A1 (zh) | 一种网络切片的选择方法及装置 | |
US9998531B2 (en) | Computer-based, balanced provisioning and optimization of data transfer resources for products and services | |
WO2016015582A1 (zh) | 传输报文的方法、装置和系统 | |
CN107645407B (zh) | 一种适配QoS的方法和装置 | |
US11336521B2 (en) | Acceleration resource scheduling method and apparatus, and acceleration system | |
CN109067930A (zh) | 域名接入方法、域名解析方法、服务器、终端及存储介质 | |
US9311148B2 (en) | Pseudo-random hardware resource allocation through the plurality of resource controller based on non-repeating sequence of index list entries | |
US20160070475A1 (en) | Memory Management Method, Apparatus, and System | |
CN104883302B (zh) | 一种数据包转发的方法、装置及系统 | |
Hu et al. | Towards" full containerization" in containerized network function virtualization | |
CN109739668A (zh) | 一种虚拟机间数据传输的方法、系统及设备 | |
CN104753814A (zh) | 基于网卡的报文分流处理方法 | |
US10237233B2 (en) | Allocating identifiers with minimal fragmentation | |
CN115858160A (zh) | 远程直接内存访问虚拟化资源分配方法及装置、存储介质 | |
CN109582592B (zh) | 资源管理的方法和装置 | |
CN101902398A (zh) | 一种收发数据包的方法和系统 | |
US20180048732A1 (en) | Techniques for storing or accessing a key-value item | |
WO2012177689A2 (en) | Facilitating implementation, at least in part, of at least one cache management policy | |
US9477471B1 (en) | Maintaining lock-free, high frequency, high performance counters in software | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN109862134B (zh) | 一种ip地址的租约时间配置方法和系统及dhcp客户端 | |
CN105283864A (zh) | 管理裸机客户 | |
CN104104611A (zh) | 一种实现集群负载均衡调度的方法及装置 | |
CN112333172B (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 | ||
CB02 | Change of applicant information |
Address after: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant after: State Computer Network and Information Safety Management Center Applicant after: Hangzhou Dipu Polytron Technologies Inc Address before: 100029 Beijing city Chaoyang District Yumin Road No. 3 Applicant before: State Computer Network and Information Safety Management Center Applicant before: Hangzhou Dipu Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |