CN115567460B - 数据包处理方法及装置 - Google Patents

数据包处理方法及装置 Download PDF

Info

Publication number
CN115567460B
CN115567460B CN202211550851.4A CN202211550851A CN115567460B CN 115567460 B CN115567460 B CN 115567460B CN 202211550851 A CN202211550851 A CN 202211550851A CN 115567460 B CN115567460 B CN 115567460B
Authority
CN
China
Prior art keywords
service data
packet
data packet
complete
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211550851.4A
Other languages
English (en)
Other versions
CN115567460A (zh
Inventor
刘镇
蔡鹏�
周振磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hundsun Technologies Inc
Original Assignee
Hundsun Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hundsun Technologies Inc filed Critical Hundsun Technologies Inc
Priority to CN202211550851.4A priority Critical patent/CN115567460B/zh
Publication of CN115567460A publication Critical patent/CN115567460A/zh
Application granted granted Critical
Publication of CN115567460B publication Critical patent/CN115567460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请提供数据包处理方法及装置,其中所述数据包处理方法包括:接收待处理网络包,其中,待处理网络包包含至少一个业务数据包,至少一个业务数据包的排序序号为乱序;对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合;提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;基于第一业务数据包集合和第一完整业务数据子包集合,生成正序业务数据包集合,并基于第二业务数据包集合和第二完整业务数据子包集合,生成完整业务数据包集合;通过对不同类型的业务数据包恢复正序输出,降低数据输出的延时问题,提高用户使用体验。

Description

数据包处理方法及装置
技术领域
本申请涉及计算机技术领域,特别涉及数据包处理方法。本申请同时涉及数据包处理装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
在业务处理系统中,基于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)的应用处理越来越广泛。通过使用FPGA的并发处理能力,加速业务数据的获取。然而,随着业务处理系统越来越复杂,业务数据的数据包可能会包含着多条业务信息,当业务数据的数据包在传输过程中发生乱序时,FPGA需要通过TCP协议中的关键字段来保证业务的连续,只有将乱序的数据包解析为正序的数据包,才能进行数据传输,这样就会导致数据输出的延时问题,降低了业务处理系统的数据处理效率,影响了用户使用体验。
发明内容
有鉴于此,本申请实施例提供了数据包处理方法。本申请同时涉及数据包处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的上述问题。
根据本申请实施例的第一方面,提供了一种数据包处理方法,包括:
接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;
对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合;
提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;
基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
根据本申请实施例的第二方面,提供了一种数据包处理装置,包括:
待处理网络包接收模块,被配置为接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;
数据包分类模块,被配置为对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合;
数据包提取分类模块,被配置为提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;
数据包优选模块,被配置为基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述数据包处理方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述数据包处理方法的步骤。
本申请提供的数据包处理方法,接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合;提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
本申请一实施例提供的数据包处理方法,通过对待处理网络包中的每个业务数据包进行业务分类,以及对提取的完整业务数据子包进行业务分类;并根据同一类的业务数据包实现数据包优选与排序,进而,快速完成对待处理网络包的正序过程;该种方式通过增加乱序通路(提取完整业务数据子包的处理过程)对业务数据包进行提前优选,对不同类型的业务数据包恢复正序输出,降低数据输出的延时问题,提高业务处理系统的数据处理效率,提高用户使用体验。
附图说明
图1是本申请一实施例提供的网络包乱序变正序的延时输出示意图;
图2是本申请一实施例提供的一种数据包处理方法的处理结构示意图;
图3是本申请一实施例提供的正序业务数据包、乱序变正序业务数据包的结构示意图;
图4是本申请一实施例提供的一种数据包处理方法的流程图;
图5是本申请一实施例提供的TCP网络包或组播分片包示意图;
图6是本申请一实施例提供的一种数据包处理方法中提取完整业务数据子包的结构示意图;
图7是本申请一实施例提供的一种数据包处理方法中过滤出完整业务数据子包的处理流程图;
图8是本申请一实施例提供的一种数据包处理方法中逐笔通道保序优选的流程图;
图9是本申请一实施例提供的一种数据包处理方法中快照业务的去重流程图;
图10是本申请一实施例提供的一种数据包处理装置的结构示意图;
图11是本申请一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本申请一个或多个实施例涉及的名词术语进行解释。
FPGA:(Field-Programmable Gate Array),即现场可编程门阵列,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
FIFO(First Input First Output,先入先出队列):是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
RAM(Random Access Memory,随机存取存储器):是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。
在证券行情系统中,基于FPGA的应用处理越来越广泛。通过使用FPGA的并发处理能力,加速行情数据的获取。然而,当网络包发生乱序时,FPGA实现将网络包从乱序变正序的过程,延迟了数据的输出;原因是,网络包乱序(packet reordering)的问题是由于不同路径上的传输时延差异,网络包到达接收端的顺序与发送顺序并不相同,后发送的数据包可能会比之前发送的数据包更早地到达接收端。然而,在数据传输协议中,只有按序到达的数据包才能往上递交应用层进行处理。当网络包乱序现象比较严重时,这就使得乱序的网络包会滞留在接收端缓存中,无法及时递交上层应用进行处理。
为了便于理解,可参见图1发生延时的示例,图1示出了网络包乱序变正序的延时输出示意图。其中,图1中的(a)为TCP场景下乱序变正序带来的延迟输出示意图,图1中的(b)为IP分片乱序变正序带来的延迟输出示意图。
在图1中(a)的TCP网络包行情中,一旦出现乱序,FPGA需要通过TCP协议中的关键字段SeqNum来保证输出业务的连续,只有等到正序包的到达,乱序的场景才会得到舒缓,此时业务解码模块是缺少网络处理部分的数据的;在图1中(b)的IP分片乱序的场景中,当头部的分片出去后,必须等待相同ID的后续分片,此时若存在其它ID的分片就会被阻塞。
基于此,网络处理好的网络包交给业务处理模块再处理,在没有乱序包的场景下,处理类似于流水方式;但当存在乱序的网络包的时候,传统设计必须等网络处理正序后再进行业务处理。因此,乱序变正序的过程使得其它包受到积压,使得整体网络包的输出将会被延迟,极大地影响了行情数据的输出性能。
在本申请中,提供了数据包处理方法,本申请同时涉及数据包处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图2示出了根据本申请一实施例提供的一种数据包处理方法的处理结构示意图。
实际应用中,由于传输道路不同,导致网络包中各个业务数据包会存在乱序的情况(发送顺序和接收顺序不一致),即本申请所述的待处理网络包包含至少一个业务数据包,且业务数据包的排序序号为乱序。图2中的(a)示出了第一种数据包处理过程的处理结构示意图。乱序重传模块将待处理网络包发送至业务过滤1模块,由业务过滤1模块完成对待处理网络包中各业务数据包的分类处理,按照业务场景可分为逐笔业务和快照业务,其中,逐笔业务可以理解为按照通道号每笔具有连续性递增关系的业务数据包,比如股票中用户每一笔委托量、成交量的业务数据包;快照业务可以理解为互相不具有关联关系的业务数据包,比如用户终端每3秒截屏存储的业务数据包;然后,将逐笔业务数据包集合和快照业务数据包集合这两类业务的数据包集合分别发送至两个业务数据包解码模块,即逐笔解码模块和快照解码模块,在这两个业务数据包解码模块中,对业务数据包集合进行解码;最后,将解码后的业务数据包,发送至缓存调度模块,便于后续完成对目标网络包的分发。
图2中的(b)示出了第二种数据包处理过程的处理结构示意图;实际应用中,乱序重传模块将待处理网络包发送至业务过滤1模块,由业务过滤1模块对待处理网络包内各业务数据包进行业务分类,分为逐笔业务数据包集合和快照业务数据包集合;同时,业务过滤2模块可提取待处理网络包中每个业务数据包的完整业务数据子包,并对完整业务数据子包进行业务分类,分为逐笔完整业务数据子包集合和快照完整业务数据子包集合;然后,将逐笔业务数据包集合和逐笔完整业务数据子包集合,均发送至逐笔优选模块中,将快照业务数据包集合和快照完整业务数据子包集合,均发送至快照去重模块中;最后,逐笔优选模块对两路发送的业务数据包集合实现优选,并执行正序处理;快照去重模块对两路发送的业务数据包集合实现去重处理;将处理后的两类数据包集合发送至缓存调度模块,完成后续对目标网络包的分发。
需要说明的是,第二种数据包处理过程,为了降低数据包传输的延时,提出了一种基于FPGA能够在乱序场景下提升时延性能的设计框架,通过业务过滤2模块对待处理网络包中的完整业务数据子包提前进行处理,通过优选模块和去重模块,使得延迟性能会有明显的提升。
为了便于理解,下述实施例主要是对图2中的(b)方案进行详细介绍;在详细介绍本申请实施例提供的数据包处理方法之前,可参见图3,图3是本申请一实施例提供的正序业务数据包、乱序变正序业务数据包的结构示意图。
图3中包括两个部分,分别为(a)正序业务数据包的结构示意图,(b)乱序变正序业务数据包的结构示意图;
图3中的(a),包括正序业务数据包(1)、正序业务数据包(2)、正序业务数据包(3),每个正序业务数据包中可包括多个业务数据子包,如图所示,正序业务数据包(1)中包括由1、2、3、4这四个片段组成的正序业务数据子包,其中,片段4为不完整的子包,可表示业务数据包的信息有丢失;正序业务数据包(2)中包括由4、5、6、7、8、9、10这七个片段组成的正序业务数据子包,其中,片段4和片段10为不完整的子包,可表示业务数据包的信息有丢失;正序业务数据包(3)中包括由10、11、12、13、14、15、16这七个片段组成的正序业务数据子包,其中,片段10和片段16为不完整的子包,可表示业务数据包的信息有丢失;需要说明的是,三个正序业务数据包进行拼接后,可将不完整的子包中的业务数据包的信息进行拼接,以获得完整的业务信息内容。
图3中的(b),在接收到乱序业务数据包时,需要将乱序业务数据包调整为正序业务数据包,如图所示,将乱序业务数据包(2)、乱序业务数据包(1)、乱序业务数据包(3),调整为正序业务数据包(1)、正序业务数据包(2)、正序业务数据包(3);相应地,正序业务数据子包与图3中的(a)的正序业务数据子包结构相一致,在此不做过多赘述。
需要说明的是,本申请实施例涉及的乱序业务数据包变为正序业务数据包的含义,可参见图3中的结构示意;但在实际应用中,每个业务数据包的业务类型可能并不相同,在进行乱序变正序处理的过程中就会造成延时问题,因此,本申请实施例中不仅考虑到对不同业务类型的业务数据包进行乱序变正序的处理,还考虑到是否可以针对不同业务类型的业务数据包进行提前预处理,以解决延时的时长问题。具体可参见下述实施例的描述。
参见图4,图4示出了根据本申请一实施例提供的一种数据包处理方法的流程图,具体包括以下步骤:
需要说明的是,本实施例提供的数据包处理方法可应用于业务处理系统的数据传输过程,为了将乱序的业务数据包调整为正序的排列顺序,通过对业务数据包中完整的业务数据子包的预先提取,以快速地实现对业务数据包的优选排序、去重等,进而降低数据传输的延时。
步骤402:接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序。
其中,待处理网络包可以理解为至少一个业务数据包的排序序列为乱序的网络包,且至少一个业务数据包可以为业务数据包3、业务数据包2、业务数据包1。
实际应用中,在FPGA芯片中,在接收到待处理网络包之后,即可根据待处理网络包中的各个业务数据包乱序的排序序号,可确定需要对各个业务数据包执行正序处理,以便于获得排序序号为正序的业务数据包,进而,便于后续组成正序的业务数据包序列。
需要说明的是,待处理网络包中在仅有一个业务数据包A的情况下,也会出现排序序号为乱序的情况,比如,接收到该业务数据包A的排序序号为2,但当前根据业务场景,可确定当前本应该接收排序序号为1的业务数据包B,那么,此时接收到的业务数据包A即理解为排序序号为乱序,需要执行后续的乱序变正序的处理过程;本实施例中对如何确定排序序号为乱序的过程,不做任何限定,在此不做过多赘述。
步骤404:对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合。
其中,业务数据包可以理解为待处理网络包中的任意一个业务数据包,沿用上例,一个业务数据包可以为业务数据包3。
实际应用中,执行主体还可对每个业务数据包进行分类,根据业务数据包的业务类型,可分为两类,第一业务数据包集合可以理解为至少一个逐笔业务数据包组成的集合,第二业务数据包集合可以理解为至少一个快照业务数据包组成的集合;在本实施例中,上述集合还可以为空集,比如,在业务数据包为一个时,该业务数据包根据业务类型来进行分类,不是分到第一业务数据包集合,就是会分到第二业务数据包集合;相应地,多个业务数据包中,也可能会出现所有的业务数据包均为一种业务类型,因此就会出现空集的情况;需要说明的是,本实施例中以逐笔业务和快照业务为例进行说明,但实际应用中,业务数据包的业务类型并不限定于此。
进一步地,所述对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合,包括:
确定每个业务数据包的业务数据类型;
基于所述业务数据类型,对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合。
实际应用中,每个业务数据包中可携带有业务数据类型,根据业务数据类型确定每个业务数据包的具体业务属性,以实现对各个业务数据包进行分类,分成第一业务数据包集合和第二业务数据包集合这两类业务数据包集合;作为示例,待处理网络包中包括业务数据包3、业务数据包2、业务数据包1、业务数据包4这四个业务数据包,分别确定每个业务数据包的业务数据类型,并根据业务数据类型,可确定业务数据包3和业务数据包2为逐笔业务数据包类型、业务数据包1和业务数据包4为快照业务数据包类型;那么,第一业务数据包集合包括业务数据包3和业务数据包2,第二业务数据包集合为业务数据包1和业务数据包4。
步骤406:提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合。
其中,完整业务数据子包可以理解为由业务数据包中连续且具有完整业务内容的数据子包组成,比如,业务数据包1中,完整业务数据子包为数据子包(2)、(3)、(4)片段组成的。
实际应用中,FPGA芯片中,能够提取每个业务数据包对应的完整业务数据子包;需要说明的是,一个业务数据包中,只有头尾的数据子包如果涉及跨包,会存在业务信息不完整的情况,而中间的数据子包都是具有完整的业务信息。进一步地,再对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合。
需要说明的是,第一完整业务数据子包是第一业务数据包中的一部分,第二完整业务数据子包是第二业务数据包中的一部分。
为了便于理解,本实施例中还对业务数据包进行示意,以明确数据包中的头尾的数据子包不完整,中间的数据子包具有完整的业务信息;具体的参见图5,图5示出了TCP网络包或组播分片包示意图。
具体的,一个业务数据包,只有头尾的数据子包是不完整的,涉及跨包,而中间的数据子包(图5中的Msg)都是具有完整业务信息的。binary协议中一个逐笔业务数据包的长度为51字节,以网络包MTU下的最大载荷长度1480字节来算,共有29个业务数据子包,完整的数据子包数占比为93%(27/29)左右。因此,可以放弃首尾的两个非完整的业务数据子包(图5中头尾具有半个虚框的表示),而将中间连续的多个完整业务数据子包送至后续模块,由后续模块继续完成业务数据包的优选工作,以快速实现业务数据包的正序输出。需要说明的是,binary协议规定了业务消息头的格式参考如下表1:
表1
域名 字段描述 字节数
MsgType 数据类型 4字节
BodyLength 数据长度 4字节
进一步地,在图5的基础上,可参见图6,图6示出了根据本申请一实施例提供的一种数据包处理方法中提取完整业务数据子包的结构示意图。
图6示出了将乱序业务数据包中的完整业务数据子包进行提取的示意图,沿用上述图3中的示例,乱序业务数据包(2)中的包括4、5、6、7、8、9、10这七个片段,在执行放弃首尾的两个非完整包的操作后,获得的完整业务数据子包为包括5、6、7、8、9这五个片段的子包;乱序业务数据包(1)中的包括1、2、3、4这四个片段,在执行放弃首尾的两个非完整包的操作后,获得的完整业务数据子包为包括1、2、3这三个片段的子包;乱序业务数据包(3)中的包括10、11、12、13、14、15、16这七个片段,在执行放弃首尾的两个非完整数据子包的操作后,获得的完整业务数据子包为包括11、12、13、14、15这五个片段的子包。
进一步地,所述每个业务数据包中包括至少一个业务数据子包;具体的,所述提取每个业务数据包中的完整业务数据子包,包括:
在每个业务数据包对应的至少一个业务数据子包中,提取所述每个业务数据包对应的完整业务数据子包。
其中,完整业务数据子包可以理解为业务数据包中的至少一个业务数据子包中所有具有完整业务信息的完整数据子包。
实际应用中,对每个业务数据包均需要判断是否具有完整的业务信息的数据子包,进而,在判断过程中,将需要判断的业务数据包确定为待处理业务数据包,并在待处理业务数据包中的至少一个业务数据子包中,确定并提取出具有完整业务信息的完整业务数据子包;需要说明的是,完整业务数据子包的提取数量可以为一个、两个或者多个,是根据不同的业务数据包中具有的完整数据子包数量有关,本实施例对此不作具体限定。
更进一步地,在确定业务数据包中的完整业务数据子包时,需要根据每个业务数据子包的字段描述信息,以准确地判定是否为完整的数据子包;具体的,所述在每个业务数据包对应的至少一个业务数据子包中,提取所述每个业务数据包对应的完整业务数据子包,包括:
获取每个业务数据包对应的至少一个业务数据子包的字段描述信息;
根据每个业务数据子包的字段描述信息,判断每个业务数据子包是否为完整的数据子包;
基于每个完整的数据子包,确定所述每个业务数据包对应的完整业务数据子包。
其中,字段描述信息可以理解为业务数据子包中的数据类型、数据长度等描述数据子包属性的信息(如表1所示)。
实际应用中,每个业务数据包对应的至少一个业务数据子包中,均具有字段描述信息,进而,根据字段描述信息来判断每个业务数据子包是否为完整的数据子包,并将完整的数据子包进行按序拼接,实现了对完整数据子包的提取过程,获得了每个业务数据包对应的完整业务数据子包。
在判断业务数据子包是否为完整的数据子包时,需要确定该业务数据包的有效存储空间,来判断该业务数据子包是否能够存放在有效存储空间的字节空间中;具体的,所述根据每个业务数据子包的字段描述信息,判断每个业务数据子包是否为完整的数据子包,包括:
在所述每个业务数据子包中确定待处理业务数据子包;
根据所述待处理业务数据子包的字段描述信息,确定所述待处理业务数据子包的数据包长度;
获取待处理业务数据包的有效存储空间;
基于所述数据包长度和所述有效存储空间,判断所述待处理业务数据子包是否为完整的数据子包。
实际应用中,对每个业务数据子包均需要轮询判断,首先,先在各个业务数据子包中确定待处理业务数据子包,并查询该待处理业务数据子包的字段描述信息,以确定待处理业务数据子包的数据包长度,比如4字节;进而,再获取待处理业务数据包的当前有效存储空间,并根据待处理业务数据子包的数据包长度和待处理业务数据包的有效存储空间,来判断待处理业务数据子包是否为完整的数据子包;需要说明的是,该待处理业务数据包可以理解为每个业务数据子包所对应的业务数据包,本实施例中介绍的确定完整数据子包的过程仅以一个业务数据包为例进行说明。
进一步地,基于所述数据包长度和所述有效存储空间,判断所述待处理业务数据子包是否为完整的数据子包,包括:
在确定所述数据包长度满足有效性条件,且所述有效存储空间大于所述数据包长度的情况下,确定所述待处理业务数据子包为完整的数据子包。
实际应用中,还需要核实待处理业务数据子包的数据包长度的有效性,若有效,且有效存储空间大于数据包长度的情况下,表明待处理业务数据子包为完整数据子包,便于后续进行提取。例如,待处理业务数据子包为业务数据包(1)中的数据子包1片段,那么可确定出数据子包1片段对应的数据包长度为4K,而业务数据包(1)的有效存储空间为10K,那么在确定该数据包长度有效,且10K>4K的情况下,说明数据子包1片段中能够存放下4K的数据,所以可确定数据子包1片段为完整的数据子包。
需要说明的是,本实施例中每个业务数据子包均可参考待处理业务数据子包的数据提取方式进行提取,在此不作一一限定。
本实施例提供的数据包处理方法,通过另设一业务过滤模块提取每个业务数据包中的完整业务数据子包,以便于后续模块在进行正序处理时,能够更快地选择经过2个业务过滤模块后优先到达的数据包,降低数据包处理的延时。
更进一步地,在从业务数据包中提取到完整业务数据子包之后,还可对各个业务数据包对应的完整业务数据子包进行业务分类,以便于能够对不同的业务类型的数据包分别进行正序处理;具体的,所述对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合,包括:
根据所述字段描述信息,确定每个完整业务数据子包对应的业务数据类型;
基于所述业务数据类型,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合。
实际应用中,可获取到每个完整业务数据子包中的字段描述信息,并在字段描述信息中查找每个完整业务数据子包对应的业务数据类型,并根据业务数据类型,完成对各个完整业务数据子包的分类工作,以获得第一完整业务数据子包集合和第二完整业务数据子包集合。
综上,在上述实施例中,对至少一个业务数据包已经执行了两次分类操作,第一次是对每个业务数据包进行分类,查看的是每个业务数据包的业务数据类型,确定各个业务数据包的业务分类;第二次是先从每个业务数据包中提取出完整业务数据子包,并根据完整业务数据子包中的字段描述信息确定业务数据类型,以实现对各个完整业务数据子包的分类;这两次对业务数据包的分类,目的是将不同类型的业务数据包按照不同的优选规则,实现业务数据包的正序处理,以提高乱序的网络包变正序的网络包的处理效率,降低延时。
进一步地,参见图7,图7示出了根据本申请一实施例提供的一种数据包处理方法中过滤出完整业务数据子包的处理流程图。
步骤702:判断新包是否达到,若是,则执行步骤704,若否,继续循环判断是否有新包到达。
具体的,新包可以理解为业务数据包中依次到达的数据子包,以判断每个数据子包是否为完整的业务数据子包。
步骤704:将数据包的有效存储空间的字节数赋值为业务数据包的数据包长度。
步骤706:有效存储空间的字节数=有效存储空间的字节数-1。
步骤708:在业务数据包中搜索4字节的消息类型,判断是否找到消息类型,若是,则执行步骤710,若否,则执行步骤706。
步骤710:有效存储空间的字节数=有效存储空间的字节数-4,且提取数据包长度。
步骤712:校验数据包长度是否满足合法性,若是,则执行步骤714,若否,则执行步骤706。
步骤714:有效存储空间的字节数=有效存储空间的字节数-4,提取完整数据子包,并设置完整据子包长度初值为0。
步骤716:有效存储空间的字节数=有效存储空间的字节数-1,且完整数据子包长度=完整数据子包长度+1。
步骤718:判断完整数据子包长度是否等于数据包长度,若是,则执行步骤720,若否,则执行步骤716。
步骤720:判断有效存储空间的字节数是否等于0,若是,则执行步骤702,若否,则执行步骤706。
需要说明的是,在确定数据包长度后,数当前的有效存储空间的数据包字节数,数到最后一个字节时,提取数据子包,即完成了一个业务数据子包的提取过程,并可继续搜索包头找下一个业务数据子包的消息类型,循环完成多个完整业务数据子包的提取。
步骤408:基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
其中,正序业务数据包集合可以理解为将逐笔业务的乱序网络包执行正序处理后的业务数据包集合,比如逐笔业务的两条支路的乱序网络包,均为完整业务数据子包3’、完整业务数据子包2’、完整业务数据子包1’,分别对应业务数据包3,业务数据包2和业务数据包1,那么,在执行正序处理后,正序业务数据包集合即为完整业务数据子包1’、完整业务数据子包2’、完整业务数据子包3’(两条支路中执行先到先选的优选机制)。
完整业务数据包集合可以理解将两路快照业务的数据包执行去重处理后的业务数据包,比如快照业务的两条支路的乱序网络包,均为完整业务数据子包5’、完整业务数据子包4’,那么,执行去重处理后,完整业务数据包集合则为完整业务数据子包5’、完整业务数据子包4’;需要说明的是,去重处理可根据时间戳的先后顺序实现,先到先选,后到去重删除的机制。具体的,可参考下述实施例的描述过程。
实际应用中,第一业务数据包集合和第一完整业务数据子包集合为同一业务类型的业务数据包,第二业务数据包集合和第二完整业务数据子包集合为同一业务类型的业务数据包,因此,第一业务数据包集合和第一完整业务数据子包集合这两路数据集合流入逐笔优选模块,由逐笔优选模块完成对业务数据包的正序优选操作,生成正序业务数据包集合;第二业务数据包集合和第二完整业务数据子包集合这两路数据集合流入快照去重模块,由快照去重模块完成对业务数据包的去重优选操作,生成完整业务数据包集合。
需要说明的是,不同业务类型的数据包根据对应业务类型属性,确定不同的业务数据包处理规则,对于逐笔业务,本实施例中能够得以成立的前提是行情逐笔业务协议中规定同一通道号下的消息序列号连续递增的特性;对于快照业务,本实施例中只需要满足同一合约号的去重问题;因此,可通过逐笔优选模块和快照去重模块,对两组业务数据包集合进行处理,以实现在较小延时的情况下,完成各个业务数据包由乱序变正序的过程。
具体的,逐笔优选模块按照先收到业务数据包的时间戳,选择待排序业务数据包,以实现将选择的业务数据包完成保序工作,得到正序业务数据包集合;具体的,所述基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,包括:
基于所述第一业务数据包集合和所述第一完整业务数据子包集合,确定第一目标业务数据包集合;
从所述第一目标业务数据包集合中,获取待排序业务数据包;
在确定所述待排序业务数据包满足预设正序条件的情况下,将所述待排序业务数据包添加至正序业务数据包队列;
基于所述正序业务数据包队列,生成正序业务数据包集合。
其中,第一目标业务数据包集合可以理解为第一业务数据包集合或者第一完整业务数据子包集合的任意一个集合。
实际应用中,在获取到待排序业务数据包之后,通过判断该待排序业务数据包是否满足正序排列的条件,如果确定当前待排序业务数据包满足预设的正序条件,则可将该待排序业务数据包添加至正序业务数据包队列中,以便于后续生成正序业务数据包集合。
需要说明的是,预设正序条件可以理解为判断待排序业务数据包是否满足排列当前顺序的条件,包括但不限定于比对待排序业务数据包的序列标识、比对待排序业务数据包的业务属性信息等。
进一步地,所述基于所述第一业务数据包集合和所述第一完整业务数据子包集合,确定第一目标业务数据包集合,包括:
确定所述第一业务数据包集合中的业务数据包的第一时间戳信息,确定所述第一完整业务数据子包集合中的业务数据子包的第二时间戳信息;
基于所述第一时间戳信息和所述第二时间戳信息,确定第一目标业务数据包集合。
实际应用中,在确定第一目标业务数据包集合时,可根据每个集合中对应的业务数据包的时间戳信息和业务数据子包的时间戳信息确定,即判断第一时间戳信息和第二时间戳信息之间的前后关系,将较前的时间戳对应的集合,确定为第一目标业务数据包集合。
更进一步地,为了便于理解,本实施例中以判断序列标识的条件为例进行说明;具体的,所述在确定所述待排序业务数据包满足预设正序条件的情况下,将所述待排序业务数据包添加至正序业务数据包队列,包括:
在确定所述待排序业务数据包的序列标识与当前序列标识相同的情况下,将所述待排序业务数据包添加至正序业务数据包队列。
实际应用中,根据每个待排序业务数据包的序列标识,确定待排序业务数据包的正序序列,例如,当前序列标识为1,待排序业务数据包a的序列标识为1的情况下,可将该待排序业务数据包a添加至正序业务数据包队列中的第一位;在下一轮判断中,将当前序列标识加1,即当前序列标识为2,则继续判断待排序业务数据包b的序列标识是否为2。
另外,在待排序业务数据包不满足预设正序条件是,即可将该待排序业务数据包等待下一次判断和筛选;具体的,所述获取待排序业务数据包之后,还包括:
在确定所述待排序业务数据包未满足预设正序条件的情况下,将所述待排序业务数据包回写至所述所述第一业务数据包集合或所述第一完整业务数据子包集合。
具体的,在确定所述待排序业务数据包的序列标识与当前序列标识不同的情况下,将所述待排序业务数据包回写至所述所述第一业务数据包集合或所述第一完整业务数据子包集合。
若待排序业务数据包的序列标识与当前序列标识不同时,说明该待排序业务数据包并不是当前正序序列中目前需要排序的业务数据包,那么,可将待排序业务数据包回写至第一目标业务通道中,等待下一次筛选判断。沿用上例,在当前序列标识为1时,待排序业务数据包a的序列标识为2的情况下,则可将待排序业务数据包a回写至第一目标业务通道,等待下一次判断和筛选。
此外,本申请实施例还可利用多个业务通道来实现正序处理过程;具体可参见下述描述:
实际应用中,第一业务数据包集合和第一完整业务数据子包集合分别发送至各自的业务通道中,根据业务数据包传输的时间戳,从第一目标业务通道中,获取到待排序业务数据包,其中,第一目标业务通道,可以理解为第一业务通道或者第二业务通道中的任意一个,从哪个业务通道中获取的待排序业务数据包,哪个对应的业务通道则为第一目标业务通道;进一步地,先确定待排序业务数据包的序列标识与当前序列标识相同的情况下,可将待排序业务数据包添加至正序业务数据包队列中,各个待排序业务数据包不断在队列中输出后,需要轮询判断每个待排序业务数据包的序列标识,是否与当前序列标识相同,即确定是否为当前需要排序的序列标识。
其中,获取待排序业务数据包是根据接收到的业务数据包的时间戳信息确定的,遵从哪一个业务通道先发送的业务数据包,作为待排序业务数据包;在一些可实施方式中,所述从第一目标业务通道中,获取待排序业务数据包,包括:
确定第一业务通道发送的第一业务数据包集合中的业务数据包的第一时间戳信息,确定所述第二业务通道发送的第一完整业务数据子包集合中的业务数据子包的第二时间戳信息;
基于所述第一时间戳信息和所述第二时间戳信息,确定第一目标业务通道;
从所述第一目标业务通道中,获取待排序业务数据包,其中,所述待排序业务数据包为所述目标业务通道中待发送的业务数据包或业务数据子包。
实际应用中,执行主体可分别确定第一业务通道发送第一业务数据包的第一时间戳信息、第二业务通道发送第一目标业务数据包的第二时间戳信息,并将时间戳信息在前的时间戳对应的业务通道,确定为第一目标业务通道,并从该第一目标业务通道中,获取待排序业务数据包,其中,根据先进先出原则,待排序业务数据包为每次目标业务通道下一个出队列发送的业务数据包。
本申请实施例提供的数据包处理方法,通过逐笔优选模块,对两路发送的业务数据包集合,按照时间戳的达到顺序优选待排序的业务数据包,并将各个待排序的业务数据包按照序号标识进行正序排序,能够更加快速地完成对乱序业务数据包变正序业务数据包的处理过程,降低延时。
参见图8,图8示出了根据本申请一实施例提供的一种数据包处理方法中逐笔通道保序优选的流程图。
需要说明的是,来自乱序正序和乱序直通的两路数据集合分布送至各自的数据存储RAM中,下述以数据包在业务通道中等待筛选判断、且以判断序列标识的方式为例,进行说明。
具体的,相应的业务通道的通道号(ChannelNo)和业务数据包的消息序列号(ApplSeqNum),即序列标识,写入参数FIFO(队列)中等待筛选判断。通过不断的对逐笔业务包信息中的通道号ChannelNo和消息序列号ApplSeqNum进行连续性判断,得到所需要的信息,其中,连续性判断的方式为用寄存器实现。
步骤802:初始化该业务通道下的序列标识,下一个序列标识=当前序列标识。
步骤804:判断下一个序列标识是否等于当前序列标识,若是,则执行步骤806,若否,则执行步骤808。
步骤806:更新该业务通道下的序列标识,下一个序列标识=下一个序列标识+1,并将该业务数据包送至筛选后的队列,以获得正序业务数据包队列。
步骤808:将该业务数据包回写至业务通道中,等待下一次再次筛选。
进一步地,快照去重模块对快照业务的数据包执行去重操作,以选择时间戳较前的数据包作为完整业务数据包集合的一部分;具体的,所述基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合,包括:
基于所述第二业务数据包集合和所述第二完整业务数据子包集合,确定第二目标业务数据包集合;
从所述第二目标业务数据包集合中,获取待去重业务数据包,并确定所述待去重业务数据包的当前业务时间戳信息;
在确定所述当前业务时间戳信息满足预设去重条件的情况下,将所述待去重业务数据包添加至完整业务数据包队列;
基于所述完整业务数据包队列,生成完整业务数据包集合。
其中,第二目标业务数据包集合可以为第二业务数据包集合或者第二完整业务数据子包集合的任意一个集合。
实际应用中,在第二目标业务数据包集合中获取到待去重业务数据包,并通过确定待去重业务数据包对应的当前业务时间戳信息,来判断是否满足预设去重条件,在确定满足预设去重条件时,将该待去重业务数据包添加至完整业务数据包队列中,以便于后续生成完整业务数据包集合。
需要说明的是,预设去重条件可以理解为对业务时间戳信息不重复的条件,也即是说,在接收到当前业务时间戳信息为A的业务数据包1时,且业务时间表中并未记录该时间戳A或者已经记录的时间戳比时间戳A大,即表示还未有业务时间戳信息为A的业务数据包到来,则可确定当前业务时间戳信息为A满足预设去重条件。
具体的,所述在确定所述当前业务时间戳信息满足预设去重条件的情况下,将所述待去重业务数据包添加至完整业务数据包队列,包括:
在确定所述当前业务时间戳信息大于业务时间表中记录的业务时间戳信息的情况下,将所述待去重业务数据包添加至完整业务数据包队列。
实际应用中,在确定当前业务时间戳信息大于业务时间表中记录的业务时间戳信息使,说明当前业务时间戳信息对应的待去重业务数据包是第一次接收到,可将该待去重业务数据包添加至完整业务数据包队列;在多轮迭代中,可获得多个满足条件的业务数据包添加至该完整业务数据包队列中。
进一步地,所述确定所述待去重业务数据包的当前业务时间戳信息之后,还包括:
确定所述当前业务时间戳信息未满足预设去重条件的情况下,删除所述待去重业务数据包;
具体的,在确定所述当前业务时间戳信息小于或等于业务时间表中记录的业务时间戳信息的情况下,删除所述待去重业务数据包。
实际应用中,在执行主体确定待去重业务数据包对应的当前业务时间戳信息小于或等于业务时间表中记录的业务时间戳信息时,说明该待去重业务数据包已经在输出队列中,需要删除该待去重业务数据包。
此外,本申请实施例中还提供了利用多个业务通道实现去重处理过程;具体可参见下述描述:
实际应用中,第二业务数据包集合和第二完整业务数据子包集合分别发送至各自的业务通道中,并从第二目标业务通道中获取到待去重业务数据包,其中,第二目标业务通道,可以理解为第三业务通道或者第四业务通道中的任意一个;从哪一个业务通道获取待去重业务数据包,哪一个业务通道为第二目标业务通道;进一步地,根据待去重业务数据包的当前业务时间戳信息,判断业务时间表中的业务时间戳信息是否大于当前业务时间戳信息,若大于,则说明当前时间戳信息对应的业务数据包可添加至完整业务数据包队列,同时可更新业务时间表中记录的业务时间戳信息;需要说明的是,在对每一个待去重业务数据包对应的当前业务时间戳信息进行判断,不断轮询判断待去重业务数据包的输出序列,以生成完整业务数据包集合。
本申请实施例提供的数据包处理方法,在快照去重模块中,对同一个待去重业务数据包按照业务时间戳信息进行去重处理,选择先接收到待去重业务数据包,后面再接收到的待去重业务数据包可进行丢弃,以快速地完成业务数据包去重优选的工作,降低延时。
参见图9,图9示出了根据本申请一实施例提供的一种数据包处理方法中快照业务的去重流程图。
需要说明的是,下述以快照数据包在业务通道中等待筛选判断、且以判断时间戳信息的方式为例,进行说明。快照信息属于另一类业务数据,通常它每3秒发送一次。因此,只需要保证同一个合约号的快照消息后续报文的时间晚于已经出去的报文时间即可。且相邻快照消息之间应属于不同的合约。
进而,快照和逐笔业务优选筛选的结构类似,但是它不是依据通道号和消息序列号。它是依据合约号(Security ID)和合约生成时间(OriginTime)两者来确定的。
步骤902:判断业务通道中是否存在快照业务数据包,若是,则执行步骤904,若否,则继续执行步骤902进行轮询判断。
步骤904:提取合约时间表中记录的时间戳信息。
步骤906:判断快照业务数据包的当前时间戳信息是否大于合约时间表中的时间戳信息,若是,则执行步骤908,若否,则执行步骤910。
步骤908:更新合约时间表中的时间戳信息,将合约时间表中的时间戳信息记录为当前时间戳信息,并将当前时间戳信息对应的快照业务数据包送至筛选后的输出队列中。
步骤910:丢弃当前时间戳信息对应的快照业务数据包。
另外,本申请另一实施例提供的数据包处理方法,在两条通路中的不同业务数据包集合进行了正序排列后,还可利用缓存调度模块对两类业务数据包集合的正序序列进行结合,以获得目标正序业务数据包;具体的,本申请实施例提供的方法,还包括:
根据所述正序业务数据包集合和所述完整业务数据包集合,生成目标网络包,其中,所述目标网络包中的至少一个业务数据包的排序序号为正序。
实际应用中,为了将待处理网络包,调整为正序的业务数据包,即可利用缓存调度模块对两种不同业务类型的业务数据包集合进行结合,按照业务数据包的序号标识进行排序,以生成目标网络包,且该目标网络包中的至少一个业务数据包的排序序号为正序。
本申请实施例提供的数据包处理方法,通过在原有乱序正序通路的基础上,再增加乱序通路,人为的构造了两路数据源,然后通过对不同业务的优选恢复出行情数据。在没有乱序的时候,两种方案之间的延迟差异不大;当存在乱序时,由于乱序直通路的数据提前优选,延迟性能会有较为明显的提升,尤其是发生在乱序严重的时刻;基于此,本实施例提出一种在乱序场景下依旧保持出色延迟性能的实现架构,该架构继承传统的处理流程,同时提升极端环境下的性能优势,因此,既适用常规场景,又适用乱序场景,但在乱序情况下技术方案更有优势。
与上述方法实施例相对应,本申请还提供了数据包处理装置实施例,图10示出了本申请一实施例提供的一种数据包处理装置的结构示意图。如图10所示,该装置包括:
待处理网络包接收模块1002,被配置为接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;
数据包分类模块1004,被配置为对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合;
数据包提取分类模块1006,被配置为提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;
数据包优选模块1008,被配置为基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
可选地,所述数据包分类模块1004,进一步被配置为:
确定每个业务数据包的业务数据类型;
基于所述业务数据类型,对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合。
可选地,所述每个业务数据包中包括至少一个业务数据子包;
可选地,所述数据包提取分类模块1006,进一步被配置为:
在每个业务数据包对应的至少一个业务数据子包中,提取所述每个业务数据包对应的完整业务数据子包。
可选地,所述数据包提取分类模块1006,进一步被配置为:
获取每个业务数据包对应的至少一个业务数据子包的字段描述信息;
根据每个业务数据子包的字段描述信息,判断每个业务数据子包是否为完整的数据子包;
基于每个完整的数据子包,确定所述每个业务数据包对应的完整业务数据子包。
可选地,所述数据包提取分类模块1006,进一步被配置为:
在所述每个业务数据子包中确定待处理业务数据子包;
根据所述待处理业务数据子包的字段描述信息,确定所述待处理业务数据子包的数据包长度;
获取待处理业务数据包的有效存储空间;
基于所述数据包长度和所述有效存储空间,判断所述待处理业务数据子包是否为完整的数据子包。
可选地,所述数据包提取分类模块1006,进一步被配置为:
在确定所述数据包长度满足有效性条件,且所述有效存储空间大于所述数据包长度的情况下,确定所述待处理业务数据子包为完整的数据子包。
可选地,所述数据包提取分类模块1006,进一步被配置为:
根据所述字段描述信息,确定每个完整业务数据子包对应的业务数据类型;
基于所述业务数据类型,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合。
可选地,所述数据包优选模块1008,进一步被配置为:
基于所述第一业务数据包集合和所述第一完整业务数据子包集合,确定第一目标业务数据包集合;
从所述第一目标业务数据包集合中,获取待排序业务数据包;
在确定所述待排序业务数据包满足预设正序条件的情况下,将所述待排序业务数据包添加至正序业务数据包队列;
基于所述正序业务数据包队列,生成正序业务数据包集合。
可选地,所述数据包优选模块1008,进一步被配置为:
确定所述第一业务数据包集合中的业务数据包的第一时间戳信息,确定所述第一完整业务数据子包集合中的业务数据子包的第二时间戳信息;
基于所述第一时间戳信息和所述第二时间戳信息,确定第一目标业务数据包集合。
可选地,所述数据包优选模块1008,进一步被配置为:
在确定所述待排序业务数据包的序列标识与当前序列标识相同的情况下,将所述待排序业务数据包添加至正序业务数据包队列。
可选地,所述装置,还包括:
数据包回写模块,被配置为在确定所述待排序业务数据包的序列标识与当前序列标识不同的情况下,将所述待排序业务数据包回写至所述所述第一业务数据包集合或所述第一完整业务数据子包集合。
可选地,所述数据包优选模块1008,进一步被配置为:
基于所述第二业务数据包集合和所述第二完整业务数据子包集合,确定第二目标业务数据包集合;
从所述第二目标业务数据包集合中,获取待去重业务数据包,并确定所述待去重业务数据包的当前业务时间戳信息;
在确定所述当前业务时间戳信息满足预设去重条件的情况下,将所述待去重业务数据包添加至完整业务数据包队列;
基于所述完整业务数据包队列,生成完整业务数据包集合。
可选地,所述数据包优选模块1008,进一步被配置为:
在确定所述当前业务时间戳信息大于业务时间表中记录的业务时间戳信息的情况下,将所述待去重业务数据包添加至完整业务数据包队列。
可选地,所述装置,还包括:
数据包删除模块,被配置为在确定所述当前业务时间戳信息小于或等于业务时间表中记录的业务时间戳信息的情况下,删除所述待去重业务数据包。
可选地,所述装置,还包括:
目标网络包生成模块,被配置为根据所述正序业务数据包集合和所述完整业务数据包集合,生成目标网络包,其中,所述目标网络包中的至少一个业务数据包的排序序号为正序。
本申请实施例提供的数据包处理装置,通过对待处理网络包中的每个业务数据包进行业务分类,以及对提取的完整业务数据子包进行业务分类;并根据同一类的业务数据包实现数据包优选与排序,进而,完成对待处理网络包的正序过程;该种方式通过增加乱序通路对业务数据包进行提前优选,对不同类型的业务数据包恢复正序输出,降低数据输出的延时问题,提高业务处理系统的数据处理效率,提高用户使用体验。
上述为本实施例的一种数据包处理装置的示意性方案。需要说明的是,该数据包处理装置的技术方案与上述的数据包处理方法的技术方案属于同一构思,数据包处理装置的技术方案未详细描述的细节内容,均可以参见上述数据包处理方法的技术方案的描述。
图11示出了根据本申请一实施例提供的一种计算设备1100的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。
计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1160通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。
在本申请的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。
其中,处理器1120执行所述计算机指令时实现所述的数据包处理方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据包处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据包处理方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述数据包处理方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据包处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据包处理方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

