一种报文处理方法、装置和设备与流程

文档序号:12009126阅读:232来源:国知局
一种报文处理方法、装置和设备与流程
本发明涉及计算机领域,尤其涉及一种报文处理方法、装置和设备。

背景技术:
TOE(TCPOffloadEngine,TCP卸载引擎)指由网卡芯片实现对TCP报文的协议处理,主机驱动接收和发送的仅是TCP报文的数据段,从而将主机CPU从协议处理中释放出来,更好地处理其他业务,最终实现加速网络响应的同时提高服务器性能。MTU(MaximumTransmissionUnit,最大传输单元)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),在OSI模型中指链路层的最大数据帧长度(对于IP报文,指包含IP头的长度,一般为1500);PMTU(PathMTU,路径最大传输单元),指从源地址到目的地址,所有IP节点MTU中的最小值,使得长度在该值内的报文经过该路径时都不需要分片,长度超出该值的报文需要被分片才能通过此路径传输;PMTUDP(PathMtuDiscoveryProtocol协议,路径最大传输单元发现协议),是一种动态发现任意路径PMTU的技术。通过ICMP(InternetControlMessageProtocol,互联网控制报文协议)报文在源/目的节点之间协商PMTU值,最终源节点使用该值作为发送报文的MTU(对于IP报文还需要将头部的DF(DeclineFragment,禁止分片)置位,以禁止路由器对报文进行分片);MSS(MaximumSegmentSize,最大分段大小)是TCP协议的概念,表示该条连接每个数据包的最大长度,该值通过PMTUD协议协商的PMTU计算获得:MSS=PMTU-40,其中40为20字节的IP头长度加上20字节的TCP头长度。目前现有技术中常采用以下方法处理报文:1、一般的网卡在收发报文时,协议栈会根据所配置的网卡的MTU值支持报文分片和报文重组。2、支持报文分片的TOE网卡在接收到分片报文后,不对接收到的分片报文进行TOE卸载,而是直接交给主机协议栈进行后续处理。3、不支持报文分片的TOE网卡在接收到分片报文后将分片报文直接丢弃;在建立连接时,先根据PMTUD协议协商PMTU值,取整个链路中所有设备端口MTU的最小值作为该连接的PMTU值;在发IP报文时在IP头部置DF位,禁止中间路由器对其分片;通过以上方式TOE网卡收到对端发送的报文都是非分片报文,而该TOE网卡在发送报文时,TOE驱动将该连接的PMTU减去40得到MSS值,然后将该MSS值配置给TOE网卡,TOE网卡根据MSS构造TCP报文。在实现上述分片报文的处理过程中,发明人发现现有技术中至少存在如下问题:一般的网卡将TCP卸载交由协议栈处理,因此会占用较大的主机CPU利用率;支持报文分片的TOE网卡由于将分片报文不走TOE通道,从而未实现硬件TCP加速功能,并且当一个TCP连接的部分报文是分片报文时,报文分别走TOE卸载通道和普通网卡通道,该连接将出现状态异常;在TOE网卡不支持报文分片的情况下,为了防范DDOS(DistributedDenialofService,分布式拒绝服务)攻击等原因,较多网络不再提供ICMP传输,使得PMTUD协议无法工作,并且当对端发送较大报文,且DF未置位时,最终收到路由器分片后的报文又被丢弃,影响网络性能。

