处理传输控制协议会话中的分组的系统和方法技术方案

技术编号:18403936 阅读:18 留言:0更新日期:2018-07-08 22:13
本申请涉及处理传输控制协议会话中的分组的系统和方法。设备可以包括一个或多个存储器以及通信耦合到一个或多个存储器的一个或多个处理器,以便:接收传输控制协议(TCP)会话的多个数据分组;确定包括同步确认(SYNACK)标志的TCP会话的特定TCP段已经在包括同步(SYN)标志的TCP会话的对应TCP段之前被接收;存储特定TCP段的序列号作为用于TCP会话的流的初始序列号;并且基于用于所述流的初始序列号并基于数据分组的集合的一个或多个序列号来重组或重排TCP会话的数据分组的集合。

System and method for processing packets in session of transmission control protocol

The application relates to a system and method for processing packets in a transmission control protocol session. A device may include one or more memories and one or more processors coupled to one or more memories to receive a plurality of data packets of a transmission control protocol (TCP) session; a specific TCP segment that determines a TCP session that includes a synchronous confirmation (SYNACK) flag has already been in the TCP session that includes the synchronization (SYN) flag. A sequence number of a specific TCP segment is stored as an initial sequence number for a stream for a TCP session; and a set of data packets of a TCP session is reorganized or rearranged based on one or more sequence numbers for the set of data packets, which are used for the TCP session.

【技术实现步骤摘要】
处理传输控制协议会话中的分组的系统和方法
本申请涉及计算机领域,更具体地涉及处理传输控制协议会话中的分组的系统和方法。
技术介绍
网络设备使用一个或多个通信协议在网络上进行通信。例如,在诸如使用因特网协议(IP)的分组网络上使用的通信协议之一是传输控制协议(TCP)。TCP被用于确保发起(源)网络设备传送的所有字节都在目的地网络设备处被接收。TCP业务流被分成多个段,每个段包括来自数据流的数据块和TCP报头。在一些网络中,解析数据分组中的TCP段的网络设备有时实现在数据流的两个方向(例如,接收路径和发送路径,TCP会话中的两个流)上的数据分组被互锁的位置中。例如,解析TCP段的网络设备可以实现在客户端或服务器上,或者可以与TCP业务流一起实现。
技术实现思路
一种设备可以包括一个或多个存储器以及与所述一个或多个存储器通信耦合的一个或多个处理器,用于:接收传输控制协议(TCP)会话的多个数据分组;确定TCP会话的包括同步确认(SYN-ACK)标志的特定TCP段已经在所述TCP会话的包括同步(SYN)标志的对应TCP段之前被接收;将所述特定TCP段的序列号存储为用于所述TCP会话的流的初始序列号;以及基于用于所述流的所述初始序列号并且基于所述TCP会话的数据分组集合的一个或多个序列号来重组或重排所述数据分组集合。一种由网络设备执行的用于处理TCP会话中的数据分组的方法,所述方法可以包括:接收多个数据分组;基于所述多个数据分组中的至少一个数据分组中的一个或多个值,针对所述TCP会话的一个或多个数据流的每个方向生成经修改的TCP状态机,所述至少一个数据分组包括TCP段;针对一个或多个标志来分析所述至少一个数据分组的所述TCP段,以在确定所述TCP会话的另一TCP段包括同步(SYN)标志之前确定所述TCP段包括同步确认(SYN-ACK)标志;基于在确定所述TCP会话的另一TCP段包括SYN标志之前确定所述TCP段包括SYN-ACK标志,将所述TCP段的序列号存储为用于服务器流的初始序列号;以及基于所述多个数据分组的集合的序列号,重组所述多个数据分组的集合,其中所述多个数据分组的集合的序列号小于相应方向的最后一个确认序列号。一种非暂态计算机可读介质可以存储一个或多个指令,所述指令在由设备的一个或多个处理器执行时使所述一个或多个处理器:接收TCP会话的多个数据分组;确定TCP会话的包括SYN-ACK标志的特定TCP段已经在所述TCP会话的包括SYN标志的对应TCP段之前被接收;将所述特定TCP段的序列号存储为用于所述TCP会话的流的初始序列号;以及基于用于所述流的所述初始序列号并且基于所述TCP会话的数据分组的集合的一个或多个序列号来重组或重排所述数据分组的集合。附图说明图1是被配置为生成本文描述的TCP状态机的网络设备的框图;图2是如本文描述的用于处理TCP会话的方法的流程图;图3是如本文描述的用于处理TCP会话的系统的图;图4是图1、图3和/或图5的一个或多个设备的示例组件的图;以及图5是与图3所示的示例处理相关的示例实现的图。具体实施方式示例实现的以下详细描述参考附图。不同附图中的相同附图标记可以标识相同或相似的元件。TCP会话可以与各种状态相关联,诸如关闭状态、监听状态、同步状态、建立或稳定状态、关闭状态等等。网络设备可以监视TCP会话以基于与TCP会话相关联的业务来构建或重建TCP会话的状态。TCP会话的状态的重建(例如,模拟、确定等)可以被称为状态机、TCP状态机、有限状态机或类似术语。TCP状态机可能对检测TCP会话中的异常行为有用。例如,如果TCP会话执行从一个状态到另一个状态的转换,那么可以将该转换与TCP状态机进行比较,以确定该转换是否偏离TCP状态机的预期行为。监视TCP会话并为TCP会话构建状态机的网络设备可能需要以与在客户端和服务器之间交换数据分组相同的顺序处理数据分组(例如TCP段),以正确地重建TCP会话的TCP状态。对于这样的系统,一个方向上的响应数据分组在另一个方向上的对应数据分组之前可能不被处理。这是因为对应数据分组可能是必需的,以便于目的地首先生成响应数据分组。然而,网络中传送的数据分组可能会被监控通信的任何网络设备无序地接收,从而降低了TCP监控的可靠性和性能,甚至会导致网络设备的功能的丧失。本文描述的一些实现处理传输控制协议(TCP)会话中的分组,以针对与TCP会话相关联的数据流的每个方向生成经修改的TCP状态机。本文描述的一些实现可以针对TCP会话的每个数据流处理TCP段,使得无序地接收的TCP段不会导致TCP状态机故障。由于网络设备被配置为在TCP会话的一个方向上(其中所接收到的分组可能被无序地并且过早地接收到)处理、生成和存储用于数据分组的信息,所以TCP会话将不会引起错误,而没有在每个方向上生成经修改的TCP状态机的网络设备可能发生错误,并且在看到无序的分组时出现这些错误。因此,网络设备被配置为继续处理针对TCP会话接收到的数据分组,这使得网络设备能够不按顺序处理TCP会话的数据分组。以这种方式,网络设备更能容忍可能导致无序分组接收的网络干扰,这可以带来更高效的实现,因为网络设备不会导致错误和/或请求重传TCP会话中的已经发送的数据分组。图1是本文描述的网络设备100的概况图。网络设备100是路由器、网关、防火墙、代理服务器、边缘设备等。如图1所示,网络设备100包括用于使用包括本领域已知技术的技术来接收和发送多个数据分组的多个端口102。端口102例如通过一个或多个总线来与一个或多个处理器104和一个或多个存储器106耦合。存储器106可以包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存和/或用于存储数据的其它技术。存储器106可以与一个或多个处理器104耦合。处理器104可以包括中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或其他类型的处理组件。在一些实施例中,本文描述的网络设备100可以被实现为网络接口卡(NIC)。在一些实现中,网络设备可以是在外壳(例如机箱)内实现的物理设备。在一些实现中,网络设备可以是由云计算环境或数据中心的一个或多个计算机设备实现的虚拟设备。一个或多个处理器104可以被配置为管理对一个或多个存储器106的访问。例如,一个或多个处理器104可以被配置为确定一个或多个存储器106中的位置以存储在一个或多个端口102上接收的数据分组。一个或多个处理器104可以被配置为当数据分组或其部分要在一个或多个端口102上传送或由一个或多个处理器104分析时读取存储在一个或多个存储器106中的该数据分组或其部分。一个或多个处理器104可被配置为重写、更新和/或使存储器位置无效。此外,一个或多个处理器104可以被配置为分析针对TCP段和接收的数据分组和TCP报头以确定网络设备之间的一个或多个数据流的状态(例如,客户端和服务器之间的TCP会话的一个或多个连接或流)。可以将TCP段封装在包括IP报头和数据区段的因特网协议(IP)数据报中以形成数据分组。IP数据报可以通过IP通信网络传送。在一些实现中,一本文档来自技高网...

【技术保护点】
1.一种设备,包括:用于接收传输控制协议(TCP)会话的多个数据分组的装置;用于确定所述TCP会话的包括同步确认(SYN‑ACK)标志的特定TCP段已经在所述TCP会话的包括同步(SYN)标志的对应TCP段之前被接收的装置;用于将所述特定TCP段的序列号存储为所述TCP会话的流的初始序列号的装置;和用于基于所述流的所述初始序列号并且基于所述TCP会话的数据分组的集合的一个或多个序列号来重组或重排所述数据分组的集合的装置。

【技术特征摘要】
2016.12.29 IN 201611044894;2017.12.21 US 15/850,491.一种设备,包括:用于接收传输控制协议(TCP)会话的多个数据分组的装置;用于确定所述TCP会话的包括同步确认(SYN-ACK)标志的特定TCP段已经在所述TCP会话的包括同步(SYN)标志的对应TCP段之前被接收的装置;用于将所述特定TCP段的序列号存储为所述TCP会话的流的初始序列号的装置;和用于基于所述流的所述初始序列号并且基于所述TCP会话的数据分组的集合的一个或多个序列号来重组或重排所述数据分组的集合的装置。2.如权利要求1所述的设备,其中所述流是第一流;以及其中所述设备还包括:用于基于与所述SYN-ACK标志相关联的值来生成用于第二流的初始序列号的装置。3.如权利要求1所述的设备,其中所述流包括客户端流或服务器流中的至少一个。4.如权利要求1所述的设备,还包括:用于基于与所述TCP会话相关联的一个或多个值来生成所述TCP会话的TCP状态机的装置;以及其中用于确定所述TCP会话的包括SYN-ACK标志的特定TCP段已经在所述TCP会话的包括SYN标志的对应TCP段之前被接收的装置还包括:用于基于所述TCP状态机来确定所述TCP会话的包括所述SYN-ACK标志的所述特定TCP段已经在所述TCP会话的包括所述SYN标志的所述对应TCP段之前被接收的装置。5.如权利要求4所述的设备,其中所述TCP状态机标识以下中的至少一个:所述序列号或所述一个或多个序列号,所述流的方向,所述流的最后字节序列号,所述流的最后看到的ACK值,或者指示标识已经执行重组或重排的数据分组的字节值的值。6.如权利要求1所述的设备,其中所述设备包括网络接口卡。7.如权利要求1所述的设备,其中所述重组或重排是基于所述多个数据分组的完成标志或重置标志中的至少一个来执行的。8.如权利要求7所述的设备,其中所述完成标志或所述重置标志被用于确定要执行所述重组或重排的最后字节。9.如权利要求1所述的设备,其中所述对应TCP段由所述特定TCP段的确认值来标识。10.一种由网络设备执行的用于处理传输控制协议(TCP)会话中的数据分组的方法,所述方法包括:接收多个数据分组;基于所述多个数据分组中的至少一个数据分组中的一个或多个值,针对所述TCP会话的一个或多个数据流的每个方向生成经修改的TCP状态机,所述至少一个数据分组包括TCP段;针对一个或多个标志来分析所述至少一个数据分组的所述TCP段,以在对所述TCP会话的另一TCP段包括同步(S...

【专利技术属性】
技术研发人员:A·W·萨尔达尼亚M·哈
申请(专利权)人:西普霍特公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1