CN113179327B - 基于大容量内存的高并发协议栈卸载方法、设备、介质 - Google Patents
基于大容量内存的高并发协议栈卸载方法、设备、介质 Download PDFInfo
- Publication number
- CN113179327B CN113179327B CN202110527515.7A CN202110527515A CN113179327B CN 113179327 B CN113179327 B CN 113179327B CN 202110527515 A CN202110527515 A CN 202110527515A CN 113179327 B CN113179327 B CN 113179327B
- Authority
- CN
- China
- Prior art keywords
- data
- toe
- information
- data amount
- cpu
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种基于大容量内存的高并发协议栈卸载方法、设备、介质,所述方法包括:获取待发送数据,并确定所述待发送数据的第一数据量信息;将所述待发送数据缓冲至共享内存的发送缓冲区;向所述TOE硬件发送所述第一数据量信息,以使所述TOE硬件根据所述第一数据量信息从所述共享内存获取所述待发送数据,并根据所述待发送数据执行TOE卸载。根据本发明实施例提供的方案,能够利用共享内存作为待发送数据的缓冲空间,相比起DDR存储器在存储容量上有较大的提升,提高了高并发场景下协议栈的卸载能力,从而提高网络性能。
Description
技术领域
本发明涉及但不限于网络传输技术领域,尤其涉及一种基于大容量内存的高并发协议栈卸载方法、设备、介质。
背景技术
随着网络技术的快速发展,百万兆以太网越来越普及,中央处理器(CentralProcessing Unit,CPU)实现的传输控制协议(Transmission Control Protocol,TCP)协议栈的开销越来越大,软件运行的开销和缓存时延已经成为高性能网络服务的技术瓶颈,为了释放CPU资源,出现了能够将协议栈卸载到现场可编程逻辑门阵列(Field ProgrammableGate Array,FPGA)硬件设备进行处理的TCP卸载引擎(TCPOffload Engin,TOE)技术。
当并发的网络链接较多,缓冲队列内存的开销较大,在常见的TOE实现方案中,运行空间通常是由挂载的双倍数据速率(Double Data Rate,DDR)存储器提供,而DDR存储器的硬件特性决定了运行空间的扩展有限,很难满足高并发网络链接场景下的容量需求,影响缓存时延和网络性能。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提供了一种基于大容量内存的高并发协议栈卸载方法、设备、介质,能够实现高并发场景下的协议栈卸载,提高网络性能。
第一方面,本发明实施例提供了一种基于大容量内存的高并发协议栈卸载方法,应用于CPU,所述CPU与TOE硬件通信连接,所述基于大容量内存的高并发协议栈卸载方法包括:
获取待发送数据,并确定所述待发送数据的第一数据量信息;
将所述待发送数据缓冲至共享内存的发送缓冲区;
向所述TOE硬件发送所述第一数据量信息,以使所述TOE硬件根据所述第一数据量信息从所述共享内存获取所述待发送数据,并根据所述待发送数据执行TOE卸载。
第二方面,本发明实施例提供了一种基于大容量内存的高并发协议栈卸载方法,应用于TOE硬件,所述TOE硬件与CPU通信连接,所述协议栈卸载方法包括:
获取所述CPU发送的第一数据量信息;
根据所述第一数据量信息从共享内存的发送缓冲区获取待发送数据,其中,所述待发送数据由所述CPU获取并缓冲至所述发送缓冲区;
针对所述待发送数据执行TOE卸载。
第三方面,本发明实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的基于大容量内存的高并发协议栈卸载方法,或者,执行所述计算机程序时实现如第二方面所述的基于大容量内存的高并发协议栈卸载方法。
本发明实施例包括:获取待发送数据,并确定所述待发送数据的第一数据量信息;将所述待发送数据缓冲至共享内存的发送缓冲区;向所述TOE硬件发送所述第一数据量信息,以使所述TOE硬件根据所述第一数据量信息从所述共享内存获取所述待发送数据,并根据所述待发送数据执行TOE卸载。根据本发明实施例提供的方案,能够利用共享内存作为待发送数据的缓冲空间,相比起DDR存储器在存储容量上有较大的提升,提高了高并发场景下协议栈的卸载能力,从而提高网络性能。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1是本发明一个实施例提供的基于大容量内存的高并发协议栈卸载方法的流程图;
图2是本发明另一个实施例提供的服务器结构示意图;
图3是本发明另一个实施例提供的获取待发送数据的流程图;
图4是本发明另一个实施例提供的同步第一地址信息的流程图;
图5是本发明另一个实施例提供的执行数据接收的流程图;
图6是本发明另一个实施例提供的获取待接收数据的流程图;
图7是本发明另一个实施例提供的同步第二地址信息的流程图;
图8是本发明另一个实施例提供的基于大容量内存的高并发协议栈卸载方法的流程图;
图9是本发明另一个实施例提供的获取待发送数据的流程图;
图10是本发明另一个实施例提供的同步第一地址信息的流程图;
图11是本发明另一个实施例提供的执行数据接收的流程图;
图12是本发明另一个实施例提供的同步第二地址信息的流程图;
图13是本发明另一个实施例提供的示例一的流程图;
图14是本发明另一个实施例提供的发送缓冲区的示意图;
图15是本发明另一个实施例提供的示例二的流程图;
图16是本发明另一个实施例提供的接收缓冲区的示意图;
图17是本发明另一个实施例提供的电子设备的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书、权利要求书或上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本发明提供了一种基于大容量内存的高并发协议栈卸载方法、设备、存储介质,所述协议栈卸载方法包括:获取待发送数据,并确定所述待发送数据的第一数据量信息;将所述待发送数据缓冲至共享内存的发送缓冲区;向所述TOE硬件发送所述第一数据量信息,以使所述TOE硬件根据所述第一数据量信息从所述共享内存获取所述待发送数据,并根据所述待发送数据执行TOE卸载。根据本发明实施例提供的方案,能够利用共享内存作为待发送数据的缓冲空间,相比起DDR存储器在存储容量上有较大的提升,提高了高并发场景下协议栈的卸载能力,从而提高网络性能。
下面结合附图,对本发明实施例作进一步阐述。
如图1所示,图1是本发明一个实施例提供的一种基于大容量内存的高并发协议栈卸载方法,应用于CPU,CPU与TOE硬件通信连接,基于大容量内存的高并发协议栈卸载方法包括但不限于有步骤S110、步骤S120和步骤S130。
步骤S110,获取待发送数据,并确定待发送数据的第一数据量信息。
需要说明的是,待发送数据可以通过主机服务器的应用层中的任意应用生成网络链接或者网络报文得到,本实施例对网络链接或者网络报文的具体来源和类型不多作限定,能够通过TOE卸载实现发送即可。
需要说明的是,第一数据量信息可以是每个网络链接的数据的字节数,在接收到网络链接之后,根据每条网络链接确定第一数据量信息,利用主机内存作为共享内存,从而在主机内存为每条网络链接分配相对应的缓冲空间,在高并发的情况下能够实现数据的有序缓冲,提高TOE硬件获取数据时定位的效率。
步骤S120,将待发送数据缓冲至共享内存的发送缓冲区。
值得注意的是,对于主机服务器而言,存储空间分为内存和外存,外存包括DDR存储器等,其不足之处在于存储空间小、成本高和性能低,因此在应对高并发数据的情况下很容易出现存储空间不足的情况,影响网络性能。而主机服务器的内存通常具有较大的存储空间,例如随机存取存储器(Random Access Memory,RAM),能够存储的缓冲数据量远超于DDR存储器,因此,利用主机内存作为数据缓冲区,能够在物理上提供大容量缓冲空间,为高并发场景提供存储空间基础。
本领域技术人员可以理解的是,内存通常包括易失性内存和非易失性内存,非易失性内存的存储容量通常大于易失性内存,常见的易失性内存包括动态随机存取存储器(Dynamic Random Access Memory,DRAM),常见的非易失性内存包括非易失性双列直插式内存模块(Non-Volatile Dual In-line Memory Module,NVDIMM),对于TOE卸载而言,即使是高并发场景,也是获取数据和发送数据同步执行的过程,因此缓冲的数据并不需要永久性保存,基于此,在本实施例中既可以采用易失性内存,也可以采用非易失性内存,根据实际需求选取即可。
需要说明的是,在共享内存中,发送缓冲区可以采用缓冲队列的形式,以确保待发送数据能够按照获取顺序被执行。可以理解的是,对于CPU而言,能够直接访问RAM,因此能够直接执行数据的读写操作,而对于TOE硬件,能够通过直接存储器访问(Direct MemoryAccess,DMA)方式访问RAM数据,本实施例并不涉及具体的数据获取方式改进,在此不多作赘述。
步骤S130,向TOE硬件发送第一数据量信息,以使TOE硬件根据第一数据量信息从共享内存获取待发送数据,并根据待发送数据执行TOE卸载。
需要说明的是,CPU和TOE硬件之间能够通过硬件描述符队列实现通信,例如通过网络接口卡(Net Interface Card,NIC)队列中的消息(Message,msg)进行通信,以实现信息的交互。
可以理解的是,第一数据量信息可以通过以发送指令的形式推送至硬件描述符队列,例如CPU接收到待发送数据之后,通过代理层软件构建携带有第一数据量信息的发送指令,使得TOE硬件通过轮询硬件描述符队列获取到发送指令后,能够获取第一数据量信息,当然,也可以根据实际需求采用其他形式,能够将待发送数据的数据量信息告知TOE硬件即可。
可以理解的是,TOE硬件在获取到第一数据量信息后,能够根据第一数据量信息从发送缓冲区中获取相应数据量的数据,以确保获取到每条网络链接的全部数据,当然,TOE硬件每次获取的数据长度可以是任意的,根据实际处理能力确定即可,直至将发送缓冲区的全部数据获取并且完成发送为止。
可以理解的是,当检测到发送缓冲区的全部数据完成发送,可以通过代理层软件向应用层发送完成通知,以使产生该网络链接的应用能够确定数据完成发送,以执行后续操作。
例如,例如图2所示的服务器结构,软件部分可以划分为应用层和代理层,其中,应用层包括多个应用210,代理层和驱动层可以作为一个网络服务进行运行,同时提供一个LIB库文件,应用软件调用库函数提供的socket接口访问网络服务,避免系统调用、多次数据靠背带来的开销,有效缩短报文的收发路径,实现高效的报文收发。
其中,驱动层用于实现应用与硬件之间的全部交互接口,例如包括基本的驱动软件231,同时向上层软件提供msg消息的接收代理接口和发送代理接口,并通过硬件描述符队列实现消息收发。
代理层用于实现接收和发送的代理服务,维护管理收发缓冲区221,其中,收发缓冲区221包括发送缓冲区222和接收缓冲区223,也可以用于向应用层提供posix兼容的socket接口,并且支持多个进程访问网络服务,同时实现网络管理接口,提供类ifconfig、ethtool工具配置管理网络协议栈。
硬件层用于实现完整的网络协议栈,例如图中所示的网络硬件232,包括以太网卡、用于执行IP协议处理的IP协议栈、用于执行TCP协议处理的TCP协议栈、链接管理、端口管理以及路由表等,也可以根据实际需求增加或者减少具体的硬件,在此不多作限定。同时,硬件层与传输网络通信连接,能够将网络链接的数据发送至传输网络,也可以从传输网络中获取网络报文。
另外,参照图3,在一实施例中,图1所示实施例中的步骤S130还包括但不限于有以下步骤:
步骤S310,获取第一地址信息,第一地址信息用于描述发送缓冲区缓冲有数据的区域;
步骤S320,向TOE硬件发送第一数据量信息和第一地址信息,以使TOE硬件根据第一地址信息和第一数据量信息从发送缓冲区中获取待发送数据,并根据待发送数据执行TOE卸载。
需要说明的是,由于发送缓冲区可以是RAM中的缓冲队列,因此第一地址信息可以是缓冲队列的指针信息,例如图14所示的发送缓冲区,指针移动方向从开始start的位置向结束end的位置移动,开始写入第一个网络链接的待发送数据后,头指针朝向end的方向滑动,形成缓冲空间,当数据由TOE硬件获取并完成TOE卸载后,尾指针朝向end的方向滑动,从而释放出可用的缓冲空间,使得RAM中的空间能够重复使用,提高空间的利用率。
可以理解的是,头指针的位置为写入数据的开始位置,尾指针的位置为读取数据的开始位置,因此,当获取到第一地址信息后,TOE硬件根据尾指针的位置和每个网络链接的第一数据信息量,即可确定每个网络链接的待发送数据的存储位置。
需要说明的是,在滑动指针的过程中,需要确保头指针和尾指针不相互重叠,避免TOE硬件和CPU同时访问相同的内存。
另外,参照图4,在一实施例中,在执行完图3所示实施例中的步骤S320之后,还包括但不限于有以下步骤:
步骤S410,获取TOE硬件反馈的第二数据量信息,第二数据量信息表征TOE硬件通过执行TOE卸载而新增加的已发送数据的数据量;
步骤S420,根据第二数据量信息更新第一地址信息,并将更新后的第一地址信息同步至TOE硬件。
需要说明的是,TOE硬件可以获取任意数据量的数据并执行TOE卸载,每次获取的数据量不大于发送缓冲队列中缓冲的总数据量即可。为了确保软件和硬件中对于发送缓冲队列的信息一致,在每次完成TOE卸载之后,可以根据完成的数据量更新TOE硬件和代理层中的滑动窗口的信息,即通过移动尾指针的位置实现更新第一地址信息,并且尾指针移动的长度等于第二数据量信息中所携带的字节数,从而避免TOE硬件和CPU访问相同的内存。
另外,参照图5,在一实施例中,在执行完图1所示实施例中的步骤S130之后,还包括但不限于有以下步骤:
步骤S510,获取TOE硬件发送的第三数据量信息,第三数据量信息表征TOE硬件通过TOE卸载所得到的待接收数据的数据量;
步骤S520,根据第三数据量信息从共享内存的接收缓冲区中获取待接收数据,其中,待接收数据由TOE硬件缓冲至接收缓冲区;
步骤S530,完成待接收数据的接收处理。
需要说明的是,除了发送数据,TOE卸载还可以用于从网络中获取网络报文数据,在获取到报文数据后,需要通过应用层的应用进行接收,而接收也可能出现高并发的情况,因此,可以和发送数据相类似,将待接收数据缓冲到RAM中,CPU从RAM中获取待接收数据进行接收处理,具体的交互方式可以参考图1所示实施例的描述,在此不多作赘述。
可以理解的是,共享内存的发送缓冲区和接收缓冲区可以是不同的队列,避免TOE硬件和CPU在不同的进程中访问到相同的内存。
可以理解的是,第三数据量信息也可以是字节数长度,并且通过指令的方式推入硬件描述符队列上报至代理层,在此不多作赘述。
另外,参照图6,在一实施例中,图5所示实施例中的步骤S520还包括但不限于有以下步骤:
步骤S610,根据第三数据量信息确定第二地址信息,其中,第二地址信息用于描述接收缓冲区缓冲有数据的区域;
步骤S620,根据第三数据量信息和第二地址信息从接收缓冲区域获取所待发送数据。
需要说明的是,与发送数据的流程不同,接收到网络报文后,TOE硬件直接将待接收数据写入RAM,由于RAM的滑动窗口是由代理层软件维护的,TOE硬件并不能对接收缓冲区的指针进行维护,因此,需要代理层软件通过第三数据量确定第二地址信息,即接收缓冲区的头指针和尾指针位置,并进行实时的维护。
另外,参照图7,在一实施例中,在执行完图5所示实施例中的步骤S530之后,还包括但不限于有以下步骤:
步骤S710,确定第四数据量信息,第四数据量信息表征通过接收处理而新增加的已接收数据的数据量;
步骤S720,根据第四数据量信息更新第二地址信息;
步骤S730,将更新后的第二地址信息发送至TOE硬件。
需要说明的是,通过第四数据量信息更新第二地址信息的方法与图4中所示根据第二数据量信息更新第一地址信息的原理相近似,即滑动接收缓冲队列的尾指针,并且滑动长度等于第四数据量信息所携带的字节数。
需要说明的是,由于TOE硬件写入数据是在滑动接收缓冲区的头指针之前,并且在写入完成后通过指令触发代理层维护头指针位置,因此,更新第二地址信息后同步至TOE硬件,既能防止TOE硬件和CPU访问相同的内存,也能够确保TOE硬件获取到新数据后写入的位置准确。
另外,参照图8,本发明的一个实施例还提供了一种基于大容量内存的高并发协议栈卸载方法,应用于TOE硬件,TOE硬件与CPU通信连接,基于大容量内存的高并发协议栈卸载方法包括但不限于有以下步骤:
步骤S810,获取CPU发送的第一数据量信息;
步骤S820,根据第一数据量信息从共享内存的发送缓冲区获取待发送数据,其中,待发送数据由CPU获取并缓冲至发送缓冲区;
步骤S830,针对待发送数据执行TOE卸载。
需要说明的是,本实施例的技术方案和原理可以参考图1所示的实施例,主要区别在于本实施例的执行主体为TOE硬件,为了叙述简便,在此不多作赘述。
可以理解的是,多个硬件,任意一个都可以触发。
另外,参照图9,在一实施例中,图8所示实施例中的步骤S820还包括但不限于有以下步骤:
步骤S910,获取CPU发送的第一地址信息,其中,第一地址信息用于描述发送缓冲区缓冲有数据的区域;
步骤S920,根据第一地址信息和第一数据量信息从发送缓冲区获取待发送数据。
需要说明的是,本实施例的技术方案和原理可以参考图3所示的实施例,主要区别在于本实施例的执行主体为TOE硬件,作为待发送数据的获取端,除此以外与图3所示的实施例相近似,为了叙述简便,在此不多作赘述。
另外,参照图10,在一实施例中,在执行完图8所示实施例中的步骤S830之后,还包括但不限于有以下步骤:
步骤S1010,确定第二数据量信息,第二数据量信息表征通过执行TOE卸载而新增加的已发送数据的数据量;
步骤S1020,将第二数据量信息反馈至CPU,以使CPU根据第二数据量信息更新第一地址信息;
步骤S1030,获取CPU发送的更新后的第一地址信息。
需要说明的是,本实施例的技术方案和原理可以参考图4所示的实施例,主要区别在于本实施例的执行主体为TOE硬件,作为第一地址信息的接收端,除此以外与图4所示实施例的原理类似,为了叙述简便,在此不多作赘述。
另外,参照图11,在一实施例中,在执行完图8所示实施例中的步骤S830之后,还包括但不限于有以下步骤:
步骤S1110,通过TOE卸载获取待接收数据,并确定待接收数据的第三数据量信息;
步骤S1120,将待接收数据缓冲至共享内存的接收缓冲区;
步骤S1130,向CPU发送第三数据量信息,以使CPU根据第三数据量信息从接收缓冲区获取待接收数据,并执行待接收数据的接收处理。
需要说明的是,本实施例的技术方案和原理可以参考图5所示的实施例,主要区别在于本实施例的执行主体为TOE硬件,作为待发送数据的获取端,除此以外与图5所示实施例的原理类似,为了叙述简便,在此不多作赘述。
另外,参照图12,在一实施例中,在执行完图11所示实施例中的步骤S830之后,还包括但不限于有以下步骤:
步骤S1210,获取CPU发送的更新后的第二地址信息,其中,第二地址信息由CPU根据第三数据量信息确定,并根据第四数据量信息更新,第四数据量信息表征通过CPU的接收处理而新增加的已接收数据的数据量。
需要说明的是,本实施例的技术方案和原理可以参考图6和图7所示的实施例,主要区别在于本实施例的执行主体为TOE硬件,作为第二地址信息的接收端,除此以外与图6和图7所示实施例的原理类似,为了叙述简便,在此不多作赘述。
另外,为了对本发明的技术方案进行更加详细的说明,在此以TCP协议栈为例,通过数据发送和数据接收的两个具体流程对本发明的技术方案进行举例说明。
需要说明的是,在两个具体示例中,软硬件架构可以参考图2所示的架构,在此不对具体架构进行重复赘述。
示例一:数据发送流程。
参考图13,在TCP协议栈的数据发送流程中,包括但不限于有以下步骤:
步骤S1310,应用发送长度为L的数据,发送缓冲区头指针p_app_send在确保不覆盖p_acked的情况下,向右滑动L字节,若到达边界则回滚,头指针滑动成功后,将数据拷贝到新分配的缓冲空间并向代理层发送TxSend指令;
步骤S1320,代理层构建TX发送请求消息,向网卡的硬件描述符队列推送TX请求指令;
步骤S1330,网卡轮询硬件描述符队列接收到的TX发送指令,根据TX发送指令的内容计算出对应发送缓冲区地址,触发TCP协议栈执行发送流程,将该链路发送缓冲区数据发送到网络;
步骤S1340,网卡收到ack确认消息后,构造发送完成消息TxComp,通过描述队列向代理层推送;
步骤S1350,代理层收到发送完成消息TxComp,更新TCP链接的发送队列滑动窗口,p_acked指针向右滑动X字节,并确保p_acked不覆盖p_app_send指针;
步骤S1360,若发送缓冲区数据全部发完成,代理层向应用层发送完成通知,告知应用层数据发送成功。
需要说明的是,参考图14,图14为发送缓冲区的示意图,其中,在发送缓冲区中,头指针p_app_send从发送缓冲区的队列start处开始向end处滑动,通过滑动形成缓冲空间,用于存入待发送数据,并且,在待发送数据发送之后,尾指针p_acked从发送缓冲区的队列start处开始向end处滑动,从而在发送缓冲区中形成缓冲有待发送数据的区域,并且头指针和尾指针在高并发的场景下同时保持滑动,实现数据的获取和发送,并在到达end之后回滚到strat开始,能够循环利用RAM的容量,有利于提高高并发场景下的缓冲能力。
示例二:数据接收流程。
参考图15,在TCP协议栈的数据接收流程中,包括但不限于有以下步骤:
步骤S1510,网卡从网络接收报文,经过协议栈模块处理后得到应用数据L字节,调用DMA接口将L字节长度数据写入p_toe_rx位置,确保不会覆盖p_app_read指针;
步骤S1520,网卡通过描述符队列向代理层发送RX接收指令;
步骤S1530,代理层收到RX指令,根据RX指令的内容更新指定链路的接收缓冲区滑动窗口,头指针p_toe_rx向右滑动L字节,同时通知应用该链路有数据待读取;
步骤S1540,应用执行socket接口读取X长度数据,尾指针p_app_read向右滑动X字节,确保p_app_read不覆盖p_toe_rx,同时向硬件层发送接收完成消息RxComp;
步骤S1550,网卡收到RxComp消息,更新对应链路的缓冲区状态,尾指针p_app_read向右滑动X字节,从而完成软、硬件的滑动窗口状态的同步。
需要说明的是,参考图16,图16为接收缓冲区的示意图,其中,在接收缓冲区中,头指针p_toe_rx从接收缓冲区的队列start处开始向end处滑动,通过滑动形成缓冲空间,用于存入待接收数据,并且,在待接收数据接收之后,尾指针p_app_read从接收缓冲区的队列start处开始向end处滑动,从而在接收缓冲区中形成缓冲有待接收数据的区域,并且头指针和尾指针在高并发的场景下同时保持滑动,实现数据的获取和接收,并在到达end之后回滚到strat开始,能够循环利用RAM的容量,有利于提高高并发场景下的缓冲能力。
另外,参照图17,本发明的一个实施例还提供了一种电子设备,该电子设备1700包括:存储器1710、处理器1720及存储在存储器1710上并可在处理器1720上运行的计算机程序。
处理器1720和存储器1710可以通过总线或者其他方式连接。
实现上述实施例的基于大容量内存的高并发协议栈卸载方法所需的非暂态软件程序以及指令存储在存储器1710中,当被处理器1720执行时,执行上述实施例中的应用于CPU的基于大容量内存的高并发协议栈卸载方法,例如,执行以上描述的图1中的方法步骤S110至步骤S130、图3中的方法步骤S310至步骤S320、图4中的方法步骤S410至步骤S420、图5中的方法步骤S510至步骤S530、图6中的方法步骤S610至步骤S620或图7中的方法步骤S710至步骤S730;或者,执行上述实施例中的应用于TOE硬件的基于大容量内存的高并发协议栈卸载方法,例如,执行以上描述的图8中的方法步骤S810至步骤S830、图9中的方法步骤S910至步骤S920、图10中的方法步骤S1010至步骤S1030、图11中的方法步骤S1110至步骤S1130、图12中的方法步骤S1210。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
此外,本发明的一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个处理器或控制器执行,例如,被上述电子设备实施例中的一个处理器执行,可使得上述处理器执行上述实施例中基于大容量内存的高并发协议栈卸载方法,例如,执行以上描述的图1中的方法步骤S110至步骤S130、图3中的方法步骤S310至步骤S320、图4中的方法步骤S410至步骤S420、图5中的方法步骤S510至步骤S530、图6中的方法步骤S610至步骤S620或图7中的方法步骤S710至步骤S730;或者,执行上述实施例中的应用于TOE硬件的基于大容量内存的高并发协议栈卸载方法,例如,执行以上描述的图8中的方法步骤S810至步骤S830、图9中的方法步骤S910至步骤S920、图10中的方法步骤S1010至步骤S1030、图11中的方法步骤S1110至步骤S1130、图12中的方法步骤S1210。本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于共享内存、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
以上是对本发明的较佳实施进行了具体说明,但本发明并不局限于上述实施方式,熟悉本领域的技术人员在不违背本发明精神的前提下还可作出种种的等同变形或替换,这些等同的变形或替换均包含在本发明权利要求所限定的范围内。
Claims (9)
1.一种基于大容量内存的高并发协议栈卸载方法,应用于中央处理器CPU,所述CPU与传输控制协议卸载引擎TOE硬件通信连接,所述基于大容量内存的高并发协议栈卸载方法包括:
获取待发送数据,并确定所述待发送数据的第一数据量信息;
将所述待发送数据缓冲至共享内存的发送缓冲区;
获取第一地址信息,所述第一地址信息用于描述所述发送缓冲区缓冲有数据的区域;
向所述TOE硬件发送所述第一数据量信息和所述第一地址信息,以使所述TOE硬件根据所述第一地址信息和所述第一数据量信息从所述发送缓冲区中获取所述待发送数据,并根据所述待发送数据执行TOE卸载;
获取所述TOE硬件反馈的第二数据量信息,所述第二数据量信息表征所述TOE硬件通过执行TOE卸载而新增加的已发送数据的数据量;
根据所述第二数据量信息更新第一地址信息,并将更新后的第一地址信息同步至所述TOE硬件。
2.根据权利要求1所述的方法,其特征在于,在向所述TOE硬件发送所述第一数据量信息,以使所述TOE硬件根据所述第一数据量信息从所述共享内存获取所述待发送数据,并根据所述待发送数据执行TOE卸载之后,所述方法还包括:
获取所述TOE硬件发送的第三数据量信息,所述第三数据量信息表征所述TOE硬件通过TOE卸载所得到的待接收数据的数据量;
根据所述第三数据量信息从共享内存的接收缓冲区中获取所述待接收数据,其中,所述待接收数据由所述TOE硬件缓冲至所述接收缓冲区;
完成所述待接收数据的接收处理。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第三数据量信息从共享内存的接收缓冲区中获取所述待接收数据,包括:
根据所述第三数据量信息确定第二地址信息,其中,所述第二地址信息用于描述所述接收缓冲区缓冲有数据的区域;
根据所述第三数据量信息和所述第二地址信息从所述接收缓冲区域获取所述待接收数据。
4.根据权利要求3所述的方法,其特征在于,在所述完成所述待接收数据的接收处理之后,所述方法还包括:
确定第四数据量信息,所述第四数据量信息表征通过接收处理而新增加的已接收数据的数据量;
根据所述第四数据量信息更新所述第二地址信息;
将更新后的第二地址信息发送至所述TOE硬件。
5.一种基于大容量内存的高并发协议栈卸载方法,应用于TOE硬件,所述TOE硬件与CPU通信连接,所述基于大容量内存的高并发协议栈卸载方法包括:
获取所述CPU发送的第一数据量信息;
获取所述CPU发送的第一地址信息,其中,所述第一地址信息用于描述发送缓冲区缓冲有数据的区域;
根据所述第一地址信息和所述第一数据量信息从所述发送缓冲区获取待发送数据,其中,所述待发送数据由所述CPU获取并缓冲至所述发送缓冲区;
针对所述待发送数据执行TOE卸载;
确定第二数据量信息,所述第二数据量信息表征通过执行TOE卸载而新增加的已发送数据的数据量;
将所述第二数据量信息反馈至所述CPU,以使所述CPU根据所述第二数据量信息更新第一地址信息;
获取所述CPU发送的更新后的第一地址信息。
6.根据权利要求5所述的方法,其特征在于,在所述针对所述待发送数据执行TOE卸载之后,所述方法还包括:
通过TOE卸载获取待接收数据,并确定所述待接收数据的第三数据量信息;
将所述待接收数据缓冲至共享内存的接收缓冲区;
向所述CPU发送所述第三数据量信息,以使所述CPU根据所述第三数据量信息从所述接收缓冲区获取所述待接收数据,并执行所述待接收数据的接收处理。
7.根据权利要求6所述的方法,其特征在于,在所述向所述CPU发送所述第三数据量信息,以使所述CPU根据所述第三数据量信息从所述接收缓冲区获取所述待接收数据,并执行所述待接收数据的接收处理之后,所述方法还包括:
获取所述CPU发送的更新后的第二地址信息,其中,所述第二地址信息由所述CPU根据所述第三数据量信息确定,并根据第四数据量信息更新,所述第四数据量信息表征通过所述CPU的接收处理而新增加的已接收数据的数据量。
8.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任意一项所述的基于大容量内存的高并发协议栈卸载方法,或者,执行所述计算机程序时实现如权利要求5至7中任意一项所述的基于大容量内存的高并发协议栈卸载方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于执行如权利要求1至7中任意一项所述的基于大容量内存的高并发协议栈卸载方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110527515.7A CN113179327B (zh) | 2021-05-14 | 2021-05-14 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
PCT/CN2022/091531 WO2022237695A1 (zh) | 2021-05-14 | 2022-05-07 | 基于主机侧大容量内存的高并发协议栈卸载方法、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110527515.7A CN113179327B (zh) | 2021-05-14 | 2021-05-14 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113179327A CN113179327A (zh) | 2021-07-27 |
CN113179327B true CN113179327B (zh) | 2023-06-02 |
Family
ID=76928984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110527515.7A Active CN113179327B (zh) | 2021-05-14 | 2021-05-14 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113179327B (zh) |
WO (1) | WO2022237695A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113179327B (zh) * | 2021-05-14 | 2023-06-02 | 中兴通讯股份有限公司 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
CN117155729A (zh) * | 2022-05-24 | 2023-12-01 | 北京有竹居网络技术有限公司 | 通信方法、系统、装置和电子设备 |
CN115208830B (zh) * | 2022-05-27 | 2023-09-08 | 上海大学 | 一种高性能无阻塞数据发送方法及装置 |
CN117806892B (zh) * | 2024-02-29 | 2024-06-14 | 山东云海国创云计算装备产业创新中心有限公司 | 存储芯片模型测试方法、装置、通信设备及存储介质 |
CN118283135A (zh) * | 2024-05-30 | 2024-07-02 | 井芯微电子技术(天津)有限公司 | Toe组件及其处理数据的方法 |
CN118283134A (zh) * | 2024-05-30 | 2024-07-02 | 井芯微电子技术(天津)有限公司 | Toe组件及其处理数据的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516191A (zh) * | 2016-01-13 | 2016-04-20 | 成都市智讯联创科技有限责任公司 | 基于fpga实现的万兆网tcp协议卸载引擎toe的系统 |
CN112583935A (zh) * | 2020-12-28 | 2021-03-30 | 深信服科技股份有限公司 | 缓冲区窗口调整方法、网关设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7400639B2 (en) * | 2003-08-07 | 2008-07-15 | Intel Corporation | Method, system, and article of manufacture for utilizing host memory from an offload adapter |
US6996070B2 (en) * | 2003-12-05 | 2006-02-07 | Alacritech, Inc. | TCP/IP offload device with reduced sequential processing |
US20070162639A1 (en) * | 2005-11-30 | 2007-07-12 | Chu Hsiao-Keng J | TCP-offload-engine based zero-copy sockets |
US20070255866A1 (en) * | 2006-05-01 | 2007-11-01 | Eliezer Aloni | Method and system for a user space TCP offload engine (TOE) |
CN101616194B (zh) * | 2009-07-23 | 2012-07-11 | 中国科学技术大学 | 主机网络性能优化系统及方法 |
CN101853238A (zh) * | 2010-06-01 | 2010-10-06 | 华为技术有限公司 | 通信处理器间消息通信方法和系统 |
US9588804B2 (en) * | 2014-01-21 | 2017-03-07 | Qualcomm Incorporated | System and method for synchronous task dispatch in a portable device |
CN110958213B (zh) * | 2018-09-27 | 2021-10-22 | 华为技术有限公司 | 处理tcp报文的方法、toe组件以及网络设备 |
CN109413106A (zh) * | 2018-12-12 | 2019-03-01 | 中国航空工业集团公司西安航空计算技术研究所 | 一种tcp/ip协议栈实现方法 |
CN111327603B (zh) * | 2020-01-21 | 2021-04-20 | 中科驭数(北京)科技有限公司 | 数据传输方法、装置和系统 |
CN113179327B (zh) * | 2021-05-14 | 2023-06-02 | 中兴通讯股份有限公司 | 基于大容量内存的高并发协议栈卸载方法、设备、介质 |
-
2021
- 2021-05-14 CN CN202110527515.7A patent/CN113179327B/zh active Active
-
2022
- 2022-05-07 WO PCT/CN2022/091531 patent/WO2022237695A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105516191A (zh) * | 2016-01-13 | 2016-04-20 | 成都市智讯联创科技有限责任公司 | 基于fpga实现的万兆网tcp协议卸载引擎toe的系统 |
CN112583935A (zh) * | 2020-12-28 | 2021-03-30 | 深信服科技股份有限公司 | 缓冲区窗口调整方法、网关设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022237695A1 (zh) | 2022-11-17 |
CN113179327A (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113179327B (zh) | 基于大容量内存的高并发协议栈卸载方法、设备、介质 | |
US10609150B2 (en) | Lock management method in cluster, lock server, and client | |
US10642777B2 (en) | System and method for maximizing bandwidth of PCI express peer-to-peer (P2P) connection | |
CN107391271B (zh) | 一种基于消息队列系统的延时任务触发方法和装置 | |
WO2021254330A1 (zh) | 内存管理方法、系统、客户端、服务器及存储介质 | |
WO2022257587A1 (zh) | 数据处理方法、toe硬件及计算机可读存储介质 | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
EP4318251A1 (en) | Data access system and method, and device and network card | |
CN103607428A (zh) | 一种访问共享内存的方法和装置 | |
CN114201421A (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
CN115270033A (zh) | 一种数据访问系统、方法、设备以及网卡 | |
WO2023116438A1 (zh) | 一种数据访问方法、装置以及设备 | |
CN116260887A (zh) | 数据传输方法、数据发送装置、数据接收装置和存储介质 | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
US20150199298A1 (en) | Storage and network interface memory share | |
CN111400213B (zh) | 传输数据的方法、装置及系统 | |
WO2023231723A1 (zh) | 流媒体数据处理方法及系统 | |
CN110895517B (zh) | 基于fpga的传输数据的方法、设备及系统 | |
EP1780976A1 (en) | Methods and system to offload data processing tasks | |
CN111770054A (zh) | 一种针对smb协议读请求的交互加速方法与系统 | |
CN110798366B (zh) | 任务逻辑的处理方法、装置及设备 | |
CN113472874B (zh) | 文件并发传输方法、系统、存储介质及电子设备 | |
US11886938B2 (en) | Message communication between integrated computing devices | |
CN114401072A (zh) | 一种基于hinoc协议的拆帧重排序队列的动态缓存控制方法及系统 | |
US9509780B2 (en) | Information processing system and control method of information processing system |
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 |