掌桥专利:专业的专利平台
掌桥专利
首页

一种报文处理方法、装置、智能网卡和服务器

文献发布时间:2023-06-19 19:04:00


一种报文处理方法、装置、智能网卡和服务器

技术领域

本发明涉及通信技术领域,尤其涉及一种报文处理方法、装置、智能网卡和服务器。

背景技术

随着数据中心流量的增长,服务器网络端口支持的端口速率也越来越大,从传统的10G、25G正逐渐向100G、200G甚至更高的速率发展。网络带宽和连接数量的剧增,使得服务器CPU(Central Processing Unit/Processor,中央处理器)的算力被大量消耗在网络报文处理上。智能网卡是为数据中心专门设计的一种网络加速设备,可以将服务器CPU上的网络报文处理工作卸载到网卡上处理。

目前将CPU上的网络报文处理工作卸载到网卡上处理的方式主要有三种:一是在智能网卡收到网络报文后,通过DMA(Direct Memory Access,直接存储器访问)将收到报文放到主机RingBuffer(无锁环形缓存器)缓存中,然后网卡向CPU发出中断请求,通知CPU有报文送达,再由操作系统的TCP/IP协议栈(Transmission Control Protocol/InternetProtocol,传输控制协议/网间协议)进行解析处理;二是基于智能网卡支持五元组分流的特性,基于报文头部的IP号、端口号、协议类型等信息,将接收到的网络报文分流到指定的网卡队列,通过多队列的方式处理网络报文,从而减少网络资源竞争,提高处理时延;三是通过OVS(Open Virtual Switch,开放虚拟交换机)全硬件卸载的处理方式,将流表下发到智能网卡中,智能网卡会根据流表中预定义的包处理规则,对报文进行匹配,匹配后的报文会做上送、转发、丢弃等处理。

但是,通过TCP/IP协议栈进行网络报文处理的方法会频繁触发中断,引起中断处理的上下文切换,当网络报文大的时候,报文处理性能及时延都会表现很差;而通过五元组分流方法处理报文的方式虽然对网络报文进行了一定程度的分类,但是相同五元组信息的报文会被分流到同一队列,难以做到负载均衡,而且经过分流后的报文依然需要经过TCP/IP协议栈进行报文处理;通过OVS全硬件卸载的方法进行网络报文的处理,虽然可以很好地将主机CPU处理的网络流量卸载到硬件中进行处理,但是该方法开发适配困难,部署维护难度大,需要消耗较多的硬件资源,增加了使用及维护成本。

发明内容

本发明实施例提供了一种报文处理方法、装置、智能网卡和服务器

为了解决上述技术问题,本发明实施例提供了一种报文处理方法,应用于智能网卡,包括:

接收以太网报文;

调用特征值获取进程,获取所述以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程;所述目标特征值为与主机中的应用程序相匹配的特征值;

调用所述数据获取进程,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存中,,以供所述应用程序根据所述目标特征值从所述目标缓存中提取所述原始数据包进行处理。

可选地,在所述接收以太网报文之前,还包括:

接收主机下发的目标特征值,并将所述目标特征值存入所述智能网卡的存储区中;所述目标特征值为所述主机根据所述应用程序生成。

可选地,所述目标特征值为所述主机根据所述主机的IP地址和所述应用程序的端口号生成。

可选地,所述调用特征值获取进程,获取所述以太网报文的第一特征值,包括:

根据数据链路层协议解析所述以太网报文,获得IP报文;

根据IP协议解析所述IP报文,获得TCP报文以及所述IP报文的报文头中的目的IP地址;

根据TCP协议解析所述TCP报文,获取所述TCP报文头中的目的端口号;

根据所述目的IP地址和目的端口号,计算所述第一特征值。

可选地,所述接收以太网报文之后,还包括:

将所述以太网报文存入第一接收缓存中;

所述在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程,包括:

在所述第一特征值与预设的目标特征值匹配的情况下,,将所述以太网报文存入供所述数据获取进程处理的第二接收缓存;所述第二接收缓存与所述第一接收缓存不同;

所述调用所述数据获取进程,根据所述以太网报文获取原始数据包,包括:

调用所述数据获取进程,从所述第二接收缓存获取读取所述以太网报文,并从所述以太网报文中获取原始数据包。

可选地,所述调用所述数据获取进程,根据所述以太网报文获取原始数据包,包括:

获取所述以太网报文中的IP头中的分片信息;

