CN117176834A - 一种报文发送、接收方法、网卡以及计算设备 - Google Patents

一种报文发送、接收方法、网卡以及计算设备 Download PDF

Info

Publication number
CN117176834A
CN117176834A CN202210593157.4A CN202210593157A CN117176834A CN 117176834 A CN117176834 A CN 117176834A CN 202210593157 A CN202210593157 A CN 202210593157A CN 117176834 A CN117176834 A CN 117176834A
Authority
CN
China
Prior art keywords
message
header
information
network card
task
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.)
Pending
Application number
CN202210593157.4A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202210593157.4A priority Critical patent/CN117176834A/zh
Publication of CN117176834A publication Critical patent/CN117176834A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本申请涉及存储技术领域,提供一种报文发送、接收方法、网卡以及计算设备。该方法可应用于第一设备内的第一网卡,该第一设备还包括第一处理器,包括:接收来自第一处理器的第一命令,第一命令指示有待发送的信息;根据第一命令,获取第一设备存储的队列对上下文,该队列对上下文包括第一任务的信息,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的设备;为待发送的第一报文添加第一报文头,得到第二报文,以及向第二设备发送第二报文,第一报文头包括第一任务的信息,且第一报文包括待发送的数据。通过本申请能够以较少的资源开销向中间设备发送该中间设备相关的任务信息。

Description