Claims (18)

1.一种数据包处理方法,其特征在于,包括:
接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;
对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合,其中,所述第一业务数据包集合对应的业务数据包和所述第二业务数据包集合对应的业务数据包之间具有不同的业务属性;
提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;
基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
2.根据权利要求1所述的方法,其特征在于,所述对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合,包括:
确定每个业务数据包的业务数据类型;
基于所述业务数据类型,对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合。
3.根据权利要求1所述的方法,其特征在于,所述每个业务数据包中包括至少一个业务数据子包;
相应地,所述提取每个业务数据包中的完整业务数据子包,包括:
在每个业务数据包对应的至少一个业务数据子包中,提取所述每个业务数据包对应的完整业务数据子包。
4.根据权利要求3所述的方法,其特征在于,所述在每个业务数据包对应的至少一个业务数据子包中,提取所述每个业务数据包对应的完整业务数据子包,包括:
获取每个业务数据包对应的至少一个业务数据子包的字段描述信息;
根据每个业务数据子包的字段描述信息,判断每个业务数据子包是否为完整的数据子包;
基于每个完整的数据子包,确定所述每个业务数据包对应的完整业务数据子包。
5.根据权利要求4所述的方法,其特征在于,所述根据每个业务数据子包的字段描述信息,判断每个业务数据子包是否为完整的数据子包,包括:
在所述每个业务数据子包中确定待处理业务数据子包;
根据所述待处理业务数据子包的字段描述信息,确定所述待处理业务数据子包的数据包长度;
获取待处理业务数据包的有效存储空间;
基于所述数据包长度和所述有效存储空间,判断所述待处理业务数据子包是否为完整的数据子包。
6.根据权利要求5所述的方法,其特征在于,所述基于所述数据包长度和所述有效存储空间,判断所述待处理业务数据子包是否为完整的数据子包,包括:
在确定所述数据包长度满足有效性条件,且所述有效存储空间大于所述数据包长度的情况下,确定所述待处理业务数据子包为完整的数据子包。
7.根据权利要求4所述的方法,其特征在于,所述对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合,包括:
根据所述字段描述信息,确定每个完整业务数据子包对应的业务数据类型;
基于所述业务数据类型,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合。
8.根据权利要求1所述的方法,其特征在于,所述基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,包括:
基于所述第一业务数据包集合和所述第一完整业务数据子包集合,确定第一目标业务数据包集合;
从所述第一目标业务数据包集合中,获取待排序业务数据包;
在确定所述待排序业务数据包满足预设正序条件的情况下,将所述待排序业务数据包添加至正序业务数据包队列;
基于所述正序业务数据包队列,生成正序业务数据包集合。
9.根据权利要求8所述的方法,其特征在于,所述基于所述第一业务数据包集合和所述第一完整业务数据子包集合,确定第一目标业务数据包集合,包括:
确定所述第一业务数据包集合中的业务数据包的第一时间戳信息,确定所述第一完整业务数据子包集合中的业务数据子包的第二时间戳信息;
基于所述第一时间戳信息和所述第二时间戳信息,确定第一目标业务数据包集合。
10.根据权利要求9所述的方法,其特征在于,所述在确定所述待排序业务数据包满足预设正序条件的情况下,将所述待排序业务数据包添加至正序业务数据包队列,包括:
在确定所述待排序业务数据包的序列标识与当前序列标识相同的情况下,将所述待排序业务数据包添加至正序业务数据包队列。
11.根据权利要求8所述的方法,其特征在于,所述获取待排序业务数据包之后,还包括:
在确定所述待排序业务数据包的序列标识与当前序列标识不同的情况下,将所述待排序业务数据包回写至所述第一业务数据包集合或所述第一完整业务数据子包集合。
12.根据权利要求1所述的方法,其特征在于,所述基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合,包括:
基于所述第二业务数据包集合和所述第二完整业务数据子包集合,确定第二目标业务数据包集合;
从所述第二目标业务数据包集合中,获取待去重业务数据包,并确定所述待去重业务数据包的当前业务时间戳信息;
在确定所述当前业务时间戳信息满足预设去重条件的情况下,将所述待去重业务数据包添加至完整业务数据包队列;
基于所述完整业务数据包队列,生成完整业务数据包集合。
13.根据权利要求12所述的方法,其特征在于,所述在确定所述当前业务时间戳信息满足预设去重条件的情况下,将所述待去重业务数据包添加至完整业务数据包队列,包括:
在确定所述当前业务时间戳信息大于业务时间表中记录的业务时间戳信息的情况下,将所述待去重业务数据包添加至完整业务数据包队列。
14.根据权利要求12所述的方法,其特征在于,所述确定所述待去重业务数据包的当前业务时间戳信息之后,还包括:
在确定所述当前业务时间戳信息小于或等于业务时间表中记录的业务时间戳信息的情况下,删除所述待去重业务数据包。
15.根据权利要求1-14任意一项所述的方法,其特征在于,还包括:
根据所述正序业务数据包集合和所述完整业务数据包集合,生成目标网络包,其中,所述目标网络包中的至少一个业务数据包的排序序号为正序。
16.一种数据包处理装置,其特征在于,包括:
待处理网络包接收模块,被配置为接收待处理网络包,其中,所述待处理网络包包含至少一个业务数据包,所述至少一个业务数据包的排序序号为乱序;
数据包分类模块,被配置为对每个业务数据包进行分类,获得第一业务数据包集合和第二业务数据包集合,其中,所述第一业务数据包集合对应的业务数据包和所述第二业务数据包集合对应的业务数据包之间具有不同的业务属性;
数据包提取分类模块,被配置为提取每个业务数据包中的完整业务数据子包,对每个完整业务数据子包进行分类,获得第一完整业务数据子包集合和第二完整业务数据子包集合;
数据包优选模块,被配置为基于所述第一业务数据包集合和所述第一完整业务数据子包集合,生成正序业务数据包集合,并基于所述第二业务数据包集合和所述第二完整业务数据子包集合,生成完整业务数据包集合。
17.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1-15任意一项所述方法的步骤。
18.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1-15任意一项所述方法的步骤。
CN202211550851.4A 2022-12-05 2022-12-05 数据包处理方法及装置 Active CN115567460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211550851.4A CN115567460B (zh) 2022-12-05 2022-12-05 数据包处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211550851.4A CN115567460B (zh) 2022-12-05 2022-12-05 数据包处理方法及装置

