一种数据包处理方法、装置、设备及存储介质与流程

文档序号:32979883发布日期:2023-01-17 21:53阅读:24来源:国知局
一种数据包处理方法、装置、设备及存储介质与流程

1.本技术涉及计算机技术领域,具体而言,涉及一种数据包处理方法、装置、设备及存储介质。


背景技术:

2.对于瞬息万变的证券交易市场,即时的行情信息是交易系统的基础。快速获取行情信息可以给市场参与者提供更宽裕的交易决策时间窗口,交易者获取的行情信息延时越低,往往意味着越多的交易机会和越大的决策空间。
3.目前,在利用现场可编程逻辑门阵列(field programmable gate array,简称fpga)将包含有行情信息的数据包中的字段数据重组为用户所需的数据包时,需要在接收到一个完整的数据包后,才可对该完整的数据包中的字段数据进行重组处理。这样会导致重组数据包时有较大延时。


技术实现要素:

4.本技术的目的在于,针对上述现有技术中的不足,提供一种数据包处理方法、装置、设备及存储介质,可以减少重组数据包时的延时。
5.为实现上述目的,本技术实施例采用的技术方案如下:
6.第一方面,本技术实施例提供了一种数据包处理方法,所述方法包括:
7.获取当前接收到的目标待重组字段的标识以及所述目标待重组字段所属的目标数据包的标识;
8.根据所述目标待重组字段的标识以及所述目标数据包的标识,确定所述目标待重组字段的存储段;
9.根据所述目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间;
10.将所述目标待重组字段存储至所述目标存储空间。
11.可选地,所述根据所述目标待重组字段的标识以及所述目标数据包的标识,确定所述目标待重组字段的存储段,包括:
12.根据所述目标数据包的标识,获取所述目标数据包对应的映射关系表,所述映射关系表用于记录所述目标数据包中的各待重组字段的标识与存储段的对应关系;
13.从所述映射关系表中读取所述目标待重组字段的标识对应的存储段,得到所述目标待重组字段的存储段。
14.可选地,所述根据所述目标数据包的标识,获取所述目标数据包对应的映射关系表之前,所述方法还包括:
15.根据所述目标数据包对应的重组信息、存储装置的存储信息以及所述目标数据包对应的存储起始地址,确定所述目标数据包中各待重组字段的标识对应的存储段,其中,所述重组信息用于指示所述目标数据包中各待重组字段的标识对应的长度以及先后顺序;
16.根据所述目标数据包中各待重组字段的标识对应的存储段,建立所述映射关系表。
17.可选地,所述根据所述目标数据包对应的重组信息、存储装置的存储信息以及所述目标数据包对应的存储起始地址,确定所述目标数据包中各待重组字段的标识对应的存储段,包括:
18.将所述目标数据包对应的存储起始地址作为所述目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址;
19.根据所述目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址、所述目标数据包对应的重组信息中各待重组字段的长度、以及所述存储装置的存储信息,确定所述目标数据包中各待重组字段的标识对应的存储段。
20.可选地,所述根据所述目标数据包对应的重组信息、存储装置的存储信息以及所述目标数据包对应的存储起始地址,确定所述目标数据包中各待重组字段的标识对应的存储段之前,所述方法还包括:
21.获取所述目标数据包的前一个数据包对应的存储起始地址;
22.根据所述前一个数据包对应的存储起始地址以及所述前一个数据包的长度,确定所述目标数据包对应的存储起始地址。
23.可选地,所述根据所述目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间,包括:
24.根据所述目标待重组字段的存储段以及所述存储装置的各存储空间的地址宽度,确定包含有所述存储段的存储空间;
25.将包含有所述存储段的存储空间作为所述目标存储空间。
26.可选地,所述将所述目标待重组字段存储至所述目标存储空间,包括:
27.确定所述目标存储空间的数量是否为一个;
28.若否,则根据所述目标待重组字段在各目标存储空间的长度对所述目标待重组字段进行分割,得到多个子待重组字段;
29.将各所述子待重组字段存储在各所述目标存储空间上。
30.可选地,所述将各所述子待重组字段存储在各所述目标存储空间上,包括:
31.根据所述目标待重组字段在各目标存储空间的长度,确定所述存储装置中各存储子装置的目标存储空间中对应的存储地址;
32.同时将各所述子待重组字段存储在各所述存储子装置的目标存储空间中对应的存储地址上。
33.可选地,所述将所述目标待重组字段存储至所述目标存储空间之后,所述方法还包括:
34.获取所述存储装置上存储的待输出数据包的存储起始地址;
35.基于所述待输出数据包的存储起始地址以及所述待输出数据包中各字段的存储段,从所述存储装置中读取各字段;
36.根据各所述字段的存储段之间的先后顺序,将各所述字段拼接为所述待输出数据包并输出。
37.可选地,所述基于所述待输出数据包的存储起始地址以及所述待输出数据包中各
字段的存储段,从所述存储装置中读取各字段,包括:
38.针对所述待输出数据包中各字段分别执行如下操作:
39.若所述字段的存储段对应的目标存储空间为多个,且所述目标存储空间分布在不同的存储子装置中,则根据所述字段的存储段,从各所述存储子装置的目标存储空间中对应的存储地址上读取所述字段。
40.可选地,所述获取当前接收到的目标待重组字段的标识之前,所述方法还包括:
41.若当前接收到待解码字段,则对所述待解码字段进行解码处理,得到所述目标待重组字段;
42.对所述目标待重组字段进行解析,得到所述目标待重组字段的标识。
43.第二方面,本技术实施例还提供了一种数据包处理装置,所述装置包括:
44.获取模块,用于获取当前接收到的目标待重组字段的标识以及所述目标待重组字段所属的目标数据包的标识;
45.第一确定模块,用于根据所述目标待重组字段的标识以及所述目标数据包的标识,确定所述目标待重组字段的存储段;
46.第二确定模块,用于根据所述目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间;
47.存储模块,用于将所述目标待重组字段存储至所述目标存储空间。
48.可选地,所述第一确定模块,具体用于根据所述目标数据包的标识,获取所述目标数据包对应的映射关系表,所述映射关系表用于记录所述目标数据包中的各待重组字段的标识与存储段的对应关系;从所述映射关系表中读取所述目标待重组字段的标识对应的存储段,得到所述目标待重组字段的存储段。
49.可选地,所述第一确定模块,还用于根据所述目标数据包对应的重组信息、存储装置的存储信息以及所述目标数据包对应的存储起始地址,确定所述目标数据包中各待重组字段的标识对应的存储段,其中,所述重组信息用于指示所述目标数据包中各待重组字段的标识对应的长度以及先后顺序。根据所述目标数据包中各待重组字段的标识对应的存储段,建立所述映射关系表。
50.可选地,所述第一确定模块,还具体用于将所述目标数据包对应的存储起始地址作为所述目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址;根据所述目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址、所述目标数据包对应的重组信息中各待重组字段的长度、以及所述存储装置的存储信息,确定所述目标数据包中各待重组字段的标识对应的存储段。
51.可选地,所述第一确定模块,还具体用于获取所述目标数据包的前一个数据包对应的存储起始地址;根据所述前一个数据包对应的存储起始地址以及所述前一个数据包的长度,确定所述目标数据包对应的存储起始地址。
52.可选地,所述第二确定模块,具体用于根据所述目标待重组字段的存储段以及所述存储装置的各存储空间的地址宽度,确定包含有所述存储段的存储空间;将包含有所述存储段的存储空间作为所述目标存储空间。
53.可选地,所述存储模块,具体用于确定所述目标存储空间的数量是否为一个;若否,则根据所述目标待重组字段在各目标存储空间的长度对所述目标待重组字段进行分
割,得到多个子待重组字段;将各所述子待重组字段存储在各所述目标存储空间上。
54.可选地,所述存储模块,还具体用于根据所述目标待重组字段在各目标存储空间的长度,确定所述存储装置中各存储子装置的目标存储空间中对应的存储地址;同时将各所述子待重组字段存储在各所述存储子装置的目标存储空间中对应的存储地址上。
55.可选地,所述装置还包括:读取模块;
56.所述读取模块,用于获取所述存储装置上存储的待输出数据包的存储起始地址;基于所述待输出数据包的存储起始地址以及所述待输出数据包中各字段的存储段,从所述存储装置中读取各字段;根据各所述字段的存储段之间的先后顺序,将各所述字段拼接为所述待输出数据包并输出。
57.可选地,所述读取模块,具体用于针对所述待输出数据包中各字段分别执行如下操作:若所述字段的存储段对应的目标存储空间为多个,且所述目标存储空间分布在不同的存储子装置中,则根据所述字段的存储段,从各所述存储子装置的目标存储空间中对应的存储地址上读取所述字段。
58.可选地,所述装置还包括:解码模块;
59.所述解码模块,用于若当前接收到待解码字段,则对所述待解码字段进行解码处理,得到所述目标待重组字段;对所述目标待重组字段进行解析,得到所述目标待重组字段的标识。
60.第三方面,本技术实施例提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行上述第一方面的所述数据包处理方法的步骤。
61.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面的所述数据包处理方法的步骤。
62.本技术的有益效果是:
63.本技术实施例提供一种数据包处理方法、装置、设备及存储介质,该方法包括:获取当前接收到的目标待重组字段的标识以及目标待重组字段所属的目标数据包的标识;根据目标待重组字段的标识以及目标数据包的标识,确定目标待重组字段的存储段;根据目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间;将目标待重组字段存储至目标存储空间。
64.采用本技术实施例提供的数据包处理方法,在当前接收到目标待重组字段后,随之就可对目标待重组字段的标识以及目标数据包的标识进行识别,根据目标待重组字段的标识以及目标数据包的标识确定得到目标待重组字段的存储段。可以理解的是,根据目标待重组字段的标识以及目标数据包的标识确定得到的目标待重组字段的存储段符合用户设定的重组要求,这样基于目标待重组字段的存储段将目标数据包中的各目标待重组字段分别存储至对应的目标存储空间中的存储地址上,可以实现对目标数据包中的目标待重组字段进行重组,将目标数据包中的目标待重组字段重组为符合用户设置的重组要求。也就是说,本技术可在获取目标数据包的过程中,对目标待重组字段进行存储,即对目标待重组字段进行重组,这样可减少重组数据包时的延时,避免重组模块入口处的数据有堆叠的现
象。
附图说明
65.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
66.图1为本技术实施例提供的一种数据包处理系统的场景示意图;
67.图2为本技术实施例提供的一种reassemble模块的结构示意图;
68.图3为本技术实施例提供的一种数据包处理方法的流程示意图;
69.图4为本技术实施例提供的另一种数据包处理方法的流程示意图;
70.图5为本技术实施例提供的又一种数据包处理方法的流程示意图;
71.图6为本技术实施例提供的再一种数据包处理方法的流程示意图;
72.图7为本技术实施例提供的另一种数据包处理方法的流程示意图;
73.图8为本技术实施例提供的一种存储多个子待重组字段的场景示意图;
74.图9为本技术实施例提供的另一种存储多个子待重组字段的场景示意图;
75.图10为本技术实施例提供的一种数据包处理装置的结构示意图;
76.图11为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
77.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
78.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
79.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
80.在对本技术实施例进行详细解释之前,首先对本技术的应用场景予以介绍。该应用场景具体可以为对金融领域中的行情数据进行重组的场景,其中,行情数据可用于指示各种金融产品的各种信息,如合约代码,收盘价,开盘价,档位信息等,需要说明的是,本技术不对应用领域进行限定,除了金融领域,还可以应用于医疗领域、教育领域等。此处以金融领域中的行情数据为例进行说明,可以理解的,行情数据可通过用户数据报协议(udp,user datagram protocol)进行传输,udp数据包中行情数据对应的字段描述了各种金融产品的各种信息。示例性的,证券交易所(如上海证券交易所)将压缩后用于描述行情数据的字段数据流发送至fpga,通过fpga对压缩后的字段数据流进行解码,并且对解码后的字段数据流进行重组,从而将重组后的字段数据流组成的udp数据包发送至证券公司。
81.为了使得本领域技术人员能够使用本技术内容,结合特定应用场景“fpga的udp数据包中的字段进行重组”,给出以下实施方式。对于本领域技术人员来说,在不脱离本技术的精神和范围的情况下,可以将这里定义的一般原理应用于其他实施例和应用场景。虽然本技术主要围绕fpga的udp数据包中的字段进行重组进行描述,但是应该理解,这仅是一个示例性实施例。
82.图1为本技术实施例提供的一种数据包处理系统的场景示意图,如图1所示,fpga中包括解码模块、reassemble模块(重组模块)以及调度模块,解码模块、reassemble模块(重组模块)以及调度模块依次连接,解码模块中可包括step解码模块、fast解码模块,其中,step解码模块首先对接收到的加密/压缩后的udp数据包中的行情数据进行第一次解码,并将解码后的行情数据发送至fast解码模块,fast解码模块继续对接收到的第一次解码后的行情数据进行第二次解码,得到解码后的行情数据,reassemble模块对解码后的行情数据进行重组处理,得到重组后的行情数据,并通过调度模块将重组后的行情数据发送至行情用户,如证券公司。
83.需要说明的是,图1只是一种示例,fpga可包括更少或更多的功能模块,本技术不对其进行限定。
84.现有的fpga中的reassemble模块对udp数据包中的字段进行重组时,需要在接收到一个完整的解码后的udp数据包后,才对该udp数据包中的字段进行重组,这样会导致重组udp数据包时有较大延时,并且还会造成reassemble模块入口处的数据有堆叠的现象。
85.图2为本技术实施例提供的一种reassemble模块的结构示意图,如图2所示,reassemble模块中包括读写控制单元、存储装置,其中,读写控制单元用于将字段写入存储装置的目标存储空间中,还可从存储装置的目标存储空间按照写入的方式读出字段。一种示例性的,reassemble模块在接收到字段后,即可通过读写控制单元根据行情用户的需求信息对该字段进行重组。重组的过程可以理解为,根据所确定的该字段的存储段以及fpga中存储装置的存储信息,确定存储装置中的目标存储空间,进而将该字段存储至(写入)存储装置中的目标存储空间上,反之,读写控制单元可从存储装置中的目标存储空间上按照写入的方式读出字段,并将字段进行拼接得到重组后的upd数据包。
86.其中,reassemble模块中的存储装置中可包括多个存储子装置,如随机存取存储器ram(ram1、ram2)、先进先出存储器fifo,ram1、ram2分别用于存储字段,fifo用于存储数据包的存储开始地址,reassemble模块可基于fifo中的数据包的存储开始地址从ram1、ram2中读取字段。需要说明的是,本技术不对存储装置中的具体结构进行限定。
87.根据上述描述可知,udp数据包中包括多个字段,每个字段均可参考上述提到的重组方式进行重组,这样reassemble模块在接收到一个完整的udp数据包时,已经对该udp数据包中的多个字段进行了重组,而不是在接收到完整的udp数据包后,才对该udp数据包中的各字段进行重组。本技术这样可以减少重组udp数据包时的延时,避免reassemble模块入口处的数据有堆叠的现象。
88.如下结合附图对本技术提到的一种数据包处理方法进行示例说明。图3为本技术实施例提供的一种数据包处理方法的流程示意图。如图3所示,该方法可包括:
89.s301、获取当前接收到的目标待重组字段的标识以及目标待重组字段所属的目标数据包的标识。
90.首先应该理解的是,udp数据包中包括报文头数据以及行情数据,报文头数据中携带有udp数据包的长度、数据包的标识,行情数据被划分为多个字段,各字段分别对应有标识,可利用字节描述各中金融产品的各种信息,如合约代码,收盘价,开盘价,档位信息等。
91.结合图1进行说明,一种示例性的,fpga中的解码模块在接收到一个完整的数据包后,首先会接收到下一个数据包的报文头数据,之后会接收到该数据包中包括的待解码字段,解码模块可根据该报文头数据分析得到该数据包的标识,并将该数据包的标识发送至reassemble模块中,同时,解码模块对待解码字段解码后,可将得的目标待重组字段发送至reassemble模块中。此处以当前时刻为维度进行说明,reassemble模块在当前接收到目标待重组字段后,可分析得到目标待重组字段的标识,同时还可获取到包含有目标待重组字段的数据包的标识,将包含有目标待重组字段的数据包的标识可称为目标数据包的标识。
92.s302、根据目标待重组字段的标识以及目标数据包的标识,确定目标待重组字段的存储段。
93.可以理解的是,行情用户对目标数据包中的待重组字段的重组策略具有相关要求,相关要求例如可包括目标数据包中的各待重组字段的先后顺序、各待重组字段的长度等。一种示例性的,reassemble模块预先可根据上述提到的预设要求以及reassemble模块上的存储装置的存储信息,确定出目标数据包中各目标待重组字段的标识对应的存储段。
94.基于此,reassemble模块在目标待重组字段的标识以及目标数据包的标识后,进而可根据预先得到的目标数据包中各目标待重组字段的标识对应的存储段确定出当前接收到的目标待重组字段的存储段。应理解的是,存储段是一个存储地址区间,该目标待重组字段的存储段的存储地址的数量与该目标重组字段的长度一致。
95.s303、根据目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间。
96.s304、将目标待重组字段存储至目标存储空间。
97.其中,reassemble模块中有存储装置,以图1中的ram1为例进行说明,ram1中的存储地址被划分为多个存储空间,即各存储空间对应有一存储地址区间。
98.在得到目标待重组字段的存储段后,可根据目标待重组字段的存储段指示的存储地址区间以及存储装置中各存储空间与存储地址区间之间的对应关系,确定出目标存储空间,同时还可确定出目标待重组字段在目标存储空间中的目标存储地址,即目标存储空间包含有目标待重组字段的存储段。需要说明的是,目标存储空间可能为一个,也可能为多个,本技术不对其进行说明。在目标存储空间确定后,reassemble模块中的读写单元可将目标待重组字段存储至(写入)该目标存储空间对应的目标存储地址上。
99.综上所述,本技术提供的数据包处理方法中,在当前接收到目标待重组字段后,随之就可对目标待重组字段的标识以及目标数据包的标识进行识别,根据目标待重组字段的标识以及目标数据包的标识确定得到目标待重组字段的存储段。可以理解的是,根据目标待重组字段的标识以及目标数据包的标识确定得到的目标待重组字段的存储段符合用户设定的重组要求,这样基于目标待重组字段的存储段将目标数据包中的各目标待重组字段分别存储至对应的目标存储空间中的存储地址上,可以实现对目标数据包中的目标待重组字段进行重组,将目标数据包中的目标待重组字段重组为符合用户设置的重组要求。也就是说,本技术可在获取目标数据包的过程中,对目标待重组字段进行存储,即对目标待重组
字段进行重组,这样可减少重组数据包时的延时,避免重组模块入口处的数据有堆叠的现象。
100.图4为本技术实施例提供的另一种数据包处理方法的流程示意图。如图4所示,可选地,上述根据目标待重组字段的标识以及目标数据包的标识,确定目标待重组字段的存储段,包括:
101.s401、根据目标数据包的标识,获取目标数据包对应的映射关系表。
102.s402、从映射关系表中读取目标待重组字段的标识对应的存储段,得到目标待重组字段的存储段。
103.其中,映射关系表用于记录目标数据包中的各待重组字段的标识与存储段的对应关系。一种示例性的,reassemble模块中包括有预先得到的映射关系表,一个映射关系表对应一个数据包的标识,在得到目标数据包的标识确定后,可得到目标数据包的标识对应的关系映射表,进而可根据该关系映射表中记录的各待重组字段的标识与存储段的对应关系确定出目标待重组字段的标识对应的存储段,可将目标待重组字段的标识对应的存储段作为存储该目标待重组字段的存储段。
104.可以理解的是,映射关系表相当于对数据包进行重组的策略,该策略可根据行情用户的重组要求、存储装置的存储信息确定得到,所以,在当前接收到目标待重组字段后,可基于映射关系表确定出目标待重组字段的存储段,并将目标待重组字段写入该存储段中。随着时间的推移,可基于映射关系表将目标数据包中的各目标待重组字段均写入对应的存储段中,这样在保证重组精确度的前提下,还能提高重组效率,减少重组时的延迟。
105.下述为对如何确定映射关系表的示例进行说明。
106.可选地,上述根据目标数据包的标识,获取目标数据包对应的映射关系表之前,该方法还包括:根据目标数据包对应的重组信息、存储装置的存储信息以及目标数据包对应的存储起始地址,确定目标数据包中各待重组字段的标识对应的存储段,其中,重组信息用于指示目标数据包中各待重组字段的标识对应的长度以及先后顺序;根据目标数据包中各待重组字段的标识对应的存储段,建立映射关系表。
107.示例性的,根据上述描述可知,目标数据包对应的重组信息相当于行情用户对目标数据包中的待重组字段的重组策略的相关要求,相关要求例如可包括目标数据包中的各待重组字段的先后顺序、各待重组字段的长度等;存储装置的存储信息用于指示各存储空间与存储地址区间之间的对应关系。
108.一种示例性的,首先可根据目标数据包对应的存储起始地址,确定出目标数据包对应的重组信息中首个待重组字段的存储起始地址,然后再根据重组信息各待重组字段的长度以及存储装置中各存储空间与存储地址区间之间的对应关系,确定出目标数据包中各待重组字段的标识对应的存储段。进而可将目标数据包中各待重组字段的标识与对应的存储段进行相关联存储,即可建立得到映射关系表。
109.图5为本技术实施例提供的又一种数据包处理方法的流程示意图。如图5所示,可选地,上述根据目标数据包对应的重组信息、存储装置的存储信息以及目标数据包对应的存储起始地址,确定目标数据包中各待重组字段的标识对应的存储段,包括:
110.s501、将目标数据包对应的存储起始地址作为目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址。
111.在一种可实现的实施例中,假设存储装置中还未存储任何数据,则可将目标数据包对应的重组信息中的首个字段存储在存储装置的存储起始地址中,即存储装置的存储起始地址即为目标数据包对应的存储起始地址,也相当于目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址。
112.s502、根据目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址、目标数据包对应的重组信息中各待重组字段的长度、以及存储装置的存储信息,确定目标数据包中各待重组字段的标识对应的存储段。
113.继续上述举例来说,将存储装置的存储起始地址作为目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址时,可根据目标数据包中各待重组字段的长度(即字节长度)以及存储装置中各存储空间与存储地址区间之间的对应关系,确定出目标数据包中各待重组字段的标识对应的存储段。
114.下述为对如何获取目标数据包对应的存储起始地址的示例进行说明。
115.可选地,上述根据目标数据包对应的重组信息、存储装置的存储信息以及目标数据包对应的存储起始地址,确定目标数据包中各待重组字段的标识对应的存储段之前,该方法还包括:获取目标数据包的前一个数据包对应的存储起始地址;根据前一个数据包对应的存储起始地址以及前一个数据包的长度,确定目标数据包对应的存储起始地址。
116.可以理解的是,行情用户首先会对各数据包配置重组信息,还会设置各数据包之间的先后顺序,如第一数据包先于第二数据包(作为目标数据包)。若存储装置中还未存储任何数据时,则可将第一数据包对应的重组信息中的首个待重组字段存储在存储装置的存储起始地址中,即存储装置的存储起始地址即为第一数据包对应的存储起始地址。可以理解的是,第一数据包中的各待重组字段的标识对应的待重组字段可从存储装置的存储起始地址进行存储,在将第一数据包中的各待重组字段分别存储成功后,需要对第二数据包中的各待重组字段进行存储。
117.一种示例性的,可将第一数据包对应的重组信息中各待重组字段的长度之和作为第一数据包的长度,在已知第一数据包对应的重组信息中的首个待重组字段的存储地址情况下,第一数据包对应的重组信息中的首个待重组字段的存储地址与第一数据包的长度的相加结果作为第二数据包对应的存储起始地址。
118.图6为本技术实施例提供的再一种数据包处理方法的流程示意图。如图6所示,可选地,上述根据目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间,包括:
119.s601、根据目标待重组字段的存储段以及存储装置的各存储空间的地址宽度,确定包含有存储段的存储空间。
120.s602、将包含有存储段的存储空间作为目标存储空间。
121.根据上述描述可知,目标待重组字段的存储段相当于一个存储地址区间,存储装置的各存储空间的地址宽度可用各存储空间与存储地址之间的对应关系进行表征。根据目标待重组字段的存储地址区间以及存储装置的各存储空间与存储地址之间的对应关系,确定出包含有存储段的存储空间,进而将包含有存储段的存储空间作为目标存储空间。
122.举例来说,假设存储装置的各存储空间的地址宽度一致,如8个字节,目标待重组字段的存储段为10个字节,假设目标待重组字段从存储装置的存储起始地址进行存储,那
么包含有目标待重组字段的存储段的存储空间为存储装置中的存储空间1、存储空间2。
123.图7为本技术实施例提供的另一种数据包处理方法的流程示意图。如图7所示,可选地,上述将目标待重组字段存储至目标存储空间,包括:
124.s701、确定目标存储空间的数量是否为一个。
125.s702、若否,则根据目标待重组字段在各目标存储空间的长度对目标待重组字段进行分割,得到多个子待重组字段。
126.s703、将各子待重组字段存储在各目标存储空间上。
127.一种示例性的,在根据目标待重组字段的存储段以及存储装置的各存储空间的地址宽度,确定包含有该存储段的存储空间(目标存储空间)后,统计目标存储空间的数量,如果目标存储空间的数量为多个,那么证明需要横跨多个目标存储空间存储目标待重组字段。
128.继续上述举例来说,需要将目标待重组字段中的前8个字节存储在存储空间1中、目标待重组字段中的后2个字节存储在存储空间2中,基于此,可将目标待重组字段进行分割,得到子待重组字段1、子待重组字段2,其中,子待重组字段1用于表征目标待重组字段中的前8个字节,子待重组字段2用于表征目标待重组字段中的后两个字节。进而将子待重组字段1存储在存储空间1中,子待重组字段2存储在存储空间2中。
129.需要说明的是,存储空间1、存储空间2可为存储装置中的同一个存储子装置的存储空间,如图2中的ram1或ram2,也可为存储装置中的不同存储子装置的存储空间,如图2中的ram1以及ram2。
130.一种示例性的,图8为本技术实施例提供的一种存储多个子待重组字段的场景示意图,如图8所示,假设图2所示的reassemble模块中的存储装置仅包括一个ram(如ram1),ram1中包括多个存储空间,如存储空间1、存储空间2、存储空间3以及存储空间n,各存储空间的地址宽度均为8个字节。
131.假设reassemble模块接收到的上述示例中的目标待重组字段(长度是10个字节)为tag1,那么将tag1分割为tag1-1(8个字节)、tag1-2(2个字节)后,图2中所示的读写控制模块可将tag1-1存储在存储空间1后,再将tag1-2存储在存储空间2对应的存储地址上。假设目标数据包中包括12个字段,如tag1至tag12,那么在reassemble模块接收到tag2至tag12中的任何一个目标待重组字段时,可参考存储tag1的方式对tag2至tag12中的任何一个目标待重组字段进行存储,此处不再进行说明。
132.下述为对图2中的存储装置包括多个存储子装置(如ram1、ram2)的场景下,如何对目标待重组字段进行存储的示例进行说明。
133.可选地,上述将各子待重组字段存储在各目标存储空间上,包括:根据目标待重组字段在各目标存储空间的长度,确定存储装置中各存储子装置的目标存储空间中对应的存储地址;同时将各子待重组字段存储在各存储子装置的目标存储空间中对应的存储地址上。
134.一种示例性的,图9为本技术实施例提供的另一种存储多个子待重组字段的场景示意图,如图9所示,ram1、ram2为两个完全相同的存储子装置,ram1、ram2分别包括多个存储空间,如存储空间1、存储空间2、存储空间3以及存储空间n,各存储空间的地址宽度均为8个字节。其中,ram1中的存储空间1与ram2中的存储空间1的存储地址完全一致,其它类似。
135.假设reassemble模块接收到的上述示例中的目标待重组字段(长度是10个字节)为tag1,那么将tag1分割为tag1-1(8个字节)、tag1-2(2个字节)后,图2中所示的读写控制模块可同时将tag1-1存储在ram1中的存储空间1、tag1-2存储在ram2中的存储空间2中前2个字节对应的存储地址上。需要说明的是,读写控制模块可同时将tag1-1在ram2中的存储空间1、tag1-2存储在ram1中的存储空间2中前2个字节对应的存储地址上,本技术不对其进行限定。
136.假设目标数据包中包括12个字段,如tag1至tag12,那么在reassemble模块接收到tag2至tag12中的任何一个目标待重组字段时,可参考存储tag1的方式对tag2至tag12中的任何一个目标待重组字段进行存储,此处不再进行说明。
137.值的注意的是,本技术不对存储装置中包括的存储子装置的数量进行限定。一般情况下,可根据目标待重组字段需要横跨的目标存储空间的数量确定存储子装置的数量,本技术不对其进行限定。
138.可以看出,在目标待重组字段需要横跨多个目标存储空间时,可基于目标待重组字段的存储段同时将目标待重组字段的多个子待重组字段存储在各存储子装置的目标存储空间对应的存储地址上,这样可提高重组效率,即减小重组数据包的延时,进而避免reassemble模块入口处的数据有堆叠的现象。
139.下述为将目标数据包中的各待重组字段存储完成后,如何从存储设置中读取待输出数据包的示例进行说明。
140.可选地,上述将目标待重组字段存储至目标存储空间之后,该方法还包括:获取存储装置上存储的待输出数据包的存储起始地址;基于待输出数据包的存储起始地址以及待输出数据包中各字段的存储段,从存储装置中读取各字段;根据各字段的存储段之间的先后顺序,将各字段拼接为待输出数据包并输出。
141.结合图1以及图2进行说明,图1中的调度模块在确定出可输出待输出数据包时,可向图2中的reassemble模块中的读写控制单元发送读取指令,读写控制单元基于该读写指令从fifo中获取待输出数据包的存储起始地址,待输出数据包的存储起始地址可参考上述相关部分说明,此处不再进行说明。读写控制单元根据待输出数据包的存储起始地址确定出待输出数据包在存储装置中的存储起始地址,从待输出数据包在存储装置中的存储起始地址上开始读取,并结合待输出数据包中各字段的存储段,最终可读取到待输出数据包中的各字段。
142.在读取到待输出数据包中的各字段后,可按照存储待输出数据包中各字段的方式,即按照各字段的存储段之间的先后顺序,将各字段进行拼接,得到待输出数据包并输出。
143.可选地,图1中的调度模块在确定出可输出待输出数据包时,可向图2中的reassemble模块中的读写控制单元发送读取指令,读写控制单元基于该读写指令获取网络参数,如网络带宽,确定出可同时输出多少个待输出数据包,并同时计算出组包的帧头。基于fifo先进先出的性质,可确定出各待输出数据包的存储起始地址,基于各待输出数据包的存储起始地址及各待输出数据包中各字段的存储段,从所述存储装置中读取各待输出数据包对应的各字段,进而根据各待输出数据包对应的各字段之间的先后顺序,将各待输出数据包对应的各字段拼接为各待输出数据包,并进行组包输出。
144.可选地,上述基于待输出数据包的存储起始地址以及待输出数据包中各字段的存储段,从存储装置中读取各字段,包括:
145.针对待输出数据包中各字段分别执行如下操作:若字段的存储段对应的目标存储空间为多个,且目标存储空间分布在不同的存储子装置中,则根据字段的存储段,从各存储子装置的目标存储空间中对应的存储地址上读取字段。
146.结合图8以及图9进行说明,若待输出数据包中的某个字段为图8中的tag1,那么可根据tag1的存储段,分别从ram1的存储空间1以及存储空间2中读取tag1对应的tag1-1以及tag1-2,并且可按照图8部分描述的存储方式将tag1-1以及tag1-2进行拼接,进而得到tag1。
147.若待输出数据包中的某个字段为图9中的tag1,那么可根据tag1的存储段,分别从ram1的存储空间1以及ram2的存储空间2中读取tag1对应的tag1-1以及tag1-2,并且可按照图9部分描述的存储方式将tag1-1以及tag1-2进行拼接,进而得到tag1。
148.可以看出,基于该字段的存储段,可从各存储子装置中读取出该字段对应的子字段,进而拼接得到该字段。
149.下述示例为fpga中的解码模块对待解码字段进行解码处理的过程进行示例说明。
150.可选地,上述获取当前接收到的目标待重组字段的标识之前,该方法还可包括:若当前接收到待解码字段,则对所述待解码字段进行解码处理,得到所述目标待重组字段;对所述目标待重组字段进行解析,得到所述目标待重组字段的标识。
151.一种示例性的,结合图1进行说明,上游(如证券交易所)将压缩后形成的udp数据包中的待解码字段发送至fpga中的解码模块后,解码模块可利用串行解码的方式待解码字段进行解码,即解码模块在接收udp数据包的过程中就进行解码操作,解码模块只要接收到待解码字段,即可对其进行解码处理,得到上述提到的目标待重组字段。需要说明的是,解码模块可在接收到一个待解码字段就进行解码处理,也可在接收到预设多个待解码字段(数量少于数据包中的待解码字段数量)就进行解码处理,本技术不对其进行限定。
152.根据上述描述可知,udp数据包中的字段均设置有标识,该标识可用于指示字段的字段名,解码模块在得到目标待重组字段后,将目标待重组字段发送至fpga中的reassemble模块中,reassemble模块进而可从目标待重组字段中分析出目标待重组字段的标识。
153.可以看出,本技术中的fpga在解码阶段,是在接收udp数据包的过程中就进行解码处理,这样可在提高解码效率的前提下,进一步减少后期进行数据包重组的延时。
154.可选地,上述获取当前接收到的目标待重组字段的标识之前,该方法还包括:根据数据包的长度,确定当前是否接收到完整的待解码数据包,该待解码数据包中包括多个待解码字段;若是,则对待解码数据包中的各待解码字段依次进行解码处理,得到多个待重组字段;对待重组字段进行解析,得到待重组字段数据的标识。
155.根据上述描述可知,udp数据包中包括报文头数据以及行情数据,报文头数据中携带有udp数据包的长度。结合图1进行说明,上游(如证券交易所)将压缩后形成的udp数据包中的报文头数据、行情数据对应的待解码字段依次发送至fpga中的解码模块,解码模块首先对接收到的报文头数据进行解析,得到当前待解码数据包的长度,随后可依次接收该待解码数据包的待解码字段,并根据当前接收到的所有待解码字段的长度之和确定该待解码
数据包是否已经接收完毕,如果确定出该待解码数据包接收完毕,即解码模块当前接收到一个完整的待解码数据包,进而解码模块分别对该待解码数据包中的各待解码字段依次进行解码处理。此处以一个待解码字段为例进行说明,解码模块在解码得到待解码字段对应的待重组字段后,可将该待重组字段发送至fpga中reassemble模块中,reassemble模块可对该待重组字段进行解析,得到待重组字段数据的标识。
156.图10为本技术实施例提供的一种数据包处理装置的结构示意图。如图10所示,该装置包括:
157.获取模块1001,用于获取当前接收到的目标待重组字段的标识以及目标待重组字段所属的目标数据包的标识;
158.第一确定模块1002,用于根据目标待重组字段的标识以及目标数据包的标识,确定目标待重组字段的存储段;
159.第二确定模块1003,用于根据目标待重组字段的存储段以及存储装置的存储信息,确定目标存储空间;
160.存储模块1004,用于将目标待重组字段存储至目标存储空间。
161.可选地,第一确定模块1002,具体用于根据目标数据包的标识,获取目标数据包对应的映射关系表,映射关系表用于记录目标数据包中的各待重组字段的标识与存储段的对应关系;从映射关系表中读取目标待重组字段的标识对应的存储段,得到目标待重组字段的存储段。
162.可选地,第一确定模块1002,还用于根据目标数据包对应的重组信息、存储装置的存储信息以及目标数据包对应的存储起始地址,确定目标数据包中各待重组字段的标识对应的存储段,其中,重组信息用于指示目标数据包中各待重组字段的标识对应的长度以及先后顺序。根据目标数据包中各待重组字段的标识对应的存储段,建立映射关系表。
163.可选地,第一确定模块1002,还具体用于将目标数据包对应的存储起始地址作为目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址;根据目标数据包对应的重组信息中首个待重组字段的标识对应的存储起始地址、目标数据包对应的重组信息中各待重组字段的长度、以及存储装置的存储信息,确定目标数据包中各待重组字段的标识对应的存储段。
164.可选地,第一确定模块1002,还具体用于获取目标数据包的前一个数据包对应的存储起始地址;根据前一个数据包对应的存储起始地址以及前一个数据包的长度,确定目标数据包对应的存储起始地址。
165.可选地,第二确定模块1003,具体用于根据目标待重组字段的存储段以及存储装置的各存储空间的地址宽度,确定包含有存储段的存储空间;将包含有存储段的存储空间作为目标存储空间。
166.可选地,存储模块1004,具体用于确定目标存储空间的数量是否为一个;若否,则根据目标待重组字段在各目标存储空间的长度对目标待重组字段进行分割,得到多个子待重组字段;将各子待重组字段存储在各目标存储空间上。
167.可选地,存储模块1004,还具体用于根据目标待重组字段在各目标存储空间的长度,确定存储装置中各存储子装置的目标存储空间中对应的存储地址;同时将各子待重组字段存储在各存储子装置的目标存储空间中对应的存储地址上。
168.可选地,该装置还包括:读取模块;
169.该读取模块,用于获取存储装置上存储的待输出数据包的存储起始地址;基于待输出数据包的存储起始地址以及待输出数据包中各字段的存储段,从存储装置中读取各字段;根据各字段的存储段之间的先后顺序,将各字段拼接为待输出数据包并输出。
170.可选地,该读取模块,具体用于针对待输出数据包中各字段分别执行如下操作:若字段的存储段对应的目标存储空间为多个,且目标存储空间分布在不同的存储子装置中,则根据字段的存储段,从各存储子装置的目标存储空间中对应的存储地址上读取字段。
171.可选地,该装置还包括:解码模块;
172.该解码模块,用于若当前接收到待解码字段,则对待解码字段进行解码处理,得到目标待重组字段;对目标待重组字段进行解析,得到目标待重组字段的标识。
173.上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
174.以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital signal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
175.图11为本技术实施例提供的一种电子设备的结构示意图,如图11所示,该电子设备可以包括:处理器1101、存储介质1102和总线1103,存储介质1102存储有处理器1101可执行的机器可读指令,当该电子设备运行时,处理器1101与存储介质1102之间通过总线1103通信,处理器1101执行机器可读指令,以执行上述方法实施例的步骤。具体实现方式和技术效果类似,这里不再赘述。
176.可选地,本技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法实施例的步骤。
177.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
178.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
179.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
180.上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文:read-only memory,简称:rom)、随机存取存储器(英文:random access memory,简称:ram)、磁碟或者光盘等各种可以存储程序代码的介质。
181.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
182.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1