CN101217429A - 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 - Google Patents
基于tcp时间戳选项确定tcp报文之间的引发关系的方法 Download PDFInfo
- Publication number
- CN101217429A CN101217429A CNA2008100563928A CN200810056392A CN101217429A CN 101217429 A CN101217429 A CN 101217429A CN A2008100563928 A CNA2008100563928 A CN A2008100563928A CN 200810056392 A CN200810056392 A CN 200810056392A CN 101217429 A CN101217429 A CN 101217429A
- Authority
- CN
- China
- Prior art keywords
- tcp
- message
- list item
- tvmap
- timestamp
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
基于TCP时间戳选项确定TCP报文之间的引发关系的方法属于TCP传输协议性能分析领域,其特征在于,含有以下步骤:在TCP连接的路径上任意一处截获报文;将每个TCP报文时间戳选项中的原始时间戳值修改为在该连接方向上严格单调递增的新时间戳值;将该报文的原始时间戳值和新时间戳值记录在该连接方向上的时间戳值映射表中;在与该报文反方向的时间戳值映射表中,找到与该报文对应的时间戳值映射表项,并根据表项内容改写该报文的时间戳回显应答字段;根据上一步找到的对应表项来进一步确定报文之间的引发关系;为不含时间戳选项SYN报文添加时间戳选项。用户和网络工程人员可使用该方法诊断TCP连接传输速率的限制因素。
Description
技术领域
本发明涉及互联网中TCP传输协议的性能分析和诊断。
背景技术
TCP是Internet中最广泛使用的传输层协议,许多重要的互联网应用比如HTTP,FTP,BitTorrent,NFS等都使用它来传输数据。TCP传输速率越高,文件的下载速度就越快。TCP传输速率很大程度上决定了这些应用的性能。一条实际TCP连接的传输速率可能受到如下几种因素的限制:1)应用程序的限制,比如应用程序本身只间歇的产生少量数据,2)主机配置的限制,比如过小的发送端或接收端缓存,3)网络的限制,比如受网络丢包或者路径上瓶颈带宽的限制。
Pittsburgh Supercomputing Center(PSC)的研究人员开发了一个名为Web100的***。该***通过对操作***中TCP协议栈的修改来记录一些TCP传输时的统计参数,从而确定TCP连接发送速率的限制因素。然而,这种方法只适用于在数据发送端诊断数据发送的故障,无法用于在网络中或者数据接收端处的故障诊断。比如,当浏览网页时,除非服务器安装这个***,否则我们无法诊断网页下载中的故障。
在一条TCP连接中,飞行字节数(inflight bytes)是指某一时刻那些已经发送但未被接收端确认的字节总数。TCP发送端通过动态地改变连接的飞行字节数来调整其传输速率。在大多数情况下,找出飞行字节数的限制因素就能确定TCP传输速率的限制因素。飞行字节数受下面4种因素的限制:当上层应用(如telnet)只是间歇的发送报文,飞行字节数受限于上层应用的数据产生速率。当上层应用(如HTTP,FTP等)需要连续传输大量数据的时候,TCP连接的飞行字节数将受以下三种因素的限制,发送端缓存(sender buffer)、接收端通告窗口(receiver advertised window)和拥塞窗口(congestion window)。当飞行字节数受不同因素限制时,其变化规律是不一样的。因此,诊断TCP速率限制因素的关键在于找出连接任意一个时刻的飞行字节数,并根据飞行字节数的变化规律来确定其限制因素。
TCP协议使用滑动窗口方案来实现对连接飞行字节数的控制。滑动窗口的左边界是未确认序列号,右边界是已经发送的最大序列号。当发送端收到一个报文后右移了左边界,右边界也会相应右移。紧接着,它将根据新的右边界检查是否允许发送新报文。如果允许,它将立刻发送新报文。因此,除去建立连接的第一个报文和由于超时重传引发的报文,其余每个报文的发送都是由于发送方接收到了某个报文而引发的。在这里,我们定义一个报文和引发它的报文为一个对应对,并将基于这种引发关系建立的对应对称为报文之间的引发关系。从上面的分析不难看出,一旦能够确定这种引发关系,连接的飞行字节数能够很容易的被确定。
所以,确定连接速率限制因素的关键在于确定报文间的引发关系。
确定报文间的引发关系可以通过匹配报文TCP包头中序列号和确认序列号来完成。但是对于数据下载的情况,数据接收端不发送任何数据,它发出报文的序列号都一样,因此数据发送端发出报文的确认序列号也都一样。此时,我们无法根据报文的序列号和确认序列号来确定发送端发出的某个报文是由接收端发出的哪个报文引发的。
这种情况下,使用TCP的时间戳选项能够达到我们的目的。TCP时间戳选项是在RFC1323中提出的,用于发送端计算报文的往返时间(RTT)。
图1是TCP时间戳选项,其中TSval是时间戳值,TSecr是时间戳回显应答。如
图5所示,主机B在TSval字段放置一个32比特的值,主机A在应答字段中回显这个数值。时间戳是一个单调递增的值。由于主机A只需要回显收到的内容,因此无需了解该值的具体含义。这个选项不需要在两个主机之间进行任何形式的时钟同步。RFC 1323推荐主机在1毫秒和1秒之间将时间戳值加1。另外,在建立连接的三次握手过程中,只有当两端都表示支持该选项时,连接建立以后该选项才会被使用。
根据TCP时间戳选项的工作原理,我们可以使用如下方法来确定报文之间的引发关系。假定主机B发送的一个报文的TSval为100,该报文到达主机A后引发了一些报文,那么这些报文的TSecr应该也应该为100。根据这种相等关系,我们可以将报文之间的引发关系找出来。但是在目前操作***的实现中,主机B发出报文的TSval并不是严格的单调上升,比如它可能会发出1个或者多个TSval为100的报文。此时,对于主机A发出的一个TSecr为100的报文,我们无法确定该报文到底是由主机B发出的哪个TSval为100的报文引发的。本发明提出通过修改TSval的方法来使得发出的TSval没有重复,从而避免出现上面提到的模糊情况。
发明内容
本发明给出了一种利用TCP时间戳选项确定报文之间对应关系的方法。该发明使得我们能够得到每一时刻连接的飞行字节数,并根据飞行字节数的动态变化规律来确定连接的速率限制因素。
本发明的特征在于:在待分析TCP连接路径上任意一个测量点,放置一个能够监听和修改该TCP连接报文的一个硬件设备或软件模块,依次按照以下步骤利用TCP时间戳选项来确定报文之间的引发关系,所述TCP时间戳选项包括一个32比特单调递增的时间戳字段TSval和一个32比特回显应答字段TSecr;
步骤(1)初始化,在所述软件模块中设置:
一个TCP连接监测表,用于记录所有正在被监测的TCP连接;
原始时间戳值与新时间戳值的TVmap映射表:在每个被监测TCP连接的每个方向上维护一个属于该方向报文的原始时间戳值和新时间戳值映射表,当待转发报文P0有时间戳选项时,使用该映射表来修改P0时间戳选项中的TSval和TSecr字段;该映射表由一系列TVmap表项构成,每个表项包括一个表头和原始时间戳为某个TSval的所有报文;其中TVmap表头至少包含六个关键字段:tsval_orig是该表项所属报文的原始时间戳值,tvmin和tvmax,分别是该TVmap表项所属报文的最小和最大新时间戳值,sndmax是该表项所属报文的最大TCP序列号,rcvmax是由该表项所属报文引发报文的最大TCP序列号(初值为0),flag是该TVmap表项的标志;
一个时间戳值修改模块,用于在网络没有或有乱序报文的情况下填写P0的新时间戳值TSval;
一个TVmap表项删除模块,用于删除过期的TVmap表项;
步骤(2)按步骤处理截获的TCP报文:
步骤(2.1)在报文P0的TCP校验和正确的条件下,若:P0只带有TCP SYN同步标志位,则它不属于已有的TCP连接,而是要求发起一条新的连接,按以下步骤处理,否则,若P0也不属于某个正被监测的TCP连接,则转发P0;
步骤(2.1.1)建立新的TCP连接记录;
步骤(2.1.2)判断P0是否有时间戳选项:
若有,则记录P0的时间戳值TSval
若没有,则为P0添加时间戳选项,并记录P0新的时间戳值TSval;
步骤(2.2)在报文P0的TCP校验和正确的条件下,若:P0属于某个正被监测的TCP连接,则按以下步骤处理:
步骤(2.2.1)判断该连接是否已经完成三次握手:
若:已完成三次握手,且P0有时间戳选项则转入步骤(2.2.2),否则转发P0;
若:未完成三次握手,则判断P0是否有时间戳选项,若有,则转入步骤(2.2.2),否则删除该TCP连接记录,并转发P0;
步骤(2.2.2)在时间戳值修改模块中,根据到达路径上没有乱序和有乱序两种情况,按以下步骤修改P0的原始时间戳值TSval,填写P0的新TSval,更新对应TVmap表项的sndmax,tvmin,tvmax;
步骤(2.2.2.1)当从P0的发送方到本测量点的网络路径上没有乱序时,则根据当前该方向上最大时间戳值MaxNewTSval,将P0的新时间戳值NewTSval设置为MaxNewTSval+m,同时更新MaxNewTSval,其中m≥1;
步骤(2.2.2.2)当从P0的发送方到本测量点的网络路径上存在乱序时,按照以下步骤,使用步骤(1)所述的TVmap映射表来确定P0的发送顺序:
步骤(2.2.2.2.1)根据P0的原始时间戳值TSval,在与P0同方向的映射表中找tsval_orig等于P0的TSval的那个表项,若找不到,则为P0建立一个新的TVmap表项,将P0链接到该表项,再根据该表项的tsval_orig把P0***到TVmap表中的相应位置,将该表项的sndmax设置为P0的最大TCP序列号,然后转到步骤(2.2.2.2.4);
步骤(2.2.2.2.2)若在步骤(2.2.2.2.1)中找到P0的原始时间戳值TSval对应的TVmap表项,则把P0***到对应TVmap表项中,若P0的最大TCP序列号大于该表项的sndmax,则将表项的sndmax更新为P0的最大TCP序列号;在***时,指针首先指向该表项中最后一个报文,使用从后向前的顺序搜索P0的正确位置,当指针指向一个已转发报文P1时,比较P0和P1的TCP确认序列号和TCP序列号,若P0的TCP确认序列号比P1的大,说明P0在P1之后发送,把P0***到P1的后面,转向步骤(2.2.2.2.4);若P0的确认序列号比P1的小,说明P0在P1之前发送,则指针前移一个报文,重复上面的比较;若两者的确认序列号相等,则比较它们的TCP序列号,若P0的序列号大于或等于P1的,则***到P1的后面,转向步骤(2.2.2.2.4);反之则把指针再前移一个报文,重复上面的比较;
步骤(2.2.2.2.3)在步骤(2.2.2.2.2)中,若最后指针为空,则把P0***到该TVmap表项的头部;
步骤(2.2.2.2.4)在步骤(2.2.2.2.2)中,若P0插在了前后相邻的两个报文之间,则P0的新时间戳值TSval是这两个相邻报文新时间戳值的平均值;若P0插在所有已转发后面,则P0的新时间戳值是NewMaxTSval+m,m≥1,同时更新NewMaxTSval;转入步骤(2.2.2.2.5);
步骤(2.2.2.2.5),使用P0的新TSval更新对应表项的tvmin和tvmax;
步骤(2.2.3)在TCP校验和正确的情况下,修改P0时间戳选项中的回显应答TSecr:在该连接与P0反方向的TVmap映射表中寻找一个TVmap表项,使得P0的当前回显应答TSecr大于等于该表项的tvmin,小于等于该表项的tvmax;找到之后,把P0的TSecr改写为该表项的tsval_orig,若P0的最大TCP序列号大于该表项的rcvmax,则令rcvmax等于P0的最大TCP序列号;若:查找不到,则把P0丢弃;
步骤(2.2.4)在TCP校验和正确的情况下,按以下步骤删除过期的TVmap表项:
步骤(2.2.4.1)对P0同方向TVmap映射表中的每一表项,检查P0的确认序列号是否大于表项的sndmax;
若:大于sndmax,则对该表项的标志flag置ACK_RCVD标志位;当该表项包含ACK_RCVD和DATA-ACKD的两个标志位时,删除该表项;
若:不大于sndmax,则结束,转入步骤(2.2.4.2);
步骤(2.2.4.2)对P0反方向TVmap映射表中的每一表项,检查P0的确认序列号是否大于表项的rcvmax;
若:大于rcvmax,则对该表项的标志flag置DATA_ACKD标志位,当该表项包含ACK_RCVD和DATA_ACKD的两个标志位时,删除该表项;
若:不大于sndmax,则结束,转入步骤(2.2.5);
步骤(2.2.5)转发报文。
在判断收到的报文是否属于已有TCP连接方,或者修改该报文的时间戳值,或者在修改该报文的回显应答值,都要先判断该报文的TCP校验和是否正确。
在修改报文回显应答前,有一个根据当前的TCP报文头确定连接报文对应关系的步骤,要根据所选硬件设备的应用组合进行在线分析,或者把报文的TCP报文头保存下来进行离线分析。
本发明可在待分析TCP连接路径上任意一处测量点实施,解决了确定报文之间引发关系的问题。该方法可用于诊断TCP连接传输速率的限制因素。用户和网络工程技术人员可以使用该发明进行TCP传输故障诊断。
附图说明
图1是TCP时间戳选项。
图5是TCP时间戳的基本工作原理。
图2是***的工作原理图。
图3是***的TCP报文处理流程图。
图4是TVmap映射表的基本数据结构。图中u32表示定义一个32位无符号整型变量。
图6是在网络有乱序报文的情况下时间戳值修改模块的流程图。
图7是TVmap删除模块的流程图。
具体实施方式
为了完成该发明的功能,基于本发明的一个***需要能够截获待分析TCP连接两个方向上的报文,然后修改报文的TCP包头,并最终转发出去。该***可以在待分析TCP连接路径上任意一处测量点实施,具体来说可以是该连接两端主机上能够截获和修改该连接报文的一个软件模块或硬件设备,也可以是网络路径上的某一网络设备。
如
图2所示,在该***收到一个需要进行处理的TCP报文后,它首先将报文时间戳中的TSval修改为一个新值NewTSval,并将(TSval,NewTSval)这对映射关系记录在TVmap映射表中。根据此时TCP报文头的时间戳选项我们可以在线的确定该报文的引发报文,也可以将报文的报文头保存下来用于离线分析。然后,我们通过查询另一个方向上的TVmap映射表将该报文的TSecr恢复为原始值。这是因为,报文中TSecr回显的是设备修改后的NewTSval,我们不能将该报文直接转发出去,那将导致该报文的接收端计算出不正确的RTT。最后,***将报文转发出去。
下面我们将参照上面的示意图来详细说明。
图3是本发明一个实施例收到一个TCP报文后的处理流程,详述如下:
在收到一个TCP报文后,步骤301检查该报文的TCP校验和是否正确。如果不正确,该报文将被丢弃,因为TCP校验和不正确的报文即使到达接收端也会被丢弃。更重要的原因是,如果TCP校验和不正确,我们将无法确定其时间戳选项是否正确。
***维护一个TCP连接监测表,用于记录所有正在被监测的TCP连接。步骤302检查该报文是否属于TCP连接监测表中的一个连接。如果不属于的话,则执行步骤313检查该报文是否正在发起一条新的TCP连接,即判断该报文的TCP包头是否只含有SYN标志位。如果不含SYN标志位或者除了SYN标志位还有其它标志位,则不对报文做进一步的处理,直接转发。反之如果判断为真,则执行步骤314在连接监测表中建立一个新的TCP连接记录。然后执行步骤315检查报文是否有时间戳选项。如果没有则执行步骤316为该报文添加一个时间戳选项,并在步骤317中重新计算TCP校验和,在步骤318中记录发出报文的TSval。在步骤315的检查中,如果报文有时间戳选项,则直接跳转到步骤318执行。
步骤316添加时间戳的理由是,我们的方法只能对支持时间戳选项的TCP连接进行分析。一般来说,当发起一条TCP连接的SYN报文不使用时间戳,该连接就不会支持时间戳选项。从而导致我们的方法无法用于分析这些连接。然而,我们发现对于Windows 2000/XP/Server系列操作***的主机,虽然主机发送的TCP SYN报文不含有TCP时间戳选项,但操作***本身是支持TCP时间戳选项的。使用步骤316的方法,可使得建立起的连接支持时间戳。在添加时间戳时,其TSval必须是某个非零整数,而TSecr最好设置为0。
如果报文属于TCP连接监测表中的某个连接,则执行步骤303判断该连接是否已经完成TCP三次握手。如果已经完成,则执行步骤304判断报文是否有时间戳选项。如果没有时间戳则不对报文做进一步的处理,跳转到步骤319转发报文。在步骤303的检查中,当连接还在三次握手的过程中,则执行步骤311检查报文是否有时间戳选项。如果没有则说明该TCP连接的某一端主机确实不支持时间戳选项,接着执行步骤312从连接监测表中将该连接删除,以后不再对该连接进行监测。
当执行完步骤304和311后发现报文有时间戳选项,则执行步骤305修改报文TCP时间戳选项中的TSval字段。如
图2所示,每条连接每个方向都维护一张TVmap映射表。在该方向上每转发一个报文,都需要对该表进行添加或者更新操作。如
图4所示,该映射表的是由一系列TVmap表项组成的,每个TVmap表项对应原始时间戳为某个TSval值的所有报文。该表项由一个TVmap表头和对应报文组成。TVmap表头主要包含6个关键字段:tsval_orig是该表项对应所有报文的原始TSval,tvmin和tvmax分别是该表项对应报文新TSval的最大和最小值,sndmax是这些报文的最大序列号,rcvmax是由这些报文引发的报文的最大序列号(在步骤308更新),flag是该表项的标志(在步骤310更新)。在步骤305中,每转发一个报文,都需要比较该报文的最大TCP序列号是否大于表项的sndmax,如果大于则令sndmax等于该报文的最大TCP序列号。
在步骤305中,产生NewTSval值所遵循的基本原则时要保证NewTSval序列的单调性,即需要保证后发送报文的TSval比之前发送报文的TSval的值大。步骤305有两种工作模式,分别处理到达路径上没有乱序和有乱序两种情况:
当报文从发送方到该设备的网络路径上没有乱序时,报文到达设备的顺序和报文发出的顺序相同。这种情况下,***记录该方向上当前NewTSval的最大值(MaxNewTSval),对于新收到的一个报文,将它的NewTSval设置为MaxNewTSval+m。其中m可以是任意一个大于1的整数。在具体实现中,我们设置m为1,因为没有必要将m设置为大于1。
当报文从发送方到该设备的网络路径上可能存在乱序时,处理起来比前一种情况复杂许多。***使用
图4所示的映射表来确定到达报文的发送顺序。如
图4所示,在每个TVmap表头右边,所有原始TSval等于该表项tsval_orig的报文按照它们的发送顺序从先到后构成一个链表。在步骤314生成一个新连接时,这个数据结构为空。如
图6所示,收到一个报文P0后,步骤401根据P0的TSval找到对应TVmap表项(表项的tsval_orig等于P0的TSval)。如果找不到,则执行步骤409建立新的一个TVmap表头,在步骤410中将P0***到这个表头下,在步骤411中根据该表头的TSval将新表项***映射表中。
在步骤401中如果找到对应TVmap表项,则将P0***到对应表项中。***时,指针首先指向表项中最后一个报文P(步骤402),使用从后向前的顺序搜索新报文的正确位置。指针每指向一个P时,比较P0和P的TCP确认序列号(步骤403)和TCP序列号(步骤404)。如果比较结果是P0在P之后发出,则在步骤405中将P0***到P的后面。如果比较结果是P0在之前发送,则执行步骤407让指针再前移一个报文。循环向前搜索,到最后如果指针为空(步骤406),则在步骤408中将P0***到该表项的头部。
当执行完步骤405,408和410其中的任意一个以后,P0将根据其发送的顺序***到TVmap表中。在步骤411中,如果P0不是乱序的情况,它将***在最后,它的NewTSval被设置为MaxNewTSval+m。如果P0是乱序包,则它***在两个报文的中间,它的NewTSval可以是这两个报文NewTSval之间的任意一个值,我们一般取这两个值的平均值。考虑到这种情况,前面提到的m取值需要大于1,以保证相邻报文的NewTSval之间的差值大于1。
如果步骤305成功返回,在步骤306中,我们重新计算报文的TCP校验和。在计算TCP校验和的时候,我们只需要使用增量计算的方法,无须对整个报文进行重新计算。
在步骤307中,我们可以根据当前的TCP包头确定两端报文的对应关系。这个过程可以在线进行,也可以将报文包头保存下来进行离线分析。具体选择那种方式需要根据设备具体的应用场合而定。
在步骤308中,我们将报文P0的NewTSecr恢复为原始值TSecr。***在与P0反方向的TVmap映射表中查询P0的NewTSecr的对应TVmap表项,要求P0的NewTSecr大于等于表项的tvmin且小于等于表项的tvmax。查找到以后将P0的回显字段改写为该表项的tsval_orig。如果P0的最大TCP序列号大于该表项的rcvmax则更新表项的rcvmax。如果在映射表中找不到对应表项,则将丢弃P0。
在步骤309中,报文的TCP校验和将被重新计算。
在步骤310中,如
图7所示,我们删除过期的TVmap表项。在数据传输的过程中,TVmap表项的数量会随着转发报文个数的增长而增长。如果不及时删除过期的TVmap表项,它们会占用大量的存储空间或者是查找时间。在步骤310中,对于与报文P0同方向的每一个TVmap表项,步骤501检查P0的确认序列号是否大于表项的sndmax,如果大于则对该表项的flag变量置ACD_RCVD标志位(步骤502)。在步骤503中,当该表项同时标有ACD_RCVD和DATA_ACKD两种标志位时,则删除该表项。对于与P0反方向的每一个TVmap表项,步骤507检查P0的确认序列号是否大于该表项的rcvmax,如果大于则将该表项的flag变量置DATA_ACKD标志位(步骤508)。在步骤509中,当该表项同时标有ACD_RCVD和DATA_ACKD两种标志位时,则删除该表项。
报文在步骤319中被转发出去。
敬请留意以上介绍的是本发明的较佳实施例而已,并不用以限制本发明。另外,本发明的保护范围还包括上面介绍各个模块的各种组合和它们的子模块,以及这些模块的修改和变形。
Claims (3)
1.基于TCP时间戳选项确定TCP报文之间引发关系的方法,其特征在于,在待分析TCP连接路径上任意一个测量点,放置一个能够监听和修改该TCP连接报文的一个硬件设备或软件模块,依次按照以下步骤利用TCP时间戳选项来确定报文之间的引发关系,所述TCP时间戳选项包括一个32比特单调递增的时间戳字段TSval和一个32比特回显应答字段TSecr;
步骤(1)初始化,在所述软件模块中设置:
一个TCP连接监测表,用于记录所有正在被监测的TCP连接;
原始时间戳值与新时间戳值的TVmap映射表:在每个被监测TCP连接的每个方向上维护一个属于该方向报文的原始时间戳值和新时间戳值映射表,当待转发报文P0有时间戳选项时,使用该映射表来修改P0时间戳选项中的TSval和TSecr字段;该映射表由一系列TVmap表项构成,每个表项包括一个表头和原始时间戳为某个TSval的所有报文;其中TVmap表头至少包含六个关键字段:tsval_orig是该表项所属报文的原始时间戳值,tvmin和tvmax,分别是该TVmap表项所属报文的最小和最大新时间戳值,sndmax是该表项所属报文的最大TCP序列号,rcvmax是由该表项所属报文引发报文的最大TCP序列号(初值为0),flag是该TVmap表项的标志;
一个时间戳值修改模块,用于在网络没有或有乱序报文的情况下填写P0的新时间戳值TSval;
一个TVmap表项删除模块,用于删除过期的TVmap表项;
步骤(2)按步骤处理截获的TCP报文:
步骤(2.1)在报文P0的TCP校验和正确的条件下,若:P0只带有TCP SYN同步标志位,则它不属于已有的TCP连接,而是要求发起一条新的连接,按以下步骤处理,否则,若P0也不属于某个正被监测的TCP连接,则转发P0;
步骤(2.1.1)建立新的TCP连接记录;
步骤(2.1.2)判断P0是否有时间戳选项:
若有,则记录P0的时间戳值TSval
若没有,则为P0添加时间戳选项,并记录P0新的时间戳值TSval;
步骤(2.2)在报文P0的TCP校验和正确的条件下,若:P0属于某个正被监测的TCP连接,则按以下步骤处理:
步骤(2.2.1)判断该连接是否已经完成三次握手:
若:已完成三次握手,且P0有时间戳选项则转入步骤(2.2.2),否则转发P0;
若:未完成三次握手,则判断P0是否有时间戳选项,若有,则转入步骤(2.2.2),否则删除该TCP连接记录,并转发P0;
步骤(2.2.2)在时间戳值修改模块中,根据到达路径上没有乱序和有乱序两种情况,按以下步骤修改P0的原始时间戳值TSval,填写P0的新TSval,更新对应TVmap表项的sndmax,tvmin,tvmax;
步骤(2.2.2.1)当从P0的发送方到本测量点的网络路径上没有乱序时,则根据当前该方向上最大时间戳值MaxNewTSval,将P0的新时间戳值NewTSval设置为MaxNewTSval+m,同时更新MaxNewTSval,其中m≥1;
步骤(2.2.2.2)当从P0的发送方到本测量点的网络路径上存在乱序时,按照以下步骤,使用步骤(1)所述的TVmap映射表来确定P0的发送顺序:
步骤(2.2.2.2.1)根据P0的原始时间戳值TSval,在与P0同方向的映射表中找tsval_orig等于P0的TSval的那个表项,若找不到,则为P0建立一个新的TVmap表项,将P0链接到该表项,再根据该表项的tsval_orig把P0***到TVmap表中的相应位置,将该表项的sndmax设置为P0的最大TCP序列号,然后转到步骤(2.2.2.2.4);
步骤(2.2.2.2.2)若在步骤(2.2.2.2.1)中找到P0的原始时间戳值TSval对应的TVmap表项,则把P0***到对应TVmap表项中,若P0的最大TCP序列号大于该表项的sndmax,则将表项的sndmax更新为P0的最大TCP序列号;在***时,指针首先指向该表项中最后一个报文,使用从后向前的顺序搜索P0的正确位置,当指针指向一个已转发报文P1时,比较P0和P1的TCP确认序列号和TCP序列号,若P0的TCP确认序列号比P1的大,说明P0在P1之后发送,把P0***到P1的后面,转向步骤(2.2.2.2.4);若P0的确认序列号比P1的小,说明P0在P1之前发送,则指针前移一个报文,重复上面的比较;若两者的确认序列号相等,则比较它们的TCP序列号,若P0的序列号大于或等于P1的,则***到P1的后面,转向步骤(2.2.2.2.4);反之则把指针再前移一个报文,重复上面的比较;
步骤(2.2.2.2.3)在步骤(2.2.2.2.2)中,若最后指针为空,则把P0***到该TVmap表项的头部;
步骤(2.2.2.2.4)在步骤(2.2.2.2.2)中,若P0插在了前后相邻的两个报文之间,则P0的新时间戳值TSval是这两个相邻报文新时间戳值的平均值;若P0插在所有已转发后面,则P0的新时间戳值是NewMaxTSval+m,m≥1,同时更新NewMaxTSval;转入步骤(2.2.2.2.5);
步骤(2.2.2.2.5),使用P0的新TSval更新对应表项的tvmin和tvmax;
步骤(2.2.3)在TCP校验和正确的情况下,修改P0时间戳选项中的回显应答TSecr:在该连接与P0反方向的TVmap映射表中寻找一个TVmap表项,使得P0的当前回显应答TSecr大于等于该表项的tvmin,小于等于该表项的tvmax;找到之后,把P0的TSecr改写为该表项的tsval_orig,若P0的最大TCP序列号大于该表项的rcvmax,则令rcvmax等于P0的最大TCP序列号;若查找不到,则把P0丢弃;
步骤(2.2.4)在TCP校验和正确的情况下,按以下步骤删除过期的TVmap表项:
步骤(2.2.4.1)对P0同方向TVmap映射表中的每一表项,检查P0的确认序列号是否大于表项的sndmax;
若:大于sndmax,则对该表项的标志flag置ACK_RCVD标志位;当该表项包含ACK_RCVD和DATA_ACKD的两个标志位时,删除该表项;
若:不大于sndmax,则结束,转入步骤(2.2.4.2);
步骤(2.2.4.2)对P0反方向TVmap映射表中的每一表项,检查P0的确认序列号是否大于表项的rcvmax;
若:大于rcvmax,则对该表项的标志flag置DATA_ACKD标志位,当该表项包含ACK_RCVD和DATA_ACKD的两个标志位时,删除该表项;
若:不大于sndmax,则结束,转入步骤(2.2.5);
步骤(2.2.5)转发报文。
2.根据权利要求1所述的基于TCP时间戳选项确定TCP报文之间引发关系的方法,其特征在于:在判断收到的报文是否属于已有TCP连接方,或者修改该报文的时间戳值,或者在修改该报文的回显应答值,都要先判断该报文的TCP校验和是否正确。
3.根据权利要求2所述的基于TCP的时间戳选项确定TCP报文之间引发关系的方法,其特征在于:在修改报文回显应答前,有一个根据当前的TCP报文头确定连接报文对应关系的步骤,要根据所选硬件设备的应用组合进行在线分析,或者把报文的TCP报文头保存下来进行离线分析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100563928A CN101217429B (zh) | 2008-01-18 | 2008-01-18 | 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100563928A CN101217429B (zh) | 2008-01-18 | 2008-01-18 | 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101217429A true CN101217429A (zh) | 2008-07-09 |
CN101217429B CN101217429B (zh) | 2010-09-29 |
Family
ID=39623793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100563928A Expired - Fee Related CN101217429B (zh) | 2008-01-18 | 2008-01-18 | 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101217429B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854309A (zh) * | 2010-06-18 | 2010-10-06 | 中兴通讯股份有限公司 | 报文输出的管理方法和装置 |
CN102045251B (zh) * | 2009-10-20 | 2012-08-22 | 国基电子(上海)有限公司 | 路由器及tcp端口防御方法 |
CN103138904A (zh) * | 2011-11-30 | 2013-06-05 | 鼎桥通信技术有限公司 | 报文处理方法、装置及*** |
CN103152134A (zh) * | 2013-02-26 | 2013-06-12 | 汉柏科技有限公司 | 基于rtp协议的接收端重排语音包的方法和*** |
CN103475530A (zh) * | 2012-06-06 | 2013-12-25 | 深圳市腾讯计算机***有限公司 | 一种互联网中的测速方法和装置 |
CN105429802A (zh) * | 2015-12-11 | 2016-03-23 | 小米科技有限责任公司 | 质量数据的确定方法、装置及服务器 |
WO2017067224A1 (zh) * | 2015-10-23 | 2017-04-27 | 中兴通讯股份有限公司 | 一种报文处理方法及装置 |
CN109729047A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种报文处理方法及装置 |
CN109756498A (zh) * | 2019-01-04 | 2019-05-14 | 烽火通信科技股份有限公司 | 通信设备上tcp协议的nat alg转换方法及*** |
CN110034973A (zh) * | 2018-12-19 | 2019-07-19 | 锐捷网络股份有限公司 | 基于网络设备的转发映射表维护方法及装置 |
CN110191174A (zh) * | 2019-05-28 | 2019-08-30 | 西门子(上海)电气传动设备有限公司 | 基于http协议的数据监视***、方法及计算机可读介质 |
CN111200586A (zh) * | 2018-11-20 | 2020-05-26 | 西门子股份公司 | 功能安全的连接识别方法 |
WO2021088438A1 (zh) * | 2019-11-05 | 2021-05-14 | 华为技术有限公司 | 一种接入设备类型确定方法、设备及*** |
CN113726867A (zh) * | 2021-08-26 | 2021-11-30 | 杭州迪普科技股份有限公司 | 报文处理方法、装置及*** |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259768B (zh) * | 2012-02-17 | 2018-06-19 | 中兴通讯股份有限公司 | 一种消息认证方法、***和装置 |
-
2008
- 2008-01-18 CN CN2008100563928A patent/CN101217429B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102045251B (zh) * | 2009-10-20 | 2012-08-22 | 国基电子(上海)有限公司 | 路由器及tcp端口防御方法 |
CN101854309A (zh) * | 2010-06-18 | 2010-10-06 | 中兴通讯股份有限公司 | 报文输出的管理方法和装置 |
CN103138904A (zh) * | 2011-11-30 | 2013-06-05 | 鼎桥通信技术有限公司 | 报文处理方法、装置及*** |
CN103475530A (zh) * | 2012-06-06 | 2013-12-25 | 深圳市腾讯计算机***有限公司 | 一种互联网中的测速方法和装置 |
CN103152134A (zh) * | 2013-02-26 | 2013-06-12 | 汉柏科技有限公司 | 基于rtp协议的接收端重排语音包的方法和*** |
CN103152134B (zh) * | 2013-02-26 | 2015-12-02 | 汉柏科技有限公司 | 基于rtp协议的接收端重排语音包的方法和*** |
WO2017067224A1 (zh) * | 2015-10-23 | 2017-04-27 | 中兴通讯股份有限公司 | 一种报文处理方法及装置 |
CN105429802B (zh) * | 2015-12-11 | 2018-09-04 | 小米科技有限责任公司 | 质量数据的确定方法、装置及服务器 |
CN105429802A (zh) * | 2015-12-11 | 2016-03-23 | 小米科技有限责任公司 | 质量数据的确定方法、装置及服务器 |
CN109729047A (zh) * | 2017-10-30 | 2019-05-07 | 阿里巴巴集团控股有限公司 | 一种报文处理方法及装置 |
CN111200586A (zh) * | 2018-11-20 | 2020-05-26 | 西门子股份公司 | 功能安全的连接识别方法 |
CN110034973A (zh) * | 2018-12-19 | 2019-07-19 | 锐捷网络股份有限公司 | 基于网络设备的转发映射表维护方法及装置 |
CN109756498A (zh) * | 2019-01-04 | 2019-05-14 | 烽火通信科技股份有限公司 | 通信设备上tcp协议的nat alg转换方法及*** |
CN109756498B (zh) * | 2019-01-04 | 2021-05-28 | 烽火通信科技股份有限公司 | 通信设备上tcp协议的nat alg转换方法及*** |
CN110191174A (zh) * | 2019-05-28 | 2019-08-30 | 西门子(上海)电气传动设备有限公司 | 基于http协议的数据监视***、方法及计算机可读介质 |
WO2021088438A1 (zh) * | 2019-11-05 | 2021-05-14 | 华为技术有限公司 | 一种接入设备类型确定方法、设备及*** |
CN113726867A (zh) * | 2021-08-26 | 2021-11-30 | 杭州迪普科技股份有限公司 | 报文处理方法、装置及*** |
CN113726867B (zh) * | 2021-08-26 | 2024-04-30 | 杭州迪普科技股份有限公司 | 报文处理方法、装置及*** |
Also Published As
Publication number | Publication date |
---|---|
CN101217429B (zh) | 2010-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101217429B (zh) | 基于tcp时间戳选项确定tcp报文之间的引发关系的方法 | |
CN101409706B (zh) | 一种边缘网络中的数据分发方法、数据分发***及相关设备 | |
CN100384180C (zh) | 用于监控网络流量的方法和设备 | |
US7123616B2 (en) | Determining round-trip time delay | |
Mogul | Observing TCP dynamics in real networks | |
CN101184003B (zh) | 基于网络管理协议的前后台告警管理***及其管理方法 | |
CA2205068C (en) | Multi-processor environments | |
JP5270901B2 (ja) | ネットワーク試験装置及び方法 | |
CN102857354B (zh) | 告警信息上报方法、装置及*** | |
CN102150395A (zh) | 用于网络数据路径质量的非协作测量方法 | |
CN104025550B (zh) | 从数据项获得信息的方法及装置 | |
KR102046792B1 (ko) | 송신 노드로부터 목적지 노드로의 데이터 전송 방법 | |
CN107360177B (zh) | 一种基于udp的报文传输方法及装置 | |
CN106506124A (zh) | 重传报文确定方法及装置 | |
CN111478865A (zh) | 一种基于区间管理算法的tcp流重组技术 | |
US20170064489A1 (en) | Network system, method for determining communication quality, and analysis apparatus | |
CN110838949A (zh) | 一种网络流量日志记录方法及装置 | |
CN102238206A (zh) | 映像文件的补包方法 | |
KR20220001606A (ko) | 대용량 네트워크 모니터링을 위한 실시간 패킷 데이터 저장 방법 및 장치 | |
Kulkarni et al. | Analysis of tcp performance in data center networks | |
CN111787039A (zh) | 用来监测病理参数的***及方法 | |
CN114189565B (zh) | 一种头域还原***、方法及相关设备 | |
CN109842465A (zh) | 数据传输方法、数据端设备 | |
KR102537370B1 (ko) | 대용량 네트워크 모니터링을 위한 실시간 패킷 분석 방법 및 장치 | |
EP4318999A1 (en) | Early retransmission for hardware reliable transport |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100929 Termination date: 20220118 |