Publications (2)

Publication Number Publication Date
CN115567460A CN115567460A (zh) 2023-01-03
CN115567460B true CN115567460B (zh) 2023-03-10

Family

ID=84770781

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211550851.4A Active CN115567460B (zh) 2022-12-05 2022-12-05 数据包处理方法及装置

Country Status (1)

Country Link
CN (1) CN115567460B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117149852A (zh) * 2023-08-31 2023-12-01 中科驭数(北京)科技有限公司 合约信息处理方法、装置、设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936852A (zh) * 2017-04-26 2017-07-07 海南云江科技有限公司 一种数据发送和接收方法、设备以及数据传输系统
CN110121867A (zh) * 2017-01-23 2019-08-13 华为技术有限公司 一种传输数据包的方法、发送设备及接收设备
WO2022199558A1 (zh) * 2021-03-22 2022-09-29 华为技术有限公司 一种数据传输方法、相关装置以及设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649602B (zh) * 2016-11-25 2018-09-04 掌阅科技股份有限公司 业务对象数据处理方法、装置和服务器

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110121867A (zh) * 2017-01-23 2019-08-13 华为技术有限公司 一种传输数据包的方法、发送设备及接收设备
CN106936852A (zh) * 2017-04-26 2017-07-07 海南云江科技有限公司 一种数据发送和接收方法、设备以及数据传输系统
WO2022199558A1 (zh) * 2021-03-22 2022-09-29 华为技术有限公司 一种数据传输方法、相关装置以及设备

