CN112306693B - 数据包的处理方法和设备 - Google Patents

数据包的处理方法和设备 Download PDF

Info

Publication number
CN112306693B
CN112306693B CN202011299242.7A CN202011299242A CN112306693B CN 112306693 B CN112306693 B CN 112306693B CN 202011299242 A CN202011299242 A CN 202011299242A CN 112306693 B CN112306693 B CN 112306693B
Authority
CN
China
Prior art keywords
data packet
network card
memory
dma
node
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
Application number
CN202011299242.7A
Other languages
English (en)
Other versions
CN112306693A (zh
Inventor
罗海林
胡兵全
武鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202011299242.7A priority Critical patent/CN112306693B/zh
Publication of CN112306693A publication Critical patent/CN112306693A/zh
Application granted granted Critical
Publication of CN112306693B publication Critical patent/CN112306693B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本说明书实施例提出了一种数据包的处理方法和设备,其中,上述数据包的处理方法中,网卡接收到数据包之后,对上述数据包进行解析,获得上述数据包对应的数据流标识,然后,网卡根据上述数据流标识将上述数据包放入网卡队列,进而网卡从上述网卡队列中获取数据包,将获取的数据包发送到上述网卡队列对应的DMA内存,并产生相应中断,这样,与上述DMA内存所在的内存节点连接的目标CPU节点,就可以响应上述中断,从本地DMA内存中读取数据包,并对读取的数据包进行处理,这时,中断和DMA内存在同一个Die上,降低了跨Die存取数据的时延和处理开销。

Description

数据包的处理方法和设备
【技术领域】
本说明书实施例涉及通信技术领域,尤其涉及一种数据包的处理方法和设备。
【背景技术】
目前有些中央处理器(central processing unit,CPU)采用多Die架构,其中,Die或者CPU Die指的是处理器在生产过程中,从晶圆(silicon wafer)上切割下来的一个个小方块。在被切割下来之前,每个小方块(Die)都需要经过各种加工,将电路逻辑刻到该Die上面。
现有相关技术中,每个Die都挂有对应的内存通道,这样使得应用程序在进行数据操作时,经常会有跨Die的数据搬运,而且随着Die的数量增加,数据间的搬运开销就越大,访存延时也就越大。
【发明内容】
本说明书实施例提供了一种数据包的处理方法和设备,以实现应用程序在进行数据操作的时候,直接从CPU连接的本地内存中存取数据,降低CPU开销以及对应的访存延时。
第一方面,本说明书实施例提供一种数据包的处理方法,包括:网卡接收到数据包之后,对所述数据包进行解析,获得所述数据包对应的数据流标识;所述网卡根据所述数据流标识将所述数据包放入网卡队列;所述网卡从所述网卡队列中获取数据包,将获取的数据包发送到所述网卡队列对应的直接存储器访问DMA内存,并产生相应中断;目标中央处理器CPU节点响应所述中断,读取所述DMA内存中的数据包,并对读取的数据包进行处理;其中,所述目标CPU节点为与所述DMA内存所在的内存节点连接的CPU节点。
其中一种可能的实现方式中,所述网卡对所述数据包进行解析,获得所述数据包对应的数据流标识之前,还包括:所述网卡驱动根据CPU节点的数量创建预定数量的DMA内存;将创建的每个DMA内存分配给一个或多个网卡队列。
其中一种可能的实现方式中,所述预定数量等于所述CPU节点的数量,所述网卡驱动根据CPU节点的数量创建预定数量的DMA内存包括:所述网卡驱动在每个CPU节点连接的内存节点上创建一个DMA内存。
其中一种可能的实现方式中,所述预定数量小于所述CPU节点的数量,所述网卡驱动根据CPU节点的数量创建预定数量的DMA内存包括:所述网卡驱动获取应用程序运行的CPU节点;在所述应用程序运行的CPU节点连接的内存节点上创建DMA内存。
第二方面,本说明书实施例提供一种数据包的处理设备,包括:网卡,用于在接收到数据包之后,对所述数据包进行解析,获得所述数据包对应的数据流标识,根据所述数据流标识将所述数据包放入网卡队列,从所述网卡队列中获取数据包,将获取的数据包发送到所述网卡队列对应的直接存储器访问DMA内存,并产生相应中断;目标中央处理器CPU节点,用于响应所述中断,读取所述DMA内存中的数据包,并对读取的数据包进行处理;其中,所述目标CPU节点为与所述DMA内存所在的内存节点连接的CPU节点。
其中一种可能的实现方式中,所述数据包的处理设备还包括:网卡驱动;所述网卡驱动,用于在所述网卡对所述数据包进行解析,获得所述数据包对应的数据流标识之前,根据CPU节点的数量创建预定数量的DMA内存;将创建的每个DMA内存分配给一个或多个网卡队列。
其中一种可能的实现方式中,所述预定数量等于所述CPU节点的数量;所述网卡驱动,具体用于在每个CPU节点连接的内存节点上创建一个DMA内存。
其中一种可能的实现方式中,所述预定数量小于所述CPU节点的数量;所述网卡驱动,具体用于获取应用程序运行的CPU节点,在所述应用程序运行的CPU节点连接的内存节点上创建DMA内存。
第三方面,本说明书实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的方法。
应当理解的是,本说明书实施例的第二~三方面与本说明书实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
【附图说明】
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为现有相关技术中应用程序存取数据的示意图;
图2为本说明书一个实施例提供的数据包的处理方法的流程图;
图3为本说明书另一个实施例提供的数据包的处理方法的流程图;
图4为本说明书一个实施例提供的DMA内存的分布示意图;
图5为本说明书另一个实施例提供的DMA内存的分布示意图;
图6为本说明书一个实施例提供的数据包的处理设备的结构示意图;
图7为本说明书另一个实施例提供的数据包的处理设备的结构示意图。
【具体实施方式】
为了更好的理解本说明书的技术方案,下面结合附图对本说明书实施例进行详细描述。
应当明确,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本说明书保护的范围。
在本说明书实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
现有相关技术中,虽然内存直接附着(attach)在CPU上,但是由于内存被平均分配在了各个Die上。只有当CPU访问自身直接attach内存对应的物理地址时,才会有较短的响应时间(后称本地访问(local access));而如果需要访问其他CPU attach的内存中的数据时,就需要通过互联(inter-connect)通道访问,响应时间就相比之前变慢了(后称远端访问(remote access))。所以非统一内存访问(non unified memory access,NUMA)就此得名。
对于多Die架构的CPU,每个Die都挂有对应的内存通道,这样使得应用程序在进行数据操作时,经常会有跨Die(或跨NUMA节点)的数据搬运,而且随着Die的数量增加,数据间的搬运开销就更大,访存延时也就更大。
针对网卡或其它硬件加速设备的数据包收发情况,在硬件层面跨Die的数据搬运开销不可避免。参见图1,图1为现有相关技术中应用程序存取数据的示意图。以现有的某CPU为例,单路CPU有4个Die,双路CPU共有8个Die,分为8个NUMA节点,***上挂载的网卡连接在CPU1的Die 6上,应用程序处理网络数据包的过程如下:网卡通过网卡上的直接存储器访问驱动(direct memory access engine,DMA engine)与***内存交互,网卡在初始化时,会在***内存中开辟一段内存空间,然后进行直接存储器访问(direct memoryaccess,DMA)映射。当网络数据包到达网卡时,网卡驱动(DMA engine)会把数据搬移到DMA内存(DMA Buffer)中,然后应用程序再去DMA内存中存取数据。
这里面的问题是:网卡初始化分配DMA内存时,网卡驱动从挂载该网卡的NUMA节点就近分配DMA内存。这样如果应用程序正好运行在当前NUMA节点,性能固然很好。但是如图1所示,当应用程序运行在其他的NUMA节点,如CPU 0的Die3(对应NUMA 3节点)上时,就需要CPU跨NUMA节点(物理链路上会跨Die及跨CPU插槽(CPU Socket))存取DMA内存,将数据拷贝到Die3的内存中,然后进行业务侧应用程序的处理,这势必会增加CPU的处理时长和开销。
基于上述问题,本说明书实施例提出一种数据包的处理方法,该方法可以实现应用程序在进行数据操作的时候,直接从CPU连接的本地内存中存取数据,降低CPU开销以及对应的访存延时。
图2为本说明书一个实施例提供的数据包的处理方法的流程图,如图2所示,上述数据包的处理方法可以包括:
步骤202,网卡接收到数据包之后,对上述数据包进行解析,获得上述数据包对应的数据流标识。
具体地,网卡接收到数据包之后,对上述数据包的头部进行解析,获得上述数据包的五元组信息,上述五元组信息包括源IP地址、源端口、目的IP地址、目的端口和传输层协议;然后,网卡对上述五元组信息中的至少两个信息进行哈希,获得上述数据包对应的数据流标识。
步骤204,网卡根据上述数据流标识将上述数据包放入网卡队列。
具体地,在获得数据包对应的数据流标识之后,网卡根据上述数据流标识将上述数据包放入网卡队列。可以理解的是,对于属于相同数据流的数据包,网卡将属于相同数据流的数据包放入相同的队列。
步骤206,网卡从上述网卡队列中获取数据包,将获取的数据包发送到上述网卡队列对应的DMA内存,并产生相应中断。
步骤208,目标CPU节点响应上述中断,读取上述DMA内存中的数据包,并对读取的数据包进行处理。其中,上述目标CPU节点为与上述DMA内存所在的内存节点连接的CPU节点。
具体地,上述DMA内存所在的内存节点可以为NUMA节点。
上述数据包的处理方法中,网卡接收到数据包之后,对上述数据包进行解析,获得上述数据包对应的数据流标识,然后,网卡根据上述数据流标识将上述数据包放入网卡队列,进而网卡从上述网卡队列中获取数据包,将获取的数据包发送到上述网卡队列对应的DMA内存,并产生相应中断,这样,与上述DMA内存所在的内存节点连接的目标CPU节点,就可以响应上述中断,从本地DMA内存中读取数据包,并对读取的数据包进行处理,这时,中断和DMA内存在同一个Die上,降低了跨Die存取数据的时延和处理开销。
图3为本说明书另一个实施例提供的数据包的处理方法的流程图,如图3所示,本说明书图2所示实施例中,步骤202之前,还可以包括:
步骤302,网卡驱动根据CPU节点的数量创建预定数量的DMA内存。
其中,上述预定数量小于或等于CPU节点的数量。也就是说,不论网卡挂载在哪个CPU的PCI-e链路上,网卡驱动在初始化时,可以根据CPU节点的数量来创建预定数量的DMA内存,预定数量的最大值不大于CPU节点的数量。
步骤304,将创建的每个DMA内存分配给一个或多个网卡队列。
本实施例的一种实现方式中,上述预定数量等于上述CPU节点的数量,这样,网卡驱动根据CPU节点的数量创建预定数量的DMA内存可以为:网卡驱动在每个CPU节点连接的内存节点上创建一个DMA内存。
图4为本说明书一个实施例提供的DMA内存的分布示意图,如图4所示,可以在8个Die节点中的每个Die节点上分别创建一个DMA内存,这样,对于每个Die节点上运行的应用程序来说,在网卡将数据包发送到每个Die节点连接的DMA内存之后,每个Die节点上运行的应用程序就可以从本地DMA内存中读取自身需要处理的数据,减少了CPU跨Die节点读取数据的处理时延和处理开销。
本实施例的另一种实现方式中,上述预定数量小于上述CPU节点的数量,网卡驱动根据CPU节点的数量创建预定数量的DMA内存可以为:网卡驱动获取应用程序运行的CPU节点,在上述应用程序运行的CPU节点连接的内存节点上创建DMA内存。
图5为本说明书另一个实施例提供的DMA内存的分布示意图,如图5所示,假设Die3和Die4为运行应用程序的CPU节点,则可以只在Die3和Die4上分别创建DMA内存,并可以设定应用程序A运行在Die3上,应用程序B运行在Die4上。这样,网卡接收到应用程序A的数据包之后,就可以把数据包放入Die3连接的DMA内存,网卡接收到应用程序B的数据包之后,就可以把数据包放入Die4连接的DMA内存,从而应用程序A和应用程序B均可以直接从本地DMA内存中存取数据,减少了CPU跨Die节点读取数据的处理时延和处理开销。
本说明书实施例提供的数据包的处理方法中,DMA内存在网卡初始化时均衡分配到每个Die节点,或者根据应用场景动态分配到应用程序运行的Die节点。网络数据包在CPU无感知的情况下,被网卡搬运到运行应用程序的CPU节点连接的DMA内存中。应用程序在处理数据包的时候直接从本地DMA内存中读取数据包,从而降低了CPU的处理开销以及对应的处理时延。
总的来说,上述数据包的处理方法具有以下优点:
1)CPU无感知:硬件层面,网卡已经将数据包进行了搬运处理;
2)热缓存:软硬中断和应用程序都在一个Die节点上,避免缓存跳跃(cachebouncing),提高缓存命中率(cache hit rate);
3)应用程序亲和性:应用程序从本地连接的DMA内存中读取数据,极大地降低了延时。
上述数据包的处理方法充分利用了多Die架构的特点,同时结合了应用的部署策略,使用动态多节点DMA分配方式,让DMA内存在网卡初始化时能均衡分配到多个NUMA节点,也可根据应用场景动态重配置。方案提高了应用的亲和性,降低了数据读取的延迟,同时提高了缓存的命中率(cache hit rate)。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图6为本说明书一个实施例提供的数据包的处理设备的结构示意图,如图6所示,上述数据包的处理设备可以包括:网卡61和目标CPU节点62;
其中,网卡61,用于在接收到数据包之后,对上述数据包进行解析,获得上述数据包对应的数据流标识,根据上述数据流标识将数据包放入网卡队列,从上述网卡队列中获取数据包,将获取的数据包发送到上述网卡队列对应的DMA内存,并产生相应中断;
目标CPU节点62,用于响应上述中断,读取上述DMA内存中的数据包,并对读取的数据包进行处理;其中,上述目标CPU节点为与上述DMA内存所在的内存节点连接的CPU节点。
本实施例中,上述数据包的处理设备可以为服务器,例如部署在云端的云服务器,本实施例对上述数据包的处理设备的具体形式不作限定。
图6所示实施例提供的数据包的处理设备可用于执行本说明书图2所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
图7为本说明书另一个实施例提供的数据包的处理设备的结构示意图,与图6所示的数据包的处理设备相比,图7所示的数据包的处理设备还可以包括:网卡驱动63;
网卡驱动63,用于在网卡61对上述数据包进行解析,获得上述数据包对应的数据流标识之前,根据CPU节点的数量创建预定数量的DMA内存;将创建的每个DMA内存分配给一个或多个网卡队列。
一种实现方式中,上述预定数量等于上述CPU节点的数量;
网卡驱动63,具体用于在每个CPU节点连接的内存节点上创建一个DMA内存。
另一种实现方式中,上述预定数量小于上述CPU节点的数量;
网卡驱动63,具体用于获取应用程序运行的CPU节点,在上述应用程序运行的CPU节点连接的内存节点上创建DMA内存。
在具体实现时,上述数据包的处理设备还可以包括通信总线、存储器和/或通信接口等器件,本实施例对此不作限定。
图7所示实施例提供的数据包的处理设备可用于执行本申请图2~图5所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
本说明书实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本说明书图1~图5所示实施例提供的数据包的处理方法。
上述非暂态计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(read only memory,ROM)、可擦式可编程只读存储器(erasable programmable read onlymemory,EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、射频(radio frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(localarea network,LAN)或广域网(wide area network,WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本说明书的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本说明书的实施例所属技术领域的技术人员所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本说明书实施例中所涉及的终端可以包括但不限于个人计算机(personal computer,PC)、个人数字助理(personal digital assistant,PDA)、无线手持设备、平板电脑(tablet computer)、手机、MP3播放器、MP4播放器等。
在本说明书所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本说明书各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本说明书各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (7)

1.一种数据包的处理方法,包括:
网卡接收到数据包之后,对所述数据包进行解析,获得所述数据包对应的数据流标识;
所述网卡根据所述数据流标识将所述数据包放入网卡队列;
所述网卡从所述网卡队列中获取数据包,将获取的数据包发送到所述网卡队列对应的DMA内存,并产生相应中断;
目标中央处理器节点响应所述中断,读取所述DMA内存中的数据包,并对读取的数据包进行处理;其中,所述目标中央处理器节点为与所述DMA内存所在的内存节点连接的中央处理器节点;
其中,所述网卡对所述数据包进行解析,获得所述数据包对应的数据流标识之前,还包括:
所述网卡驱动根据中央处理器节点的数量创建预定数量的DMA内存;
将创建的每个DMA内存分配给一个或多个网卡队列。
2.根据权利要求1所述的方法,其中,所述预定数量等于所述中央处理器节点的数量,所述网卡驱动根据中央处理器节点的数量创建预定数量的DMA内存包括:
所述网卡驱动在每个中央处理器节点连接的内存节点上创建一个DMA内存。
3.根据权利要求1所述的方法,其中,所述预定数量小于所述中央处理器节点的数量,所述网卡驱动根据中央处理器节点的数量创建预定数量的DMA内存包括:
所述网卡驱动获取应用程序运行的中央处理器节点;
在所述应用程序运行的中央处理器节点连接的内存节点上创建DMA内存。
4.一种数据包的处理设备,包括:
网卡,用于在接收到数据包之后,对所述数据包进行解析,获得所述数据包对应的数据流标识,根据所述数据流标识将所述数据包放入网卡队列,从所述网卡队列中获取数据包,将获取的数据包发送到所述网卡队列对应的DMA内存,并产生相应中断;
目标中央处理器节点,用于响应所述中断,读取所述DMA内存中的数据包,并对读取的数据包进行处理;其中,所述目标中央处理器节点为与所述DMA内存所在的内存节点连接的中央处理器节点;
其中,所述处理设备还包括:网卡驱动;
所述网卡驱动,用于在所述网卡对所述数据包进行解析,获得所述数据包对应的数据流标识之前,根据中央处理器节点的数量创建预定数量的DMA内存;将创建的每个DMA内存分配给一个或多个网卡队列。
5.根据权利要求4所述的设备,其中,所述预定数量等于所述中央处理器节点的数量;
所述网卡驱动,具体用于在每个中央处理器节点连接的内存节点上创建一个DMA内存。
6.根据权利要求4所述的设备,其中,所述预定数量小于所述中央处理器节点的数量;
所述网卡驱动,具体用于获取应用程序运行的中央处理器节点,在所述应用程序运行的中央处理器节点连接的内存节点上创建DMA内存。
7.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至3任一所述的方法。
CN202011299242.7A 2020-11-18 2020-11-18 数据包的处理方法和设备 Active CN112306693B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011299242.7A CN112306693B (zh) 2020-11-18 2020-11-18 数据包的处理方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011299242.7A CN112306693B (zh) 2020-11-18 2020-11-18 数据包的处理方法和设备

Publications (2)

Publication Number Publication Date
CN112306693A CN112306693A (zh) 2021-02-02
CN112306693B true CN112306693B (zh) 2024-04-16

Family

ID=74335197

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011299242.7A Active CN112306693B (zh) 2020-11-18 2020-11-18 数据包的处理方法和设备

Country Status (1)

Country Link
CN (1) CN112306693B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113099490B (zh) * 2021-03-09 2023-03-21 深圳震有科技股份有限公司 一种基于5g通信的数据包传输方法和***
CN114490085B (zh) * 2022-02-16 2023-09-19 北京火山引擎科技有限公司 一种网卡配置方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831799A (zh) * 2005-03-07 2006-09-13 华为技术有限公司 一种直接存储器访问控制器及利用其实现数据传送的方法
US8112491B1 (en) * 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
CN108196662A (zh) * 2017-12-28 2018-06-22 中国科学院计算技术研究所 哈希分区加速器
CN110119304A (zh) * 2018-02-07 2019-08-13 华为技术有限公司 一种中断处理方法、装置及服务器
CN111211942A (zh) * 2020-01-03 2020-05-29 山东超越数控电子股份有限公司 一种数据包的收发方法、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2339476B1 (en) * 2009-12-07 2012-08-15 STMicroelectronics (Research & Development) Limited Interface connecting dies in an IC package

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831799A (zh) * 2005-03-07 2006-09-13 华为技术有限公司 一种直接存储器访问控制器及利用其实现数据传送的方法
US8112491B1 (en) * 2009-01-16 2012-02-07 F5 Networks, Inc. Methods and systems for providing direct DMA
CN108196662A (zh) * 2017-12-28 2018-06-22 中国科学院计算技术研究所 哈希分区加速器
CN110119304A (zh) * 2018-02-07 2019-08-13 华为技术有限公司 一种中断处理方法、装置及服务器
CN111211942A (zh) * 2020-01-03 2020-05-29 山东超越数控电子股份有限公司 一种数据包的收发方法、设备及介质

Also Published As

Publication number Publication date
CN112306693A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
US10698736B2 (en) Method for resource allocation and terminal device
CN112306693B (zh) 数据包的处理方法和设备
US10341264B2 (en) Technologies for scalable packet reception and transmission
US9253275B2 (en) Cognitive dynamic allocation in caching appliances
JPH09231157A (ja) コンピュータに接続されている入力/出力(i/o)デバイスを制御する方法
US20060277126A1 (en) Ring credit management
US11201836B2 (en) Method and device for managing stateful application on server
CN112650558B (zh) 数据处理方法、装置、可读介质和电子设备
KR20140146458A (ko) 메모리 관리 방법 및 장치
EP3644182A1 (en) Container isolation method and device for netlink resource
US20200293318A1 (en) Buffer Allocation with Memory-based Configuration
WO2019047708A1 (zh) 资源配置方法及相关产品
CN115002046B (zh) 报文处理方法、numa节点、电子设备及存储介质
CN115964319A (zh) 远程直接内存访问的数据处理方法及相关产品
CN111124299A (zh) 数据存储管理方法、装置、设备、***及存储介质
CN114244790A (zh) PCIe设备与主机设备的通信方法、***及设备
CN116126742A (zh) 内存访问方法、装置、服务器及存储介质
US11671382B2 (en) Technologies for coordinating access to data packets in a memory
US20090157896A1 (en) Tcp offload engine apparatus and method for system call processing for static file transmission
WO2019042172A1 (zh) 资源配置方法及相关产品
CN113422669B (zh) 数据传输方法、装置和***、电子设备以及存储介质
CN113407357B (zh) 进程间数据搬移的方法及装置
CN115904259B (zh) 非易失性存储器标准NVMe指令的处理方法及相关装置
CN114697387A (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