技术实现要素:
本发明的实施例提供一种报文处理方法、装置和设备,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。为达到上述目的,本发明的实施例采用如下技术方案:一方面,提供一种报文处理方法,所述方法包括:接收第一报文;当所述第一报文为分片报文时,则将所述第一报文搬移到主机共享内存中;在所述主机共享内存中读取所述第一报文并进行重组生成第二报文;将所述第二报文搬移到网卡内存中;将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。在第一种可能的实现方式中,结合第一方面,所述接收第一报文后,所述方法还包括:判断所述第一报文是否为分片报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;若所述第一报文不是分片报文,则将所述第一报文直接进行传输控制协议TCP卸载引擎卸载。在第二种可能的实现方式中,结合第一方面的第一中可能的实现方式,所述将所述第一报文搬移到主机共享内存中包括:通过直接内存存取DMA引擎将所述第一报文搬移到所述主机共享内存中。在第三种可能的实现方式中,结合第一方面,所述在所述主机共享内存中将所述第一报文进行重组生成第二报文包括:传输控制协议TCP卸载引擎驱动通过软件方式将所述第一报文进行重组。在第四种可能的实现方式中,结合第一方面,将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载之后,所述方法还包括:将所述第二报文进行传输控制协议TCP卸载引擎卸载之后的数据通过所述直接内存存取DMA引擎搬移到所述主机共享内存中;主机驱动将所述数据提交。第二方面,提供一种报文处理装置,所述装置包括:接收单元,用于接收第一报文;第一搬移单元,用于在所述接收单元接收到所述第一报文后,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;重组单元,用于在所述第一搬移单元将所述第一报文搬移到所述主机内存中后,在所述主机共享内存中将所述第一报文进行重组生成第二报文;反注入单元,用于所述重组单元生成所述第二报文后,将所述第二报文搬移到网卡内存中;卸载单元,用于在所述反注入单元将所述第二报文搬移到网卡内存后,将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。在第一种可能的实现方式中,结合第二方面,在所述接收单元接收到所述第一报文后,所述装置还包括:判断单元,用于在所述接收单元接收到所述第一报文后,判断所述第一报文是否为分片报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;若所述第一报文不是分片报文,则将所述第一报文直接进行传输控制协议TCP卸载引擎卸载。在第二种可能的实现方式中,结合第二方面的第一种可能的实现方式,所述第一搬移单元具体用于:通过直接内存存取DMA引擎将所述第一报文搬移到主机共享内存中。在第三种可能的实现方式中,结合第二方面,所述重组单元具体用于:通过传输控制协议TCP卸载引擎驱动通过软件方式将所述第一报文进行重组。在第四种可能的实现方式中,结合第二方面,将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载之后,所述装置还包括:第二搬移单元,用于将所述第二报文进行传输控制协议TCP卸载引擎卸载之后的数据通过所述直接内存存取DMA引擎搬移到所述主机共享内存中;提交单元,用于在所述第二搬移单元将所述数据搬移到所述主机共享内存中后,通过主机驱动将所述数据提交。本发明实施例提供一种报文处理方法、装置和设备,首先TCP卸载引擎TOE网卡接收第一报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中,再由TOE驱动将所述第一报文进行重组后生成第二报文,将所述第二报文搬移到TOE网卡内存中,而后将所述第二报文进行TOE卸载,最后将经过TOE卸载后的数据交由系统上层单元处理,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种报文处理方法流程示意图一;图2为本发明实施例提供的一种报文处理方法流程示意图二;图3为本发明实施例提供的一种报文首部结构示意图;图4为本发明实施例提供的一种报文处理方法流程示意图三;图5为本发明实施例提供的一种报文处理装置结构示意图一;图6为本发明实施例提供的一种报文处理装置结构示意图二;图7为本发明实施例提供的一种报文处理装置结构示意图三;图8为本发明实施例提供的一种报文处理设备结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供一种报文处理方法,如图1所示,所述方法包括:S101、接收第一报文。S102、当所述第一报文为分片报文时,则将所述第一报文搬移到主机共享内存中。S103、在所述主机共享内存中读取所述第一报文并进行重组生成第二报文。S104、将所述第二报文搬移到网卡内存中。S105、将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。本发明实施例提供一种报文处理方法,首先TCP卸载引擎TOE网卡接收第一报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中,再由TOE驱动将所述第一报文进行重组后生成第二报文,将所述第二报文搬移到TOE网卡内存中,而后将所述第二报文进行TOE卸载,最后将经过TOE卸载后的数据交由系统上层单元处理,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明实施例提供一种报文处理方法进行详细说明。本发明提供一种报文处理方法,如图2所示,所述方法包括:S201、接收第一报文。S202、判断所述第一报文是否为分片报文。示例性的,IP报文首部的第6和第7字节(从第0个字节算起)内容如图3所示,当接收到IP报文后,判断该IP报文首部的MF位和FragmentOffset段是否同时为0,其中MF(MoreFragment,更多分片)位表示该分片报文是否不为分片报文或该分片报文是否为该报文的最后一个分片,FragmentOffset段表示为分片报文的数据在完整报文数据中的偏移。若所述MF位和FragmentOffset段同时为0,则表示该IP报文为非分片报文,否则该IP报文被判断为分片报文。S203、当所述第一报文为分片报文时,则将所述第一报文搬移到主机共享内存中。具体的,可通过以下方法实现:当判断出接收到的第一报文为分片报文后,TOE网卡在主机内存中申请一块内存作为主机和网卡的共享内存,并将接收到的分片报文存储到该共享内存中,将分片报文搬移到共享内存是通过直接内存存取引擎DMA(DirectMemoryAccess)引擎来完成的。S204、在所述主机共享内存中读取所述第一报文并进行重组生成第二报文。示例性的,当TOE网卡接收到分片的IP报文后,TOE网卡中的IP重组模块根据报文中的标识、目的地址、源地址和协议作为关键字计算散列值Hash值,其中,Hash值用来定位某个报文;当接收到的某个报文分片无法定位其对应的Hash节点,则表示该报文分片属于一个新的报文,则给该分片分配新的Hash节点,并启动定时器,以避免长时间无法收到该新的报文的其他分片;为了减少数据拷贝,重组报文的过程既是将各个报文分片组成一个聚合链的过程。S205、将所述第二报文搬移到网卡内存中。具体的,可通过以下方法实现:为了减少数据拷贝,当接收到了一个分片报文的所有分片并将该报文的所有分片依次组成一个完整的聚合链,即将分片报文重组完成后,将重组好的报文存储于所述主机共享内存中,并将该聚合链信息发送给TOE网卡,TOE网卡获得并解析该聚合链信息后,启动DMA引擎,将重组好的报文从主机共享内存中搬移到TOE网卡内存中。S206、将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。具体的,可通过以下方法实现:TOE驱动作为一个内核模块嵌入linux内核中,替换TCPSocket层的接口,对TCP协议的连接建立过程进行拦截,并将TCP连接的信息截获,下发到网卡上,实现了将TCP协议的处理转移到网卡上。后者将卸载好的TCP数据直接通过DMA引擎搬移到主机内存,并通知TOE驱动将数据传给传输层。基于步骤S201~S206所述的方法,该支持分片报文的TOE卸载过程示意图如图4所示。本发明实施例提供一种报文处理方法,首先TCP卸载引擎TOE网卡接收第一报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中,再由TOE驱动将所述第一报文进行重组后生成第二报文,将所述第二报文搬移到TOE网卡内存中,而后将所述第二报文进行TOE卸载,最后将经过TOE卸载后的数据交由系统上层单元处理,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。本发明实施例提供一种报文处理装置01,如图5所示,所述装置01包括:接收单元011,用于接收第一报文;第一搬移单元012,用于在所述接收单元011接收到所述第一报文后,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;重组单元013,用于在所述第一搬移单元012将所述第一报文搬移到所述主机内存中后,在所述主机共享内存中将所述第一报文进行重组生成第二报文;反注入单元014,用于所述重组单元013生成所述第二报文后,将所述第二报文搬移到网卡内存中;卸载单元015,用于在所述反注入单元014将所述第二报文搬移到网卡内存后,将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。进一步的,如图6所示,在所述接收单元接收到所述第一报文后,所述装置01还包括:判断单元016,用于在所述接收单元011接收到所述第一报文后,判断所述第一报文是否为分片报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;若所述第一报文不是分片报文,则将所述第一报文直接进行传输控制协议TCP卸载引擎卸载。再进一步的,所述第一搬移单元012具体用于:通过直接内存存取DMA引擎将所述第一报文搬移到主机共享内存中。再进一步的,所述重组单元013具体用于:传输控制协议TCP卸载引擎驱动通过软件方式将所述第一报文进行重组。更进一步的,如图7所示,将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载之后,所述装置01还包括:第二搬移单元017,用于将所述第二报文进行传输控制协议TCP卸载引擎卸载之后的数据通过所述直接内存存取DMA引擎搬移到所述主机共享内存中;提交单元018,用于在所述第二搬移单元将所述数据搬移到所述主机共享内存中后,通过主机驱动将所述数据提交。本发明实施例提供一种报文处理装置,首先TCP卸载引擎TOE网卡接收第一报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中,再由TOE驱动将所述第一报文进行重组后生成第二报文,将所述第二报文搬移到TOE网卡内存中,而后将所述第二报文进行TOE卸载,最后将经过TOE卸载后的数据交由系统上层单元处理,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。本发明实施例提供一种报文处理设备02,如图8所示,所述设备02包括总线021以及连接到总线021上的网卡022、存储器023和处理器024,所述存储器023用于存储指令0231和网卡驱动0232,所述处理器024用于执行该指令用于:通过网卡022接收第一报文;当所述第一报文为分片报文时,处理器024执行该指令将所述第一报文搬移到主机共享内存中;处理器024执行该指令0231调用网卡驱动0232,在所述主机共享内存中读取所述第一报文并进行重组生成第二报文;将所述第二报文搬移到网卡内存中;将所述网卡内存中的所述第二报文进行传输控制协议TCP卸载引擎卸载。进一步的,所述接收第一报文后,所述处理器024执行该指令还用于:通过网卡022判断所述第一报文是否为分片报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中;若所述第一报文不是分片报文,则将所述第一报文直接进行传输控制协议TCP卸载引擎卸载。再进一步的,处理器024执行该指令具体用于:通过直接内存存取DMA引擎将所述第一报文搬移到所述主机共享内存中。再进一步的,处理器024执行该指令具体用于:通过传输控制协议TCP卸载引擎驱动通过软件方式将所述第一报文进行重组。更进一步的,处理器024执行该指令还用于:将所述第二报文进行传输控制协议TCP卸载引擎卸载之后的数据通过所述直接内存存取DMA引擎搬移到所述主机共享内存中;通过网卡驱动0232将所述数据提交。本发明实施例提供一种报文处理设备,首先TCP卸载引擎TOE网卡接收第一报文,若所述第一报文为分片报文,则将所述第一报文搬移到主机共享内存中,再由TOE驱动将所述第一报文进行重组后生成第二报文,将所述第二报文搬移到TOE网卡内存中,而后将所述第二报文进行TOE卸载,最后将经过TOE卸载后的数据交由系统上层单元处理,能够使TOE网卡支持对IP分片报文的处理并实现对分片报文的硬件TOE卸载,提高了网络的响应性能和传输性能。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,在本发明各个实施例中的设备和系统中,各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。且上述的各单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、只读存储器(ReadOnlyMemory,简称ROM)、随机存取存储器(RandomAccessMemory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1