Also Published As

Publication number Publication date
CN115567460A (zh) 2023-01-03

Similar Documents

Publication Publication Date Title
US8964548B1 (en) System and method for determining network application signatures using flow payloads
US7643505B1 (en) Method and system for real time compression and decompression
US8577817B1 (en) System and method for using network application signatures based on term transition state machine
CN108173982B (zh) 跨板报文的nat处理方法及装置
US20150254347A1 (en) System and method for direct storage access in a content-centric network
US20100036820A1 (en) Method and System for Processing Access Control Lists Using a Hashing Scheme
EP3588914A1 (en) Data storage method, encoding device and decoding device
CN106789730B (zh) 分片报文的处理方法及装置
CN110741573A (zh) 在区块链网络中选择性使用网络编码传播交易的方法和系统
CN115567460B (zh) 数据包处理方法及装置
CN112949739A (zh) 一种基于智能流量分类的信息传输调度方法及系统
CN109525518B (zh) 一种基于fpga的ip报文网络地址转换方法及装置
CN114584560A (zh) 一种分片帧重组方法及装置
CN113973091A (zh) 一种报文处理方法、网络设备以及相关设备
CN114884893A (zh) 一种转发和控制可定义的协同流量调度方法与系统
CN114338529B (zh) 五元组规则匹配方法及装置
US9130827B2 (en) Sampling from distributed streams of data
CN115277504A (zh) 一种网络流量监控方法、装置和系统
CN115643310A (zh) 一种压缩数据的方法、装置和系统
US20150081649A1 (en) In-line deduplication for a network and/or storage platform
CN114157716A (zh) 基于区块链的数据处理方法、装置和电子设备
CN111131089A (zh) 改善多播业务hol阻塞的队列管理方法
CN116074767A (zh) 支持离散编辑的组播复制的方法及应用
CN117596211B (zh) Ip分片多核负载均衡装置及方法
Sonai et al. CTLA: Compressed Table Look up Algorithm for Open Flow Switch

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant