1.本技术涉及通信技术领域,尤其涉及一种计算设备、报文接收方法、可编程网卡及存储介质。
背景技术:2.近些年由于网络功能虚拟化(network functions virtualization,nfv)应用的增多,用户事务对性能要求不断增加,使得100g网卡的逐渐普及。随着网卡性能和带宽的不断提升,软件协议解析已无法满足日益增长的网络需求。为了提高物理机的协议解析性能,协议解析硬件卸载技术应运而生。
3.传统的协议解析硬件卸载是针对某一特定场景中的特定协议的特定处理,其它应用可能用不到这些卸载功能,也就不能实现网络加速。
技术实现要素:4.本技术的多个方面提供一种计算设备、报文接收方法、可编程网卡及存储介质,用以实现基于应用的协议硬件卸载,有助于提高硬件卸载的灵活性。
5.本技术实施例提供一种计算设备,包括:处理器、内存和可编程网卡;所述处理器、所述内存及所述可编程网卡通过数据总线连接;
6.目标应用运行于所述处理器;所述内存包括所述可编程网卡对应的目标内存;
7.所述可编程网卡,用于接收待处理报文;根据所述可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给所述目标应用的待处理报文;针对发送给所述目标应用的待处理报文,根据所述可编程网卡中预先配置的所述目标应用的信息需求,从所述待处理报文中,获取所述目标应用所需的目标数据;并以直接内存访问dma方式将所述目标数据写入所述目标内存;
8.所述处理器,用于从所述目标内存中读取所述目标数据;并按照所述目标应用的需求,对所述目标数据进行处理。
9.可选地,处理器还用于:响应于所述目标应用的启动,在所述可编程网卡中配置所述报文筛选规则及所述目标应用的信息需求;以及,为所述可编程网卡配置所述目标内存。
10.本技术实施例还提供一种报文接收方法,所述方法包括:
11.接收待处理报文;
12.根据计算设备的可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给所述目标应用的待处理报文;所述目标应用运行于所述计算设备的处理器;
13.针对发送给所述目标应用的待处理报文,根据所述可编程网卡中预先配置的所述目标应用的信息需求,从所述待处理报文中,获取所述目标应用所需的目标数据;
14.以直接内存访问dma方式将所述目标数据写入所述可编程网卡对应的目标内存,以供所述目标应用从所述目标内存读取所述目标数据。
15.本技术实施例还提供一种信息配置方法,包括:
16.响应于运行于处理器中的目标应用的启动,在计算设备的可编程网卡中配置所述目标应用的报文筛选规则,以供所述可编程网卡筛选发送给所述目标应用的待处理报文;
17.在所述可编程网卡中配置所述目标应用的信息需求,以供所述可编程网卡从所述待处理报文中获取所述目标应用所需的目标数据;
18.为所述可编程网卡配置目标内存,以供所述可编程网卡将所述目标数据写入所述目标内存。
19.本技术实施例还提供一种报文接收方法,包括:
20.接收待处理报文;所述待处理报文为计算设备的可编程网卡接收的报文;所述可编程网卡预先配置有简单文件传输协议tftp应用的报文筛选规则;所述报文筛选规则包括:传输层协议类型及目的端口号;
21.根据所述传输层协议类型及目的端口号,筛选发送给所述tftp应用的待处理报文;所述tftp应用运行于所述计算设备的处理器;
22.针对发送给所述tftp应用的待处理报文,根据所述可编程网卡中预先配置的所述tftp应用的信息需求,从所述待处理报文中,获取所述tftp应用所需的目标数据;
23.以直接内存访问dma方式将所述目标数据写入所述可编程网卡对应的目标内存,以供所述tftp应用从所述目标内存读取所述目标数据。
24.本技术实施例还提供一种可编程网卡,所述可编程网卡用于安装于计算设备;在所述可编程网卡安装于所述计算设备时,所述计算设备的内存包括所述可编程网卡对应的目标内存;
25.所述可编程网卡包括:通信模块、筛选模块、信息获取模块及写入模块;所述通信模块、所述筛选模块、所述信息获取模块及所述写入模块之间电连接;
26.所述通信模块,用于接收待处理报文;
27.所述筛选模块,用于根据所述可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给所述目标应用的待处理报文;所述目标应用运行于所述计算设备的处理器;
28.所述信息获取模块,用于针对发送给所述目标应用的待处理报文,根据所述可编程网卡中预先配置的所述目标应用的信息需求,从所述待处理报文中,获取所述目标应用所需的目标数据;
29.所述写入模块,用于以直接内存访问dma方式将所述目标数据写入所述目标内存,以供所述处理器从所述目标内存中读取所述目标数据,并按照所述目标应用的需求对所述目标数据进行处理。
30.本技术实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行报文接收方法和/或信息配置方法中的步骤。
31.在本技术实施例中,可在可编程网卡中预先配置目标应用的报文筛选规则和信息需求,相应地,可根据预先配置的目标应用的报文筛选规则,筛选发送给目标应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取目标应用所需的目标数据;之后,以dma方式将目标数据写入内存;目标应用可从内存中获取目标数据并处理,可实现应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性。
附图说明
32.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
33.图1和图2为传统方案提供的计算设备的结构示意图;
34.图3为本技术实施例提供的计算设备的结构示意图及信息配置过程示意图;
35.图4为本技术实施例提供的计算设备的结构示意图及报文接收过程示意图;
36.图5为本技术实施例提供的计算设备的结构示意图及另一报文接收过程示意图;
37.图6为本技术实施例提供的tftp应用报文的接收过程示意图;
38.图7为本技术实施例提供的信息配置方法的流程示意图;
39.图8为本技术实施例提供的报文接收方法的流程示意图;
40.图9为本技术实施例提供的另一报文接收方法的流程示意图;
41.图10为本技术实施例提供的可编程网卡的结构示意图。
具体实施方式
42.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
43.图1为一种传统计算设备的结构示意图。如图1所示,传统计算设备可包括:处理器11和网卡12。在图1中,处理器11为串行处理单元,一般为中央处理器(central processing unit,cpu)。处理器11和网卡12可通过数据总线通信连接。数据总线可为串行接口数据总线,例如高速串行计算机扩展总线标准(peripheral component interconnect express,pcie)接口、通用串行总线(universal serial bus,usb)串行接口、rs485接口或rs232接口等等,但不限于此。
44.其中,应用(application)运行于处理器11。应用是指为完成某项或多项特定工作的计算机程序,它运行在应用层。针对图1所示的计算设备,网卡12不具有硬件卸载功能。因此,如图1所示,对于无硬件卸载功能的计算设备,网络协议解析由处理器11执行。如图1所示,网卡12可接收发送给应用的报文,并将该报文通过数据总线传输至处理器11。处理器11对网络报文的处理需要经过协议栈解析后,传输至应用层的应用进行使用。协议栈解析包括但不局限于链路层、网络层及传输层等各层的协议栈解析。这种软件协议逐层解析处理性能差,延迟较大。特别是处理长报文时,由于需要多次cpu内存拷贝,严重影响软件的处理性能。
45.为了提高处理性能,降低处理延迟,在一些传统方案中,如图2所示,网卡12被设计为可卸载某些协议栈的功能。在图2所示的计算设备中,网卡12可获取数据包,网卡12实现特定的协议解析功能。网卡12可实现数据发送方向的功能卸载,也可实现数据接收方向的功能卸载。
46.例如,在一些方案中,网卡12可实现虚拟局域网(virtual local area network,vlan)处理的功能卸载。vlan功能卸载是指:由网卡12实现发送报文时vlan标签(vlan tag)的插入以及接收报文时vlan tag的剥离由网卡12硬件等,可以减轻处理器11的负荷。
47.又例如,在一些方案中,网卡12可实现传输控制协议(transmission control protocol,tcp)tcp分片功能的硬件卸载(tcp segment offload,tso)。该功能为发送方向的功能。如我们所知,tcp协议可协商决定发送的tcp分片的大小。网卡12根据tcp分片的大小,对tcp报文进行分片等,可以大幅减轻处理器11软件对tcp分片的负担。
48.隧道(tunnel)硬件卸载是指:网卡12进行识别虚拟可扩展局域网(virtual extensible local area network,vxlan)和采用通用路由封装的网络虚拟化(nvgre)的数据包,并能对这些虚拟化技术涉及的网际协议(internet protocol,ip)协议、tcp或用户数据报协议(user datagram protocol,udp)等提供校验和(check sum)的功能,从而减轻处理器11的负担。
49.上述传统方案中的硬件功能卸载,可实现协议解析卸载,实现硬件加载。但是,上述传统方案的卸载功能都是针对某一场景中某一协议的特定处理,硬件卸载的灵活性较低,对于很多应用可能用不到这些卸载功能,也就不能实现网络加速。
50.例如,对于设计为具有tcp分片功能的硬件卸载的网卡12,而某应用a发送的tcp报文的数据量较小,并不需要进行tcp分片,则该应用a也就用不到tcp分片的硬件卸载。又例如,对于设计为具有tunnel硬件卸载的网卡12,发送给某应用b的数据包并非vxlan数据包,对于应用b来说也就用不到tunnel硬件卸载。
51.为了提高硬件卸载的灵活性,在本技术一些实施例中,可在可编程网卡中预先配置目标应用的报文筛选规则和信息需求,相应地,可根据预先配置的目标应用的报文筛选规则,筛选发送给目标应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取目标应用所需的目标数据;之后,以dma方式将目标数据写入内存;目标应用可从内存中获取目标数据并处理。一方面可实现应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性;另一方面,由可编程网卡从待处理报文中获取目标应用所需的目标数据,并以dma方式将目标数据写入内存,可实现基于应用需求的数据按需复制,有助于降低内存数据复制大,降低数据复制导致的内存墙问题。
52.以下结合附图,详细说明本技术各实施例提供的技术方案。
53.应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
54.图3-图5为本技术实施例提供的计算设备的结构示意图。结合图3-图5,该计算设备包括:处理器11和可编程网卡13。其中,处理器11和可编程网卡13通信连接。可选地,处理器11和可编程网卡13可通过数据总线通信连接。数据总线可为串行接口数据总线,例如pcie串行接口、usb串行接口、rs485接口或rs232接口等等,但不限于此。
55.在本实施例中,处理器11可为cpu。cpu可为独立的芯片,也可为片上芯片系统(system on chip,soc)集成的cpu,或者为微控制单元(microcontroller unit,mcu)中集成的cpu等。
56.可编程网卡13是指设置有硬件处理器131的网卡。硬件处理器131是指采用硬件描述语言(hardware description language,hdl)进行数据处理的硬件处理器。其中,硬件描述语言可以为超高速集成电路硬件描述语言(very-high-speed integrated circuit hardware description language,vhdl)、verilog hdl、system verilog或system c等。可
编程网卡13中的硬件处理器可为现场可编程门阵列(field-programmable gate array,fpga)、可编程阵列逻辑器件(programmable array logic,pal)、通用阵列逻辑器件(general array logic,gal)、复杂可编程逻辑器件(complex programmable logic device,cpld)等;或者,可编程网卡13中的硬件处理器也可为(专用集成电路,application specific integrated circuit,asic)。
57.可编程网卡13可安装于计算设备上。可选地,可编程网卡13可设置总线接口,并通过总线接口安装于计算设备上。其中,总线接口可为串行总线接口,如pcie串行接口、usb串行接口、rs485接口或rs232接口等等,但不限于此。
58.在本实施例中,处理器11上运行有应用。处理器11上运行的应用可为1个或多个。多个是指2个或2个以上。在本技术实施例中,应用需要通过可编程网卡13接收数据。可编程网卡13可通过网卡的网络接口132接收发送给应用的报文。
59.在本实施例中,网络接口132中的通信组件被配置为便于其所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如wifi,2g或3g,4g,5g或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还可基于近场通信(near field communication,nfc)技术、射频识别(radio frequency identification,rfid)技术、红外数据协会(infrared data association,irda)技术、超宽带(ultra wide band,uwb)技术、蓝牙(bluetooth,bt)技术或其他技术来实现。
60.在本技术实施例中,为了提高协议解析硬件卸载的灵活性,提出了针对应用的硬件卸载方案。处理器11上运行的各应用进行协议解析硬件卸载的过程相同或相似,下面以处理器11运行的目标应用为例,对基于应用的协议解析硬件卸载方案进行示例性说明。
61.如图3所示,可针对目标应用预先配置报文筛选规则及目标应用的信息需求。目标应用的报文筛选规则是用于筛选发送给目标应用的报文的,可通过报文筛选规则判定可编程网卡13接收到的报文是否为发送给目标应用的报文。目标应用的信息需求,用于规定可编程网卡13输出的内容和输出的内容的数据格式,用于指示可编程网卡13从接收到的报文中获取目标应用所需的应用数据,及可编程网卡13输出应用数据的数据格式。
62.如图3所示,基于上述报文筛选规则及目标应用的信息需求,处理器11可响应于目标应用的启动,在可编程网卡13中配置目标应用的报文筛选规则。该报文筛选规则可供可编程网卡13筛选发送给目标应用的报文,即待处理报文。相应地,处理器11还可在可编程网卡13中配置目标应用的信息需求。目标应用的信息需求可供可编程网卡13从待处理报文中获取目标应用所需的目标数据。
63.在本技术实施例中,处理器11可采用硬件编程语言在可编程网卡13中配置目标应用的报文筛选规则和目标应用的信息需求。目标应用的报文筛选规则和目标应用的信息需求可设置于硬件处理器131中。
64.由于报文是发送给处理器11中运行的应用的,因此,可编程网卡13从报文中提取的目标数据,需要写入计算设备的内存14中。为了提高内存写入速度,还可为可编程网卡13预先配置内存。相应地,如图3所示,处理器11还可响应于目标应用的启动,为可编程网卡13配置目标内存。可编程网卡可以直接内存访问(direct memory access,dma)方式将目标数据写入目标内存。
65.在一些实施例中,如图3所示,可编程网卡13还包括:缓存单元133。缓存单元133用于缓存可编程网卡13的网络接口132接收到的报文。相应地,可编程网卡13可将待处理报文缓存至缓存单元133;并从缓存单元133中读取待处理报文进行报文处理。
66.基于上述预先配置的报文筛选规则、目标应用的需求信息及目标内存,如图4所示,可编程网卡13对于接收到的待处理报文,可根据可编程网卡13中预先配置的目标应用对应的报文筛选规则,筛选发送给目标应用的待处理报文。确切地说,可编程网卡13可根据目标应用对应的报文筛选规则,判定接收到的待处理报文是否为发送给目标应用的报文。待处理报文可为可编程网卡13接收到的任一报文,该待处理报文可为从缓存单元133读取的报文。
67.在一些实施例中,报文筛选规则可包括:偏移地址和该偏移地址的期望数据。偏移地址用于指示期望数据在待处理报文中的位置。期望数据是指目标应用规定的该偏移地址的数据是什么。
68.可选地,可以控制访问列表(access control lists,acl)规则设置偏移地址和期望数据。例如,偏移地址可为报文的目的mac地址、源mac地址、以太协议类型、目的ip地址,源ip地址、vlan信息、传输层协议类型、源端口号及目的端口号等中的一种或多种信息在报文中的偏移地址;相应地,期望数据则偏移地址的规定的数据。例如,偏移地址为报文的目的ip地址,则期望数据则为规定的目标ip地址。
69.基于预先配置的偏移地址x和偏移地址x的期望数据,可编程网卡13从接收到的待处理报文中,获取待处理报文的偏移地址x记录的实际数据;并比较偏移地址x的实际数据和偏移地址x的期望数据是否一致,判断接收到的待处理报文是否为目标应用的待处理报文。若偏移地址x的实际数据和偏移地址x的期望数据一致,则确定接收到的待处理报文为发送给目标应用的待处理报文。
70.上述仅以目标应用为例,对筛选应用的待处理报文的实施方式进行了示例性说明。对于处理器11中运行多个应用,且每个应用在可编程网卡13中预先配置有相应报文筛选规则的实施例,可根据每个应用预先配置的报文筛选规则,筛选该应用的待处理报文。对于未通过任何应用的报文筛选规则的待处理报文,可编程网卡13可将待处理报文发送给处理器11,由处理器11对待处理报文进行协议栈解析等。
71.针对发送给目标应用的待处理报文,可编程网卡13可根据可编程网卡13中预先配置的目标应用的信息需求,从待处理报文中获取目标应用所需的目标数据。
72.在一些实施例中,处理器11可通过配置目标应用所需数据的起始偏移地址及数据长度,来配置目标应用的信息需求。相应地,目标应用的信息需求可包括:目标应用所需数据的起始偏移地址y及设定的数据长度。即,以起始偏移地址y及设定的数据长度表示目标应用的信息需求。相应地,可编程网卡13可根据起始偏移地址,从待处理报文中,从起始偏移地址y开始获取上述设定数据长度的数据,作为目标应用所需的目标数据。
73.在该实施例中,一方面可编程网卡13可通过硬件加速功能提高报文处理速度;另一方面,可编程网卡13通过起始偏移地址和设定的数据长度,即可从待处理报文中获取目标数据,可跳过复杂的协议栈处理过程,降低协议栈处理导致的延迟,进一步提高报文处理速度。
74.在另一些实施例中,处理器11可通过为目标字段指定可编程网卡13的寄存器;并
通过配置该寄存器的状态来表征目标应用对目标字段的信息需求。例如,处理器11可响应于目标应用的启动,将可编程网卡13的目标寄存器分配给目标字段;并将目标寄存器配置为目标状态,以表征目标应用对目标字段的信息需求。其中,目标寄存器可为可编程网卡13的任一寄存器。例如,目标字段为报文的载荷(payload),处理器11可将可编程网卡13的目标寄存器分配给目标应用的目标字段;并将目标寄存器配置的状态配置为“1”,即目标状态为“1”,目标寄存器的状态为“1”,表征目标应用的信息需求为报文的载荷。
75.相应地,目标应用的信息需求包括:目标应用对目标字段的信息需求。可编程网卡13的目标寄存器的目标状态表征目标应用对目标字段的信息需求。基于此,可编程网卡13可查询目标寄存器的状态;若目标寄存器的状态为目标状态,确定目标应用所需数据为所述目标字段。进一步,可编程网卡13可对待处理报文进行解析,以得到待处理报文的解析结果;之后,可从待处理报文的解析结果中,获取目标字段对应的数据,作为目标应用所需的目标数据。例如,目标字段为报文的载荷(payload),可编程网卡13可从待处理报文的解析结果中,获取待处理报文的载荷(payload)部分,作为目标应用所需的目标数据。
76.相较于传统方案中由处理器进行协议栈解析,该实施例由可编程网卡13对待处理报文进行协议栈解析,可实现硬件加速,提高报文处理效率。
77.在另一些实施例中,还可预先配置对应的报文处理方式。相应地,如图5所示,处理器11可在可编程网卡13中预先配置计算单元134。该计算单元134被配置为目标应用对应的报文处理方式。计算单元134可实现为硬件描述语言编写的硬件计算单元,可设置于硬件处理器131中。相应地,如图5所示,针对接收到的待处理报文,计算单元134可根据预先配置的目标应用对应的报文处理方式,对待处理报文进行处理等等。
78.在一些实施例中,目标应用对应的报文处理方式可实现为报文的完整性校验。相应地,可编程网卡13可利用计算单元134按照设定的完整性校验方式,对待处理报文进行完整性校验等。
79.例如,完整性校验方式可为校验和(check sum)。其中,检验和是存在于各种报文中的一个字段,它存在的目的是验证报文在网络传输过程中的完整性。报文的发送端,会根据报文中的首部或数据来计算一个检验和。例如,ip报文的检验和只对首部进行计算,以太网控制报文协议(internet control message protocol,icmp)报文对报文首部和数据都进行计算等等。
80.相应地,可编程网卡13可利用计算单元134对待处理报文的对报文的首部或数据进行一次检验和计算,如果可编程网卡13的计算单元134计算出来的检验和与待处理报文中的校验和一致,说明待处理报文通过完整性校验。若发送端发送的可编程网卡13的计算单元134计算出来的检验和与待处理报文中的校验和一致,说明待处理报文通过完整性校验不一致,则可编程网卡13可丢弃待处理报文。
81.进一步,对于通过完成新校验的待处理报文,可编程网卡13可根据可编程网卡13中预先配置的所述目标应用的信息需求,从待处理报文中,获取目标应用所需的目标数据。
82.上述实施例示出的可编程网卡13筛选目标应用的待处理报文,及从发送给目标应用的待处理报文中获取目标应用所需的目标数据的实施方式仅为示例性说明,并不构成限定。
83.进一步,可编程网卡13可将目标应用所需的目标数据,以dma方式写入目标内存。
在一些实施例中,目标应用的信息需求还包括:目标应用支持的目标数据格式。相应地,可编程网卡13可按照目标数据格式,将目标数据转换为目标数据格式,以得到具有目标数据格式的目标数据;并以dma方式将具有目标数据格式的目标数据,写入目标内存,以供目标应用从目标内存读取具有目标数据格式的目标数据。
84.对于处理器11来说,可从目标内存中读取目标数据,并按照目标应用的需求,对目标数据进行处理。对于具有目标数据格式的目标数据,处理器11可从目标内存读取具有目标数据格式的目标数据;并按照目标应用的需求,对具有目标数据格式的目标数据进行处理。
85.其中,处理器11对目标数据进行处理的具体实施方式,主要由目标应用的需求决定。在一些实施例中,目标应用的需求为对目标数据进行渲染,则处理器11可对目标数据进行渲染,以展示目标数据等。在另一些实施例中,目标应用的需求是对目标数据进行校验,处理器11可按照设定的校验方式对目标数据进行校验等,在此不做限定。
86.在本技术实施例中,为了便于对目标内存存储的数据进行管理,如图4和图5所示,可对目标内存存储的数据设置头指针(head)指针和尾(tail)指针。其中,可按照先入先出(first input first output,fifo)方式进行目标内存的写入和读取。具体地,可编程网卡13在将目标数据写入目标内存时,可更新尾指针。例如,可编程网卡13目标数据写入目标内存时,可将尾指针更新至目标数据的存储位置。处理器11在从目标内存中读取数据时,也可更新头指针。即处理器11可在从目标内存中读取数据时,将头指针更新至读取数据的下一位置。在该实施例中,在头指针和尾指针相等时,表示目标内存中无数据。图4和图5,数据条目表示目标内存中存储的数据。每个数据条目可占用一个或多个内存页。
87.在本实施例中,可在可编程网卡中预先配置目标应用的报文筛选规则和信息需求,相应地,可根据预先配置的目标应用的报文筛选规则,筛选发送给目标应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取目标应用所需的目标数据;之后,以dma方式将目标数据写入内存;目标应用可从内存中获取目标数据并处理。一方面可实现应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性;另一方面,由可编程网卡从待处理报文中获取目标应用所需的目标数据,并以dma方式将目标数据写入内存,可实现基于应用需求的数据按需复制,有助于降低内存数据复制大,降低数据复制导致的内存墙问题。其中,内存墙,指的是内存性能严重限制cpu性能发挥的现象。
88.在本技术实施例中,除了预先配置应用的报文筛选规则及应用的信息需求之外,还可删除应用的报文筛选规则及应用的信息需求。具体地,处理器11可响应于目标应用的结束操作,删除可编程网卡13中配置的目标应用的报文筛选规则及目标应用的信息需求,并释放目标内存等等。对于预先配置有计算单元的目标应用,还可删除预先配置的目标应用的计算单元。
89.为了更清楚说明本实施例提供的协议解析硬件卸载过程,下面以简单文件传输协议(trivial file transfer protocol,tftp)的应用为例,结合图6对本技术实施例提供的报文接收过程进行示例性说明。
90.如图6所示,tftp应用的服务端(tftp server)61和tftp应用的客户端62,均包括:处理器11和可编程网卡13。其中,服务端61的可编程网卡13中预先配置有tftp应用的报文筛选规则。tftp应用的报文筛选规则包括:传输层协议为udp报文,且udp报文的目的端口号
为69。其中,传输层协议的类型可以偏移地址x及偏移地址x的期望数据17进行表示。因为udp报文的协议号为17,所以偏移地址x的期望数据为17。相应地,udp报文的目的端口号可以偏移地址y和偏移地址y的期望数据为69进行表示。相应地,服务端61的可编程网卡13中预先配置的报文筛选规则包括:偏移地址x和偏移地址x的期望数据17,以及,偏移地址y及偏移地址y的期望数据69。
91.服务端61的可编程网卡13中还预先配置有tftp应用的信息需求。该信息需求包括:报文的载荷(payload)。其中,如图6所示,报文的载荷可以偏移地址z及设定的数据长度l1进行表示。
92.如图6所示,对于服务端61,可编程网卡13可接收客户端62发送的待处理报文1。可编程网卡13可根据报文筛选规则中的偏移地址x和y,分别从待处理报文1中获取偏移地址x的实际数据和偏移地址y的实际数据。进一步,可编程网卡13可判断偏移地址x的实际数据是否与偏移地址x的期望数据17一致;并判断偏移地址y的实际数据是否与偏移地址x的期望数据69一致。若判断结果为偏移地址x的实际数据与偏移地址x的期望数据17一致,且偏移地址y的实际数据与偏移地址y的期望数据69一致,则服务端61的可编程网卡13可根据预先配置的tftp应用的信息需求,从待处理报文1中获取目标数据。具体地,服务端61的可编程网卡13可根据偏移地址z及设定的数据长度l1,从待处理报文的偏移地址z处开始获取数据长度l1的数据,即图6中目标数据1。进一步,可编程网卡13可以dma方式将目标数据1写入服务端61中可编程网卡13对应的目标内存中。服务端61的处理器11便可从目标内存中读取目标数据1,并根据tftp应用的需求,对目标数据1进行处理。
93.相应地,对于客户端62,客户端62的可编程网卡13中预先配置有tftp应用的报文筛选规则。tftp应用的报文筛选规则包括:传输层协议为udp报文,且udp报文的目的端口号为m。m为应用使用的协议端口号。其中,传输层协议的类型可以偏移地址x及偏移地址x的期望数据17进行表示。相应地,udp报文的目的端口号可以偏移地址p和偏移地址p的期望数据为m进行表示。相应地,客户端62的可编程网卡13中预先配置的报文筛选规则包括:偏移地址x和偏移地址x的期望数据17,以及,偏移地址p及偏移地址p的期望数据m。
94.客户端62的可编程网卡13中还预先配置有tftp应用的信息需求。该信息需求包括:报文的载荷(payload)。其中,如图6所示,报文的载荷可以偏移地址q及设定的数据长度l2进行表示。
95.如图6所示,对于客户端62,可编程网卡13可接收服务端61发送的待处理报文2。可编程网卡13可根据报文筛选规则中的偏移地址x和p,分别从待处理报文2中获取偏移地址x的实际数据和偏移地址p的实际数据。进一步,可编程网卡13可判断偏移地址x的实际数据是否与偏移地址x的期望数据17一致;并判断偏移地址p的实际数据是否与偏移地址p的期望数据m一致。若判断结果为偏移地址x的实际数据与偏移地址x的期望数据17一致,且偏移地址y的实际数据与偏移地址x的期望数据69一致,则客户端62的可编程网卡13可根据偏移地址q及设定的数据长度l2,从待处理报文的偏移地址q处开始获取数据长度l2的数据,即图6中目标数据2。进一步,可编程网卡13可以dma方式将目标数据2写入客户端62中可编程网卡13对应的目标内存中。客户端62的处理器11便可从目标内存中读取目标数据2,并根据tftp应用的需求,对目标数据2进行处理。
96.上述服务端61和客户端62的处理器11可直接获取报文的载荷数据,无需处理以太
网链路层协议,网络层协议及传输层协议,且读取的报文数据均为有效数据,可降低内存数据的复制量,降低内存墙问题。
97.除了上述实施例提供的计算设备之外,本技术实施例还提供报文接收方法和信息配置方法,下面对本技术实施例提供的信息配置方法和报文接收方法进行说明。
98.图7为本技术实施例提供的信息配置方法的流程示意图。如图7所示,该信息配置方法主要包括:
99.701、响应于运行于处理器中的目标应用的启动,在计算设备的可编程网卡中配置目标应用的报文筛选规则,以供可编程网卡筛选发送给目标应用的待处理报文。
100.702、在可编程网卡中配置目标应用的信息需求,以供可编程网卡从待处理报文中获取目标应用所需的目标数据。
101.703、为可编程网卡配置目标内存,以供可编程网卡将目标数据写入目标内存。
102.图8为本技术实施例提供的报文接收方法的流程示意图。如图8所示,该报文接收方法主要包括:
103.801、接收待处理报文。
104.802、根据计算设备的可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给目标应用的待处理报文;目标应用运行于计算设备的处理器。
105.803、针对发送给目标应用的待处理报文,根据可编程网卡中预先配置的目标应用的信息需求,从待处理报文中,获取目标应用所需的目标数据。
106.804、以dma方式将目标数据写入可编程网卡对应的目标内存,以供目标应用从目标内存读取目标数据。
107.关于本技术实施例中,处理器和可编程网卡的描述,可参见上述设备实施例的相关内容,在此不再赘述。处理器上运行的各应用进行协议解析硬件卸载的过程相同或相似,下面以处理器运行的目标应用为例,对基于应用的协议解析硬件卸载方案进行示例性说明。
108.具体地,可针对目标应用预先配置报文筛选规则及目标应用的信息需求。关于目标应用的报文筛选规则和目标应用的信息需求的描述,可参见上述设备实施例的相关内容,在此不再赘述。
109.基于上述报文筛选规则及目标应用的信息需求,在步骤701中,可响应于目标应用的启动,在可编程网卡中配置目标应用的报文筛选规则。该报文筛选规则可供可编程网卡筛选发送给目标应用的报文,即待处理报文。相应地,在步骤702中,还可在可编程网卡中配置目标应用的信息需求。目标应用的信息需求可供可编程网卡从待处理报文中获取目标应用所需的目标数据。
110.在本技术实施例中,可采用硬件编程语言在可编程网卡中配置目标应用的报文筛选规则和目标应用的信息需求。目标应用的报文筛选规则和目标应用的信息需求可设置于硬件处理器中。
111.由于报文是发送给处理器中运行的应用的,因此,从报文中提取的目标数据,需要写入计算设备的内存中。为了提高内存写入速度,在步骤703中,还可为可编程网卡预先配置内存。相应地,还可响应于目标应用的启动,为可编程网卡配置目标内存。可编程网卡可以dma方式将目标数据写入目标内存。
112.基于上述预先配置的报文筛选规则、目标应用的需求信息及目标内存,如图8所示,在步骤801中,可接收待处理报文;并在步骤802中,可根据可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给目标应用的待处理报文。确切地说,可根据目标应用对应的报文筛选规则,判定接收到的待处理报文是否为发送给目标应用的报文。待处理报文可为可编程网卡接收到的任一报文,该待处理报文可为从缓存单元读取的报文。
113.在一些实施例中,报文筛选规则可包括:偏移地址和该偏移地址的期望数据。偏移地址用于指示期望数据在待处理报文中的位置。期望数据是指目标应用规定的该偏移地址的数据是什么。
114.基于预先配置的偏移地址x和偏移地址x的期望数据,从接收到的待处理报文中,获取待处理报文的偏移地址x记录的实际数据;并比较偏移地址x的实际数据和偏移地址x的期望数据是否一致,判断接收到的待处理报文是否为目标应用的待处理报文。若偏移地址x的实际数据和偏移地址x的期望数据一致,则确定接收到的待处理报文为发送给目标应用的待处理报文。
115.上述仅以目标应用为例,对筛选应用的待处理报文的实施方式进行了示例性说明。对于处理器中运行多个应用,且每个应用在可编程网卡中预先配置有相应报文筛选规则的实施例,可根据每个应用预先配置的报文筛选规则,筛选该应用的待处理报文。对于未通过任何应用的报文筛选规则的待处理报文,可将待处理报文发送给处理器,由处理器对待处理报文进行协议栈解析等。
116.针对发送给目标应用的待处理报文,在步骤803中,可根据可编程网卡中预先配置的目标应用的信息需求,从待处理报文中获取目标应用所需的目标数据。
117.在一些实施例中,可通过配置目标应用所需数据的起始偏移地址及数据长度,来配置目标应用的信息需求。相应地,目标应用的信息需求可包括:目标应用所需数据的起始偏移地址y及设定的数据长度。即,以起始偏移地址y及设定的数据长度表示目标应用的信息需求。相应地,可根据起始偏移地址,从待处理报文中,从起始偏移地址y开始获取上述设定数据长度的数据,作为目标应用所需的目标数据。
118.在该实施例中,一方面可编程网卡可通过硬件加速功能提高报文处理速度;另一方面,可编程网卡通过起始偏移地址和设定的数据长度,即可从待处理报文中获取目标数据,可跳过复杂的协议栈处理过程,降低协议栈处理导致的延迟,进一步提高报文处理速度。
119.在另一些实施例中,可通过为目标字段指定可编程网卡的寄存器;并通过配置该寄存器的状态来表征目标应用对目标字段的信息需求。例如,可响应于目标应用的启动,将可编程网卡的目标寄存器分配给目标字段;并将目标寄存器配置为目标状态,以表征目标应用对目标字段的信息需求。
120.相应地,目标应用的信息需求包括:目标应用对目标字段的信息需求。可编程网卡的目标寄存器的目标状态表征目标应用对目标字段的信息需求。基于此,可查询目标寄存器的状态;若目标寄存器的状态为目标状态,确定目标应用所需数据为所述目标字段。进一步,可编程网卡可对待处理报文进行解析,以得到待处理报文的解析结果;之后,可从待处理报文的解析结果中,获取目标字段对应的数据,作为目标应用所需的目标数据。
121.相较于传统方案中由处理器进行协议栈解析,该实施例由可编程网卡对待处理报
文进行协议栈解析,可实现硬件加速,提高报文处理效率。
122.在另一些实施例中,还可预先配置对应的报文处理方式。相应地,可在可编程网卡中预先配置计算单元。该计算单元被配置为目标应用对应的报文处理方式。计算单元可实现为硬件描述语言编写的硬件计算单元,可设置于硬件处理器中。相应地,针对接收到的待处理报文,可根据预先配置的目标应用对应的报文处理方式,对待处理报文进行处理等等。
123.在一些实施例中,目标应用对应的报文处理方式可实现为报文的完整性校验。相应地,可利用计算单元按照设定的完整性校验方式,对待处理报文进行完整性校验等。
124.进一步,对于通过完成新校验的待处理报文,可根据可编程网卡中预先配置的所述目标应用的信息需求,从待处理报文中,获取目标应用所需的目标数据。
125.上述实施例示出的可编程网卡筛选目标应用的待处理报文,及从发送给目标应用的待处理报文中获取目标应用所需的目标数据的实施方式仅为示例性说明,并不构成限定。
126.进一步,在步骤804中,可将目标应用所需的目标数据,以dma方式写入目标内存。在一些实施例中,目标应用的信息需求还包括:目标应用支持的目标数据格式。相应地,可按照目标数据格式,将目标数据转换为目标数据格式,以得到具有目标数据格式的目标数据;并以dma方式将具有目标数据格式的目标数据,写入目标内存,以供目标应用从目标内存读取具有目标数据格式的目标数据。
127.对于处理器来说,可从目标内存中读取目标数据,并按照目标应用的需求,对目标数据进行处理。对于具有目标数据格式的目标数据,可从目标内存读取具有目标数据格式的目标数据;并按照目标应用的需求,对具有目标数据格式的目标数据进行处理。
128.其中,对目标数据进行处理的具体实施方式,主要由目标应用的需求决定。在一些实施例中,目标应用的需求为对目标数据进行渲染,则可对目标数据进行渲染,以展示目标数据等。在另一些实施例中,目标应用的需求是对目标数据进行校验,可按照设定的校验方式对目标数据进行校验等,在此不做限定。
129.在本实施例中,可在可编程网卡中预先配置目标应用的报文筛选规则和信息需求,相应地,可根据预先配置的目标应用的报文筛选规则,筛选发送给目标应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取目标应用所需的目标数据;之后,以dma方式将目标数据写入内存;目标应用可从内存中获取目标数据并处理。一方面可实现应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性;另一方面,由可编程网卡从待处理报文中获取目标应用所需的目标数据,并以dma方式将目标数据写入内存,可实现基于应用需求的数据按需复制,有助于降低内存数据复制大,降低数据复制导致的内存墙问题。其中,内存墙,指的是内存性能严重限制cpu性能发挥的现象。
130.在本技术实施例中,除了预先配置应用的报文筛选规则及应用的信息需求之外,还可删除应用的报文筛选规则及应用的信息需求。具体地,可响应于目标应用的结束操作,删除可编程网卡中配置的目标应用的报文筛选规则及目标应用的信息需求,并释放目标内存等等。对于预先配置有计算单元的目标应用,还可删除预先配置的目标应用的计算单元。
131.为了更清楚说明本实施例提供的协议解析硬件卸载过程,下面以tftp应用为例,对本技术实施例提供的报文接收方法进行示例性说明。
132.图9为本技术实施例提供的另一报文接收方法的流程示意图。该报文接收方法可
适用于tftp应用的服务端,也可适应于tftp应用的客户端。如图9所示,该报文接收方法主要包括:
133.901、接收待处理报文。
134.待处理报文为计算设备的可编程网卡接收的报文;可编程网卡预先配置有简单文件传输协议tftp应用的报文筛选规则;报文筛选规则包括:传输层协议类型及目的端口号。
135.对于tftp应用的服务端,传输层协议类型可为udp报文,目的端口号可为69。对于tftp应用的客户端,传输层协议类型可为udp报文,目的端口号可为m。m为应用使用的协议端口号。
136.902、根据传输层协议类型及目的端口号,筛选发送给tftp应用的待处理报文;tftp应用运行于计算设备的处理器。
137.903、针对发送给tftp应用的待处理报文,根据可编程网卡中预先配置的tftp应用的信息需求,从待处理报文中,获取tftp应用所需的目标数据。
138.904、以dma方式将目标数据写入可编程网卡对应的目标内存,以供tftp应用从目标内存读取目标数据。
139.关于步骤901-904的具体实施方式,可参见上述图6的相关内容,在此不再赘述。本实施例提供的报文接收方法,可在可编程网卡中预先配置tftp应用的报文筛选规则和信息需求,相应地,可根据预先配置的tftp应用的报文筛选规则,筛选发送给tftp应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取tftp应用所需的目标数据;之后,以dma方式将目标数据写入内存;tftp应用可从内存中获取目标数据并处理,可实现tftp应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性。
140.需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤701和702的执行主体可以为设备a;又比如,步骤701的执行主体可以为设备a,步骤702的执行主体可以为设备b;等等。
141.另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如701、702等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
142.相应地,本技术实施例还提供一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述报文接收方法和/或信息配置方法中的步骤。
143.图10为本技术实施例提供的可编程网卡的结构示意图。如图10所示,该可编程网卡可安装于计算设备上。可编程网卡通过总线接口的方式安装于计算设备。总线接口可为pcie接口、pci接口、usb接口、rs485接口或rs232接口等等。在可编程网卡安装于计算设备时,计算设备的内存包括可编程网卡对应的目标内存。其中,目标内存是预先配置给可编程网卡的内存。
144.如图10所示,计算设备可包括:通信模块100a、筛选模块100b、信息获取模块100c及写入模块100d。其中,通信模块100a、筛选模块100b、信息获取模块100c及写入模块100d之间电连接。在本实施例中,通信模块100a、筛选模块100b、信息获取模块100c及写入模块
100d是指以可编程网卡支持的硬件编程语言编写的硬件功能模块。
145.在本实施例中,通信模块100a,用于接收待处理报文。
146.筛选模块100b,用于根据可编程网卡中预先配置的目标应用对应的报文筛选规则,筛选发送给目标应用的待处理报文;目标应用运行于计算设备的处理器。
147.信息获取模块100c,用于针对发送给目标应用的待处理报文,根据可编程网卡中预先配置的目标应用的信息需求,从待处理报文中,获取目标应用所需的目标数据。
148.写入模块100d,用于以dma方式将目标数据写入目标内存,以供处理器从目标内存中读取目标数据,并按照目标应用的需求对目标数据进行处理。
149.在一些实施例中,报文筛选规则包括:第一偏移地址和第一偏移地址的期望数据。相应地,筛选模块100b在筛选发送给目标应用的待处理报文时,具体用于:根据第一偏移地址,从待处理报文中获取第一偏移地址记录的实际数据;若第一偏移地址记录的实际数据和第一偏移地址的期望数据一致,则确定待处理报文为发送给目标应用的待处理报文。
150.可选地,目标应用的信息需求包括:目标应用所需数据的起始偏移地址及设定的数据长度。相应地,信息获取模块100c在从待处理报文中,获取目标应用所需的目标数据时,具体用于:根据起始偏移地址,从待处理报文中,从起始偏移地址开始获取设定数据长度的数据,作为目标数据。
151.可选地,目标应用的信息需求包括:目标应用对目标字段的信息需求;可编程网卡的目标寄存器的目标状态表征目标应用对目标字段的信息需求。相应地,信息获取模块100c在从待处理报文中获取目标应用所需的目标数据时,具体用于:查询目标寄存器的状态;若目标寄存器的状态为目标状态,确定目标应用所需数据为目标字段;对待处理报文进行解析,以得到待处理报文的解析结果;从待处理报文的解析结果中,获取目标字段对应的数据,作为目标数据。
152.在另一些实施例中,目标应用的信息需求包括:目标应用支持的目标数据格式。信息获取模块100c还用于:按照目标数据格式,将目标数据转换为目标数据格式,以得到具有目标数据格式的目标数据。
153.相应地,写入模块100d在以dma方式将目标数据写入可编程网卡对应的目标内存时,具体用于:以dma方式将具有目标数据格式的目标数据,写入目标内存,以供目标应用从目标内存读取具有目标数据格式的目标数据。
154.在又一些实施例中,可编程网卡还可包括:处理模块100d。处理模块100d与信息获取模块100c电连接。处理模块100d用于:根据可编程网卡中预先配置的目标应用对应的报文处理方式,对待处理报文进行处理;并将处理后的待处理报文提供给信息获取模块100c。
155.本实施例提供的可编程网卡,可根据预先配置的目标应用的报文筛选规则,筛选发送给目标应用的待处理报文;并根据预先配置的目标应用的信息需求,可从发送给待处理报文中获取目标应用所需的目标数据;之后,以dma方式将目标数据写入内存;目标应用可从内存中获取目标数据并处理,可实现应用根据需求灵活配置硬件卸载功能,有助于提高硬件卸载的灵活性。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
156.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
157.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
158.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
159.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
160.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
161.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
162.计算机的存储介质为可读存储介质,也可称为可读介质。可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
163.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括上述要素的过程、方法、商品或者设备中还存在另外的相同要素。
164.以上内容仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。