一种报文发送、接收方法、网卡以及计算设备
技术领域
本申请涉及存储技术领域,尤其涉及一种报文发送、接收方法、网卡以及计算设备。
背景技术
智能网卡因其自带的处理器或芯片,可以承担计算机内核所处理的一部分任务(如报文头的封装和解封装等),减少了计算机内存和中央处理器(central processingunit,CPU)资源的消耗,能够加快数据传输。
在数据传输过程中,发送端设备与接收端设备之间的中间设备(如交换机)可能需要完成一些任务(如带内网络遥测,路由转发等),以满足业务需求和用户需求。目前,为了使得中间设备明确所执行的任务,发送端设备在发送数据之前,可以先向中间设备发送报文,该报文用于向该中间设备指示与这些任务相关的信息,之后发送端设备再向该中间设备发送数据。可见,由于发送端设备需要额外向中间设备发送报文来指示任务相关的信息,导致网络资源开销较大。
可见,如何以较少的资源开销向中间设备发送与任务相关的信息,是需要解决的技术问题。
发明内容
本申请实施例提供一种报文发送、接收方法、网卡以及计算设备,用于以较少的资源开销向中间设备发送该中间设备相关的任务信息。
第一方面,本申请提供一种报文发送方法,应用于第一设备内的第一网卡,该第一设备还包括第一处理器。在该方法中:接收来自第一处理器的第一命令,该第一命令指示有待发送的信息;根据第一命令,获取第一设备存储的队列对上下文,该队列对上下文包括第一任务的信息,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的设备;为待发送的第一报文添加第一报文头,得到第二报文,以及向第二设备发送该第二报文,第一报文头包括第一任务的信息,且第一报文包括待发送的数据。
本申请实施例中,第一网卡可以将第一任务的信息添加到第一报文头中,并将第一报文头添加到待发送的第一报文中,这样网卡可以利用承载待发送数据的报文将第一任务的信息发送给中间设备,而无需单独向中间设备发送承载第一任务的信息的报文,能够减小资源开销。
在一种可能的实现方式中,队列对上下文还包括第一信息,第一信息用于指示第一报文头在报文中的位置;为待发送的第一报文添加第一报文头,可以为:根据第一信息,为第一报文添加第一报文头。通过上述方式,在报文头封装流程中网卡能够将携带第一任务的信息的第一报文头按照指定位置插入第一报文。
在一种可能的实现方式中,为待发送的第一报文添加第一报文头,得到第二报文,可以为:将队列对上下文读取到第一网卡的预留存储区域;以及,在预留存储区域中,为第一报文添加第一报文头,得到第二报文。通过上述方式,第一网卡可以在该预留存储区域内完成第二报文的生成,这样可以避免挤占其它流程的存储资源。
在一种可能的实现方式中,队列对上下文还可以包括第二信息,该第二信息用于指示支持通过报文头发送第一任务的信息。通过上述方式,能够标识第一设备是否使能第一网卡将第一任务的信息插入待发送数据的报文中。
在一种可能的实现方式中,根据第一命令,获取第一设备中的队列对上下文,可以为:根据第一命令,确定第一命令对应的工作队列入口;以及,根据工作队列入口,读取该队列对上下文。
在一种可能的实现方式中,第一任务包括带内网络遥测和/或路由转发。
第二方面,本申请提供一种报文接收方法,应用于第二设备内的第二网卡,在该方法中,接收来自第一设备的第二报文,第二报文包括第一报文头,第二报文头和数据,其中,第一报文头包括第一任务的信息,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的设备,第二报文头是第二报文中除了第一报文头之外剩余的报文头;根据第二报文,生成元数据,其中,元数据包括第一报文头的长度和第二报文头的预解析信息;以及,根据元数据删除第一报文头,以及根据元数据解析第二报文头得到数据。
在一种可能的实现方式中,根据元数据删除第一报文头,可以为:根据第一报文头的长度,生成第二命令,第二命令指示删除第一报文头;根据第二命令,删除第一报文头。
在一种可能的实现方式中,元数据还包括第一信息,第一信息用于指示第一报文头在报文中的位置;根据第一报文头的长度,生成第二命令,可以为:根据第一报文头的长度和第一信息,生成第二命令。
在一种可能的实现方式中,该方法还可以包括:确定第二报文的报文类型是扩展报文。
在一种可能的实现方式中,第一任务包括带内网络遥测和/或路由转发。
第三方面,本申请提供一种报文发送方法,应用于第一设备的第一处理器,该第一设备还包括第一网卡,在该方法中,将第一任务的信息写入队列对上下文,其中,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的中间设备;以及,根据队列对上下文,向第一网卡发送第一命令,其中,第一命令指示有待发送的信息。
在一种可能的实现方式中,该方法还可以包括:将第一信息写入队列对上下文,其中,第一信息用于指示第一报文头在报文中的位置,第一报文头包括第一任务的信息。
在一种可能的实现方式中,该方法还可以包括:将第二信息写入队列对上下文,其中,第二信息用于指示支持通过报文头发送第一任务的信息。
在一种可能的实现方式中,该方法还可以包括:接收来自用户的第一任务的信息。
在一种可能的实现方式中,根据队列对上下文,向第一网卡发送第一命令,可以为:根据队列对上下文,生成工作队列入口;以及,根据工作队列入口,向第一网卡发送工作队列入口对应的第一命令。
第四方面,本申请提供一种网卡,该网卡设置在第一设备中,该网卡具有实现上述第一方面以及第一方面的各个可能的实施方式中行为的功能,有益效果可以参见第一方面以及第一方面的各个可能的实施方式中的描述,此处不再赘述。
在一种可能的实现方式中,网卡的结构中可以包括处理器和存储器,处理器被配置为支持网卡执行上述第一方面以及第一方面的各个可能的实施方式中第一网卡相应的功能。存储器与处理器耦合,其保存网卡必要的程序指令和数据。该网卡中还可以包括接口,用于与其他设备通信,例如,接收第一设备的第一命令,向第二设备发送第二报文等。
在另一种可能的实现方式中,网卡的结构中也可以包括处理器和接口,处理器被配置为支持网卡执行上述第一方面以及第一方面的各个可能的实施方式中第一网卡相应的功能。该处理器还可以通过接口传输数据,例如,发送第二报文等。
第五方面,本申请提供一种网卡,该网卡设置在第二设备中,该网卡具有实现上述第二方面以及第二方面的各个可能的实施方式中行为的功能,有益效果可以参见第二方面以及第二方面的各个可能的实施方式中的描述,此处不再赘述。
在一种可能的实现方式中,网卡的结构中可以包括处理器和存储器,处理器被配置为支持网卡执行上述第二方面以及第二方面的各个可能的实施方式中第二网卡相应的功能。存储器与处理器耦合,其保存网卡必要的程序指令和数据。该网卡中还可以包括接口,用于与其他设备通信,例如,接收第二报文,向第二设备发送数据等。
在另一种可能的实现方式中,网卡的结构中也可以包括处理器和接口,处理器被配置为支持网卡执行上述第二方面以及第二方面的各个可能的实施方式中第二网卡相应的功能。该处理器还可以通过接口传输数据,例如,接收第二报文等。
第六方面,本申请提供一种计算设备,该计算设备包括第一网卡,该第一网卡具有实现上述第一方面以及第一方面的各个可能的实施方式中行为的功能,有益效果可以参见第一方面以及第一方面的各个可能的实施方式中的描述,此处不再赘述。
在一种可能的实现方式中,计算设备的结构中可以包括处理器和存储器,处理器被配置为支持计算设备执行上述第三方面以及第三方面的各个可能的实施方式中第一处理器相应的功能。存储器与处理器耦合,其保存计算设备必要的程序指令和数据。该计算设备中还可以包括接口,用于与其他设备通信,例如,向第一网卡发送第一命令等。
在又一种可能的实现方式中,计算设备的结构中也可以包括处理器和接口,处理器被配置为支持计算设备执行上述第三方面以及第三方面的各个可能的实施方式中第一处理器相应的功能。该处理器还可以通过接口传输数据,例如,接收来自用户的第一任务的信息等。
第七方面,本申请还提供一种计算设备,该计算设备中包括网卡,网卡用于执行上述第一方面以及第一方面的各个可能的实施方式中第一网卡执行的方法,或者,用于执行上述第二方面以及第二方面的各个可能的实施方式中第二网卡执行的方法。
可选的,计算设备还可以包括内存,内存包括队列对上下文,用于写入第一任务的信息,该第一任务是至少一个中间设备在数据传输过程中所执行的任务,该至少一个中间设备是计算设备与第二设备之间的中间设备。
第八方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法,或者使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法,或者使得计算机执行上述第三方面以及第三方面的各个可能的实施方式中所述的方法。
第九方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法,或者使得计算机执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法,或者使得计算机执行上述第三方面以及第三方面的各个可能的实施方式中所述的方法。
第十方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法,或者执行上述第二方面以及第二方面的各个可能的实施方式中所述的方法,或者执行上述第三方面以及第三方面的各个可能的实施方式中所述的方法。
其中,第二方面至第十方面及其任一可能的实现方式所带来的技术效果可参见上述第一方面及其任一可能的实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种系统架构的示意图;
图2为本申请实施例中报文的一种结构示意图;
图3为本申请实施例提供的报文发送、接收方法的一种流程示意图;
图4为本申请实施例提供的网卡111的一种示意图;
图5为本申请实施例提供的第二报文的一种结构示意图;
图6为本申请实施例提供的网卡121的一种示意图;
图7为本申请实施例提供的报文发送方法的一种流程示意图;
图8为本申请实施例提供的报文接收方法的一种流程示意图;
图9为本申请实施例提供的网卡的再一种示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,首先,对本申请涉及的部分术语进行解释说明。
1、中间设备,又可以称为中间节点,或中间交换节点等,例如包括具有数据转发功能的设备,例如交换机,路由器,或终端设备等。本申请实施例对中间设备的具体实现形式不作限定。
2、第一任务,包括至少一个中间设备中的全部或部分中间设备在数据传输过程中所执行的任务。该至少一个中间设备是数据的发送端设备与该数据的接收端设备之间中转信息的设备。该第一任务例如包括带内网络遥测(in-band network telemetry,INT)和/或路由转发等,本申请实施例并不限制。
第一任务的信息,是指与第一任务相关的信息。例如,该第一任务的信息可以包括第一任务的标识和/或执行第一任务的参考信息等。该参考信息例如包括路由路径,和/或INT待测量的参数等。其中,该INT待测量的参数可以是用户自定义的参数,或是发送端设备制定的参数,或是默认参数等,该参数例如包括中间设备的某个端口已接收的报文的数量,和/或中间设备的某个端口处等待发送的报文的数量等。路由路径可以是用户自定义的路由路径,或是发送端设备指定的路由路径等。
3、INT,为一种测量方法,通过数据传输路径中的中间设备采集该数据传输过程中的网络参数,以获取网络拓扑、或网络性能或网络流量等信息。
4、队列对上下文(queue pair context,QPC),是指计算设备的内存中允许该计算设备的网卡访问的信息。该QPC包括队列对(queue pair,QP)的相关属性,如QP的内存地址、QP的长度等。QP包括发送队列(send queue,SQ)和接收队列(receive queue,RQ)。网卡通过访问QPC可获取QP的相关属性,从而根据该QP的相关属性可确定QP。在本申请实施例中,该QPC还可以包括除了QP的相关属性之外的信息,如包括第一任务的信息。
5、工作队列条目(work queue entry,WQE),指向用于存储待发送数据或待接收数据的内存地址。计算设备的网卡通过WQE所指向的内存地址可获取包括该内存地址的QPC,再根据该QPC包括的该内存地址确定QP。其中,在WQE指向用于存储待发送数据的内存地址时,该WQE可称为发送队列条目(send queue entry,SQE);在WQE指向用于存储待接收数据的内存地址时,该WQE可称为接收队列条目(receive queue entry,RQE)。
6、门铃(doorbell),用于向计算设备的网卡通知是否有待发送(或待处理)的信息(或请求、命令等)。该门铃的指针可以是SQ的尾指针,发送端设备将待发送(或待处理)的信息(或请求、命令等)写入SQ后,将SQ的尾指针更新为映射到该发送端设备的网卡,这样网卡就可以知道有待发送(或待处理)的信息(或请求、命令等)。
7、计算设备,是指具有数据处理能力以及数据收发能力的电子设备,如服务器,主机,终端设备(如手机,平板电脑等)等,本申请实施例对计算设备的具体形态不作限定。
8、本申请实施例涉及的“至少一项”是指一项或者多项,“多项”是指两项或两项以上。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。在本申请实施例的文字描述中,字符“/”,一般表示前后关联对象是一种“或”的关系。
另外,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示优先级或重要程度,也不能理解为指示或暗示顺序。例如,本申请实施例涉及的“第一设备”和“第二设备”,可用于对多个设备进行区分,但并不限定该多个设备的优先级或重要程度。
如图1所示为本申请实施例提供的一种系统架构示意图。如图1所示,该系统中包括第一设备、第二设备和网络130,图1以第一设备为计算设备110、第二设备为计算设备120为例。计算设备110支持接收数据和/或发送数据。计算设备120也支持接收数据和/或发送数据。计算设备110可以作为发送端设备,通过网络130向计算设备120发送数据,相应的,计算设备120可作为接收端设备,通过网络130接收来自计算设备110的数据;或者,计算设备120可以作为发送端设备,通过网络130向计算设备110发送数据,相应的,计算设备110可作为接收端设备,通过网络130接收来自计算设备120的数据。为了便于理解,图1以计算设备110通过网络130向计算设备120发送数据为例。另外,计算设备110与计算设备120之间存在一个或多个中间设备(图1中未示出)。
如图1所示,计算设备110内安装有(或者部署有)第一网卡,图1以第一网卡是网卡111为例。计算设备110可通过网卡111实现对数据的发送和接收。计算设备110还包括第一处理器(图1以第一处理器是处理器112为例)和内存113。网卡111、处理器112以及内存113之间通过总线(图1中未示出)通信。该总线例如可以是基于高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)的总线,但本申请实施例并不限定于此。
其中,网卡111,支持报文的接收和发送,以实现计算设备110与其它电子设备之间的通信,该其它电子设备例如为计算设备120。在本申请实施例中,网卡111还可以承担报文头(或数据)的封装和解封装。在本申请实施例中,计算设备110向计算设备120发送数据,则网卡111负责对该数据进行封装。
需要说明的是,后文的各个实施例中报文头可以是传输控制协议(transmissioncontrol protocol,TCP)下的报文头,或者是基于融合以太的远程内存直接访问协议(remote direct memory access over converged ethernet,RoCE)下的报文头,还可以是其他协议下的报文头,本申请实施例对报文头的具体实现方式不作限定。另外,各个协议下的报文头的结构(或封装顺序)是固定的。
为便于理解,后文的各个实施例中以RoCE下的报文头为例进行说明。图2示出了RoCE报文头的一种结构示意图。如图2所示,报文包括报文头和净荷。报文头由介质访问控制(medium access control,MAC)头、网际互连协议(internet protocol,IP)头、用户数据报协议(user datagram protocol,UDP)头以及无线带宽(infiniband,IB)头组成。其中,IB头与净荷相邻,UDP头与IB头相邻,IP头与UDP头相连,MAC头与IP头相邻。净荷中可携带数据。该数据是该计算设备110待发送的数据,例如图像数据、视频数据、语音数据、或信息等,本申请实施例对数据的具体实现形式和类型不作限定。
处理器112可以为中央处理器(central processing unit,CPU)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、人工智能(artificial intelligence,AI)芯片、片上系统(system on chip,SoC)或复杂可编程逻辑器件(complex programmable logic device,CPLD),图形处理器(graphics processing unit,GPU)等。在本申请实施例中处理器112可将第一任务的信息写入QPC中,有关QPC和第一任务的信息的描述请参考术语解释部分,此处不再赘述。
内存113可以包括易失性存储器(volatile memory),例如RAM、DRAM等,也可以包括非易失性存储器(non-volatile memory),例如存储级内存(storage class memory,SCM)等,或者易失性存储器与非易失性存储器的组合等。在本申请实施例中内存113存储有QPC,该QPC包括第一任务的信息。
在一种可能的实现方式中,计算设备110还可以包括输入模块(图1中未示出)。该输入模块可用于用户向处理器112输入第一任务的信息。该输入模块例如可以是键盘、麦克风、或触摸感应屏幕等,本申请实施例对输入模块的具体实现方式不作限定。
计算设备120内安装有(或者部署有)第二网卡,图1以第二网卡是网卡121为例。计算设备120可通过网卡121实现对数据的发送和接收。计算设备120包括内存122,该内存122的描述请参考内存113的描述,此处不再赘述。应理解的是,计算设备120还可以包括处理器,网卡121、处理器和内存122之间通过总线通信,图1中未示出。
其中,网卡121,支持报文的接收和发送,以实现计算设备120与其它电子设备之间的通信,该其它电子设备例如为计算设备110。在本申请实施例中,网卡121还可以承担报文头的封装和解封装。在本申请实施例中,计算设备120接收来自计算设备110的数据,则网卡121负责对携带该数据的报文进行解封装。
下面结合图3对本申请实施例提供的一种报文发送、接收方法进行介绍。
S301:处理器112将第一任务的信息写入QPC。
其中,QPC和第一任务的信息的描述请参考术语解释部分的相关内容,此处不再赘述。该第一任务的信息可以是处理器112根据业务等需求确定的,或者是计算设备110和计算设备120预先约定的,或者是用户输入的,本申请实施例对此不作限定。第一任务的信息可以来自用户。例如,用户可通过输入模块(图1中未示出)输入第一任务的信息,或者通过其他方式输入第一任务的信息,本申请实施例对用户的输入方式不限制。输入模块接收到第一任务的信息后,可以将第一任务的信息发送给处理器112;相应的,处理器112接收第一任务的信息。应理解的是,输入模块接收到第一任务的信息后可以对该第一任务的信息进行处理,如识别、或格式转换等,再将处理后的第一任务的信息发送给处理器112,但本申请实施例对此不作限定。
在一种可选的实施方式中,处理器112还可以将第一信息写入QPC。在此情况下,QPC包括第一任务的信息和第一信息。可选的,该第一信息指示第一报文头在报文中的位置可包括,第一信息可指示第一报文头位于MAC头与IP头之间,或指示第一报文头位于IP头与UDP头之间,或位于UDP头与IB头之间,或指示第一报文头位于IB头与净荷之间。其中,第一报文头包括第一任务的信息。该第一信息可以是处理器112确定的,或者是用户输入的,或者是计算设备110与计算设备120预先约定的,本申请实施例对此不作限定。
或者,第一信息指示第一报文头在报文中的位置可包括,第一信息的值可指示第一报文头在报文中的起始位置或结束位置。以图2为例,MAC头占14个比特(bit),IP头占20个比特。例如,第一信息的取值为15,则指示第一报文头在报文的起始位置为第15个比特,此时第一报文头可能位于MAC头之后。又例如,第一信息的值为35,则指示第一报文头在报文的起始位置为第35个比特,此时第一报文头可能位于IP头之后。
在一种可选的实施方式中,处理器112还可以将第二信息写入QPC。在此情况下,QPC包括第一任务的信息和第二信息。例如,处理器112可将第一任务的信息写入QPC,可选的,还可将第一信息和/或第二信息写入QPC。该第二信息可指示是否支持通过报文头发送第一任务的信息。例如,第二信息的值为“0”,表明不支持通过报文头发送第一任务的信息。又例如,第二信息的值为“1”,表明支持通过报文头发送第一任务的信息。在本文的各个实施例中,以第二信息指示支持通过报文头发送第一任务的信息为例进行描述。
S302:处理器112向网卡111发送第一命令。相应的,网卡111接收来自处理器112的第一命令。
第一命令例如为门铃(doorbell)命令等,本申请实施例并不限制。该第一命令指示有信息待发送,或者指示有待发送的信息,或者指示即将发送信息。
示例性的,处理器112可以根据QPC,向网卡111发送第一命令。例如,处理器112根据QPC,生成WQE,并根据该WQE,向网卡111发送第一命令。其中,QPC与WQE对应,WQE与第一命令对应。例如,该第一命令包括指针,该指针用于指向SQ,即指向待发送的SQ。该SQ的内存地址与WQE所指向的内存地址相同。该WQE可指向QPC,具体请参考前面术语描述部分的内容,此处不再赘述。另外,在本实施例中,计算设备110有待发送的信息,所以上述的WQE可替换为SQE。
可选的,网卡111包括网卡引擎411,如图4所示。在这种情况下,S302可由网卡引擎411实现。例如,可由网卡引擎411接收来自处理器112的第一命令。
S303:网卡111根据第一命令获取QPC。
在S303中,网卡111响应于第一命令,获取计算设备110的内存113中的QPC。该QPC包括第一任务的信息。例如,网卡111可以根据第一命令,确定该第一命令对应的WQE,再根据该WQE,读取(或获取)QPC。例如,网卡111解析第一命令,获取该第一命令指向的SQ的内存地址;根据该SQ的内存地址,获取该SQ对应的WQE;再根据该WQE,获取该WQE指向的QPC。
示例性的,网卡111可以将QPC读取到网卡111的存储区域。可选的,该存储区域可以是网卡111的预留存储区域(如记为EX_HDR)。该预留存储区域可理解为网卡111中未被分配或未被使用的存储区域。例如,如果网卡111根据第二信息确定支持通过报文头发送第一任务的信息,那么该网卡111可以将QPC读取到预留存储区域中。
可选的,网卡111包括网卡引擎411,S303可由网卡引擎411实现。例如,可由网卡引擎411根据第一命令获取QPC。
S304:网卡111为第一报文添加第一报文头,得到第二报文。
第一报文头包括第一任务的信息。可选的,该第一报文头还可以包括第一信息和/或第二信息。第一报文可以是对待发送的数据进行封装后得到的报文。该第一报文包括第二报文头和承载该数据的净荷,其中的第二报文头例如可以包括MAC头、IP头、UDP头以及IB头,如图2所示。网卡111为第一报文添加第一报文头后,得到第二报文。该第二报文包括第一报文头、第二报文头和净荷。其中的第二报文头又可理解为该第二报文中除了第一报文头之外剩余的报文头。如图5所示,第一报文头位于IP头和UDP头之间,第二报文头可包括MAC头、IP头、UDP头以及IB头。
网卡111可以根据第一信息为第一报文添加第一报文头,得到第二报文。例如,网卡111在S303中获得的QPC包括第一信息,网卡111可以根据第一信息所指示的第一报文头在报文中的位置为第一报文添加第一报文头,得到第二报文,具体请参考前述有关第一信息的描述,此处不再赘述。
或者,网卡111在为第一报文添加第一报文头时也可以不考虑第一信息。例如,网卡111可以将第一报文头随机插入第一报文,得到第二报文。又例如,网卡111可以根据计算设备110与计算设备120预先约定的位置(如预先约定第一报文头位于MAC头与IP头之间等)将第一报文头插入第一报文,得到第二报文。应理解的是,本申请实施例对S304的具体实现方式并不限定于此。
在一种可选的实施方式中,如果S303中网卡111将QPC读取到了网卡111的预留存储区域,那么在S304中,网卡111可以在预留存储区域中为第一报文添加第一报文头。可选的,网卡111可以在预留存储区域中,根据第一任务的信息生成第一报文头。
可选的,网卡111还可以包括可编程引擎412,如图4所示。在这种情况下,S304可由可编程引擎412实现。例如,可由可编程引擎412为第一报文添加第一报文头得到第二报文。可选的,该可编程引擎412包括预留存储区域,如图4所示。例如,可编程引擎412在该预留存储区域中为第一报文添加第一报文头得到第二报文。
S305:网卡111向计算设备120发送第二报文。相应的,网卡121接收第二报文。
网卡111通过网络130向计算设备120发送第二报文。该第二报文经过至少一个中间设备到达计算设备120。该至少一个中间设备中的每个中间设备可以解析第一报文头,得到第一任务的信息,并根据第一任务的信息执行第一任务。
例如,第一任务的信息包括INT标识,则每个中间设备执行INT。可选的,该至少一个中间设备中的每个中间设备在执行第一任务时,可以在第二报文的净荷中增加第一任务的执行结果。以至少一个中间设备包括中间设备1和中间设备2、第二报文为报文1为例。网卡111将报文1发送给中间设备1。中间设备1通过端口1接收报文1,根据第一报文头中的INT标识执行INT,得到INT信息1,将INT信息1添加到报文1中得到报文2,并通过端口2向中间设备2发送该报文2。中间设备2通过端口3接收到报文2,根据第一报文头的INT标识执行INT,得到INT信息2,将INT信息2添加到报文2中得到报文3,并通过端口4向计算设备120发送该报文3。其中,报文3的净荷中除了包括来自计算设备110的数据之外还包括INT信息1和INT信息2。该INT信息1可包括端口1已接收的报文的数量和/或端口2处等待发送的报文的数量等。该INT信息2可包括端口3已接收的报文的数量和/或端口4处等待发送的报文的数量等。
又例如,第一任务的信息包括路由路径,则中间设备根据该路由路径转发第二报文。以第一任务的信息包括路由路径,该路由路径指示中间设备1的下一跳节点为中间设备2,计算设备110与中间设备1之间建立连接,计算设备120与中间设备2之间建立连接为例,网卡111将第二报文发送给中间设备1;中间设备1接收到第二报文后,根据第一报文头中的路由路径确定下一跳节点为中间设备2,并将第二报文转发给中间设备2;中间设备2接收到第二报文后,将该第二报文发送给计算设备120。
可选的,网卡111还可以包括MAC 413,如图4所示。在这种情况下,S305可由MAC413实现。例如,可由MAC 413向计算设备120发送第二报文。可选的,该网卡111还可以包括中央缓存(buffer)414,如图4所示,用于缓存第二报文,等待发送该第二报文。
至此,计算设备110完成了数据的发送。
S306:网卡121根据第二报文,生成元数据。
在S306中,网卡121可以对第二报文进行预解析,得到元数据。该元数据包括第一报文头的长度和第二报文头的预解析信息。该预解析信息是通过预解析第二报文头得到的、并用于后续解析第二报文头的信息,本申请实施例对预解析信息的内容不作限定。可选的,该元数据还可以包括第一信息。其中,对报文进行预解析可理解为,在对该报文的报文头进行解析之前,对该报文的报文头进行提前加载、关键字解析等,以获取后续用于对该报文的报文头进行解析的信息。
在一种可选的实施方式中,网卡121可以确定第二报文的类型,再根据第二报文的类型生成元数据。例如,网卡121确定第二报文的类型为扩展报文,则可生成除了包括第二报文头的预解析信息之外还包括第一报文头的长度的元数据。可选的,网卡121可以根据第二信息确定第二报文的类型。例如,如果第二信息指示支持通过报文头发送第一任务的信息,则网卡121确定该第二报文的类型为扩展报文;或者,如果第二信息指示不支持通过报文头发送第一任务的信息,则网卡121确定该第二报文的类型为非扩展报文或普通报文。应理解的是,如果第二报文的类型为非扩展报文,那么网卡121生成的元数据中包括第二报文头的预解析信息。
需要说明的是,S305和S306的执行顺序仅为一种示例,本申请实施例对此不作限定。例如,网卡121可以在接收完第二报文之后,对第二报文进行预解析;或者,也可以在接收第二报文的同时,对接收到的报文头进行预解析。
可选的,网卡121包括硬件预解析模块611,如图6所示。在这种情况下,S306可由硬件预解析模块611实现。例如,可由硬件预解析模块611根据第二报文生成元数据。
S307:网卡121根据元数据删除第一报文头,以及根据元数据解析第二报文头得到数据。
例如,网卡121可以根据第一报文头的长度删除第一报文头,以及根据第二报文头的预解析信息解析第二报文头,得到净荷中的数据。或者,网卡121也可以先不删除第一报文头,而是根据第一报文头的长度跳过该第一报文头,以及根据第二报文头的预解析信息解析第二报文头得到净荷中的数据之后,再删除第一报文头。可选的,元数据还包括第一信息,网卡121也可以根据第一报文头的长度和第一信息删除(或跳过)第一报文头。
在一种可选的实施方式中,网卡121可以根据第一报文头的长度生成第二命令,并根据第二命令删除第一报文头。该第二命令例如为报文编辑命令,可指示删除第一报文头。在另一种可选的实施方式中,网卡121可以根据第一报文头的长度和第一信息生成第二命令,并根据第二命令删除第一报文头。
可选的,网卡121还可以包括可编程引擎612,如图6所示。在这种情况下,S307可由可编程引擎612实现。例如,可由可编程引擎612根据元数据删除第一报文头,以及根据元数据解析第二报文头得到数据。
S308:网卡121向内存122发送数据。相应的,内存122接收数据。
S308为可选步骤,图3中用虚线表示。在S307中,网卡121得到第二报文所携带的数据(即净荷中的数据),之后网卡121可以将该数据发送给计算设备120的内存122进行存储或等待被处理等。或者,网卡121也可以将该数据发送给计算设备120的处理器进行处理等。
可选的,网卡121还可以包括中央缓存613,如图6所示。在这种情况下,S308可由中央缓存613实现。例如,可由中央缓存613向内存122发送数据。应理解的是,S308也可以由可编程引擎612实现。例如,可编程引擎612得到数据后,可向内存122发送该数据,无需在中央缓存613中等待被发送,图6中的中央缓存613用虚线表示。
至此,计算设备120完成了数据的接收。
在本申请实施例中,网卡111可以将第一任务的信息添加到第一报文头中,并将第一报文头添加到待发送的第一报文中,这样网卡111可以利用承载待发送数据的报文将第一任务的信息发送给中间设备,而无需单独向中间设备发送承载第一任务的信息的报文,能够减小资源开销。并且,本申请实施例中第一任务的信息从网卡111发出,中间设备可通过解析第一报文头触发执行第一任务,无需对中间设备进行针对触发执行第一任务的定制性开发,能够降低成本,灵活性更高。
下面以第一任务是INT为例,结合图4所示的网卡111对图3中的S301至S305的内容进行介绍。请参考图7,是一种报文发送方法的流程图,该报文发送方法是基于图4所示的网卡111实现,并以第一任务是INT为例。在图7中,网卡111、处理器112以及内存113之间通过PCIe总线进行通信,能够提高传输效率。其中,S71与S301可以是同一个步骤,S72与S302可以是同一个步骤,S73与S303可以是同一个步骤,S74和S75可以是S304的一个示例,S76至S78可以是S305的一个示例。
S71:处理器112将INT标识写入QPC。本实施例中,INT标识可记为user_header=INT,用于指示中间设备执行INT。处理器112还可以将第一信息和第二信息写入QPC(图7未示出)。例如,第一信息可记为user_index=15,用于指示第一报文头在报文中的起始位置是第15个比特;第二信息记为user_flag=ture,用于指示支持通过报文头发送第一任务的信息。
S72:处理器112向网卡引擎411发送门铃(doorbell)。处理器112在SQ中生成SQE,并向网卡引擎411发送门铃,以通知网卡111有待发送的信息。
S73:网卡引擎411获取QPC。网卡引擎411响应于门铃,确定门铃指向的SQE,并根据SQE读取QPC。
S74:可编程引擎412将QPC写入预留存储区域。可编程引擎412根据第二信息将user_header字段读取到预留存储区域中。
S75:可编程引擎412生成第二报文。可编程引擎412开始编辑报文头,原始编辑顺序为MAC头->IP头->UDP头->IB头;而在本申请实施例中,可编程引擎412可以根据第一信息,即user_index=14,为第一报文添加第一报文头,即编辑完MAC头后取出预留存储区域中的user_header字段拼接到MAC头之后,后面报文头正常编辑。最终报文头的编辑结果为MAC头->IP头->第一报文头->UDP头->IB头,如图7所示。之后,可编程引擎412拼接报文头和净荷,得到第二报文。
S76:可编程引擎412向中央缓存414发送第二报文。可编程引擎412将第二报文推送给中央缓存414,等待被发送。
S77:中央缓存414向MAC 413发送第二报文。
S78:MAC 413向计算设备120发送第二报文。
请参考图8,是一种报文接收方法的流程图,该报文接收方法是基于图6所示的网卡121实现,并以第一任务是INT为例。在图8中,网卡121和内存122之间通过PCIe总线进行通信,能够提高传输效率。其中,S81与S305可以是同一个步骤,S82与S306可以是同一个步骤,S83至S85可以是S307的一个示例,S86和S87可以是S308的一个示例。
S81:硬件预解析模块611接收第二报文。
S82:硬件预解析模块611生成元数据。例如,硬件预解析模块611预解析第二报文,确定第二报文的报文类型为扩展报文,以及构建元数据,该元数据包括第一报文头的长度如记为user_head_len,以及第二报文头的预解析信息。可选的,该元数据还可以包括第一信息。
S83:硬件预解析模块611向可编程引擎612发送元数据。
S84:可编程引擎612生成报文编辑命令。可编程引擎612根据第一报文头的长度和第一信息生成报文编辑命令,该报文编辑命令用于指示删除第一报文头。
S85:可编程引擎612解析第二报文头得到数据和INT信息。例如,可编程引擎612可根据报文编辑命令删除第一报文头,以及根据第二报头的预解析信息获取数据和INT信息。其中的INT信息可以是计算设备110与计算设备120之间的至少一个中间设备执行INT得到的信息。
S86:可编程引擎612向中央缓存613发送数据和INT信息。该可编程引擎612可以将数据和INT信息发送给中央缓存613,等待被发送。
S87:中央缓存613向内存122发送数据和INT信息。
基于与方法实施例同一发明构思,本申请实施例还提供了一种网卡。如图9所示,该网卡900包括接口901和处理器902。该网卡900可以是上述各个方法实施例中的网卡111,用于实现上述各个方法实施例中网卡111的功能。或者,该网卡900可以是上述各个方法实施例中的网卡121,用于上述各个方法实施例中网卡121的功能。接口901可用于实现网卡900的收发功能。可选的,该网卡900还可以包括内存,图9中未示出。
例如,网卡900是上述各个方法实施例中的网卡111。
其中,接口901,用于接收来自第一处理器的第一命令,该第一命令指示有待发送的信息。
处理器902,用于根据第一命令,获取第一设备存储的队列对上下文,该队列对上下文包括第一任务的信息,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的设备;以及为待发送的第一报文添加第一报文头,得到第二报文,其中,第一报文头包括第一任务的信息,且第一报文包括待发送的数据。
接口901,还用于向第二设备发送第二报文。
在一种可能的实现方式中,队列对上下文还包括第一信息,第一信息用于指示第一报文头在报文中的位置;在为待发送的第一报文添加第一报文头时,处理器902,具体用于:根据第一信息,为第一报文添加第一报文头。
在一种可能的实现方式中,在为待发送的第一报文添加第一报文头,得到第二报文时,处理器902,具体用于:将队列对上下文读取到第一网卡的预留存储区域;以及,在预留存储区域中,为第一报文添加第一报文头,得到第二报文。
在一种可能的实现方式中,队列对上下文还包括第二信息,第二信息用于指示支持通过报文头发送第一任务的信息。
在一种可能的实现方式中,在根据第一命令,获取第一设备中的队列对上下文时,处理器902,具体用于:根据第一命令,确定第一命令对应的工作队列入口;以及,根据工作队列入口,读取队列对上下文。
在一种可能的实现方式中,第一任务包括带内网络遥测和/或路由转发。
又例如,网卡900是上述各个方法实施例中的网卡121。
接口901,用于接收来自第一设备的第二报文,第二报文包括第一报文头,第二报文头和数据,其中,第一报文头包括第一任务的信息,第一任务是至少一个中间设备在数据传输过程中所执行的任务,至少一个中间设备是在第一设备与第二设备之间中转信息的设备,第二报文头是第二报文中除了第一报文头之外剩余的报文头。
处理器902,用于根据第二报文,生成元数据,其中,元数据包括第一报文头的长度和第二报文头的预解析信息;以及,根据元数据删除第一报文头,以及根据元数据解析第二报文头得到数据。
在一种可能的实现方式中,在根据元数据删除第一报文头时,处理器902,具体用于:根据第一报文头的长度,生成第二命令,第二命令指示删除第一报文头;根据第二命令,删除第一报文头。
在一种可能的实现方式中,元数据还包括第一信息,第一信息用于指示第一报文头在报文中的位置;在根据第一报文头的长度,生成第二命令时,处理器902,具体用于:根据第一报文头的长度和第一信息,生成第二命令。
在一种可能的实现方式中,处理器902,进一步用于:确定第二报文的报文类型是扩展报文。
在一种可能的实现方式中,第一任务包括带内网络遥测和/或路由转发。
需要说明的是,上述各个可选的实施方式的相关特征请对应参考上述各个实施例,此处不再赘述。
基于与方法实施例同一发明构思,本申请实施例还提供一种计算设备,该计算设备中包括网卡,该网卡用于执行上述各个实施例中网卡111执行的方法,或者用于执行上述各个实施例中网卡121执行的方法,相关特征可参见上述方法实施例,此处不再赘述。
基于与方法实施例同一发明构思,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各个实施例中网卡111执行的方法,或者执行上述各个实施例中网卡121执行的方法,或者执行上述各个实施例中计算设备110执行的方法,或者执行上述各个实施例中计算设备120执行的方法。
基于与方法实施例同一发明构思,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个实施例中网卡111执行的方法,或者执行上述各个实施例中网卡121执行的方法,或者执行上述各个实施例中计算设备110执行的方法,或者执行上述各个实施例中计算设备120执行的方法。
基于与方法实施例同一发明构思,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述各个实施例中网卡111执行的方法,或者执行上述各个实施例中网卡121执行的方法,或者执行上述各个实施例中计算设备110执行的方法,或者执行上述各个实施例中计算设备120执行的方法。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (24)