在所述分片信息小于或等于最大传输单元值的情况下,,从所述以太网报文的数据段中获取所述原始数据包;

在所述分片信息大于最大传输单元值的情况下,基于IP协议和/或TCP协议,对多个所述以太网报文进行IP分片重组操作和/或TCP重排列操作,以获取所述原始数据包。

为了解决上述技术问题,本发明实施例还提供了一种数据处理方法,应用于主机,所述主机中安装有应用程序,包括:

由所述应用程序获取所述应用程序的目标特征值;

由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存中获取原始数据包;所述目标缓存中的原始数据包由所述智能网卡的数据获取进程,根据所述以太网报文获取并存入;所述以太网报文由所述智能网卡的特征值获取进程在所述第一特征值与预设的目标特征值匹配的情况下发送给所述数据获取进程;所述第一特征值由所述特征值获取进程根据所述以太网报文获取;

由所述应用程序对所述原始数据包进行处理。

可选地,所述由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存中获取原始数据包,包括:

由所述应用程序根据所述目标特征值,调用网卡驱动的预设接口,从与所述目标特征值对应的目标缓存中获取原始数据包。

为了解决上述技术问题,本发明实施例还提供了一种报文处理装置,应用于智能网卡,包括:

接收模块,用于接收以太网报文;

第一调用模块,用于调用特征值获取进程,获取所述以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程;所述目标特征值为与主机中的应用程序相匹配的特征值;

第二调用模块,用于调用所述数据获取进程,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存中,以供所述应用程序根据所述目标特征值从所述目标缓存中提取所述原始数据包进行处理。

为了解决上述技术问题,本发明实施例还提供了一种数据处理装置,应用于主机,所述主机中安装有应用程序,包括:

第一获取模块,用于由所述应用程序获取所述应用程序的目标特征值;

第二获取模块,用于由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存中获取原始数据包;所述目标缓存中的原始数据包由所述智能网卡的数据获取进程,根据所述以太网报文获取并存入;所述以太网报文由所述智能网卡的特征值获取进程在所述第一特征值与预设的目标特征值匹配的情况下发送给所述数据获取进程;所述第一特征值由所述特征值获取进程根据所述以太网报文获取;

处理模块,用于由所述应用程序对所述原始数据包进行处理。

为了解决上述技术问题,本发明实施例还提供了一种智能网卡,所述智能网卡用于实现如上任一项所述的报文处理的方法。

为了解决上述技术问题,本发明实施例还提供了一种服务器,所述服务器包括如上所述的智能网卡。

在本发明实施例中,通过调用特征值获取进程获取接收到的以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程;通过调用所述数据获取进程,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存中,以供所述应用程序根据所述目标特征值从所述目标缓存中提取所述原始数据包进行处理。由于预设的目标特征值为与主机中的应用程序相匹配的特征值,因此,可以通过智能网卡中的特征值获取进程和数据获取进程完成对第一特征值与预设的目标特征值匹配的以太网报文的解析处理,将智能网卡接收到的大部分以太网报文的解析处理卸载到所述智能网卡上进行处理,经过智能网卡处理得到的原始数据包可以供主机中的应用程序处理使用,释放了CPU的算力资源。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

图1是本发明实施例提供的一种报文处理方法的步骤流程图;

图2是本发明实施例提供的一种数据处理方法的步骤流程图;

图3是本发明实施例提供的又一种报文处理方法的步骤流程图;

图4是本发明实施例提供的一种报文处理装置的逻辑框图;

图5是本发明实施例提供的一种数据处理装置的逻辑框图;

图6是本发明实施例提供的一种智能网卡的结构示意图;

图7是本发明实施例提供的一种服务器的结构示意图。

附图标记:

600:智能网卡;610:接收缓存;620:可编程逻辑器件(FPGA);621:特征值获取进程;622:数据获取进程;630:网卡硬盘;700:服务器;710:中央处理器;720:硬盘;730:目标缓存。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

为使本领域技术人员更好地理解本发明,以下对本发明涉及的概念进行说明:

TCP/IP协议栈(Transmission Control Protocol/Internet Protocol,传输控制协议/网间协议):或称为网络通讯协议,是在网络的使用中的最基本的通信协议。TCP/IP协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP协议严格来说是一个四层的体系结构,分别是应用层、传输层、网络层和数据链路层。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP和IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

以太网报文:以太网报文通常由报文头和在应用层由应用程序生成的应用数据包组成。以太网报文的报文头由外到内可以分为MAC头部、IP头部和TCP头部,其中,MAC头部包括源MAC地址和目的MAC地址等信息,属于L2层网络的范畴,有了MAC头部信息,该条以太网报文就可以被交换机学习转发,同时智能网卡也可以基于MAC头部信息来判断接收到的以太网报文是否是发送给所述智能网卡的;IP头部包括源IP地址、目的IP地址等信息,属于L3层网络的范畴,有了IP信息,路由器就可以根据路由表将所述以太网报文转发到目标IP地址中。同时IP头部还包括IP分片信息,对于大于网卡MTU(Maximum Transmission Unit,最大传输单元)值的以太网报文会被分片,这个IP分片信息通常由TCP/IP协议栈中的网络层进行处理,另外,IP头部还包括协议号信息,用于标识所述以太网报文属于哪种类型,比如TCP/UDP/ICMP;TCP头部包括端口号信息,所述端口号信息用于供应用程序收发数据使用。

FPGA(Field-Programmable Gate Array,可编程逻辑器件):FPGA是在CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)的基础上发展起来的新型高性能可编程逻辑器件,一般采用SRAM(Static Random-Access Memory,静态随机存储)工艺,也有一些专用器件采用Flash工艺或反熔丝(Anti-Fuse)工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。

CheckSum校验:在网络中传输数据包,为了保证传输数据的正确性,使用CheckSum来校验数据是否正确,以太网报文的报文头中的MAC头部、IP头部和TCP头部分别有自己的CheckSum值,用于校验报文在传输过程中有无异常。CheckSum值一般为CRC16校验值,对CRC16值的校验过程可以放到智能网卡中进行。。

DMA(Direct Memory Access,直接存储器访问):是一种通信机制,该通信机制允许不同速度的硬件装置来沟通,而不需要依赖CPU的大量中断负载。DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA传输对于高效能嵌入式系统算法和网络具有重要意义。

在本发明实施例中,图1示出了本发明实施例提供的一种报文处理方法的步骤流程图,应用于智能网卡600,如图1所示,该方法可以包括:

步骤S110、接收以太网报文。

在本发明实施例中,所述智能网卡600与服务器主机建立通信连接的情况下,通过智能网卡600的接收端口接收第二设备发送的以太网报文,其中,所述第二设备发送的原始数据在发送到以太网传输的过程中,会层层封装报文头部信息得到以太网报文,并通过智能网卡600的接收端口被所述智能网卡600接收。

具体地,所述第二设备为与所述智能网卡600连接的服务器主机之外的任一设备。

具体地,智能网卡600与服务器主机之间通过DMA通信机制进行通信连接。

步骤S120、调用特征值获取进程621,获取所述以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622。

本发明实施例中,所述智能网卡600安装有FPGA 620,并且在FPGA620中通过程序语言的修改例化出所述特征值获取进程621和所述数据获取进程622;其中,所述特征值获取进程621用于对接收到的以太网报文的报文头信息进行解析,并获取所述以太网报文的第一特征值;所述数据获取进程622用于在所述第一特征值与预设的目标特征值匹配的情况下,获取所述以太网报文的原始数据包并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,以供所述应用程序根据所述目标特征值从所述目标缓存730中提取所述原始数据包进行处理。

本发明实施例中,在调用特征值获取进程621之后,获取所述以太网报文的第一特征值之前,还可以包括对所述以太网报文进行解析,具体为对所述以太网报文的报文头进行解析。

具体地,对所述以太网报文的报文头进行解析,可以包括以下步骤:

获取所述以太网报文的MAC头部信息、IP头部信息和TCP头部信息,其中所述MAC头部信息包括MAC头部CheckSum值和目的MAC地址,所述IP头部信息包括IP头部CheckSum值、源IP地址、目的IP地址和传输层协议类型,所述TCP头部信息包括TCP头部CheckSum值、源端口号和目的端口号;

分别对所述MAC头部CheckSum值、IP头部CheckSum值和TCP头部CheckSum值进行校验;

在所述MAC头部CheckSum值校验通过的情况下,将所述以太网报文的目的MAC地址与所述智能网卡600的本地MAC地址进行匹配;

在所述以太网报文的目的MAC地址与所述智能网卡600的本地MAC地址一致的情况下,将所述以太网报文放入智能网卡600的接收缓存610中;

