报文处理方法以及报文解析模块与流程

文档序号:30365972发布日期:2022-06-10 22:55阅读:1493来源:国知局
报文处理方法以及报文解析模块与流程

1.本说明书实施例涉及计算机技术领域,特别涉及一种报文处理方法。


背景技术:

2.fpga(field programmable gatearray)是一种电路逻辑器件,同时具有静态可重复编程和在线动态重构特性,这种电路功能表现为硬件,但是却可以像软件一样通过编程的方式来修改,大大提高了电子系统的通用性和设计灵活性。随着网络通信流量的迅速增长,在应用层的客户通道数较大时,fpga芯片可使用堆叠技术实现多路会话报文数据的接收并解析处理,即可以理解为每路会话报文数据可利用专属的报文解析模块进行处理,以支持对多个客户通道的会话数据,但由于fpga芯片内部的逻辑资源是有限的,这种实现方式不仅不能继续扩展支持更多的客户通道,还导致fpga芯片内部布线资源的消耗较大。


技术实现要素:

3.有鉴于此,本说明书实施例提供了一种报文处理方法。本说明书一个或者多个实施例同时涉及一种报文解析模块,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
4.根据本说明书实施例的第一方面,提供了一种报文处理方法,应用于报文解析模块,包括:对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识,并将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域;对第二会话的第二报文数据进行解析,获取所述第二报文数据的第二会话标识;在所述第二会话标识与所述第一会话标识相同的情况下,将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域;或在所述第二会话标识与所述第一会话标识不同的情况下,将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域。
5.根据本说明书实施例的第二方面,提供了一种报文解析模块,包括:报文解析单元,被配置为对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识,并将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域;报文解析单元,进一步被配置为对第二会话的第二报文数据进行解析,获取所述第二报文数据的第二会话标识;报文存储单元,被配置为在所述第二会话标识与所述第一会话标识相同的情况下,将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域;或在所述第二会话标识与所述第一会话标识不同的情况下,将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域。
6.根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述报文处理方法的步骤。
7.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述报文处理方法的步骤。
8.根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述报文处理方法的步骤。
9.本说明书一个实施例提供的报文处理方法,应用于报文解析模块,通过对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识,并将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域;对第二会话的第二报文数据进行解析,获取所述第二报文数据的第二会话标识;在所述第二会话标识与所述第一会话标识相同的情况下,将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域;或在所述第二会话标识与所述第一会话标识不同的情况下,将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域。
10.具体的,利用报文解析模块,通过根据每一路会话报文数据的会话标识,对报文数据存储至状态缓存区域,且属于同一会话标识的报文数据可以存储在同一个状态缓存区域中,以实现利用一个报文解析模块就可以对多路会话的报文数据进行处理,这样在fpga芯片中,一个报文解析模块不仅能够支持多路会话的报文数据,以扩展更多的客户通道,在物理层面上还可大大节省fpga芯片内部布线资源的消耗。
附图说明
11.图1是本说明书一个实施例提供的一种报文处理方法中fpga使用堆叠技术实现多会话报文解析的示意图;图2是本说明书一个实施例提供的一种报文处理方法中fpga使用单个报文解析模块的多会话报文解析的示意图;图3是本说明书一个实施例提供的一种报文处理方法的流程图;图4是本说明书一个实施例提供的一种报文处理方法的状态缓存管理的示意图;图5是本说明书一个实施例提供的一种报文处理方法对单会话通道接收到的报文数据的处理过程流程图;图6是本说明书一个实施例提供的一种报文处理方法对多会话通道接收的报文数据的处理过程流程图;图7是本说明书一个实施例提供的一种报文解析模块的结构示意图;图8是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
12.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
13.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,
而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
14.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
15.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
16.fpga芯片:(field-programmable gate array),即现场可编程门阵列,它是作为专用集成电路(asic)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
17.粘包:在基于tcp开发应用的语境下,其实有两种“包”,其一是tcp在传输的时候封装的报文,分为包头和负载,其二是应用开发者在应用层封装的报文结构;粘包是指用户数据被tcp发出去的时候,存在多个小尺寸数据被封装在一个tcp报文中发出去的可能性,即先被发送的数据可能需要等待一段时间,才能跟后面被发送的数据一起组成报文发出去。
18.session:在计算机中,尤其是在网络应用中,称为“会话控制”。一个session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。a用户和c服务器建立连接时所处的session同b用户和c服务器建立连接时所处的session是两个不同的session。
19.ram(random access memory,随机存取存储器):是与cpu直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。ram工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
20.fpga芯片技术可应用于各种应用场景,但在交易场景下,需要同时支持多个客户的使用,往往就需要以太网payload(以太网环境下的输出数据)输入以后进行多session(会话)的切换。由于以太网数据传输的特性,往往通过增加解码通道来支持不同客户的使用。进而,可参见附图1,图1是本说明书一个实施例提供的一种报文处理方法中fpga使用堆叠技术实现多会话报文解析的示意图。
21.图1中fpga芯片中有多个报文解析单元,同时,每个报文解析单元都对应着一路会话,也就是说,每一路会话接收到的用户数据,需要在每路会话对应的报文解析单元进行解析处理,最后,再由选择器选择出完整的报文数据进行输出。该fpga芯片应用于交易场景下,每路会话对应着每个用户,每个用户在该对应的会话通道上发送数据时,fpga芯片中的每个报文解析单元对每路会话通道上发送的数据进行解析,进一步完成对该用户数据的处理过程;需要说明的是,fpga芯片中的多个报文解析单元是使用堆叠技术,实现多会话报文数据接收,该种方式会造成fpga芯片内部的客户通道数不能支持很多,由于fpga芯片内部的逻辑资源是有限的,所以最大只能支持有限通道,比如32路、64路,再增加会遇到较大的困难,比如影响工作时钟,fpga内部布线资源消耗面积太大,没有资源可以实现,为后续拓
展应用,带来一定的局限性。
22.基于此,本说明书实施例提供的报文处理方法,为了实现使用较少资源能够完成对客户数量的扩展,还保证fpga芯片运行的速度,即采用fpga使用地址管理状态复用技术实现多会话报文接收,采用一路报文解析模块通过状态缓存实现分时复用,从而实现了较低的资源使用,并且能够扩展较多的用户应用,并且不会明显增加fpga的器件内部的布线资源的消耗,解决了多路会话数据场景下,针对tcp报文数据业务报文解码资源利用较多的问题。
23.在本说明书中,提供了一种报文处理方法,本说明书同时涉及一种报文解析模块,一种计算设备,一种计算机可读存储介质以及一种计算机程序,在下面的实施例中逐一进行详细说明。
24.参见图2,图2示出了根据本说明书一个实施例提供的一种报文处理方法中fpga使用单个报文解析模块的多会话报文解析的示意图。
25.图2中的fpga芯片中仅包括一个报文解析模块200,其中,该报文解析模块200中包括报文解析单元201以及报文存储单元202;n路会话数据均可由报文解析模块200来进行解析处理。
26.实际应用中,第一会话对应的第一报文数据进入在fpga芯片中的报文解析模块200进行解析,该报文解析模块200将获取到第一报文数据的第一会话标识,并将该第一报文数据存储至报文存储单元202中,即存储在第一会话标识对应的状态缓存区域中;进一步地,在第二会话对应的第二报文数据进入到fpga芯片中的报文解析模块200之后,同样地,需要对该第二报文数据进行解析,获取到第二报文数据对应的第二会话标识,并将该第二报文数据也同样存储至报文存储单元202中,此时,报文解析模块200需要判断第二会话标识与第一会话标识是否相同,以确定将该第二报文数据所存储的目标状态缓存区域。通过该种方式,对每路会话数据均进行解析判断,并将会话数据暂存在报文存储单元202中,便于随时可以对同一会话的数据进行报文粘包、拼接等处理,在确定出完整报文数据之后,继续转发完成业务层面的处理。
27.需要说明的是,该种方式打破了每路会话数据需要一个专属的报文解析模块进行解析处理的局限性,这样在实际应用场景下,可以扩展出更多路会话数据进行处理,比如,在交易场景下,即可满足大基数用户扩张,还能保证交易完成的速度。
28.参见图3,图3示出了根据本说明书一个实施例提供的一种报文处理方法的流程图,具体包括以下步骤。
29.需要说明的是,本说明书实施例提供的报文处理方法,应用于pfga芯片中的报文解析模块,并利用一个报文解析模块实现对多路会话数据的解析处理。
30.步骤302:对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识,并将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域。
31.其中,第一会话可以理解为某一用户发送pct报文数据所通过的会话通道,即session会话通道,需要说明的是,在实际应用场景中,每一个session通道可对应一位用户使用。
32.第一报文数据可以理解为各个业务场景下某一用户发送的pct报文数据,需要说明的是,该报文数据包括但不限定于为pct协议下的报文数据。
33.第一会话标识可以理解为表示第一会话通道的标识信息,比如session0的会话标识可以为0,session1的会话标识可以为1。
34.状态缓存区域可以理解为存储单元中的缓存空间,那么,第一会话标识对应的状态缓存区域可以理解为在该存储单元中也可根据会话标识分为多个缓存区域,比如,会话标识为0、会话标识为1、会话标识为2...分别对应各自的状态缓存区域。
35.实际应用中,fpga芯片的报文解析模块在接收到第一会话的第一报文数据之后,对该第一报文数据进行解析,以获取到第一报文数据的第一会话标识,比如session0会话通道发送的第一报文数据,那么可获取到第一报文数据的第一会话标识为0;进一步地,该报文解析模块可将该第一报文数据存储至存储单元中表示为0的状态缓存区域中。
36.进一步地,在实际交易场景中,用户发送业务交易请求的过程中,报文解析模块还可对该交易请求进一步地解析处理,获取到交易请求对应的报文数据;具体的,所述对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识之前,还包括:接收第一会话的第一业务交易请求,对所述第一业务交易请求中的交易数据进行解析处理,确定第一会话的第一报文数据。
37.其中,第一业务交易请求可以理解为用户发送的针对某一业务场景下的交易请求,比如,在金融交易场景下,用户发送的报单交易请求等。
38.实际应用中,报文解析模块在接收到用户通过第一会话通道发送的第一业务交易请求之后,还可先对该第一业务交易请求中的交易数据进行解析,确定第一会话的第一报文数据,再进一步地对第一报文数据进行解析处理,完成对该第一业务交易请求的转发。
39.需要说明的是,本说明书实施例提供的报文处理方法,并不局限与交易场景的需求,在其他应用场景中,若需要fpga芯片以处理多路会话数据的应用,本方案均可支持,在此则不作过多限定。
40.本说明书实施例提供的报文处理方法,通过在交易场景下,对用户发送的交易数据进行解析,以确定第一报文数据,进而完成对报文数据后续的解析操作,便于满足交易场景下利用fpga芯片扩展大客户基数的应用需求。
41.在报文解析模块将第一报文数据存储至状态缓存区域之前,还可进一步地判断报文数据的报文字节数,以确定该报文数据是否为完整的报文数据,即是否可将该报文数据直接输出;具体的,所述将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域之前,还包括:对第一会话的第一报文数据进行解析,获取所述第一报文数据的包尾处理信息以及包头处理信息;基于所述包头处理信息确定所述第一报文数据的第一报文字节数,在确定所述第一报文字节数满足预设字节数阈值的情况下,输出所述第一报文数据;或在确定所述第一报文字节数不满足预设字节数阈值的情况下,将所述第一报文数据的包尾处理信息、包头处理信息存储至第一会话标识对应的状态缓存区域。
42.其中,包尾处理信息可以理解为第一报文数据对应包尾的位置信息、包尾进行粘包的包体的数据信息,即可以理解为报文包尾对应的各种可便于后续操作的处理信息,在此不做具体限定。
43.包头处理信息可以理解为第一报文数据对应包头的位置信息、等待拼接的包头数
据信息等,即可以理解为报文包头对应的各种便于后续操作的处理信息,在此不做具体限定。
44.实际应用中,报文解析模块在对第一会话的第一报文数据进行解析之后,可获取到该第一报文数据的包尾处理信息以及包头处理信息,进一步地,根据该第一报文数据的包头处理信息确定该第一报文数据的第一报文字节数,以确定该第一报文数据是否为完整的报文数据,若该第一报文字节数大于预设字节数阈值的情况下,说明该第一报文数据为完整的报文数据,则可将该第一报文数据直接输出至后续的业务层级的处理;若该第一报文字节数还不满足预设字节数阈值的情况下,即可说明该第一报文数据并不完整,需要在报文解析模块中的状态缓存区域中暂存第一报文数据对应的包尾处理信息以及包头处理信息,便于后续等待下一报文数据与第一报文数据实现拼接操作,在获得完整报文数据之后,输出完整的报文数据。
45.本说明书实施例提供的报文处理方法,报文解析模块还可确定每路会话通道接收的报文数据对应的报文字节数,在确定完整报文数据之后,即可输出该报文数据,无需再缓存至状态缓存区域中等待拼接操作。
46.在报文解析模块确定将报文数据的包尾处理信息、包头处理信息存储至状态缓存模块之后,还可确定该报文数据是否为残包数据,若为残包数据,还可将该报文数据对应的残包位置缓存至状态缓存模块中;具体的,所述在确定所述第一报文字节数不满足预设字节数阈值的情况下之后,还包括:基于所述第一报文字节数确定所述第一报文数据的残包位置信息,并将所述残包位置信息存储至第一会话标识对应的状态缓存区域。
47.其中,残包位置信息可以理解为报文数据对应包头残缺的位置信息,比如报文数据的包头数据量为8bit,当前报文数据的包头数据量为2bit,那么,第3bit位置的包头数据则可以理解为该报文数据对应的残包位置信息。
48.实际应用中,报文解析模块在确定该报文数据为残包的情况下,还可确定该报文数据对应的残包位置信息,为了便于后续对多个残包报文数据执行拼接操作,可将该报文数据对应的残包位置信息存储至第一会话标识对应的状态缓存区域中,便于后续可直接根据存储的残包位置信息,明确报文数据的残缺位置,以直接进行拼接操作。
49.本说明书实施例提供的报文处理方法,通过在状态缓存区域中存储报文数据的残包位置信息,以便于后续根据该残包位置信息进行数据拼接的操作。
50.更进一步地,报文解析模块在对第一报文数据存储至状态缓存区域的过程中,需要对第一报文数据分配对应的缓存地址,并将该报文数据存储至该缓存地址对应的状态缓存区域中;具体的,所述将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域,包括:在所述第一会话标识对应的状态缓存区域中,为所述第一报文数据分配第一缓存地址,并将所述第一报文数据存储至所述第一缓存地址所指向的状态缓存区域的空间;相应地,所述将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域之后,还包括:在接收到所述第一报文数据的报错信息的情况下,将所述第一报文数据从所述第一缓存地址中删除。
51.其中,第一缓存地址可以理解为存储第一报文数据在状态缓存区域中的地址。
52.实际应用中,报文解析模块在第一会话标识对应的状态缓存区域中,为第一报文数据分配第一缓存地址,并将第一报文数据按照第一缓存地址在状态缓存区域中进行存储;另外,在确定第一报文数据的报错信息之后,还可按照该第一缓存地址从状态缓存区域中删除第一报文数据。
53.本说明书实施例提供的报文处理方法,通过在状态缓存区域中为报文数据分配对应的缓存地址,再将报文数据缓存至该缓存地址对应的缓存空间中,同时,如果该报文数据报错之后,还可根据该缓存地址删除掉该报文数据。
54.此外,在上述报文解析模块将报文数据的包尾处理信息、包头处理信息以及残包位置信息等数据暂存至状态缓存区域之后,还可确定缓存的等待时长,由于上述状态信息长期进行存储将占据较大的存储资源,因此,报文解析模块可以根据缓存等待时长,确定该报文数据所缓存的状态数据目前是否为有用的数据,是否将报文数据进行删除;所述将所述残包位置信息存储至第一会话标识对应的状态缓存区域之后,还包括:确定所述第一报文数据在所述第一会话标识对应的状态缓存区域中的缓存等待时长;在所述缓存等待时长满足预设等待时长阈值的情况下,将所述第一报文数据进行删除。
55.其中,缓存等待时长可以理解为第一报文数据以及该第一报文数据对应的包尾、包头、残包的数据信息,在状态缓存区域中存储、等待被拼接处理的时长。
56.实际应用中,报文解析模块还可不断地确定在状态缓存区域中存储的第一报文数据所缓存等待的时长,在缓存等待时长满足预设等待时长阈值的情况下,即第一报文数据的缓存等待时长较长的情况下,可确定该第一报文数据对应的缓存地址回退,并删除该第一报文数据。
57.需要说明的是,在报文解析模块中可配置超时管理单元,对第一报文数据的缓存等待时长进行判断,以确定第一报文数据是否等待时间过长,需要从状态缓存区域中清理出去,以节省存储空间。
58.本说明书实施例提供的报文处理方法,根据第一报文数据在状态缓存区域中缓存等待时长,确第一报文数据是否被清理,以回退状态缓存区域中的缓存空间,减少对无用报文数据的缓存,节省了缓存空间。
59.步骤304:对第二会话的第二报文数据进行解析,获取所述第二报文数据的第二会话标识。
60.其中,第二会话与第一会话的含义相同,是与第一会话不同的会话通道,对接与第一会话的用户不同的其他用户;第二报文数据与第一报文数据的含义相同,可以理解为用户通过第二会话通道发送的报文数据;第二会话标识可以理解为表示第二会话通道的标识信息。
61.实际应用中,报文解析模块对第二会话的第二报文数据进行解析的过程,可参考上述对第一会话的第一报文数据进行解析的过程,在此则不作过多赘述;执行解析操作之后,报文解析模块即可获得第二报文数据的第二会话标识。
62.相应地,所述对第二会话的第二报文数据进行解析,获取所述第二报文数据的第
二会话标识之前,还包括:接收第二会话的第二业务交易请求,对所述第二业务交易请求中的交易数据进行解析处理,确定第二会话的第二报文数据。
63.其中,第二业务交易请求与第一业务交易请求的含义相同,在此不做具体赘述。
64.实际应用中,报文解析模块在接收到第一会话通道传输的第一业务交易请求之后,还可通过第二会话通道传输第二业务交易请求,并对第二业务交易请求中的交易数据进行解析处理,确定第二会话的第二报文数据;需要说明的是,本说明书实施例提供的报文处理方法中,仅通过一个报文解析模块实现对多路会话传输的报文数据进行解析处理,进而节省了fpga芯片中布局多个报文解析单元的资源消耗。
65.步骤306:在所述第二会话标识与所述第一会话标识相同的情况下,将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域。
66.实际应用中,报文解析模块在确定第一会话标识和第二会话标识之后,可通过比较第二会话标识与第一会话标识,进一步地判断需要将第二会话通道接收到的第二报文数据,以及解析出第二报文数据对应的包尾处理信息、包头处理信息以及残包位置信息等状态信息,后续应该存储的位置;若第二会话标识与第一会话标识相同的情况下,说明第二报文数据与第一报文数据为同一会话通道中传输的报文数据,即可将第二会话的第二报文数据存储至第一会话标识对应的状态缓存区域。
67.进一步地,所述将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域,包括:在所述第一会话标识对应的状态缓存区域中,为所述第二报文数据分配第二缓存地址,并将所述第二会话的第二报文数据存储至所述第二缓存地址所指向的状态缓存区域的空间;相应地,所述将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域之后,还包括:在接收到所述第二报文数据的报错信息的情况下,将所述第二报文数据从所述第二缓存地址中删除。
68.其中,第二缓存地址与第一缓存地址含义相同,该第二缓存地址用于存储第二报文数据、第二报文数据对应的状态信息数据等内容,在此则不作具体限定。
69.实际应用中,报文解析模块在第二会话标识对应的状态缓存区域中,为第二报文数据分配第二缓存地址,并将第二报文数据按照第二缓存地址在状态缓存区域中进行存储;另外,在确定第二报文数据的报错信息之后,还可按照该第二缓存地址从状态缓存区域中删除第二报文数据。
70.本说明书实施例提供的报文处理方法,第二报文数据与第一报文数据的分配地址,进行缓存的方式相同,同时也支持报文报错的功能,在接收到报文数据报错时,便可从缓存进行执行删除操作,节省存储资源利用率。
71.更进一步地,报文解析模块在第一会话标识对应的状态缓存区域中,确定已经缓存了第一报文数据和第二报文数据之后,还可对第一报文数据和第二报文数据执行数据拼接操作,以获得完整的数据报文;具体的,所述将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域之后,还包括:
从所述第一会话标识对应的状态缓存区域中,获取所述第一报文数据以及所述第二报文数据;将所述第一报文数据以及所述第二报文数据进行拼接处理,获得拼接报文数据;在所述拼接报文数据的报文字节数满足预设字节数阈值的情况下,输出所述拼接报文数据。
72.其中,拼接报文数据可以理解为将报文数据执行拼接操作后的报文数据。
73.实际应用中,报文解析模块从第一会话标识对应的状态缓存区域中,获取第一报文数据以及第二报文数据,并将第一报文数据与第二报文数据执行报文拼接的操作,需要强调的是,报文拼接操作可以采用任意一种报文拼接的方式,在此不做具体限定和描述,在报文拼接操作处理结束后,获得了拼接报文数据,进一步地,报文解析模块需要确定拼接报文数据对应的报文字节数,是否满足了预设字节数阈值,即判定拼接报文数据是否为完整的报文数据,在确定拼接报文数据为完整报文数据之后,可输出该拼接报文数据。
74.本说明书实施例提供的报文处理方法,通过对缓存在同一会话标识对应的状态缓存区域中的报文数据进行拼接处理,获得拼接报文数据,在确定拼接报文数据为完整报文数据的情况下,可直接将该完整的报文数据执行输出,该种方式通过存储在状态缓存区域的多会话报文数据,可在边解析的过程中边执行数据拼接的操作,完成对完整报文数据的转发处理。
75.实际应用中,报文解析模块可根据存储在状态缓存区域中第一报文数据的包尾处理信息、包头处理信息以及残包位置信息,将第一报文数据以及第二报文数据执行报文拼接操作;具体的,所述将所述第一报文数据以及所述第二报文数据进行拼接处理,获得拼接报文数据,包括:从所述第一会话标识对应的状态缓存区域中,获取所述第一报文数据的包尾处理信息、包头处理信息以及残包位置信息;基于所述包尾处理信息、所述包头处理信息以及所述残包位置信息,将所述第一报文数据以及所述第二报文数据进行拼接处理,获得拼接报文数据。
76.实际应用中,由于报文解析模块中的存储单元已经存储了第一报文数据和第二报文数据,同时也缓存了第一报文数据和第二报文数据各自的状态缓存数据,那么,在执行报文拼接操作的过程中,可根据在第一会话标识对应的状态缓存区域中存储的报文数据的各个状态缓存数据,即包尾处理信息、包头处理信息以及残包位置信息,对第一报文数据以及第二报文数据进行拼接处理,最后获得拼接报文数据。
77.需要说明的是,本实施例对报文拼接操作的具体执行过程可采用报文拼接操作的各种方式,本实施例对此不作具体限定。
78.本说明书实施例提供的报文处理方法,通过获取的第一报文数据的包尾处理信息、包头处理信息以及残包位置信息,将第二报文数据与第一报文数据执行拼接处理,以便于后续确定完整报文数据执行输出。
79.进一步地,报文解析模块在确定拼接报文数据为完整报文数据的情况下,即可直接将该拼接报文数据执行输出,完成后续的业务处理;具体的,所述在所述拼接报文数据的报文字节数满足预设字节数阈值的情况下,输出所述拼接报文数据,包括:在所述拼接报文数据的报文字节数满足预设字节数阈值的情况下,将所述拼接报
文数据转化为业务转发数据,并输出所述业务转发数据。
80.实际应用中,报文解析模块还需确定拼接报文数据的报文字节数是否满足预设字节数阈值,在确定该拼接报文数据的报文字节数满足预设字节数阈值的情况下,即该拼接报文数据为完整数据报文,可将该完整的数据报文转化为业务转发数据,进行输出转发该业务转发数据。
81.步骤308:在所述第二会话标识与所述第一会话标识不同的情况下,将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域。
82.需要说明的是,报文解析模块执行的步骤308与步骤306为并列执行步骤。
83.报文解析模块在第二会话标识与第一会话标识不同的情况下,可将第二会话的第二报文数据重新存储至第二会话标识对应的状态缓存区域,此时,在状态缓存区域中,第一会话的第一报文数据存储至第一会话标识对应的状态缓存区域,第二会话的第二报文数据存储至第二会话标识对应的状态缓存区域。
84.具体实施时,所述将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域,包括:在所述第二会话标识对应的状态缓存区域中,为第二报文数据分配第三缓存地址,并将所述第二报文数据存储至所述第三缓存地址所指向的状态缓存区域的空间;相应地,所述将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域之后,还包括:在接收到所述第二报文数据的报错信息的情况下,将所述第二报文数据从所述第三缓存地址中删除。
85.实际应用中,报文解析模块还可在第二会话标识对应的状态缓存区域中,为第二报文数据分配第三缓存地址,并将第二报文数据按照该第三缓存地址存储在状态缓存区域的空间中,同时,在第二报文数据报错的情况下,该可将该第三缓存地址进行回退操作,在对应的状态缓存区域中删除该第二报文数据。
86.需要说明的是,第二报文数据存储至第二会话标识对应的状态缓存区域中的方式与存储至第一会话标识对应的状态缓存区域相同,在此则不作具体赘述。
87.另外结合上述对报文数据的各种状态的缓存,在报文解析模块中可对存储至状态缓存区域中的数据进行管理,具体可参见附图4,图4示出了本说明书实施例提供的报文处理方法的状态缓存管理的示意图。
88.图4中的中间部分为fpga ram缓存空间,其中,可包括1024块小的缓存区域,另外,图4中还有报文字节不齐全处理功能单元、报文超时管理单元、读取通道选择功能单元以及错包管理单元。
89.实际应用中,在报文数据存储至fpga ram的情况下,报文超时管理单元可以确定存储在fpga ram中的报文数据的存储等待时长,在确定该存储等待时长超过一定时间阈值的情况下,可将该报文数据进行删除等清理操作,将占用的缓存空间回退给fpga ram;进一步地,报文字节不齐全处理功能单元还可从fpga ram中读取报文数据的状态,确定报文数据是否为完整的报文数据,若确定该报文数据报文字节数不齐全的情况下,即可将该报文数据写入地址,存储至fpga ram中,等待下一级报文数据执行拼接等操作;错包管理单元同样也可从fpga ram中读取报文数据的状态,若接收到该报文数据的报错信息的情况下,可
读取存储在fpga ram的地址,并根据该地址将报文数据进行删除;需要说明的是,读取通道选择功能单元负责从fpga ram中各个缓存区域中读取相应的报文数据以及报文数据对应的状态缓存数据。
90.综上,本说明书实施例提供的报文处理方法,通过一个报文解析模块对多个会话确定的报文数据分别进行缓存处理,不仅将报文数据本身执行缓存操作,还可对该报文数据对应的包尾处理信息、包头处理信息、残包位置信息等各个状态的缓存信息也缓存至状态缓存区域中,便于后续可直接在报文解析模块中执行拼接处理,获得完整的数据报文;通过该种方式不仅能够减少在fpga芯片中内部资源的布线消耗,还可扩展支持多路会话报文数据。
91.下述结合附图5,以本说明书提供的报文处理方法在fpga芯片中的报文解析模块的应用为例,对所述报文处理方法进行进一步说明。其中,图5示出了本说明书一个实施例提供的一种报文处理方法对单会话通道接收到的报文数据的处理过程流程图,具体包括以下步骤。
92.步骤502:报文解析模块接收到会话通道发送的报文数据。
93.步骤504:报文解析模块获取报文数据中的包尾处理信息,并将该包尾处理信息在寄存器(fpga ram)中寄存;需要说明的是,包尾处理信息可以包括包尾位置信息、后续执行粘包操作的处理信息等。
94.步骤506:报文解析模块获取报文数据中的包头处理信息,并将该包头处理信息在寄存器(fpga ram)中寄存;需要说明的是,包头处理信息可以包括包头位置信息、需要接收下一级包头位置的处理信息等。
95.步骤508:报文解析模块判断报文数据是否为残包数据,若是,则获取到残包处理信息,其中,该残包处理信息包括残包头长度信息、残包已获取数据信息等,并将该残包处理信息在寄存器(fpga ram)中寄存。
96.步骤510:报文解析模块将步骤504、步骤506以及步骤508在ram中存储的信息存储待对应寄存器中的会话对应的存储位置;需要说明的是,ram最大支持取决于内存大小。
97.步骤512:报文解析模块对输出的报文数据进行管理。
98.步骤514:报文解析模块将报文数据输出至风控最后级处理(业务层面上的处理)。
99.需要说明的是,单会话通道接收的报文数据还可配合将报文数据的状态进行缓存,具体的也可参见下述步骤的描述:步骤一:从前级mac/toe接受tcp_payload再缓存以后进行粘包拼接等操作,并在ram中缓存包尾对应的粘包信息,当前会话再次出现时进行拼接。步骤二:从tcp_payload中找到业务报文信息,并提取包头跟数据偏移信息,在切换报文时存储当前状态信息,当前会话再次出现时继续报文解析。步骤三:从tcp_payload中找到业务报文信息,遇到业务报文不齐全,此时就将残包进行业务缓存到当前会话存储空间,假如在单个tcp_payload中业务报文齐全,就立即转发,当前会话再次出现时,假如处于残包状态,就继续残包报文组装。步骤四:遇到新的tcp_payload时首先判断该会话的tcp_payload是否处于前一状态的控制下,通过读取状态信息,拼接报文信息,并启动发送给后级。步骤五:遇到tcp_payload错误,即进行当前会话的tcp_payload数据丢弃并地址回退,等待现有的会话重发tcp_payload到来。步骤六:残包超时清理,即进行当前会话的tcp_payload数据积累到最大等待时间会丢弃现有存储的业务报文,等待新的tcp_payload到
来,重新开始寻找业务报文包头。步骤六:将解析的报文数据发送到后级解码模块。
100.此外,结合附图6,图6示出了本说明书一个实施例提供的一种报文处理方法对多会话通道接收的报文数据的处理过程流程图,具体包括以下步骤。
101.步骤602:报文解析模块基于会话数据入口接收会话数据。
102.步骤604:报文解析模块中的包尾字节拼接处理功能单元获取到会话数据的包尾处理信息,即粘包信息,并将包尾处理信息存储至1024寄存器管理模块,由寄存器管理模块存放至fpga ram中。
103.步骤606:报文解析模块中的包头位置检测功能单元获取会话数据的包头位置、报文数据以及报文长度等包头处理信息,并将该包头处理信息存储至1024寄存器管理模块,由寄存器管理模块存放至fpga ram中。
104.步骤608:报文解析模块中的把我摁字节不齐全处理功能单元,从包尾字节拼接处理功能单元和包头位置检测功能单元中获取包尾处理信息以及包头处理信息,并确定会话数据是否为完整的报文数据,在确定为完整报文的情况下,则输出至数据输出管理单元;在确定为不完整报文的情况下,则将该会话数据存放至fpga ram中。
105.步骤610:报文解析模块中的错包管理单元还可获取前一级报文头信息,确定该报文数据是否接收到错包信息,若确定报文数据为错包的情况下,即可在fpga ram中将报文数据进行删除处理。
106.步骤612:报文解析模块中的残包超时管理单元负责监测fpga ram中的报文数据是否超出预设等待时长,在确定为残包的报文数据超时之后,可将该报文数据在fpga ram中进行删除,恢复fpga ram中的存储位置,即对应会话的错误报文数据发生管理地址回退,超时保护复位状态功能。
107.步骤614:报文解析模块中的数据输出管理接收完整的报文数据,并输出完整的报文数据。
108.步骤616:报文解析模块中的包数量监控单元还可对报文的输入输出进行监控管理,以控制流量。
109.步骤618:报文解析模块将输出的完整报文数据输出至后级处理模块进行业务处理。
110.综上,通过对单会话通道和多会话通道发送的报文数据,均可利用一个报文解析模块进行报文解析处理,利用将每个报文数据的状态进行缓存,以实现对报文数据的状态缓存管理,能够支持多路会话数据的处理,该种方式可支持多路会话通道,则fpga芯片可扩展较多的会话通道,对应更多的用户,同时,也不会增加fpga芯片的器件内部的布线资源消耗。需要说明的是,本说明书实施例提供的报文处理方法,实现多会话通道和单会话通道场景性能基本一致,逻辑布线资源利用率也基本一致。
111.与上述方法实施例相对应,本说明书还提供了报文解析模块实施例,图7示出了本说明书一个实施例提供的一种报文解析模块的结构示意图。如图7所示,该模块包括:报文解析单元702,被配置为对第一会话的第一报文数据进行解析,获取所述第一报文数据的第一会话标识,并将所述第一报文数据存储至所述第一会话标识对应的状态缓存区域;报文解析单元702,进一步被配置为对第二会话的第二报文数据进行解析,获取所
述第二报文数据的第二会话标识;报文存储单元704,被配置为在所述第二会话标识与所述第一会话标识相同的情况下,将所述第二会话的第二报文数据存储至所述第一会话标识对应的状态缓存区域;或在所述第二会话标识与所述第一会话标识不同的情况下,将所述第二会话的第二报文数据存储至所述第二会话标识对应的状态缓存区域。
112.可选地,所述模块,还包括:报文拼接单元,被配置为从所述第一会话标识对应的状态缓存区域中,获取所述第一报文数据以及所述第二报文数据;将所述第一报文数据以及所述第二报文数据进行拼接处理,获得拼接报文数据;在所述拼接报文数据的报文字节数满足预设字节数阈值的情况下,输出所述拼接报文数据。
113.可选地,所述报文解析单元702,进一步被配置为:对第一会话的第一报文数据进行解析,获取所述第一报文数据的包尾处理信息以及包头处理信息;基于所述包头处理信息确定所述第一报文数据的第一报文字节数,在确定所述第一报文字节数满足预设字节数阈值的情况下,输出所述第一报文数据;或在确定所述第一报文字节数不满足预设字节数阈值的情况下,将所述第一报文数据的包尾处理信息、包头处理信息存储至第一会话标识对应的状态缓存区域。
114.可选地,所述报文存储单元704,进一步被配置为:基于所述第一报文字节数确定所述第一报文数据的残包位置信息,并将所述残包位置信息存储至第一会话标识对应的状态缓存区域。
115.可选地,所述报文拼接单元,进一步被配置为:从所述第一会话标识对应的状态缓存区域中,获取所述第一报文数据的包尾处理信息、包头处理信息以及残包位置信息;基于所述包尾处理信息、所述包头处理信息以及所述残包位置信息,将所述第一报文数据以及所述第二报文数据进行拼接处理,获得拼接报文数据。
116.可选地,所述报文解析单元702,进一步被配置为:在所述第一会话标识对应的状态缓存区域中,为所述第一报文数据分配第一缓存地址,并将所述第一报文数据存储至所述第一缓存地址所指向的状态缓存区域的空间。
117.可选地,所述报文解析单元702,进一步被配置为:在接收到所述第一报文数据的报错信息的情况下,将所述第一报文数据从所述第一缓存地址中删除。
118.可选地,所述报文存储单元704,进一步被配置为:在所述第一会话标识对应的状态缓存区域中,为所述第二报文数据分配第二缓存地址,并将所述第二会话的第二报文数据存储至所述第二缓存地址所指向的状态缓存区域的空间。
119.可选地,所述报文存储单元704,进一步被配置为:在接收到所述第二报文数据的报错信息的情况下,将所述第二报文数据从所述第二缓存地址中删除。
120.可选地,所述报文存储单元704,进一步被配置为:在所述第二会话标识对应的状态缓存区域中,为第二报文数据分配第三缓存地址,并将所述第二报文数据存储至所述第三缓存地址所指向的状态缓存区域的空间;可选地,所述报文存储单元704,进一步被配置为:在接收到所述第二报文数据的报错信息的情况下,将所述第二报文数据从所述第三缓存地址中删除。
121.可选地,所述报文存储单元704,进一步被配置为:确定所述第一报文数据在所述第一会话标识对应的状态缓存区域中的缓存等待时长;在所述缓存等待时长满足预设等待时长阈值的情况下,将所述第一报文数据进行删除。
122.可选地,所述报文拼接单元,进一步被配置为:在所述拼接报文数据的报文字节数满足预设字节数阈值的情况下,将所述拼接报文数据转化为业务转发数据,并输出所述业务转发数据。
123.可选地,所述模块,还包括:数据接收单元,被配置为接收第一会话的第一业务交易请求,对所述第一业务交易请求中的交易数据进行解析处理,确定第一会话的第一报文数据;可选地,所述数据接收单元,进一步被配置为:接收第二会话的第二业务交易请求,对所述第二业务交易请求中的交易数据进行解析处理,确定第二会话的第二报文数据。
124.本说明书实施例提供的报文处理模块,通过根据每一路会话报文数据的会话标识,对报文数据存储至状态缓存区域,且属于同一会话标识的报文数据可以存储在同一个状态缓存区域中,以实现利用一个报文解析模块就可以对多路会话的报文数据进行处理,这样在fpga芯片中,一个报文解析模块不仅能够支持多路会话的报文数据,以扩展更多的客户通道,在物理层面上还可大大节省fpga芯片内部布线资源的消耗。
125.上述为本实施例的一种报文解析模块的示意性方案。需要说明的是,该报文解析模块的技术方案与上述的报文处理方法的技术方案属于同一构思,报文解析模块的技术方案未详细描述的细节内容,均可以参见上述报文处理法的技术方案的描述。
126.图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
127.计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
128.在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于
示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
129.计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
130.其中,处理器820用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述报文处理方法的步骤。
131.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的报文处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述报文处理方法的技术方案的描述。
132.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述报文处理方法的步骤。
133.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的报文处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述报文处理方法的技术方案的描述。
134.本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述报文处理方法的步骤。
135.上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的报文处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述报文处理方法的技术方案的描述。
136.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
137.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
138.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
139.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
140.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1