1.一种报文发送方法,其特征在于,应用于第一设备内的第一网卡,所述第一设备还包括第一处理器,所述方法包括:
接收来自所述第一处理器的第一命令,其中,所述第一命令指示有待发送的信息;
根据所述第一命令,获取所述第一设备存储的队列对上下文,其中,所述队列对上下文包括第一任务的信息,所述第一任务是至少一个中间设备在数据传输过程中所执行的任务,所述至少一个中间设备是在所述第一设备与第二设备之间中转信息的设备;
为待发送的第一报文添加第一报文头,得到第二报文,其中,所述第一报文头包括所述第一任务的信息,且所述第一报文包括待发送的数据;
向所述第二设备发送所述第二报文。
2.根据权利要求1所述的方法,其特征在于,所述队列对上下文还包括第一信息,所述第一信息用于指示所述第一报文头在报文中的位置;
为待发送的第一报文添加第一报文头,包括:
根据所述第一信息,为所述第一报文添加第一报文头。
3.根据权利要求1或2所述的方法,其特征在于,所述为待发送的第一报文添加第一报文头,得到第二报文,包括:
将所述队列对上下文读取到所述第一网卡的预留存储区域;
在所述预留存储区域中,为所述第一报文添加所述第一报文头,得到所述第二报文。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述队列对上下文还包括第二信息,所述第二信息用于指示支持通过报文头发送所述第一任务的信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,根据所述第一命令,获取所述第一设备存储的队列对上下文,包括:
根据所述第一命令,确定所述第一命令对应的工作队列入口;
根据所述工作队列入口,读取所述队列对上下文。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述第一任务包括带内网络遥测和/或路由转发。
7.一种报文接收方法,其特征在于,应用于第二设备内的第二网卡,所述方法包括:
接收来自第一设备的第二报文,所述第二报文包括第一报文头,第二报文头和数据,其中,所述第一报文头包括第一任务的信息,所述第一任务是至少一个中间设备在所述数据传输过程中所执行的任务,所述至少一个中间设备是在所述第一设备与所述第二设备之间中转信息的设备,所述第二报文头是所述第二报文中除了所述第一报文头之外剩余的报文头;
根据所述第二报文,生成元数据,其中,所述元数据包括所述第一报文头的长度和所述第二报文头的预解析信息;
根据所述元数据删除所述第一报文头,以及根据所述元数据解析所述第二报文头得到所述数据。
8.根据权利要求7所述的方法,其特征在于,根据所述元数据删除所述第一报文头,包括:
根据所述第一报文头的长度,生成第二命令,所述第二命令指示删除所述第一报文头;
根据所述第二命令,删除所述第一报文头。
9.根据权利要求8所述的方法,其特征在于,所述元数据还包括第一信息,所述第一信息用于指示所述第一报文头在报文中的位置;
根据所述第一报文头的长度,生成第二命令,包括:
根据所述第一报文头的长度和所述第一信息,生成所述第二命令。
10.根据权利要求7至9中任一项所述的方法,其特征在于,所述方法还包括:
确定所述第二报文的报文类型是扩展报文。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述第一任务包括带内网络遥测和/或路由转发。
12.一种网卡,其特征在于,所述网卡设置在第一设备中,所述第一设备还包括第一处理器,所述网卡包括接口和第二处理器;
其中,所述接口,用于接收来自所述第一处理器的第一命令,其中,所述第一命令指示有待发送的信息;
所述第二处理器,用于根据所述第一命令,获取所述第一设备存储的队列对上下文,其中,所述队列对上下文包括第一任务的信息,所述第一任务是至少一个中间设备在数据传输过程中所执行的任务,所述至少一个中间设备是在所述第一设备与第二设备之间中转信息的设备;以及,为待发送的第一报文添加第一报文头,得到第二报文,其中,所述第一报文头包括所述第一任务的信息,且所述第一报文包括待发送的数据;
所述接口,还用于向所述第二设备发送所述第二报文。
13.根据权利要求12所述的网卡,其特征在于,所述队列对上下文还包括第一信息,所述第一信息用于指示所述第一报文头在报文中的位置,所述第二处理器,具体用于:
根据所述第一信息,为所述第一报文添加所述第一报文头。
14.根据权利要求12或13所述的网卡,其特征在于,所述第二处理器,具体用于:
将所述队列对上下文读取到所述网卡的预留存储区域;
在所述预留存储区域中,为所述第一报文头添加所述第一报文头,得到所述第二报文。
15.根据权利要求12至14中任一项所述的网卡,其特征在于,所述队列对上下文还包括第二信息,所述第二信息用于指示支持通过报文头发送所述第一任务的信息。
16.根据权利要求12至15中任一项所述的网卡,其特征在于,所述处理器,具体用于:
根据所述第一命令,确定所述第一命令对应的工作队列入口;
根据所述工作队列入口,读取所述队列对上下文。
17.根据权利要求12至16中任一项所述的网卡,其特征在于,所述第一任务包括带内网络遥测和/或路由转发。
18.一种网卡,其特征在于,所述网卡设置在第二设备中,包括:
接口,用于接收来自第一设备的第二报文,所述第二报文包括第一报文头,第二报文头和数据,其中,所述第一报文头包括第一任务的信息,所述第一任务是至少一个中间设备在所述数据传输过程中所执行的任务,所述至少一个中间设备是在所述第一设备与所述第二设备之间中转信息的中间设备,所述第二报文头是所述第二报文中除了所述第一报文头之外剩余的报文头;
处理器,用于根据所述第二报文,生成元数据,其中,所述元数据包括所述第一报文头的长度和所述第二报文头的预解析信息;以及,根据所述元数据删除所述第一报文头以及根据所述元数据解析所述第二报文头得到所述数据。
19.根据权利要求18所述的网卡,其特征在于,所述处理器,具体用于:
根据所述第一报文头的长度,生成第二命令,所述第二命令指示删除所述第一报文头;
根据所述第二命令,删除所述第一报文头。
20.根据权利要求19所述的网卡,其特征在于,所述元数据还包括第一信息,所述第一信息用于指示所述第一报文头在报文中的位置,所述处理器,具体用于:
根据所述第一报文头的长度和所述第一信息,生成所述第二命令。
21.根据权利要求18至20中任一项所述的网卡,其特征在于,所述处理器,进一步用于:
确定所述第二报文的报文类型是扩展报文。
22.根据权利要求18至21中任一项所述的网卡,其特征在于,所述第一任务包括带内网络遥测和/或路由转发。
23.一种计算设备,其特征在于,所述计算设备中包括网卡,所述网卡用于执行如权利要求1至6中任一项所述的方法,或者用于执行如权利要求7至11中任一项所述的方法。
24.根据权利要求23所述的计算设备,其特征在于,所述计算设备还包括内存,所述内存包括队列对上下文,用于写入第一任务的信息,所述第一任务是至少一个中间设备在数据传输过程中所执行的任务,所述至少一个中间设备是在所述计算设备与第二设备之间中转信息的中间设备。
CN202210593157.4A 2022-05-27 2022-05-27 一种报文发送、接收方法、网卡以及计算设备 Pending CN117176834A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210593157.4A CN117176834A (zh) 2022-05-27 2022-05-27 一种报文发送、接收方法、网卡以及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210593157.4A CN117176834A (zh) 2022-05-27 2022-05-27 一种报文发送、接收方法、网卡以及计算设备

Publications (1)

Publication Number Publication Date
CN117176834A true CN117176834A (zh) 2023-12-05

Family

ID=88938141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210593157.4A Pending CN117176834A (zh) 2022-05-27 2022-05-27 一种报文发送、接收方法、网卡以及计算设备

Country Status (1)

Country Link
CN (1) CN117176834A (zh)

Similar Documents

Publication Publication Date Title
KR101745456B1 (ko) HiL 시뮬레이션 환경에서 대용량 데이터를 전송하기 위한 전자제어 장치, 이를 포함하는 시스템 및 그 방법
CN109088820B (zh) 一种跨设备链路聚合方法、装置、计算装置和存储介质
JP2009031954A (ja) データ処理装置およびデータ転送方法
CN107135189B (zh) 一种报文发送方法及物理机
CN113746749A (zh) 网络连接设备
CN113596017B (zh) 一种协议解析方法、装置、软网关和存储介质
CN105141603A (zh) 通信数据传输方法及系统
CN118227343B (zh) 一种数据处理方法、系统、装置、设备、介质及产品
CN113014510B (zh) 惯导系统分布式测试中数据缓存方法及装置
JP6929946B2 (ja) データ伝送方法、装置、送信端、受信端及びシステム
CN108614792B (zh) 1394事务层数据包存储管理方法及电路
CN114422617B (zh) 一种报文处理方法、系统及计算机可读存储介质
EP4203395A1 (en) Packet forwarding method and apparatus, and computer-readable storage medium
KR102261758B1 (ko) 모바일 네트워크에서 일반 패킷 무선 서비스 터널링 프로토콜 사용자 평면 패킷의 고속 처리방법 및 그 장치
CN112737995B (zh) 以太网帧的处理方法、装置、设备及存储介质
CN111698274B (zh) 数据处理方法及装置
CN114615355B (zh) 报文处理方法以及报文解析模块
CN117176834A (zh) 一种报文发送、接收方法、网卡以及计算设备
CN117499351A (zh) 报文转发装置及方法、通信芯片及网络设备
CN116032837A (zh) 一种流表卸载方法及装置
CN113553279B (zh) 一种rdma通信加速集合通信的方法及系统
CN106789440B (zh) 一种ip包包头检测方法及装置
CN115495406A (zh) 一种基于PCIe的报文传输方法、装置、设备及存储介质
CN114079675B (zh) 报文处理方法、装置、终端设备及移动宽带上网设备
JP2007221522A (ja) ポーリング装置及び端末装置及びポーリング方法及びプログラム

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