CN117729274A - 报文处理的方法、装置、设备及可读存储介质 - Google Patents
报文处理的方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117729274A CN117729274A CN202410175198.0A CN202410175198A CN117729274A CN 117729274 A CN117729274 A CN 117729274A CN 202410175198 A CN202410175198 A CN 202410175198A CN 117729274 A CN117729274 A CN 117729274A
- Authority
- CN
- China
- Prior art keywords
- message
- data processing
- session
- processed
- processing units
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 238000003672 processing method Methods 0.000 title description 3
- 238000012545 processing Methods 0.000 claims abstract description 271
- 238000000034 method Methods 0.000 claims abstract description 85
- 238000010606 normalization Methods 0.000 claims abstract description 57
- 238000004590 computer program Methods 0.000 claims description 18
- 238000000605 extraction Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 230000006872 improvement Effects 0.000 description 8
- 230000009191 jumping Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000007123 defense Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本说明书公开了报文处理的方法、装置、设备及可读存储介质。根据所述方法的一个示例,在用户设备与网络设备之间建立TCP会话的情况下,当用户设备中的数据处理单元分别生成待发送报文时,通过会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头,并基于归一化处理后的报文头得到各待发送报文对应的第一目标报文。这样,由于第一目标报文能够基于用户设备与网络设备之间TCP会话进行传输,从而实现了拟态安全系统中包含有多个数据处理单元的用户设备与网络设备之间的TCP报文传输。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及报文处理的方法、装置、设备及可读存储介质。
背景技术
基于内生安全的拟态安全防御理论广泛应用于存储控制器、服务器、网关、交换机、工业控制器等网络设备,并能显著提高设备的安全性能。在拟态安全系统中,一个用户设备中通常可部署有多个数据处理单元,这多个数据处理单元彼此独立地完成相同的功能。传统的网络通信中,传输控制协议(Transmission Control Protocol,TCP)会话存在于点对点之间。这使得,用户设备一旦与网络设备建立TCP链接,该用户设备中的多个数据处理单元就应该能够与该网络设备建立TCP会话。但是,由于不同数据处理单元发送的报文包含的报文头不一致,实际上该用户设备中的多个数据处理单元无法基于同一TCP会话进行数据传输。
发明内容
有鉴于此,本说明书提供报文处理的方法、装置、设备及可读存储介质,以部分解决现有技术存在的上述问题。
根据本说明书的第一方面,提供了一种报文处理的方法,所述方法应用于用户设备,所述用户设备与网络设备建立TCP会话,所述用户设备包括会话管理单元和多个数据处理单元。所述方法可包括:获取所述多个数据处理单元分别生成的待发送报文;通过所述会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头;根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文;将各所述第一目标报文通过已建立的TCP会话发送给所述网络设备。
可选地,通过所述会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头,具体包括:从各待发送报文中选择目标报文,并确定所述目标报文的报文头中的第一待处理字段,所述第一待处理字段包括报文标识、端口标识、序列号;从所述会话管理单元读取所述目标报文对应的指定参数,并判断所述指定参数是否为初始值;若是,则将所述目标报文的报文头中的第一待处理字段作为目标字段存入所述会话管理单元,并根据所述目标字段确定归一化处理后的第一待处理字段;若否,则根据所述会话管理单元预存的目标字段,确定归一化处理后的第一待处理字段。
可选地,当所述第一待处理字段为序列号时,根据所述会话管理单元读取预存的目标字段,确定归一化处理后的第一待处理字段,具体可包括:根据所述目标报文的载荷长度,更新所述目标报文对应的指定参数;从所述会话管理单元中读取预存的目标序列号;根据更新后的指定参数和所述目标序列号,得到新的序列号作为归一化处理后的序列号。
可选地,通过所述会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头,具体包括:从所述各待发送报文的报文头中确定各第二待处理字段,所述第二待处理字段包括滑窗、最大报文段长度、用户超时时长;从所述各第二待处理字段中选择取值最小的第二待处理字段作为归一化处理后的第二待处理字段,并存入所述会话管理单元。
可选地,通过所述会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头之前,所述方法还包括:确定各待发送报文的报文数据的哈希值均相同。
根据本说明书的第二方面,提供了一种报文处理的方法,所述方法应用于用户设备,所述用户设备与网络设备建立TCP会话,所述用户设备包括会话管理单元和多个数据处理单元。所述方法可包括:接收由所述网络设备通过已建立的TCP会话发送的待处理报文;从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息;根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文;将各第二目标报文分别发送给所述多个数据处理单元。
可选地,根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文,具体包括:按照所述多个数据处理单元的数量,复制所述待处理报文;从所述多个数据处理单元的会话信息中提取所述多个数据处理单元分别对应的指定字段,所述指定字段包括报文标识、端口标识和序列号;根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
可选地,当所述指定字段为序列号时,根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文,可具体包括:确定所述待处理报文的指定参数和载荷长度;根据所述待处理报文的载荷长度,重新确定所述待处理报文的指定参数;根据所述多个数据处理单元分别对应的序列号和重新确定的指定参数,重新确定所述多个数据处理单元分别对应的序列号;将重新确定的所述多个数据处理单元分别对应的序列号依次填入各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
可选地,根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文,具体包括:确定所述待处理报文的报文头中的序列号;获取会话管理单元中会话超时计数器;如果根据所述待处理报文的报文头中的序列号确定所述待处理报文不存在序列号错误,且,所述会话超时计数器指示所述TCP会话不存在超时,则根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文。
根据本说明书第三方面,提供了一种报文处理的装置,所述装置应用于用户设备,所述用户设备与网络设备建立TCP会话,所述用户设备包括会话管理单元和多个数据处理单元。所述装置可包括:待发送报文获取模块,用于获取所述多个数据处理单元分别生成的待发送报文;归一化模块,用于通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头;第一目标报文确定模块,用于根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文;第一发送模块,用于将各所述第一目标报文通过已建立的TCP会话发送给所述网络设备。
可选地,所述装置还包括:待处理报文接收模块,用于接收由所述网络设备通过已建立的TCP会话发送的待处理报文;会话信息提取模块,用于从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息;第二目标报文确定模块,用于根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文;第二发送模块,用于将各第二目标报文分别发送给所述多个数据处理单元。
根据本说明书第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述报文处理的方法。
根据本说明书第五方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述报文处理的方法。
在本说明书提供的报文处理的方法中,在用户设备与网络设备之间建立TCP会话的情况下,当用户设备中的多个数据处理单元分别生成待发送报文时,可通过会话管理单元对各待发送报文的报文头进行归一化处理,并基于归一化处理后的报文头和各待发送报文得到对应的第一目标报文。这样,用户设备中的多个数据处理单元均能够基于用户设备与网络设备之间的TCP会话进行第一目标报文的传输,从而实现拟态安全系统中,包含有多个数据处理单元的用户设备与网络设备之间的TCP报文传输。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为根据本说明书实施例的一种实现报文处理的方法的系统的架构示意图。
图2为根据本说明书实施例的一种会话管理单元的功能模块示意图。
图3为根据本说明书实施例的一种报文处理的方法的流程示意图。
图4为根据本说明书实施例的另一种报文处理的方法的流程示意图。
图5为根据本说明书实施例的又一种报文处理的方法的流程示意图。
图6为根据本说明书实施例的再一种报文处理的方法的流程示意图。
图7为根据本说明书实施例的一种会话状态机的状态跳转示意图。
图8为根据本说明书实施例的一种匹配子状态机的状态跳转示意图。
图9为根据本说明书实施例提供的一种报文处理的装置的功能模块示意图。
图10为根据本说明书实施例提供的另一种报文处理的装置的功能模块示意图。
图11为根据本说明书实施例提供的用于报文处理的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
另外,本说明书中所有获取信号、信息或数据的动作都是在遵照所在地相应的数据保护法规政策的前提下,并获得由相应装置所有者给予授权的情况下进行的。
在不冲突的情况下,下述的实施例及实施方式中的特征可以相互组合。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1所示为适用本说明书提供的报文处理的方法的系统的架构示意图。如图1所示,该系统包括用户设备100和网络设备200。其中,用户设备100中包含多个数据处理单元110-1~110-N(以下也可统称为数据处理单元110)和会话管理单元120。在拟态安全系统中,各个数据处理单元110可以是同构的执行体,也可以是异构的执行体。各个数据处理单元110分别独立的完成相同的功能,从而互为冗余备份。而对于与用户设备100建立TCP会话的网络设备200而言,该网络设备200对用户设备100中的多个数据处理单元110并不感知,因此,用户设备100与该网络设备200之间仅存在一个TCP会话,多个数据处理单元110分别生成的报文需经归一化处理后再发送给网络设备200。
数据处理单元110可是本领域技术人员熟知的任意类型的可以独立完成数据处理任务的执行单元,如CPU、容器、虚拟机等,本说明书对此不做限定。具体的,在硬件结构上,会话管理单元120通过网口和网络设备200相连,并通过PCIe接口和各个数据处理单元110相连。会话管理单元120将各个数据处理单元110生成的待发送报文做归一化处理后,经由已经建立的TCP会话发送给网络设备200,或者,会话管理单元120将网络设备200发送的待处理报文进行复制并填入会话信息后再分发给各个数据处理单元110。
如图2所示,会话管理单元120可包括报文预处理单元121和归一化处理单元122。其中,归一化处理单元122包括会话管理状态机1221和读写控制器1222。其中,报文预处理单元121用于对输入会话管理单元120的报文(包括多个数据处理单元110生成的待发送报文和/或网络设备200发送的待处理报文)进行解析,得到报文头和报文数据。归一化处理单元122中的会话管理状态机1221包括多个不同的状态。这使得,基于报文头和报文数据,会话管理状态机1221可以依次跳转到多个不同的状态,从而生成不同的控制指令。例如,所述控制指令至少包括报文头归一化的指令。另外,会话管理状态机1221还可以向读写控制器1222发送报文读取指令和报文写入指令,以便读写控制器1222能够从内存中读取报文(待发送报文或待处理报文)或者将报文写入内存。基于上述直接内存访问(Direct MemoryAccess,DMA)机制,实现归一化报文的快速存储和读取,完全硬件控制、免驱动,相比于软件基于数据平面开发套件(Data Plane Development Kit,DPDK)的实现更加快速,操作效率和空间利用率高。
例如,用户设备100为用户操作的计算机,该用户设备100中部署有多个CPU作为数据处理单元110,以实现内生安全的拟态防御。网络设备200是用户意图访问的服务器。当用户通过用户设备100输入访问域名后,用户设备100中部署的各个CPU分别根据访问域名生成待发送报文。其中,各待发送报文的报文数据通常相同,但报文头不一致。各待发送报文会进入会话管理单元120进行归一化处理,得到能够通过用户设备100与网络设备200之间的TCP会话进行传输的第一目标报文。之后,第一目标报文发送给网络设备200,网络设备200响应该第一目标报文,向用户设备100发送响应报文,用户设备100将网络设备返回的响应报文作为待处理报文,并将其输入到会话管理单元120进行处理。待处理报文经会话管理单元120处理后可得到各个数据处理单元110分别对应的第二目标报文。之后,会话管理单元120将各第二目标报文分发给各个数据处理单元110。就此,用户设备100与网络设备200完成了一次会话。
基于上述硬件系统架构,本说明书提供一种报文处理的方法。如图3所示,该报文处理的方法用于对从用户设备发送给网络设备的报文进行归一化处理,包括下述步骤S100至S106。
在步骤S100:获取所述多个数据处理单元分别生成的待发送报文。
如前所述,实际应用中,网络设备对用户设备中部署有多个数据处理单元并不感知。因此,网络设备与用户设备之间仅建立一条TCP会话。由于TCP会话是点到点的连接,一条TCP会话中不存在第三方。也就是说,为了使得多个数据处理单元分别生成的待发送报文能够基于用户设备与网络设备之间的TCP会话进行传输,需对多个数据处理单元分别生成的待发送报文的报文头进行归一化处理。否则,报文头中携带的会话信息与TCP会话的会话信息不一致,会导致数据处理单元生成的待发送报文无法基于网络设备与用户设备之间已建立的TCP会话传输。
为此,在各个数据处理单元分别生成待发送报文后,会首先进入会话管理单元进行归一化处理,之后再通过网口发送给网络设备。
另外,由于不同数据处理单元彼此独立地完成相同的任务,不同数据处理单元分别生成的待发送报文通常仅在报文头中的某些字段上存在差异。特别地,如果各个待发送报文在报文数据上存在差异,可能存在用户设备被攻击或自身存在错误的问题。此时,需要基于裁决的方法或其他本领域技术人员熟知的任一方法确定报文数据正确的待发送报文,或直接丢弃各个待发送报文,以免从用户设备发送出的报文存在错误。
在步骤S102:通过所述会话管理单元对各待发送报文的报文头进行归一化处理,得到归一化处理后的报文头。
在此步骤中,会话管理单元可以基于TCP会话建立时存储的会话信息对各待发送报文的报文头中的若干个字段进行归一化处理,以使归一化处理后的报文头指示的会话信息能够与已建立的TCP会话的会话信息一致,从而,基于归一化处理后的报文头和报文数据构建的第一目标报文能够基于已建立的TCP会话进行传输。
当然,上述方案的前提是,在对各待发送报文进行归一化之前,用户设备已经与网络设备建立了TCP会话(也即经历了“三次握手”过程)。如果用户设备是首次向网络设备发送报文,则会话管理单元中并未存储可支持报文头归一化的会话信息。此时,可基于各个数据处理单元分别生成的待处理报文中的一个待处理报文的报文头确定待建立的TCP会话的会话信息。至于用户设备是否为首次向网络设备发送报文,则可以通过待发送报文中的指定参数(如seq_delta)的取值确定。
在步骤S104:根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文。
进一步地,将归一化处理后的报文头与各待发送报文分别进行重组得到对应的第一目标报文。这相当于将各待发送报文中原本的报文头分别替换成归一化处理后的报文头,或者是直接将各待发送报文中的报文数据分别与归一化处理后的报文头进行拼接。
在此步骤中得到的第一目标报文即为可通过用户设备与网络设备之间的TCP会话传输的报文。
在步骤S106:将各所述第一目标报文通过已建立的TCP会话发送给所述网络设备。
在本说明书提供的报文处理的方法中,用户设备与网络设备之间建立TCP会话,当网络设备中的数据处理单元分别生成待发送报文时,可通过会话管理单元对各待发送报文的报文头进行归一化处理得到归一化处理后的报文头,并基于归一化处理后的报文头和各待发送报文得到对应的能够第一目标报文。
通过上述方案,对不同数据处理单元生成的待发送报文包含的报文头进行归一化,使得第一目标报文能够基于用户设备与网络设备之间TCP会话进行传输,从而实现拟态安全系统中,包含有多个数据处理单元的用户设备与网络设备之间的TCP报文传输,提高了用户设备端的会话安全性。
在本说明书一个或多个实施例中,上述图3中所述步骤S102,如图4所示,可包括步骤S200至S206。
在步骤S200:从各待发送报文中选择目标报文,并确定所述目标报文的报文头中的第一待处理字段,所述第一待处理字段包括报文标识、端口标识、序列号。
如前所述,对报文头进行归一化处理的目的是使得包含有归一化处理后的报文头的第一目标报文能够通过已建立的TCP会话进行传输。因此,在本说明书中,需要被归一化处理的报文头中的若干字段可以是用于指示用户设备与网络设备之间已建立的TCP会话的信息,如包含源端口标识、源IP地址、目标端口标识和目标IP地址的四元组信息。另外,第一待处理字段还可以包括用于指示不同报文的报文ID以及序列号。当然还可以包括其他字段,比如窗口大小、校验和等,本说明书对此不做限定。
基于此,本说明书中,以报文头中的报文标识、端口标识(尤其是源端口的标识)和序列号作为需要被归一化处理的第一待处理字段。
另外,可选地,不同数据处理单元分别发送的待发送报文还需要在归一化之前进行匹配、对齐等步骤,且所述匹配、对齐等步骤可以通过会话管理单元中部署的会话管理状态机实现,具体详见后续图7所示状态跳转方案,此处不赘述。
在步骤S202:从所述会话管理单元读取所述目标报文对应的指定参数,并判断所述指定参数是否为初始值,若是,执行步骤S204,否则执行步骤S206。
进一步地,由于会话管理单元是基于TCP会话建立时存储的会话信息对各待发送报文的报文头中的若干个字段进行归一化处理,因此,需要从会话管理单元中提取预存的目标字段作为归一化处理后的第一待处理字段。其中,目标字段包括建立TCP会话时从用户设备发送的报文包含的报文头提取出的字段。也就是说,当目标报文是在TCP会话还未建立时由数据处理单元生成的报文,则此时会话管理单元中并不存在预存的目标字段,无法通过从会话管理单元中提取目标字段进行归一化。
基于此,在此步骤中,可判断目标报文是否是用户设备与网络设备之间的通信的第一个报文。而判断目标报文是否是第一个报文可以基于从目标报文的报文头中提取的指定参数的取值确定。其中,指定参数可例如为seq_delta。
如果指定参数的取值为初始值(比如0),则确定目标报文是由用户设备向网络设备发送的第一个报文。此时,会话管理单元中并不存储目标字段,可将目标报文的第一待处理字段直接作为目标字段,并存储在会话管理单元中。
如果指定参数的取值不是初始值,则确定目标报文不是由用户设备向网络设备发送的第一个报文。此时,会话管理单元中存储有目标字段,可以基于从会话管理单元提取的目标字段确定归一化处理后的第一待处理字段。
在步骤S204:将所述目标报文的报文头中的第一待处理字段作为目标字段存入所述会话管理单元,并根据所述目标字段确定归一化处理后的第一待处理字段。
在步骤S206:根据所述会话管理单元预存的目标字段,确定归一化处理后的第一待处理字段。
实际中,可以直接将会话管理单元中预存的目标字段作为归一化处理后的第一待处理字段,也可以基于目标字段以及其他参数确定归一化处理后的第一待处理字段。
例如,当第一待处理字段为序列号时,上述步骤S206具体可以通过下述步骤实现。
第一步:根据所述目标报文的载荷长度,更新所述目标报文对应的指定参数。
TCP报文中的序列号用于表示TCP报文中的报文数据部分。每个TCP报文的报文头中都包含一个序列号的字段,用于指示TCP报文中第一个字节的序号。在后续的报文中,序列号将递增,以指示下一报文的第一个字节的序号。序列号可以帮助报文的接收方区分新旧报文,从而避免因旧报文的重传而引发的数据错误。由此,在对待发送报文包含的报文头中的序列号进行归一化时,需要基于目标报文的载荷长度(payload_length)进行确定,以实现序列号的正常递增。
具体的,读取目标报文对应的指定参数,如果目标报文是由多个数据处理单元中的某一个数据处理单元首次生成的,则指定参数的值为初始值。如果目标报文是非首次生成的,则指定参数的值不为初始值,并需要基于目标报文的载荷长度对目标报文对应的指定参数进行更新,得到新的指定参数的值。一般的,指定参数的值是基于生成的待发送报文的载荷长度与未更新的指定参数的值的加和确定的。
第二步:从所述会话管理单元中读取预存的目标序列号。
第三步:根据更新后的指定参数的值和所述目标序列号,得到新的序列号作为归一化处理后的序列号。
从会话管理单元中读取的目标序列号实际上是TCP会话建立时存储的序列号。在报文的传输过程中,报文头中的序列号将递增以便指示下一报文的字节,因此,归一化处理后的序列号也要随之递增,否则将出现序列号错误、紊乱等情况,造成报文接收方无法区分新旧报文。因此,还需要基于更新后的指定参数的值与目标序列号,得到新的序列号作为归一化处理后的序列号。
在本说明书一个或多个实施例中,除了针对报文头中的第一待处理字段进行归一化处理外,还可以针对报文头中的第二待处理字段进行归一化处理。第二待处理字段包括滑窗、最大报文段长度、用户超时时长。
第一步:从所述各待发送报文的报文头中确定各第二待处理字段,所述第二待处理字段包括滑窗、最大报文段长度、用户超时时长。
第二步:从所述各第二待处理字段中选择取值最小的第二待处理字段作为归一化处理后的第二待处理字段,并存入所述会话管理单元。
在TCP报文中,滑窗也即滑动窗口,用于表示报文的接收方当前可用的最大接收缓冲区。报文的发送方可基于滑窗大小调整数据发送量,即调整发送方的发送窗口大小,使得发送窗口不超过接收方的接收窗口大小,从而避免网络拥塞并确保通信的稳定性。最大报文段长度(Maximum Segment Size,MSS)用于指示报文的收发双方在通信时每一个TCP报文所能承载的最大数据长度。用户超时时长(User Timeout,UTO)用于控制发送的未确认数据可保持多长时间,超过UTO则会强制关闭连接。基于滑窗、MSS和UTO分别实现的功能可知,三者均为用于限制上限的参数字段。如果不同数据处理单元生成的不同待发送报文在第二待处理字段上不相同,则可以取其中的最小值作为归一化处理后的第二待处理字段。
以UTO为例,待发送报文X1和待发送报文X2的UTO分别是Y1和Y2,其中,Y1大于Y2,也即,待发送报文X1对报文超时的容忍度大于待发送报文X2。假设当前TCP会话中,用户设备向网络设备发送报文后,等待了时长Y3之后仍然没有收到网络设备返回的确认应答,则确定实际的超时时长是Y3。如果Y3大于Y2但是小于Y1,则实际的超时时长Y3已经超过了待发送报文X2的UTO。此时,对于待发送报文X2而言,由于长时间没有收到确认应答,判断当前TCP会话不可用,但是对于待发送报文X1而言,由于实际的超时时长Y3并未超过待发送报文X1的UTO,基于待发送报文X1的UTO无法确定当前TCP会话不可用。滑窗以及MSS的处理原理,与UTO的类似,故不再赘述。可见,在对第二待处理字段进行归一化处理时,需要基于不同待发送报文的第二待处理字段中取值最小的第二待处理字段,才可以满足所有待发送报文的需求。
由于对从网络设备发送给用户设备的待处理报文进行归一化处理,实际上是对原始的待处理报文进行复制后添加上不同数据处理单元的会话信息,使得分发给不同数据处理单元的报文包含的报文头中的第二待处理字段均为复制而来。因此,在该过程中不存在第二待处理字段的归一化处理的环节。
另外,在本说明书一个可选的实施例中,在执行图3所示步骤S102之前,对多个数据处理单元分别生成的待发送报文进行对齐和比较,也即,在执行报文头归一化处理之前,需要确定用户设备中的各个数据处理单元均已生成待发送报文、所生成的各个待发送报文均已进入会话管理单元处理、且各个待发送报文的报文数据均相同。
其中,确定各个数据处理单元均已生成待发送报文和所生成的各个待发送报文属于会话对齐环节,可以基于会话管理单元中每个数据处理单元的会话有效标志来进行。具言之,如果会话有效标志取1,则说明相对应的数据处理单元的待发送报文已生成并已进入会话管理单元中处理;反之,如果会话有效标志取0,则说明相对应的数据处理单元的待发送报文未生成或已生成但未进入会话管理单元中处理。当多个数据处理单元的会话有效标志均为1时,则说明会话对齐。
进一步的,在会话对齐之后可以执行会话比较环节,即确定多个数据处理单元分别生成的待发送报文的报文数据之间是否存在差异。一般的,由于报文数据较长,可以采用比较报文数据的哈希值的方案。具言之,如果各待发送报文的报文数据的哈希值均相同,则说明各待发送报文的报文数据一致,可以进行后续的归一化处理环节。如果各待发送报文的报文数据的哈希值中存在至少一个报文与其他报文的报文数据的哈希值不一致,则说明用户设备中的多个数据处理单元中的一个或多个数据处理单元存在错误。此时,可基于拟态安全的裁决方案,确定哪个待发送报文的报文数据存在错误,将报文数据存在错误的待发送报文丢弃,基于剩余的待发送报文执行后续的归一化处理。如果无法确定哪个待发送报文的报文数据存在错误,则当前各待发送报文均可以被丢弃,使得各数据处理单元重新生成待发送报文。
在实际应用中,在报文头归一化之前,除了上述会话对齐和会话比较之外,还可以存在另外多个会话管理环节,如会话匹配、会话创建、会话判决等。具体可详见后续图7所示状态跳转方案,此处先不赘述。
在本说明书一个或多个实施例中,本说明书提供一种报文处理的方法,如图5所示,该报文处理的方法用于对从网络设备发送给用户设备的报文进行归一化处理,包括下述步骤S300至S306:
在步骤S300:接收由所述网络设备通过已建立的TCP会话发送的待处理报文。
在步骤S302:从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息。
如前所述,由于网络设备对用户设备中部署有多个数据处理单元并不感知,因此,网络设备向用户设备发送待处理报文不是基于数据处理单元的数量的,而是仅发送一条。这就需要用户设备的会话管理单元对网络设备发送的待处理报文进行复制处理,并在复制的待处理报文填入不同数据处理单元对应的会话信息后,再分发给对应的数据处理单元。
而在此步骤中,需从会话管理单元中提取存储的各个数据处理单元分别对应的会话信息。一般的,用户设备是TCP会话的主动方,在TCP会话建立时,各个数据处理单元分别生成的待发送报文中就携带有各个数据处理单元分别对应的会话信息,会话管理单元可以将TCP会话建立时各个数据处理单元分别对应的会话信息进行存储,以便针对网络设备发送的待处理报文进行处理。
对待处理报文进行处理所需要的会话信息可包括报文标识、端口标识和序列号等。
在步骤S304:根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文。
一般的,将待处理报文进行复制,将多个数据处理单元分别对应的会话信息填入复制后的各待处理报文的报文头的相应字段内,以得到与多个数据处理单元相对应的各第二目标报文。具体可通过下述步骤实现:
第一步:按照所述多个数据处理单元的数量,复制所述待处理报文。
第二步:从所述多个数据处理单元的会话信息中提取所述多个数据处理单元分别对应的指定字段,所述指定字段包括报文标识、端口标识和序列号。
实际应用中,待处理报文的报文头中并非所有字段均需要替换,如滑窗、MSS、UTO等字段并不需要在发送给不同数据处理单元的不同第二目标报文之间形成差异化。因此,从多个数据处理单元的会话信息中提取需要填入的指定字段。其中,指定字段包括报文标识、端口标识(尤其是源端口标识)和序列号。
第三步:根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
在步骤S306:将各第二目标报文分别发送给所述多个数据处理单元。
在本说明书提供的报文处理的方法中,从会话管理单元中提取多个数据处理单元的会话信息,基于提取的会话信息和网络设备通过已建立的TCP会话发送的待处理报文,确定各个数据处理单元分别对应的第二目标报文,之后将各第二目标报文分发给多个数据处理单元中对应的数据处理单元。
通过上述方案,网络设备发送一条待处理报文,经由会话管理单元处理就可以得到多个数据处理单元分别对应的第二目标报文。由此,在网络设备不感知的情况下,实现拟态安全系统中,包含有多个数据处理单元的用户设备与网络设备之间的TCP报文传输,而无需网络设备发送数据重复的报文,提高了TCP会话的安全性以及效率。
在本说明书一个可选的实施例中,在图5所示步骤S304中,当将数据处理单元的会话信息中的序列号填入复制得到的报文时,由于序列号在报文的传输过程中不断递增,直接采用会话管理单元中预存的序列号难以满足要求,因此,可基于待处理报文的载荷长度和会话管理单元中预存的数据处理单元的序列号确定新的序列号后再填入。具体方案可包括如下:
第一步:确定所述待处理报文的指定参数和载荷长度。
第二步:根据所述待处理报文的载荷长度,重新确定所述待处理报文的指定参数。
其中,待处理报文的指定参数用于指示待处理报文是TCP会话中由网络设备第几次发送的。载荷长度用于指示待处理报文的报文数据的长度。一般的,基于待处理报文的载荷长度和待处理报文的指定参数之和,确定新的指定参数。具体的方案与前述当第一待处理字段为序列号时步骤S206的具体实施方式类似,此处不再赘述。
第三步:根据所述多个数据处理单元分别对应的序列号和重新确定的指定参数,重新确定所述多个数据处理单元分别对应的序列号。
如前所述,指定字段是从会话管理单元中提取、需要填入复制得到的报文中的会话信息。针对每个数据处理单元,根据该数据处理单元对应的序列号和更新后的指定参数确定新的序列号,并将确定出的新的序列号填入复制得到的报文中,以得到该数据处理单元对应的第二目标报文。
第四步:将重新确定的所述多个数据处理单元分别对应的序列号依次填入各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
在本说明书一个可选的实施例中,在执行图5所示步骤S304之前,还需要基于待处理报文进行会话匹配环节,以确定待处理报文不存在会话超时以及序列号错误的问题。具体通过下述方案实现,如图6所示:
在步骤S400:确定所述待处理报文的报文头中的序列号,并获取会话管理单元中的会话超时计数器。
在步骤S402:判断所述待处理报文的报文头中的序列号是否存在错误,若是,执行步骤S404,否则执行步骤S406。
在步骤S404:丢弃待处理报文。
如果待处理报文对应的序列号存在错误,则有可能是网络设备收到攻击,或者在传输报文的过程中存在丢包的问题。此时,可先将待处理报文丢弃,请求网络设备重新发送正确的报文。
在步骤S406:根据所述会话超时计数器判断所述待处理报文对应的TCP会话是否存在会话超时,若是,执行步骤S408,否则执行步骤S410。
在步骤S408:删除所述待处理报文对应的TCP会话。
在TCP会话中,如果报文存在超时的问题(发送的报文长时间没有应答),则会触发超时重传。但是,同一个报文的超时重传的次数一般是有限制的,如果同一个报文的超时重传的次数超过限制,则不会再次重传该报文。如果在TCP会话中存在多个报文无法再次进行重传,说明此时该TCP会话存在错误和问题,此时可以删除该TCP会话,并重建新的TCP会话。
在步骤S410:根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文。
基于图6所示方案,在基于待处理报文和数据处理单元的会话信息确定第二目标报文之前,需要确定待处理报文本身不存在问题,且当前已建立的TCP会话不存在问题。这不仅能够保证TCP通信的安全性和可靠性,还能够提升通信效率。
当然,除了上述会话匹配之外,还可以存在另外多个会话管理环节,如会话仲裁、会话创建、会话判决等。具体可详见后续图7所示状态跳转方案,此处先不赘述。
在本说明书一个或多个实施例中,如图2所示的会话管理单元120中部署有归一化处理单元122,而归一化处理单元122中的会话管理状态机1221可在不同条件下从当前状态跳转到另一个状态。在会话管理状态机依次跳转到多个不同的状态的过程中,可以生成不同的控制指令,以建立和保持TCP会话、实现待发送报文的报文头的归一化处理(如图3所示的步骤S102)或者实现第二目标报文的重组(如图5所示的步骤S304)。其中,会话管理状态机的状态包括空闲状态、会话仲裁状态、会话匹配状态、会话创建状态、会话判决状态、报文丢弃状态、会话处理状态、会话对齐状态、会话比较状态、报文选择状态、会话归一化状态、会话信息更新状态和会话删除状态。
下述结合附图7阐述会话管理状态机在多个不同的状态之间跳转的过程,具体可包括以下步骤:
第一个状态:在用户设备上电启动时,会话管理状态机初始化为空闲状态,并对会话节点缓存空间进行复位和初始化。对指定寄存器进行复位操作,所述指定寄存器至少包括队列查询标志寄存器、报文丢弃标记寄存器、序列号错误标记寄存器。
会话管理状态机监控报文头的提取,响应于获取到报文(待发送报文或者待处理报文)的报文头,从空闲状态跳转到会话仲裁状态。
第二个状态:当会话管理状态机处于会话仲裁状态时,确定输入会话管理单元的报文(待发送报文或者待处理报文)的传输方向,并将传输方向记录在第一指定寄存器中。其中,报文的传输方向包括上行方向和下行方向,所述上行方向表示所述网络设备通过会话管理单元传输报文到所述用户设备中的数据处理单元,所述下行方向表示所述用户设备中的数据处理单元通过会话管理单元传输报文到所述网络设备。
当确定传输方向记录在所述第一指定寄存器中时,会话管理状态机从所述会话仲裁状态跳转到会话匹配状态。
第三个状态:当会话管理状态机处于会话匹配状态时,更新所述队列查询标志寄存器,创建会话匹配子进程,并生成匹配请求。其中,所述会话匹配子进程通过匹配子状态机实现会话匹配,所述匹配子状态机在所述会话管理单元上电启动而处于空闲状态时进行初始化。匹配子状态机的多个状态以及状态跳转关系详见图8。
如图8所示,响应于所述匹配请求,所述匹配子状态机从空闲状态跳转到匹配裁定状态。当所述匹配子状态机处于匹配裁定状态时,判断所述报文头是否存储在TCP会话缓存队列,若是,则匹配结果为匹配成功,若否,则匹配结果为匹配失败。所述匹配子状态机将所述匹配结果返回给所述会话管理状态机。
响应于匹配结果为匹配成功,所述会话管理状态机从会话匹配状态跳转到会话判决状态。
响应于匹配结果为匹配失败,判断输入会话管理单元的报文是否满足预设条件,若是,则所述会话管理状态机从会话匹配状态跳转到会话创建状态,若否,则所述会话管理状态机从会话匹配状态跳转到报文丢弃状态。其中,所述预设条件为输入会话管理单元的报文对应的报文类型为SYN,且,所述输入会话管理单元的报文的传输方向为指定方向。其中,预设条件中的指定方向可以根据具体的应用场景确定。例如,在用户访问服务器的场景中,用户设备为用户操作的计算机,网络设备为用户意图访问的服务器,用户设备为请求建立TCP会话的一方,则预设条件中的指定方向可设置为下行方向。在远程服务器远程控制无人驾驶设备的场景中,网络设备为远程服务器,用户设备为无人驾驶设备,网络设备为请求建立TCP会话的一方,则预设条件中的指定方向可设置为上行方向。
需要说明的是,在本说明书中,输入会话管理单元的报文对应的报文类型可以是SYN、ACK、PUSH、FIN中的一种。其中,报文类型为SYN时,表示该报文是用于申请建立TCP会话的报文。报文类型为ACK时,表示该报文是确认报文,用于对之前接收到的报文进行确认。报文类型为PUSH时,表示该报文用于催促报文接收方尽快将数据从TCP接收缓冲区中读走,通常是当报文发送方根据报文接收方返回的报文的滑窗的大小,确定报文接收方的TCP接收缓存区快满了,即发送报文类型为PUSH的报文,使得报文接收方尽快从TCP接收缓冲区中读取数据。报文类型为FIN时,表示报文发送方请求与报文接收方断开TCP会话。
由此,在会话管理状态机处于会话匹配状态时,如果输入会话管理单元的报文对应的报文类型为SYN,并且,该报文的传输方向为指定方向,则表明该报文是由当前应用场景下请求建立TCP会话的一方发送,并用于请求建立TCP会话的报文。基于该报文,会话管理状态机可以从会话匹配状态跳转到会话创建状态,以实现网络设备与用户设备之间TCP会话的建立。
第四个状态:当会话管理状态机处于会话创建状态时,向双池链表管理体申请新的会话缓存节点,申请成功后,在新的会话缓存节点的第一内存空间中记录输入会话管理单元的报文对应的报文类型、四元组信息,并在会话缓存节点的第二内存空间中启动会话超时计数器、输出超时计数器。并且,如果报文为数据处理单元生成的待发送报文,则在第二内存空间中还会记录对应的数据处理单元标识(如执行体ID)。其中,所述会话管理状态机处于会话创建状态时,所述报文类型为SYN。之后,会话管理状态机从会话创建状态跳转到会话判决状态。
第五个状态:当所述会话管理状态机处于会话判决状态时,会执行与图6类似的判决过程。具体的,根据所述报文头中的四元组信息和序列号,判断输入会话管理单元的报文是否存在序列号错误,如果输入会话管理单元的报文存在序列号错误,则所述会话管理状态机从会话判决状态跳转到报文丢弃状态;如果输入会话管理单元的报文不存在序列号错误,则根据会话缓存节点的第二内存空间中的会话超时计数器、输出超时计数器和挥手超时计数器,判断输入会话管理单元的报文对应的TCP会话是否存在超时;若是,则所述会话管理状态机从会话判决状态跳转到会话删除状态,若否,则所述会话管理状态机从会话判决状态跳转到会话处理状态。
第六个状态:当所述会话管理状态机处于会话处理状态时,在会话缓存节点的第一内存空间中记录报文类型。其中,在所述会话缓存节点的第一内存空间记录的报文类型包括SYN、ACK、PUSH、FIN中的一个。在会话缓存节点的第二内存空间中记录报文头中的报文标识、端口标识、序列号、滑窗、最大报文段长度MSS、用户超时时长UTO、报文哈希值,重新初始化会话超时计数器、输出超时计数器,并更新输入会话管理单元的报文对应的数据处理单元的会话有效标志为指定数值(如1)。在会话缓存节点的第三内存空间中存储输入会话管理单元的报文。所述会话管理状态机从会话处理状态跳转到会话对齐状态。
第七个状态:当所述会话管理状态机处于会话对齐状态时,读取会话缓存节点的第二内存空间中数据处理单元的会话有效标志。如果所述多个数据处理单元分别对应的会话有效标志均为指定数值(如1),则确定所述多个数据处理单元的待发送报文对齐,所述会话管理状态机从会话对齐状态跳转到会话比较状态。然而,如果所述多个数据处理单元分别对应的会话有效标志中至少一个不为指定数值,则确定所述多个数据处理单元的待发送报文未对齐,所述会话管理状态机从会话对齐状态跳转到空闲状态。
第八个状态:当所述会话管理状态机处于会话比较状态时,读取会话缓存节点的第二内存空间中存储的所述待发送报文的报文哈希值,并将所述多个数据处理单元分别对应的待发送报文的报文哈希值进行比较,得到报文比较结果;响应于得到报文比较结果,所述会话管理状态机从会话比较状态跳转到报文选择状态。
第九个状态:当所述会话管理状态机处于报文选择状态时,如果所述报文比较结果为所述多个数据处理单元分别对应的待发送报文的报文哈希值均一致,则从所述多个数据处理单元中选择目标数据处理单元,并确定所述目标数据处理单元的标识,所述会话管理状态机从报文选择状态跳转到会话归一化状态;如果所述报文比较结果为所述多个数据处理单元分别对应的待发送报文的报文哈希值不完全一致,则所述会话管理状态机从报文选择状态跳转到会话删除状态。
第十个状态:当所述会话管理状态机处于会话归一化状态时,启动会话归一化子进程,以通过所述会话归一化子进程对待发送报文的报文头进行归一化处理,具体参照图3所示方案。或者,通过会话归一化子进程对输入会话管理单元的报文进行处理,得到多个数据处理单元分别对应的第二目标报文,具体参照图5所示方案。之后,对输出超时计数器进行复位,所述会话管理状态机从会话归一化状态跳转到会话信息更新状态。
第十一个状态:当所述会话管理状态机处于会话更新状态时,将归一化处理后的报文头存储在会话缓存节点的内存空间中,所述会话管理状态机从会话更新状态跳转到空闲状态。
第十二个状态:当所述会话管理状态机处于报文丢弃状态时,更新报文丢弃标记寄存器,并丢弃输入会话管理单元的报文。响应于报文的丢弃,所述会话管理状态机从报文丢弃状态跳转到空闲状态。
第十三个状态:当所述会话管理状态机处于会话删除状态时,将会话缓存节点的内存空间清空。
由于在基于会话管理状态机对网络设备发送的待处理报文进行处理时不存在会话对齐、会话比较以及报文选择的环节,因此,针对网络设备发送的待处理报文,会话管理状态机的状态可以如图7中虚线所示;针对数据处理单元生成的待发送报文的处理,会话管理状态机的状态可以如图7中实线所示。
另外,在本说明书中,会话管理状态机负责TCP会话归一化功能的整个生命周期,即从报文输入会话管理单元开始到会话管理单元输出报文结束,完成会话匹配、新建会话、会话比较、报文选择、会话信息更新、报文DMA访问、会话删除、报文丢弃、报文穿通等前述多个状态之间的跳转,从而实现对待处理报文或待发送报文的归一化以及维持TCP会话。
其中,会话管理状态机可通过采用双池双向链表,即双向链表加双池机制,来实现硬件快速化TCP会话管理。具体的,设置双池链表来管理TCP会话缓存节点,双池分别为已使用列表(used_list)和空闲列表(free_list)。其中,已使用列表(used_list)维护已使用的TCP会话缓存节点,空闲列表(free_list)维护已预留但未使用的TCP会话缓存节点。双池的操作为互补关系,即当已使用列表(used_list)中增加节点时,空闲列表(free_list)会相应地减少节点。在TCP会话归一化过程中,TCP会话缓存节点的插入、删除会触发链表节点的头指针phead和尾指针pend的更新。具体的指针更新方式可以是本领域技术人员熟知的任意更新方式,本说明书对此不做限定。
以上为本说明书的一个或多个实施例提供的报文处理的方法,基于同样的思路,本说明书还提供了相应的报文处理的装置,如图9和图10所示。
图9为本说明书提供的一种报文处理的装置示意图,所述装置应用于与网络设备建立TCP会话的用户设备,所述用户设备包括会话管理单元和多个数据处理单元,所述装置包括:
待发送报文获取模块500,用于获取所述多个数据处理单元分别生成的待发送报文;
归一化模块502,用于通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头;
第一目标报文确定模块504,用于根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文;
第一发送模块506,用于将各所述第一目标报文通过已建立的TCP会话发送给所述网络设备。
可选地,所述归一化模块502具体用于,从各所述待发送报文中选择目标报文,并确定所述目标报文的报文头中的第一待处理字段,所述第一待处理字段包括报文标识、端口标识、序列号;从所述会话管理单元读取所述目标报文对应的指定参数,并判断所述指定参数是否为初始值;若是,则将所述目标报文的报文头中的第一待处理字段作为目标字段存入所述会话管理单元,并根据所述目标字段确定归一化处理后的第一待处理字段;若否,则根据所述会话管理单元预存的目标字段,确定归一化处理后的第一待处理字段。
可选地,当所述第一待处理字段为序列号时,所述归一化模块502具体用于,根据所述目标报文的载荷长度,更新所述目标报文对应的指定参数;从所述会话管理单元中读取预存的目标序列号;根据更新后的指定参数和所述目标序列号,得到新的序列号作为归一化处理后的序列号。
可选地,所述归一化模块502具体用于,从各所述待发送报文的报文头中确定对应的第二待处理字段,所述第二待处理字段包括滑窗、最大报文段长度、用户超时时长;从各所述第二待处理字段中选择取值最小的第二待处理字段作为归一化处理后的第二待处理字段,并存入所述会话管理单元。
可选地,所述装置还包括:
比较模块508,具体用于确定各所述待发送报文的报文数据的哈希值均相同。
图10为本说明书提供的一种报文处理的装置示意图,所述装置应用于用户设备,所述用户设备与网络设备建立TCP会话,所述用户设备包括会话管理单元和多个数据处理单元,所述装置包括:
待处理报文接收模块600,用于接收由所述网络设备通过已建立的TCP会话发送的待处理报文;
会话信息提取模块602,用于从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息;
第二目标报文确定模块604,用于根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文;
第二发送模块606,用于将各第二目标报文分别发送给所述多个数据处理单元。
可选地,所述第二目标报文确定模块604具体用于,按照所述多个数据处理单元的数量,复制所述待处理报文;从所述多个数据处理单元的会话信息中提取所述多个数据处理单元分别对应的指定字段,所述指定字段包括报文标识、端口标识和序列号;根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
可选地,当所述指定字段为序列号时,所述第二目标报文确定模块604具体用于,确定所述待处理报文的指定参数和载荷长度;根据所述待处理报文的载荷长度,重新确定所述待处理报文的指定参数;根据所述多个数据处理单元分别对应的序列号和重新确定的指定参数,重新确定所述多个数据处理单元分别对应的序列号;将重新确定的所述多个数据处理单元分别对应的序列号依次填入各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
可选地,所述第二目标报文确定模块604具体用于,确定所述待处理报文的报文头中的序列号;获取会话管理单元中会话超时计数器;如果根据所述待处理报文的报文头中的序列号确定所述待处理报文不存在序列号错误,且,所述会话超时计数器指示所述TCP会话不存在超时,则根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图3和图5所示的报文处理的方法。
本说明书还提供了图11所示的电子设备的示意结构图。如图11所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图3和图5所示的报文处理的方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,会话管理单元))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (13)
1.一种报文处理的方法,应用于与网络设备建立TCP会话的用户设备,所述用户设备包括会话管理单元和多个数据处理单元,其特征在于,所述方法包括:
获取所述多个数据处理单元分别生成的待发送报文;
通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头;
根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文;
将各所述第一目标报文通过已建立的TCP会话发送给所述网络设备。
2.如权利要求1所述的方法,其特征在于,通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头,具体包括:
从各所述待发送报文中选择目标报文,并确定所述目标报文的报文头中的第一待处理字段,所述第一待处理字段包括报文标识、端口标识、序列号;
从所述会话管理单元读取所述目标报文对应的指定参数,并判断所述指定参数是否为初始值;
若是,则将所述目标报文的报文头中的第一待处理字段作为目标字段存入所述会话管理单元,并根据所述目标字段确定归一化处理后的第一待处理字段;
若否,则根据所述会话管理单元预存的目标字段,确定归一化处理后的第一待处理字段。
3.如权利要求2所述的方法,其特征在于,当所述第一待处理字段为序列号时,根据所述会话管理单元读取预存的目标字段,确定归一化处理后的第一待处理字段,具体包括:
根据所述目标报文的载荷长度,更新所述目标报文对应的指定参数;
从所述会话管理单元中读取预存的目标序列号;
根据更新后的指定参数和所述目标序列号,得到新的序列号作为归一化处理后的序列号。
4.如权利要求1所述的方法,其特征在于,通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头,具体包括:
从各所述待发送报文的报文头中确定对应的第二待处理字段,所述第二待处理字段包括滑窗、最大报文段长度、用户超时时长;
从各所述第二待处理字段中选择取值最小的第二待处理字段作为归一化处理后的第二待处理字段,并存入所述会话管理单元。
5.如权利要求1所述的方法,其特征在于,通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头之前,所述方法还包括:
确定各所述待发送报文的报文数据的哈希值均相同。
6.一种报文处理的方法,应用于与网络设备建立TCP会话的用户设备,所述用户设备包括会话管理单元和多个数据处理单元,其特征在于,所述方法包括:
接收由所述网络设备通过所述TCP会话发送的待处理报文;
从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息;
根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文;
将各所述第二目标报文分别发送给所述多个数据处理单元。
7.如权利要求6所述的方法,其特征在于,根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文,具体包括:
按照所述多个数据处理单元的数量,复制所述待处理报文;
从所述多个数据处理单元的会话信息中提取所述多个数据处理单元分别对应的指定字段,所述指定字段包括报文标识、端口标识和序列号;
根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的各第二目标报文。
8.如权利要求7所述的方法,其特征在于,当所述指定字段为序列号时,根据所述多个数据处理单元分别对应的指定字段和各所述复制得到的报文,得到所述多个数据处理单元分别对应的各第二目标报文,具体包括:
确定所述待处理报文的指定参数和载荷长度;
根据所述待处理报文的载荷长度,重新确定所述待处理报文的指定参数;
根据所述多个数据处理单元分别对应的序列号和重新确定的指定参数,重新确定所述多个数据处理单元分别对应的序列号;
将重新确定的所述多个数据处理单元分别对应的序列号依次填入各所述复制得到的报文,得到所述多个数据处理单元分别对应的第二目标报文。
9.如权利要求6所述的方法,其特征在于,根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文,具体包括:
确定所述待处理报文的报文头中的序列号;
获取会话管理单元中会话超时计数器;
如果根据所述待处理报文的报文头中的序列号确定所述待处理报文不存在序列号错误,且,所述会话超时计数器指示所述TCP会话不存在超时,则根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文。
10.一种报文处理的装置,应用于与网络设备建立TCP会话的用户设备,所述用户设备包括会话管理单元和多个数据处理单元,其特征在于,所述装置包括:
待发送报文获取模块,用于获取所述多个数据处理单元分别生成的待发送报文;
归一化模块,用于通过所述会话管理单元对各所述待发送报文的报文头进行归一化处理,得到归一化处理后的报文头;
第一目标报文确定模块,用于根据所述归一化处理后的报文头,得到各所述待发送报文对应的第一目标报文;
第一发送模块,用于将各所述第一目标报文通过所述TCP会话发送给所述网络设备。
11.根据权利要求10所述的装置,其特征在于,还包括:
待处理报文接收模块,用于接收由所述网络设备通过所述TCP会话发送的待处理报文;
会话信息提取模块,用于从所述会话管理单元中提取预存的所述多个数据处理单元的会话信息;
第二目标报文确定模块,用于根据所述多个数据处理单元的会话信息和所述待处理报文,确定所述多个数据处理单元分别对应的第二目标报文;
第二发送模块,用于将各所述第二目标报文分别发送给所述多个数据处理单元。
12.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~9中任一项所述的方法。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175198.0A CN117729274A (zh) | 2024-02-07 | 2024-02-07 | 报文处理的方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175198.0A CN117729274A (zh) | 2024-02-07 | 2024-02-07 | 报文处理的方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117729274A true CN117729274A (zh) | 2024-03-19 |
Family
ID=90207339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410175198.0A Pending CN117729274A (zh) | 2024-02-07 | 2024-02-07 | 报文处理的方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117729274A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111600836A (zh) * | 2020-04-02 | 2020-08-28 | 之江实验室 | 一种保证冗余执行体tcp连接归一化的装置及方法 |
CN111641625A (zh) * | 2020-05-25 | 2020-09-08 | 河南信大网御科技有限公司 | 异构功能等价执行体归一化装置、方法、架构及存储介质 |
CN114125077A (zh) * | 2022-01-26 | 2022-03-01 | 之江实验室 | 一种实现多执行体tcp会话归一化的方法和装置 |
WO2023134631A1 (zh) * | 2022-01-13 | 2023-07-20 | 大唐移动通信设备有限公司 | 数据包处理方法、装置及网络设备 |
WO2024021801A1 (zh) * | 2022-07-26 | 2024-02-01 | 华为技术有限公司 | 报文转发装置及方法、通信芯片及网络设备 |
-
2024
- 2024-02-07 CN CN202410175198.0A patent/CN117729274A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111600836A (zh) * | 2020-04-02 | 2020-08-28 | 之江实验室 | 一种保证冗余执行体tcp连接归一化的装置及方法 |
CN111641625A (zh) * | 2020-05-25 | 2020-09-08 | 河南信大网御科技有限公司 | 异构功能等价执行体归一化装置、方法、架构及存储介质 |
WO2023134631A1 (zh) * | 2022-01-13 | 2023-07-20 | 大唐移动通信设备有限公司 | 数据包处理方法、装置及网络设备 |
CN114125077A (zh) * | 2022-01-26 | 2022-03-01 | 之江实验室 | 一种实现多执行体tcp会话归一化的方法和装置 |
WO2024021801A1 (zh) * | 2022-07-26 | 2024-02-01 | 华为技术有限公司 | 报文转发装置及方法、通信芯片及网络设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4583383B2 (ja) | Tcp再送信プロセス速度の向上方法 | |
JP4508195B2 (ja) | アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少 | |
KR101365838B1 (ko) | 개선된 분산형 커널 운영 시스템 | |
US10484472B2 (en) | Methods and systems for efficiently moving data between nodes in a cluster | |
US20110134930A1 (en) | Packet-based networking system | |
US11108890B2 (en) | Management client and device monitoring | |
JP6745821B2 (ja) | ハイパーテキスト・トランスファ・プロトコル要求の再送方法及びデバイス並びにクライアント端末 | |
CN103907327A (zh) | 电信网络中的不显眼内容压缩 | |
US8959171B2 (en) | Method and apparatus for acknowledging a request for data transfer | |
JP2006178961A (ja) | 要求−応答トランスポートプロトコルによる高信頼一方向メッセージング | |
US20110078313A1 (en) | Method and system for managing a connection in a connection oriented in-order delivery environment | |
CN113709131A (zh) | 一种网络数据传输方法、装置、计算机设备及可读介质 | |
JP4979823B2 (ja) | データ転送エラー検査 | |
JP4736859B2 (ja) | 通信装置および通信方法 | |
JP6800375B2 (ja) | 通信装置、通信方法及び通信プログラム | |
CN117729274A (zh) | 报文处理的方法、装置、设备及可读存储介质 | |
CN116827853A (zh) | 一种路径处理方法、装置及电子设备 | |
US8150996B2 (en) | Method and apparatus for handling flow control for a data transfer | |
US8549345B1 (en) | Methods and apparatus for recovering from a failed network interface card | |
JP2013192092A (ja) | 車載装置 | |
US20230042583A1 (en) | Message exchange between computing devices operable to implement coap | |
US20170265103A1 (en) | Communication device, communication method, and non-transitory computer readable medium | |
US12003586B2 (en) | Distributed session owner across multiple entities | |
CN114710425B (zh) | 一种区块链节点连接方法、装置、介质及设备 | |
Fox et al. | IBM's Shared Memory Communications over RDMA (SMC-R) Protocol |
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 |