在所述以太网报文的目的MAC地址与所述智能网卡600的本地MAC地址不一致的情况下,将所述以太网报文丢弃;

在所述IP头部CheckSum值校验通过的情况下,记下所述目的IP地址;

在所述TCP头部CheckSum值校验通过的情况下,记下所述目的端口号;

在所述MAC头部CheckSum值校验、IP头部CheckSum值校验和TCP头部CheckSum值校验中,任一项校验不通过的情况下,将所述以太网报文丢弃。

可选地,所述调用特征值获取进程621,获取所述以太网报文的第一特征值,可以包括以下步骤:

根据数据链路层协议解析所述以太网报文,获得IP报文;

根据IP协议解析所述IP报文,获得TCP报文以及所述IP报文的报文头中的目的IP地址;

根据TCP协议解析所述TCP报文,获取所述TCP报文头中的目的端口号;

根据所述目的IP地址和目的端口号,计算所述第一特征值。

本发明实施例中,获取所述以太网报文的第一特征值为所述特征值获取进程621基于前述解析结果,获取所述以太网报文的目的IP地址和目的端口号,调用哈希算法,将所述以太网报文的目的IP地址和目的端口号作为哈希函数的输入值,经过哈希计算后,得到基于所述以太网报文的目的IP地址和目的端口号的特征码,所述特征码即为本发明实施例中所述的第一特征值。因此,以太网报文的第一特征值对应所述以太网报文的接收设备的主机IP地址和主机中应用程序对应的端口号。

本发明实施例中,在获取所述以太网报文的第一特征值之后,将所述第一特征值与智能网卡600中预设的目标特征值进行匹配,,并且在第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622;在第一特征值与预设的目标特征值不匹配的情况下,将所述以太网报文存入第三接收缓存中。

可选地,所述接收以太网报文之后,还包括:将所述以太网报文存入第一接收缓存中;

所述在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622,可以包括:

在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文存入供所述数据获取进程622处理的第二接收缓存;所述第二接收缓存与所述第一接收缓存不同。

本发明实施例中,第一接收缓存、第二接收缓存和第三接收缓存为所述智能网卡600的接收缓存610,但是第一接收缓存、第二接收缓存和第三接收缓存的存储内容互不相同;其中,第一接收缓存中存储所述智能网卡600通过接收端口接收的以太网报文,第二接收缓存中存储第一特征值与预设的目标特征值匹配的以太网报文,第三接收缓存中存储第一特征值与预设的目标特征值不匹配的以太网报文。

可选地,在所述接收以太网报文之前,还可以包括:接收主机下发的目标特征值,并将所述目标特征值存入所述智能网卡600的存储区中;所述目标特征值为所述主机根据所述应用程序生成。

可选地,所述目标特征值为所述主机根据所述主机的IP地址和所述应用程序的端口号生成。

本发明实施例中,所述应用程序为服务器主机中的应用程序,所述应用程序可以分为专用应用程序和通用应用程序。其中,本发明实施例中所述专用应用程序为用户主机编写的、与自身业务相关的应用程序,本发明实施例中的所述通用应用程序为可以从互联网公开下载使用的通用计算机应用程序。

具体地,本发明实施例中,主机的大部分应用程序属于专用应用程序,所述专用应用程序在部署之后,会被分配专属端口号,所述专属端口号用于网络间的socket(套接字,应用程序通常通过"套接字"向网络发出请求或者应答网络请求)通信,每个专用应用程序使用各专属的端口号进行网络间的通信。

在本发明实施例中,所述主机根据所述主机的IP地址和所述专用应用程序的端口号生成目标特征值,并向所述智能网卡600下发所述目标特征值,所述智能网卡600将所述目标特征值存入所述智能网卡600的存储区中,作为预设的目标特征值与接收到的以太网报文的第一特征值进行匹配。因此,在所述第一特征值与预设的目标特征值匹配的情况下,所述第一特征值对应的以太网报文与主机中的具有指定端口号的专用应用程序匹配;在所述第一特征值与预设的目标特征值不匹配的情况下,所述第一特征值对应的以太网报文与主机中任一专用应用程序都不匹配,所以将所述以太网报文存储在智能网卡600第三接收缓存中交由主机的TCP/IP协议栈解析处理后由通用应用程序直接处理使用。

步骤S130、调用所述数据获取进程622,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,以供所述应用程序根据所述目标特征值从所述目标缓存730中提取所述原始数据包进行处理。

可选地,所述调用所述数据获取进程622,根据所述以太网报文获取原始数据包,可以包括:调用所述数据获取进程622,从所述第二接收缓存获取读取所述以太网报文,并从所述以太网报文中获取原始数据包。

本发明实施例中,智能网卡600中设置一个或多个预设的目标特征值,所述第二接收缓存可以相应设置一个或多个子接收缓存,对应于智能网卡600中一个或多个不同的目标特征值。具体地,在所述第一特征值与预设的目标特征值匹配的情况下,相同第一特征值的以太网报文会被存入相同的第二接收缓存的子接收缓存中,不同第一特征值的以太网报文会被存入不同的第二接收缓存的子接收缓存中。

本发明实施例中,所述原始数据包为所述以太网报文中,去掉报文头后剩下的应用数据部分。所述原始数据包为在应用层由应用程序生成的原始应用数据。

本发明实施例中,所述调用所述数据获取进程622,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,具体可以为,调用数据获取进程622,根据所述以太网报文的IP分片信息和IP协议和/或TCP协议信息获取所述以太网报文的原始数据包,并将所述原始数据包存入与所述预设的目标特征值对应的第二接收缓存的相应子接收缓存中,并通过DMA通信机制将所述接收缓存610中的原始数据包存入主机中与所述目标特征值对应的目标缓存730中。

可选地,所述调用所述数据获取进程622,根据所述以太网报文获取原始数据包,还可以包括以下步骤:

获取所述以太网报文中的IP头中的分片信息;

在所述分片信息小于或等于最大传输单元值的情况下,从所述以太网报文的数据段中获取所述原始数据包;

在所述分片信息大于最大传输单元值的情况下,基于IP协议和/或TCP协议,对多个所述以太网报文进行IP分片重组操作和/或TCP重排列操作,以获取所述原始数据包。

本发明实施例中,在所述第二设备发送的原始数据包的长度大于网卡的MTU值的情况下,所述原始数据包会被基于IP协议进行分片操作,并在IP头部信息中生成IP分片信息。在本发明实施例所述智能网卡600接收到所述以太网报文之后,并且在所述第一特征值与预设的目标特征值匹配的情况下,所述数据获取进程622会根据所述以太网报文中的IP头中的分片信息对所述以太网报文对应的数据包进行分片重组,同时根据TCP协议对所述需要分片重组的数据包进行重排列操作,以保证分片重组后的数据包与第二设备发出的原始数据包的顺序对应一致。

图2示出了本发明实施例提供的一种数据处理方法的步骤流程图,应用于主机,如图2所示,该方法可以包括:

步骤S210、由所述应用程序获取所述应用程序的目标特征值。

在本发明实施例中,由所述专用应用程序获取所述专用应用程序对应的目标特征值,所述目标特征值与所述专用应用程序所在的主机的IP以及所述专用应用程序专属的端口号对应一致。

步骤S220、由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存730中获取原始数据包;所述目标缓存730中的原始数据包由所述智能网卡600的数据获取进程622,根据所述以太网报文获取并存入;所述以太网报文由所述智能网卡600的特征值获取进程621在所述第一特征值与预设的目标特征值匹配的情况下发送给所述数据获取进程622;所述第一特征值由所述特征值获取进程621根据所述以太网报文获取。

本发明实施例中,主机中设置有一个或多个与所述不同目标特征值对应的不同的目标缓存730,所述目标缓存730与专用应用程序通过目标特征值一一对应。具体地,所述专用应用程序根据其所对应的目标特征值,从与所述目标特征值对应的目标缓存730中获取原始数据包。

可选地,所述由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存730中获取原始数据包,还可以包括以下步骤:

由所述应用程序根据所述目标特征值,调用网卡驱动的预设接口,从与所述目标特征值对应的目标缓存730中获取原始数据包。

本发明实施例中,所述智能网卡600对应特定的驱动程序,当所述智能网卡600与所述主机建立通信连接时,在所述主机中安装与所述智能网卡600对应的特定驱动程序。

本发明实施例中,主机的缓存包括与目标特征值对应的目标缓存730的同时,还可以包括不按照目标特征值划分的通用缓存,所述通用缓存用于存储所述智能网卡600中第三接收缓存中的第一特征值与预设的目标特征值不匹配的以太网报文,第三接收缓存中的以太网报文由所述智能网卡600的数据获取进程通过DMA通信机制存入主机中的通用缓存中。

本发明实施例中,在智能网卡600的数据获取进程622通过DMA通信机制将所述接收缓存610中的原始数据包和/或以太网报文存入主机中的目标缓存730中之后,所述方法还可以包括:

所述特定驱动程序对主机缓存中数据进行分类处理,所述主机缓存中的数据可以分为两类,分别为:存储在所述主机的目标缓存730中的与目标特征值对应的原始数据包和存储在所述主机的通用缓存中的第一特征值与目标特征值不匹配的以太网报文;

由于存储在所述主机的目标缓存730中的与目标特征值对应的原始数据包是经过所述智能网卡600中的特征值获取进程621和数据获取进程622处理后的原始数据包,所述原始数据包可以由主机中的专用应用程序直接获取处理,因此,特定驱动程序对存储在所述主机的目标缓存730中的与目标特征值对应的原始数据包不做处理;

对于存储在所述主机中通用缓存中的第一特征值与目标特征值不匹配的以太网报文,所述特定驱动通过调用中断处理函数,通知TCP/IP协议栈对所述存储在所述主机中通用缓存中的以太网报文进行解析处理,经过TCP/IP协议栈解析处理后的通用原始数据包直接交给主机中的通用应用程序进行处理。

本发明实施例中,主机中的目标缓存730可以为RingBuffer(无锁环形缓存器)缓存。具体地,所述RingBuffer缓存中设置有两个指针,分别为head指针和tail指针,其中head指针用于指向下一次读的位置,tail指针用于指向下一次写的位置。RingBuffer缓存可用一个数组进行存储,数组内元素的内存地址是连续的,也就是说,在硬件级别,数组中的元素是会被预加载的,因此在RingBuffer中,CPU无需时不时去主内存加载数组中的下一个元素。通过对head指针和tail指针的移动,可以实现数据在数组中的环形存取。

步骤S230、由所述应用程序对所述原始数据包进行处理。

在本发明实施例中,由所述专用应用程序对所述目标缓存730中的原始数据包进行轮询处理。具体地,专用应用程序根据所述应用程序对应的目标特征值到与所述目标特征值对应的目标缓存730中查找是否有待处理的原始数据包,在所述目标缓存730中有待处理的原始数据包的情况下,所述专用应用程序将所述原始数据包去处进行处理;在所述目标缓存730中没有待处理的原书数据包的情况下,所述专用应用程序在下一周期开始时再在所述目标缓存730中查找待处理的原始数据包。

本发明实施例中,图3示出了本发明实施例提供的又一种报文处理方法的步骤流程图,如图3所示,所述方法包括如下步骤:

步骤S310、接收以太网报文。

在本发明实施例中,所述智能网卡600通过接收端口接收第二设备发送的以太网报文,并将所述以太网报文存入所述智能网卡600的第一接收缓存中。

步骤S320、调用特征值获取进程621,获取所述以太网报文的第一特征值。

在本发明实施例中,所述智能网卡600首先调用特征值获取进程621,对所述以太网报文的报文头进行解析和CheckSum校验,在所述CheckSun校验通过的情况下,获取所述报文头中目的IP地址和目的端口号,并基于所述目的IP地址和目的端口号进行哈希计算得到所述以太网报文的第一特征值。

步骤S330、判断所述第一特征值和所述预设的目标特征值是否匹配。

本发明实施例中,在所述第一特征值和所述预设的目标特征值不匹配的情况下,将所述以太网报文交由主机进行处理。

在本发明实施例中,在确定所述第一特征值和所述预设的目标特征值不匹配的情况下,将所述以太网报文存入所述智能网卡600的第三接收缓存中,然后所述数据获取进程622通过DMA通信机制将所述第三接收缓存中的以太网报文存入主机的通用缓存中。

步骤S340、特定驱动程序调用中断处理函数,通知TCP/IP协议栈进行报文解析。

在本发明实施例中,对于存储在所述主机中通用缓存中的第一特征值与目标特征值不匹配的以太网报文,所述特定驱动通过调用中断处理函数,通知TCP/IP协议栈对所述存储在所述主机中通用缓存中的以太网报文进行解析处理,经过TCP/IP协议栈解析处理后的通用原始数据包直接交给主机中的通用应用程序进行处理。

步骤S350、通用应用程序直接获取所述使用TCP/IP协议栈解析后的通用原始数据包,并对所述通用原始数据包进行处理。

步骤S360、在所述第一特征值和所述预设的目标特征值匹配的情况下,调用所述数据获取进程622,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,以供所述应用程序根据所述目标特征值从所述目标缓存730中提取所述原始数据包进行处理。

在本发明实施例中,在确定所述第一特征值和所述预设的目标特征值匹配的情况下,在调用所述数据获取进程622,根据所述以太网报文获取原始数据包,还包括:

将所述以太网报文存入所述智能网卡600的第二接收缓存中;

调用所述数据获取进程622,从所述第二接收缓存获取读取所述以太网报文,并从所述以太网报文中获取原始数据包。

本发明实施例中,所述调用所述数据获取进程622,根据所述以太网报文获取原始数据包,包括:

获取所述以太网报文中的IP头中的分片信息;

在所述分片信息小于或等于最大传输单元值的情况下,,从所述以太网报文的数据段中获取所述原始数据包;

在所述分片信息大于最大传输单元值的情况下,基于IP协议和/或TCP协议,对多个所述以太网报文进行IP分片重组操作和/或TCP重排列操作,以获取所述原始数据包。

在本发明实施例中,在所述调用所述数据获取进程622,根据所述以太网报文获取原始数据包之后,所述数据获取进程622将所述原始数据包存入与所述预设的目标特征值对应的第二接收缓存的相应子接收缓存中,并通过DMA通信机制将所述接收缓存610中的原始数据包存入主机中与所述目标特征值对应的目标缓存730中。

步骤S370、特定驱动程序对所述目标缓存730中的原始数据包不做处理。

在本发明实施例中,由于存储在所述主机的目标缓存730中的与目标特征值对应的原始数据包是经过所述智能网卡600中的特征值获取进程621和数据获取进程622处理后的原始数据包,所述原始数据包可以由主机中的专用应用程序直接获取处理,因此,特定驱动程序对存储在所述主机的目标缓存730中的与目标特征值对应的原始数据包不做处理。

步骤S380、专用应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存730中获取原始数据包,并对所述原始数据包进行处理。

在本发明实施例中,由所述专用应用程序对所述目标缓存730中的原始数据包进行轮询处理。具体地,专用应用程序根据所述应用程序对应的目标特征值到与所述目标特征值对应的目标缓存730中查找是否有待处理的原始数据包,在所述目标缓存730中有待处理的原始数据包的情况下,所述专用应用程序将所述原始数据包去处进行处理;在所述目标缓存730中没有待处理的原书数据包的情况下,所述专用应用程序在下一周期开始时再在所述目标缓存730中查找待处理的原始数据包。

在本发明实施例中,通过调用特征值获取进程621获取接收到的以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622;通过调用所述数据获取进程622,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,以供所述应用程序根据所述目标特征值从所述目标缓存730中提取所述原始数据包进行处理。由于预设的目标特征值为与主机中的应用程序相匹配的特征值,因此,可以通过智能网卡600中的特征值获取进程621和数据获取进程622完成对第一特征值与预设的目标特征值匹配的以太网报文的解析处理,将智能网卡600接收到的大部分以太网报文的解析处理卸载到所述智能网卡600上进行处理,经过智能网卡600处理得到的原始数据包可以供主机中的应用程序处理使用,释放了CPU的算力资源。

图4示出了本发明实施例提供的一种报文处理装置的逻辑框图,应用于智能网卡600,如图4所示,所述报文处理装置包括:

接收模块410,用于接收以太网报文;

第一调用模块420,用于调用特征值获取进程621,获取所述以太网报文的第一特征值,并在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622;所述目标特征值为与主机中的应用程序相匹配的特征值;

第二调用模块430,用于调用所述数据获取进程622,根据所述以太网报文获取原始数据包,并将所述原始数据包存入与所述目标特征值相匹配的目标缓存730中,以供所述应用程序根据所述目标特征值从所述目标缓存730中提取所述原始数据包进行处理。

可选地,所述接收模块410,包括:

接收子模块,用于接收主机下发的目标特征值,并将所述目标特征值存入所述智能网卡600的存储区中;所述目标特征值为所述主机根据所述应用程序生成。

可选地,所述第一调用模块420,包括:

第一获取子模块,用于获取所述以太网报文的第一特征值;

发送子模块,用于在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文发送给数据获取进程622;所述目标特征值为与主机中的应用程序相匹配的特征值。

可选地,所述第一获取子模块,包括:

解析单元,用于根据数据链路层协议解析所述以太网报文,获得IP报文;

第一获取单元,用于根据IP协议解析所述IP报文,获得TCP报文以及所述IP报文的报文头中的目的IP地址;

第二获取单元,用于根据TCP协议解析所述TCP报文,获取所述TCP报文头中的目的端口号;

计算单元,用于根据所述目的IP地址和目的端口号,计算所述第一特征值。

可选地,所述第二调用模块430,包括:

第二获取模块,用于获取所述以太网报文中的IP头中的分片信息;

第三获取模块,用于在所述分片信息小于或等于最大传输单元值的情况下,从所述以太网报文的数据段中获取所述原始数据包;

第四获取模块,用于在所述分片信息大于最大传输单元值的情况下,基于IP协议和/或TCP协议,对多个所述以太网报文进行IP分片重组操作和/或TCP重排列操作,以获取所述原始数据包。

可选地,所述装置还包括:

第一存储模块,用于将所述以太网报文存入第一接收缓存中;

第二存储模块,用于在所述第一特征值与预设的目标特征值匹配的情况下,将所述以太网报文存入供所述数据获取进程622处理的第二接收缓存;所述第二接收缓存与所述第一接收缓存不同。

图5示出了本发明实施例提供的一种数据处理装置的逻辑框图,应用于主机,如图5所示,所述数据处理装置包括:

第一获取模块510,用于由所述应用程序获取所述应用程序的目标特征值;

第二获取模块520,用于由所述应用程序根据所述目标特征值,从与所述目标特征值对应的目标缓存730中获取原始数据包;所述目标缓存730中的原始数据包由所述智能网卡600的数据获取进程622,根据所述以太网报文获取并存入;所述以太网报文由所述智能网卡600的特征值获取进程621在所述第一特征值与预设的目标特征值匹配的情况下发送给所述数据获取进程622;所述第一特征值由所述特征值获取进程621根据所述以太网报文获取;

处理模块530,用于由所述应用程序对所述原始数据包进行处理。

可选地,所述第二获取模块520,包括:

第一获取子模块,用于由所述应用程序根据所述目标特征值,调用网卡驱动的预设接口,从与所述目标特征值对应的目标缓存730中获取原始数据包。

本发明实施例提供了一种智能网卡600,如图6所示,图6示出了本发明实施例提供的一种智能网卡600的结构示意图,所述智能网卡600可以包括接收缓存610、可编程逻辑器件620和网卡硬盘630,其中,所述可编程逻辑器件620可以包括特征值获取进程621和数据获取进程622,;所述接收缓存610可以包括第一接收缓存,用于存储所述智能网卡600通过接收端口接收的以太网报文,第二接收缓存,用于存储第一特征值与预设的目标特征值匹配的以太网报文,第三接收缓存用于存储第一特征值与预设的目标特征值不匹配的以太网报文。

本发明实施例还提供了一种服务器700,如图7所示,图7示出了本发明实施例提供的一种服务器700的结构示意图,所述服务器700可以包括中央处理器710、硬盘720、目标缓存730和与所述服务器700主机连接的一个或多个智能网卡600,其中,所述中央处理器710可以包括一个或多个子处理器,所述目标缓存730用于存储所述智能网卡600发送过来的原始数据包,进一步地,所述目标缓存730可以包括一个或多个子目标缓存,分别与所述目标特征值对应,所述服务器还可以包括通用缓存,用于存储所述智能网卡600发送过来的第一特征值与预设的目标特征值不匹配的以太网报文,所述智能网卡600用于接收以太网报文,并对所述以太网报文进行解析获取第一目标特征值,在第一目标特征值与智能网卡600中预设的目标特征值匹配的情况下,获取所述以太网报文的原始数据包,并将所述原始数据包通过DMA通信机制存入主机中与所述目标特征值相匹配的目标缓存730中。

本领域技术人员在考虑说明书及实践这里公开的申请后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

相关技术
  • 一种服务器智能网卡串口的防呆连接器
  • 一种报文处理方法、装置及网络设备
  • 一种数据处理方法、MEC服务器、终端设备及装置
  • 一种基于边缘计算的多业务处理方法、装置及边缘服务器
  • 基于FPGA的数据报文处理方法、智能网卡和CDN服务器
  • 一种报文处理方法、网卡及服务器
技术分类

06120115784024