CN105591843A - Tcp传输流中基于接收端的网络性能检测方法及*** - Google Patents
Tcp传输流中基于接收端的网络性能检测方法及*** Download PDFInfo
- Publication number
- CN105591843A CN105591843A CN201610083046.3A CN201610083046A CN105591843A CN 105591843 A CN105591843 A CN 105591843A CN 201610083046 A CN201610083046 A CN 201610083046A CN 105591843 A CN105591843 A CN 105591843A
- Authority
- CN
- China
- Prior art keywords
- window
- order
- rtt
- considered
- receiving terminal
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种TCP传输流中基于接收端的网络性能检测方法及***,该方法包括:步骤1,接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数;步骤2,该接收端基于该TCP传输参数判断TCP目前所处状态,如果处于正常状态,执行步骤3,如果处于乱序状态,执行步骤4;步骤3,根据一正常状态决策树以进行网络性能检测;步骤4,根据一乱序状态决策树以进行网络性能检测。本发明可以单独运行在接收端,不影响前端服务器性能,诊断出发送端的性能问题以及链路状态问题。进而,可为TCP协议的优化提供精确的参考信息,便于可靠传输协议的性能提升。
Description
技术领域
本发明的技术领域是计算机网络,特别是涉及一种在TCP传输流中基于接收端对网络性能进行诊断和检测的方法及***。
背景技术
对于运行了成百上千个服务器的因特网内容提供者来说,监控和诊断TCP性能是一个常规化的问题。而设计实现一个检测TCP性能的工具有两大挑战:一是TCP性能指标的获取必须要对TCP流进行监控,尽管许多TCP变量都可以从前端服务器的内核中得到,但是直接从内核中打印相关参数会带来不必要的开销,影响服务器性能;二是TCP两端都不具有对对方发生的事件的直接可见性。
如今随着云应用的逐渐普及,在接收端进行网络诊断的需求越来越大。例如对于云盘来说,用户经常使用上传功能,此时用户就是作为发送端,而云服务器作为接收端,这个时候云服务器就需要能够诊断出网络性能较差时的问题所在。而对于接收端来说,其能够得到的信息比发送端会少很多,因为它不能知道数据包的发送顺序,从而不能直接判断出是发送端的问题还是网络链路的问题,只能依靠自己接收到的数据包来进行统计并估算分析推断出问题所在。
发明内容
本发明提供了一种TCP传输流中基于接收端的网络性能检测方法及***,用于在TCP/IP网络中,基于接收端进行对网络性能的诊断和检测。
进一步的,本发明将问题进行分类,通过不同的判断条件定位到具体问题,进而推断出不同的诊断结果。
更进一步的,本发明通过在接收端接收数据包,从该数据包中提取出头部中对分析诊断有用的参数,推断出问题所在。本发明的方法可以单独在接收端运行,不影响前端服务器性能。本发明可以在接收端诊断出发送端的性能问题以及链路状态问题。
为解决上述问题,本发明公开了一种TCP传输流中基于接收端的网络性能检测方法,包括:
步骤1,接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数;
步骤2,该接收端基于该TCP传输参数判断TCP目前所处状态,如果处于正常状态,执行步骤3,如果处于乱序状态,执行步骤4;
步骤3,根据一正常状态决策树以进行网络性能检测;
步骤4,根据一乱序状态决策树以进行网络性能检测。
该TCP传输参数包括:
TCP的状态ca_state、接收端收到的总的数据包数目pkt_cnt、接收端发送的总的ACK数据包数目ack_cnt、接收端下一个需要收到的包的序列号rcv_nxt、当前乱序过程的持续时间disorder_time、乱序过程总时间all_disorder_time、流传输过程的总时间total_time、乱序长度reordering、发生过丢包的乱序过程的次数lost_out_num、两次正常传输数据包的接收时间间隔interval、一个RTT内的窗口大小first_window、在first_window经过N个RTT后的窗口大小second_window、发送当前包的时刻TSval、接收到的上一个包的TSval值TSecr中的一种或多种。
该正常状态决策树进一步包括:
判断收到当前数据包的时刻与上一次收到数据包的时刻的差值是否大于一时间阈值,如果是,视为发送端的数据不可用,或发送端的缓冲区太小。
该正常状态决策树进一步包括:判断second_window–first_window<=window_thres是否成立;
如果是,视为发送端在正常传输数据包的情况下窗口增长过慢;
second_window为第二RTT内的窗口大小,first_window为第一RTT内的窗口大小,window_thres为一窗口阈值,第二RTT落后于第一RTT,第二RTT与第一RTT之间间隔N个RTT,N为正整数。
window_thres=k*N,k为阈值系数。
该步骤3进一步包括:根据TCP传输参数计算RTT;计算一个RTT内的窗口大小;计算first_window<set_window以及second_window<set_window是否同时成立;判断second_window–first_window<=window_thres是否成立,如果成立,视为发送端在正常传输数据包的情况下窗口增长过慢;其中,set_window是指定带宽下的最大窗口大小。
该乱序状态决策树进一步包括:
判断pkt_cnt/ack_cnt是否等于M,1.8<=M<=2.2;如果是,视为接收端打开了延迟ACK选项,如果否,视为接收端未打开延迟ACK选项;pkt_cnt为接收端收到的总的数据包数目,ack_cnt为接收端发送的总的ACK数据包数目。
该乱序状态决策树进一步包括:
根据两个连续接收到的数据包计算RTT,累积特定数量个RTT组成一RTT集合,计算该RTT集合中的最大值与最小值的差值,判断该差值是否大于一个抖动阈值,如果是,视为这条链路存在RTT抖动,如果否,视为网络正常。
该乱序状态决策树进一步包括:
计算同一个RTT内连续接收到的乱序数据包的个数,作为乱序长度,连续计算每次乱序发生时的乱序长度,并从中找出最大乱序长度,当该最大乱序长度大于一长度阈值时,视为当前链路的乱序率较高,否则视为当前网络正常。
该乱序状态决策树进一步包括:
判断当前乱序过程的持续时间disorder_time是否大于一个RTT,如果否,视为当前链路不存在丢包,如果是,视为当前链路存在丢包,继续判断乱序过程总时间all_disorder_time与流传输过程的总时间total_time的比值是否大于一丢包阈值,如果是,视为链路具有较高的丢包率,如果否,判断在传输过程中是否存在某次乱序过程的持续时间长度与RTT的比例大于一特定阈值,如果是,视为发送端快速恢复的能力较弱,如果否,视为链路的丢包率不高。
本发明还公开了一种TCP传输流中基于接收端的网络性能检测***,包括:
获取模块,用以使得接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数;
判断模块,用以使得该接收端基于该TCP传输参数判断TCP目前所处状态,如果处于正常状态,调用正常状态检测模块,如果处于乱序状态,调用乱序状态检测模块;
正常状态检测模块,用以根据一正常状态决策树以进行网络性能检测;
乱序状态模块,用以根据一乱序状态决策树以进行网络性能检测。
该TCP传输参数包括:
TCP的状态ca_state、接收端收到的总的数据包数目pkt_cnt、接收端发送的总的ACK数据包数目ack_cnt、接收端下一个需要收到的包的序列号rcv_nxt、当前乱序过程的持续时间disorder_time、乱序过程总时间all_disorder_time、流传输过程的总时间total_time、乱序长度reordering、发生过丢包的乱序过程的次数lost_out_num、两次正常传输数据包的接收时间间隔interval、一个RTT内的窗口大小first_window、在first_window经过N个RTT后的窗口大小second_window、发送当前包的时刻TSval、接收到的上一个包的TSval值TSecr中的一种或多种。
该正常状态决策树进一步包括:
判断收到当前数据包的时刻与上一次收到数据包的时刻的差值是否大于一时间阈值,如果是,视为发送端的数据不可用,或发送端的缓冲区太小。
该正常状态决策树进一步包括:判断second_window–first_window<=window_thres是否成立;
如果是,视为发送端在正常传输数据包的情况下窗口增长过慢;
second_window为第二RTT内的窗口大小,first_window为第一RTT内的窗口大小,window_thres为一窗口阈值,第二RTT落后于第一RTT,第二RTT与第一RTT之间间隔N个RTT,N为正整数。
indow_thres=k*N,k为阈值系数。
该正常状态检测模块进一步包括:
根据TCP传输参数计算RTT的模块;计算一个RTT内的窗口大小的模块;计算first_window<set_window以及second_window<set_window是否同时成立的模块;判断second_window–first_window<=window_thres是否成立的模块,如果成立,视为发送端在正常传输数据包的情况下窗口增长过慢;其中,set_window是指定带宽下的最大窗口大小。
该乱序状态决策树进一步包括:
判断pkt_cnt/ack_cnt是否等于M,1.8<=M<=2.2;
如果是,视为接收端打开了延迟ACK选项,如果否,视为接收端未打开延迟ACK选项;
pkt_cnt为接收端收到的总的数据包数目,ack_cnt为接收端发送的总的ACK数据包数目。
该乱序状态决策树进一步包括:
根据两个连续接收到的数据包计算RTT,累积特定数量个RTT组成一RTT集合,计算该RTT集合中的最大值与最小值的差值,判断该差值是否大于一个抖动阈值,如果是,视为这条链路存在RTT抖动,如果否,视为网络正常。
该乱序状态决策树进一步包括:
计算同一个RTT内连续接收到的乱序数据包的个数,作为乱序长度,连续计算每次乱序发生时的乱序长度,并从中找出最大乱序长度,当该最大乱序长度大于一长度阈值时,视为当前链路的乱序率较高,否则视为当前网络正常。
该乱序状态决策树进一步包括:
判断当前乱序过程的持续时间disorder_time是否大于一个RTT,如果否,视为当前链路不存在丢包,如果是,视为当前链路存在丢包,继续判断乱序过程总时间all_disorder_time与流传输过程的总时间total_time的比值是否大于一丢包阈值,如果是,视为链路具有较高的丢包率,如果否,判断在传输过程中是否存在某次乱序过程的持续时间长度与RTT的比例大于一特定阈值,如果是,视为发送端快速恢复的能力较弱,如果否,视为链路的丢包率不高。
本发明可以对网络中的几种情况进行诊断和检测识别,包括:1、发送端的数据不可用或者是发送端的缓冲区过小;2、发送端在正常传输数据包的情况下窗口增长过慢;3、接收端打开了延迟ACK选项;4、当前链路存在RTT抖动;5、当前链路的乱序率较高;6、发送端快速恢复的能力较弱。
本发明可以单独运行在接收端,不影响前端服务器性能,诊断出发送端的性能问题以及链路状态问题。进而,可为TCP协议的优化提供精确的参考信息,便于可靠传输协议的性能提升。
附图说明
图1所示为本发明的一种TCP传输流中基于接收端的网络性能检测方法的流程示意图。
图2所示为本发明的正常状态决策树的示意图。
图3所示为本发明的乱序状态决策树的示意图。
图4所示为本发明的步骤41的流程示意图
图5所示为本发明的步骤42的流程示意图。
图6所示为本发明的步骤43的流程示意图。
图7所示为本发明的步骤44的流程示意图。
具体实施方式
以下结合附图具体说明本发明的实现过程,不作为对本发明的限制。
本发明通过对TCP传输流的各个参数的跟踪分析,利用一种决策树设计实现了在TCP/IP网络中基于接收端对网络性能的诊断方法。如图1所示为本发明的一种TCP传输流中基于接收端的网络性能检测方法的流程示意图。
在TCP/IP网络中,TCP传输流在发送端以及接收端之间传输。TCP传输流包括一系列的数据包,每个数据包携带有多种传输参数。在传输过程中,可能发生丢包情况,也可能并未丢包但数据包的传输顺序发生了错乱,即接收端接收数据包的顺序与发送端发送数据包的顺序并不相同,发生了乱序。
在本发明中,首先定义有两种状态:一种是正常状态open_state,接收端接收数据包的顺序与发送端发送数据包的顺序相同,数据包是连续的,并未收到乱序数据包。另一种是乱序状态disorder_state,接收端已接收到不连续的数据包并且还没有恢复到正常状态。接收端的默认状态为正常状态open_state。
在本发明的方案中,步骤1,接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数。
步骤2,该接收端基于该头部信息判断TCP目前所处状态,如果处于正常状态,执行步骤21,如果处于乱序状态,执行步骤22;
步骤21,判断当前是否符合转换状态条件,如果是,TCP转为乱序状态,执行步骤4,如果否,执行步骤3;
步骤22,判断当前是否符合转换状态条件,如果是,TCP转为正常状态,执行步骤3,如果否,执行步骤4;
步骤3,根据一正常状态决策树以进行网络性能检测;
步骤4,根据一乱序状态决策树以进行网络性能检测。
本发明在接收端每收到一个数据包时,都执行上述步骤1-4。
具体来说,对于步骤1,主要的TCP传输参数如下表所示:
参数 | 意义 |
ca_state | TCP的状态:open_state,disorder_state |
pkt_cnt | 接收端收到的总的数据包数目 |
ack_cnt | 接收端发送的总的ACK数据包数目 |
rcv_nxt | 接收端下一个需要收到的包的序列号 |
disorder_time | 当前乱序过程的持续时间 |
all_disorder_time | 流中所有处于乱序状态的乱序过程总时间 |
total_time | 流传输过程的总时间 |
reordering | 乱序长度 |
lost_out_num | 发生过丢包的乱序过程的次数 |
interval | 两次正常传输数据包的接收时间间隔 |
first_window | 一个RTT(Round-TripTime:往返时延)内的窗口大小 |
second_window | 在first_window经过一定RTT后的窗口大小 |
TSval | 发送当前包的时刻 |
TSecr | 接收到的上一个包的TSval值 |
TCP传输参数还包括接收端为收到的每个数据包建立的序号,收到每个数据包的时刻等。
步骤21、22涉及到本发明的两种状态的转换过程。
在步骤21中,转换状态条件包括:判断当前数据包(当前接收到的数据包)的序列号是否大于rcv_nxt(接收端下一个需要收到的包的序列号)。通常正常状态下,数据包连续的顺序发送,接收端下一个需要收到的包的序列号应当等于当前数据包的序列号。如果上述判断为是,说明接收端当前数据包是个不连续的包,非顺序传输,是乱序数据包。故而,TCP转为乱序状态disorder_state。如果判断为否,仍保持正常状态open_state。
在步骤22中,转换状态条件包括:判断当前数据包的序列号是否等于rcv_nxt,由于当前已经处于乱序状态disorder_state,如果是,说明接收端已经收到了按序的包,则TCP恢复为正常状态open_state,如果否,仍保持乱序状态disorder_state。
在另一实施例中,转换状态条件还可以包括:判断当前数据包所回复的ACK序列号是否大于等于所当前所累积收到的所有数据包的个数。如果是,说明接收端已经收到了按序的包,则TCP恢复为正常状态open_state。
如图2所示为正常状态决策树的示意图。
对于步骤3,本发明能够在正常状态open_state中,对两种网络性能进行检测。则该正常状态决策树进一步包括:
步骤31,判断收到当前数据包的时刻time与上一个数据包的收到时刻interval_start_time的差值(time-interval_start_time)是否大于一时间阈值time_thres;
如果是,视为发送端的数据不可用,或发送端的缓冲区太小,如果否,说明网络正常。
只有在两次发送之间的间隔过大出现发送停顿时,才会导致数据包接收间隔过大,从而得以判断:发送端的发送间隔过大出现了TCPstall(TCP停顿),而可能的原因就是发送端的数据不可用或者是发送端的缓冲区过小。
由此,可以在不影响发送端的正常工作的情况下,在接收端一侧检测出网络中存在的问题。步骤31和步骤32为并行执行。
步骤32,判断second_window–first_window<=window_thres是否成立;
如果是,视为发送端在正常传输数据包的情况下窗口增长过慢,如果否,说明网络正常。
second_window为第二RTT内的窗口大小,first_window为第一RTT内的窗口大小,window_thres为一窗口阈值,第二RTT落后于第一RTT,第二RTT与第一RTT之间间隔N个RTT,N为正整数。
而对于步骤3的具体实现方式,特别是针对步骤32这部分正常状态决策树的具体实现方式包括:
步骤321,计算RTT。
如果当前TCP传输流支持TCPoption(TCP选项)中的timestamp(时间戳)选项,那么就可以利用timestamp来计算出最近更新的RTT。
开启了timestamp选项后,在TCP头部中会携带两个值:TSval和TSecr。TSval表示的是发送当前包的时刻,TSecr表示的是接收到的上一个包的TSval值,意思是回显时间。
RTT=TSval–TSecr
如果没有开启timestamp选项,那么RTT的计算就可以根据传统的用序列号来计算的方法计算RTT。
步骤322,计算一个RTT内的窗口大小。
由于RTT的时长已知,根据接收端依次接收数据包,可以统计出在一个RTT内能够接收到的数据包数目,该数据包数目等于当前发送端的发送窗口大小,也就是一个RTT内的窗口大小。
则利用上述方式,计算得到针对第一个RTT的first_window后,相隔N个RTT,N为正整数,再次利用上述方式计算得到针对第二个RTT的second_window。该相隔N个RTT是为了使得窗口的增长得到体现。
步骤323,计算first_window<set_window以及second_window<set_window是否同时成立。
set_window是在指定带宽BandWidth下计算出来的最大窗口大小,即在一个RTT中能够传输的最大报文数,其计算方法是:set_window=BandWidth*RTT*1000000/(8*1500)。
如果同时成立,意味着目前TCP传输流中不存在丢包,执行步骤324。
步骤324,判断second_window–first_window<=window_thres是否成立。
其中,window_thres=k*N,k为阈值系数,N为第二RTT与第一RTT之间间隔的RTT的个数。k为可调参数,例如TCPRENO算法中拥塞避免阶段每经过一个RTT就将窗口增加1,则这种情况下k=1;其他算法视具体情况调整,均在本发明的公开范围内。
对于步骤4,本发明能够在乱序状态disorder_state中,对四种网络性能进行检测。如图3所示为本发明的乱序状态决策树的示意图。在乱序状态下,该乱序状态决策树进一步包括四个平行执行的决策分支:
步骤41,判断pkt_cnt/ack_cnt是否等于M,1.8<=M<=2.2;
如果是,视为接收端打开了延迟ACK选项,如果否,视为接收端未打开延迟ACK选项;
其中,pkt_cnt为接收端收到的总的数据包数目,ack_cnt为接收端发送的总的ACK数据包数目,通常延迟ACK选项为每隔一个数据包发送一次ACK数据包。间隔太多数据包容易出现传输错误,故而通常不选用间隔三次以上。则M优选2,只有pkt_cnt/ack_cnt近似等于2时,能够判定接收端打开了延迟ACK选项。
如图4所示为本发明的步骤41的流程示意图。图5所示为本发明的步骤42的流程示意图。
步骤42,根据两个连续接收到的数据包计算RTT,累积特定数量个RTT组成一RTT集合,计算该RTT集合中的最大值与最小值的差值,判断该差值是否大于一个抖动阈值,如果是,视为这条链路存在RTT抖动,如果否,视为网络正常。
其中,针对两个连续收到的数据包计算一RTT。可以是第n、n+1个数据包计算一RTT,第n+2、n+3个数据包计算一RTT,即每两个数据包计算一RTT,也可以是第n、n+1个数据包计算一RTT,第n+1、n+2个数据包计算一RTT,即任意相邻的两个数据包计算一RTT,也可以每隔几个数据包计算一RTT,根据需求而定。
如图6所示为本发明的步骤43的流程示意图。
步骤43,计算同一个RTT内连续接收到的乱序数据包的个数,作为乱序长度,连续计算每次乱序的乱序长度,统计截止到目前的最大乱序长度,当该目前的最大乱序长度大于一长度阈值时,视为该当前链路的乱序率较高,否则视为当前网络正常。
该步骤是对于链路乱序率的诊断。所谓乱序,是指没有丢包的情况下链路造成的数据包不按顺序到达。乱序长度就是以接收到的乱序数据包的个数。在整条流的传输过程中,本发明需记录下最大的乱序长度。但是,在计算乱序长度时,要排除掉因为丢包而造成的不按顺序的情况。
而在链路中,同一个RTT内的传输的包,才有可能发生乱序,因为从未按顺序的那个包开始,在大于一个RTT的时间内到达的数据包可能是进行快速重传或超时的数据包,此时有可能是由于丢包造成,不能算作是乱序长度。
因而,在该步骤中,首先计算第一条件与第二条件是否同时成立,该第一条件为:对当前数据包所回复的ACK序列号ack_seq大于对上一个非乱序的数据包所回复的ACK序列号old_ack,该第二条件为:针对当前数据包回复ACK数据包的时刻time与针对上一个非乱序的数据包回复ACK数据包的时刻old_ack_time的差小于RTT。
如果能够同时成立,意味着当前没有丢包。则继续计算乱序长度reordering。reordering=CEIL((ack_seq-old_ack_time)/segment_size)
segment_size为一个数据包的最大报文段长度,CEIL为向上取整,通过乱序所持续的时间与报文长度的比值,可以知道这段时间内传输的乱序数据包的个数,也就是乱序长度。
在数据包的发送过程中,持续记录每次乱序的乱序长度,统计截止到目前的最大乱序长度,一旦该目前的最大乱序长度大于一长度阈值时,视为当前链路的乱序率较高,否则视为当前网络正常。该长度阈值根据需要设定。
如图7所示为本发明的步骤44的流程示意图。
步骤44,判断当前乱序过程的持续时间disorder_time是否大于一个RTT,如果否,视为当前链路的乱序过程不存在丢包,如果是,视为当前链路的乱序过程存在丢包,则lost_out_num加1,最后在流结束或者诊断区间结束时判断乱序过程总时间all_disorder_time与流传输过程的总时间total_time的比值是否大于一丢包阈值,如果是,视为链路具有较高的丢包率,导致出现持续性的丢包,使乱序过程总时间all_disorder_time所占比例很大,如果否,判断在传输过程中是否存在某次乱序过程的持续时间长度与RTT的比例大于一特定阈值(例如特定阈值为3),如果是,视为发送端在进行恢复的时候并没有能够在马上进行重传,也就视为发送端快速恢复的能力较弱,如果否,视为链路的丢包率不高。该丢包阈值、特定阈值均根据需要设定。
通过上述方案,本发明可以对网络中的几种情况进行诊断和检测识别,包括:
1、发送端的数据不可用或者是发送端的缓冲区过小;
2、发送端在正常传输数据包的情况下窗口增长过慢;
3、接收端打开了延迟ACK选项;
4、当前链路存在RTT抖动;
5、当前链路的乱序率较高;
6、当前链路的丢包率较高;
7、发送端快速恢复的能力较弱。
本发明可以单独运行在接收端,不影响前端服务器性能,诊断出发送端的性能问题以及链路状态问题。进而,可为TCP协议的优化提供精确的参考信息,便于可靠传输协议的性能提升。
以上所述仅为本发明的较佳具体实例,并非用于局限本发明的专利保护范围,故举凡运用本发明内容所做的等效变化,均同理皆包含于本发明的范围内。
Claims (20)
1.一种TCP传输流中基于接收端的网络性能检测方法,其特征在于,包括:
步骤1,接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数;
步骤2,该接收端基于该TCP传输参数判断TCP目前所处状态,如果处于正常状态,执行步骤3,如果处于乱序状态,执行步骤4;
步骤3,根据一正常状态决策树以进行网络性能检测;
步骤4,根据一乱序状态决策树以进行网络性能检测。
2.如权利要求1所述的方法,其特征在于,该TCP传输参数包括:
TCP的状态ca_state、接收端收到的总的数据包数目pkt_cnt、接收端发送的总的ACK数据包数目ack_cnt、接收端下一个需要收到的包的序列号rcv_nxt、当前乱序过程的持续时间disorder_time、乱序过程总时间all_disorder_time、流传输过程的总时间total_time、乱序长度reordering、发生过丢包的乱序过程的次数lost_out_num、两次正常传输数据包的接收时间间隔interval、一个RTT内的窗口大小first_window、在first_window经过N个RTT后的窗口大小second_window、发送当前包的时刻TSval、接收到的上一个包的TSval值TSecr中的一种或多种。
3.如权利要求1所述的方法,其特征在于,该正常状态决策树进一步包括:
判断收到当前数据包的时刻与上一次收到数据包的时刻的差值是否大于一时间阈值,如果是,视为发送端的数据不可用,或发送端的缓冲区太小。
4.如权利要求1或2或3所述的方法,其特征在于,该正常状态决策树进一步包括:判断second_window–first_window<=window_thres是否成立;
如果是,视为发送端在正常传输数据包的情况下窗口增长过慢;
second_window为第二RTT内的窗口大小,first_window为第一RTT内的窗口大小,window_thres为一窗口阈值,第二RTT落后于第一RTT,第二RTT与第一RTT之间间隔N个RTT,N为正整数。
5.如权利要求4所述的方法,其特征在于,window_thres=k*N,k为阈值系数。
6.如权利要求4所述的方法,其特征在于,该步骤3进一步包括:
根据TCP传输参数计算RTT;
计算一个RTT内的窗口大小;
计算first_window<set_window以及second_window<set_window是否同时成立;
如果是,判断second_window–first_window<=window_thres是否成立,如果成立,视为发送端在正常传输数据包的情况下窗口增长过慢;
其中,set_window是指定带宽下的最大窗口大小。
7.如权利要求1或2所述的方法,其特征在于,该乱序状态决策树进一步包括:
判断pkt_cnt/ack_cnt是否等于M,1.8<=M<=2.2;
如果是,视为接收端打开了延迟ACK选项,如果否,视为接收端未打开延迟ACK选项;
pkt_cnt为接收端收到的总的数据包数目,ack_cnt为接收端发送的总的ACK数据包数目。
8.如权利要求1或2所述的方法,其特征在于,该乱序状态决策树进一步包括:
根据两个连续接收到的数据包计算RTT,累积特定数量个RTT组成一RTT集合,计算该RTT集合中的最大值与最小值的差值,判断该差值是否大于一个抖动阈值,如果是,视为这条链路存在RTT抖动,如果否,视为网络正常。
9.如权利要求1或2所述的方法,其特征在于,该乱序状态决策树进一步包括:
计算同一个RTT内连续接收到的乱序数据包的个数,作为乱序长度,连续计算每次乱序发生时的乱序长度,并从中找出最大乱序长度,当该最大乱序长度大于一长度阈值时,视为当前链路的乱序率较高,否则视为当前网络正常。
10.如权利要求1或2所述的方法,其特征在于,该乱序状态决策树进一步包括:
判断当前乱序过程的持续时间disorder_time是否大于一个RTT,如果否,视为当前链路不存在丢包,如果是,视为当前链路存在丢包,判断乱序过程总时间all_disorder_time与流传输过程的总时间total_time的比值是否大于一丢包阈值,如果是,视为链路具有较高的丢包率,如果否,判断在传输过程中是否存在某次乱序过程的持续时间长度与RTT的比例大于一特定阈值,如果是,视为发送端快速恢复的能力较弱,如果否,视为链路的丢包率不高。
11.一种TCP传输流中基于接收端的网络性能检测***,其特征在于,包括:
获取模块,用以使得接收端在收到或发出每个数据包时,获取该数据包的头部信息,以得到TCP传输参数;
判断模块,用以使得该接收端基于该TCP传输参数判断TCP目前所处状态,如果处于正常状态,调用正常状态检测模块,如果处于乱序状态,调用乱序状态检测模块;
正常状态检测模块,用以根据一正常状态决策树以进行网络性能检测;
乱序状态模块,用以根据一乱序状态决策树以进行网络性能检测。
12.如权利要求11所述的***,其特征在于,该TCP传输参数包括:
TCP的状态ca_state、接收端收到的总的数据包数目pkt_cnt、接收端发送的总的ACK数据包数目ack_cnt、接收端下一个需要收到的包的序列号rcv_nxt、当前乱序过程的持续时间disorder_time、乱序过程总时间all_disorder_time、流传输过程的总时间total_time、乱序长度reordering、发生过丢包的乱序过程的次数lost_out_num、两次正常传输数据包的接收时间间隔interval、一个RTT内的窗口大小first_window、在first_window经过N个RTT后的窗口大小second_window、发送当前包的时刻TSval、接收到的上一个包的TSval值TSecr中的一种或多种。
13.如权利要求11所述的***,其特征在于,该正常状态决策树进一步包括:
判断收到当前数据包的时刻与上一次收到数据包的时刻的差值是否大于一时间阈值,如果是,视为发送端的数据不可用,或发送端的缓冲区太小。
14.如权利要求11或12或13所述的***,其特征在于,该正常状态决策树进一步包括:判断second_window–first_window<=window_thres是否成立;
如果是,视为发送端在正常传输数据包的情况下窗口增长过慢;
second_window为第二RTT内的窗口大小,first_window为第一RTT内的窗口大小,window_thres为一窗口阈值,第二RTT落后于第一RTT,第二RTT与第一RTT之间间隔N个RTT,N为正整数。
15.如权利要求14所述的***,其特征在于,window_thres=k*N,k为阈值系数。
16.如权利要求14所述的***,其特征在于,该正常状态检测模块进一步包括:
根据TCP传输参数计算RTT的模块;
计算一个RTT内的窗口大小的模块;
计算first_window<set_window以及second_window<set_window是否同时成立的模块;
如果是,判断second_window–first_window<=window_thres是否成立的模块,如果成立,视为发送端在正常传输数据包的情况下窗口增长过慢;
其中,set_window是指定带宽下的最大窗口大小。
17.如权利要求11或12所述的***,其特征在于,该乱序状态决策树进一步包括:
判断pkt_cnt/ack_cnt是否等于M,1.8<=M<=2.2;
如果是,视为接收端打开了延迟ACK选项,如果否,视为接收端未打开延迟ACK选项;
pkt_cnt为接收端收到的总的数据包数目,ack_cnt为接收端发送的总的ACK数据包数目。
18.如权利要求11或12所述的***,其特征在于,该乱序状态决策树进一步包括:
根据两个连续接收到的数据包计算RTT,累积特定数量个RTT组成一RTT集合,计算该RTT集合中的最大值与最小值的差值,判断该差值是否大于一个抖动阈值,如果是,视为这条链路存在RTT抖动,如果否,视为网络正常。
19.如权利要求11或12所述的***,其特征在于,该乱序状态决策树进一步包括:
计算同一个RTT内连续接收到的乱序数据包的个数,作为乱序长度,连续计算每次乱序发生时的乱序长度,并从中找出最大乱序长度,当该最大乱序长度大于一长度阈值时,视为当前链路的乱序率较高,否则视为当前网络正常。
20.如权利要求11或12所述的***,其特征在于,该乱序状态决策树进一步包括:
判断当前乱序过程的持续时间disorder_time是否大于一个RTT,如果否,视为当前链路不存在丢包,如果是,视为当前链路存在丢包,判断乱序过程总时间all_disorder_time与流传输过程的总时间total_time的比值是否大于一丢包阈值,如果是,视为链路具有较高的丢包率,如果否,判断在传输过程中是否存在某次乱序过程的持续时间长度与RTT的比例大于一特定阈值,如果是,视为发送端快速恢复的能力较弱,如果否,视为链路的丢包率不高。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610083046.3A CN105591843B (zh) | 2016-02-06 | 2016-02-06 | Tcp传输流中基于接收端的网络性能检测方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610083046.3A CN105591843B (zh) | 2016-02-06 | 2016-02-06 | Tcp传输流中基于接收端的网络性能检测方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105591843A true CN105591843A (zh) | 2016-05-18 |
CN105591843B CN105591843B (zh) | 2018-12-04 |
Family
ID=55931100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610083046.3A Expired - Fee Related CN105591843B (zh) | 2016-02-06 | 2016-02-06 | Tcp传输流中基于接收端的网络性能检测方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105591843B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106685760A (zh) * | 2016-12-29 | 2017-05-17 | 杭州迪普科技股份有限公司 | 链路状态的探测方法及装置 |
CN106961365A (zh) * | 2017-05-11 | 2017-07-18 | 成都极玩网络技术有限公司 | 一种基于tcp协议的网络延迟测量方法 |
WO2017133014A1 (zh) * | 2016-02-06 | 2017-08-10 | 中国科学院计算技术研究所 | Tcp传输流中基于接收端的网络性能检测方法及*** |
CN107395441A (zh) * | 2017-08-31 | 2017-11-24 | 江苏省公用信息有限公司 | 一种检测网络丢包状况的方法 |
CN108123990A (zh) * | 2016-11-30 | 2018-06-05 | 华为技术有限公司 | 一种数据存储方法、数据存储***及数据处理设备 |
CN109714558A (zh) * | 2018-11-28 | 2019-05-03 | 视联动力信息技术股份有限公司 | 一种基于视联网的通信连接检测方法及*** |
CN110324206A (zh) * | 2019-07-08 | 2019-10-11 | 中国联合网络通信集团有限公司 | 一种测评方法和*** |
CN113660144A (zh) * | 2021-09-15 | 2021-11-16 | 佳缘科技股份有限公司 | 一种基于网络环回时间的跳板检测方法及其*** |
CN114979015A (zh) * | 2021-02-19 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 一种数据包的处理方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010050901A1 (en) * | 1999-12-24 | 2001-12-13 | Agilent Technologies, Inc. | Measuring efficiency of data transmission |
CN1815970A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 一种检测网络链路故障并定位故障的方法 |
CN1992652A (zh) * | 2005-12-29 | 2007-07-04 | 华为技术有限公司 | 无连接报文交换网络中报文乱序及重复的检测方法 |
CN101068170A (zh) * | 2007-06-05 | 2007-11-07 | 华为技术有限公司 | 一种报文接收异常的检测方法、***及其装置 |
-
2016
- 2016-02-06 CN CN201610083046.3A patent/CN105591843B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010050901A1 (en) * | 1999-12-24 | 2001-12-13 | Agilent Technologies, Inc. | Measuring efficiency of data transmission |
CN1815970A (zh) * | 2005-02-01 | 2006-08-09 | 华为技术有限公司 | 一种检测网络链路故障并定位故障的方法 |
CN1992652A (zh) * | 2005-12-29 | 2007-07-04 | 华为技术有限公司 | 无连接报文交换网络中报文乱序及重复的检测方法 |
CN101068170A (zh) * | 2007-06-05 | 2007-11-07 | 华为技术有限公司 | 一种报文接收异常的检测方法、***及其装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017133014A1 (zh) * | 2016-02-06 | 2017-08-10 | 中国科学院计算技术研究所 | Tcp传输流中基于接收端的网络性能检测方法及*** |
CN108123990A (zh) * | 2016-11-30 | 2018-06-05 | 华为技术有限公司 | 一种数据存储方法、数据存储***及数据处理设备 |
CN108123990B (zh) * | 2016-11-30 | 2020-06-16 | 华为技术有限公司 | 一种数据存储方法、数据存储***及数据处理设备 |
CN106685760A (zh) * | 2016-12-29 | 2017-05-17 | 杭州迪普科技股份有限公司 | 链路状态的探测方法及装置 |
CN106961365A (zh) * | 2017-05-11 | 2017-07-18 | 成都极玩网络技术有限公司 | 一种基于tcp协议的网络延迟测量方法 |
CN106961365B (zh) * | 2017-05-11 | 2020-03-10 | 成都穿月科技有限公司 | 一种基于tcp协议的网络延迟测量方法 |
CN107395441A (zh) * | 2017-08-31 | 2017-11-24 | 江苏省公用信息有限公司 | 一种检测网络丢包状况的方法 |
CN109714558A (zh) * | 2018-11-28 | 2019-05-03 | 视联动力信息技术股份有限公司 | 一种基于视联网的通信连接检测方法及*** |
CN110324206A (zh) * | 2019-07-08 | 2019-10-11 | 中国联合网络通信集团有限公司 | 一种测评方法和*** |
CN114979015A (zh) * | 2021-02-19 | 2022-08-30 | 腾讯科技(深圳)有限公司 | 一种数据包的处理方法及装置 |
CN114979015B (zh) * | 2021-02-19 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 一种数据包的处理方法及装置 |
CN113660144A (zh) * | 2021-09-15 | 2021-11-16 | 佳缘科技股份有限公司 | 一种基于网络环回时间的跳板检测方法及其*** |
Also Published As
Publication number | Publication date |
---|---|
CN105591843B (zh) | 2018-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105591843A (zh) | Tcp传输流中基于接收端的网络性能检测方法及*** | |
WO2017133014A1 (zh) | Tcp传输流中基于接收端的网络性能检测方法及*** | |
EP2374247B1 (en) | Controlling packet transmission using bandwith estimation | |
CN100583785C (zh) | 用于表征基于分组的网络的端对端路径的方法和设备 | |
EP1382219B1 (en) | Method and device for robust real-time estimation of bottleneck bandwidth | |
EP2302845B1 (en) | Method and device for determining a jitter buffer level | |
KR20200109326A (ko) | 광대역 통신 링크 성능 모니터링을 위한 시스템 및 방법 | |
US20020154602A1 (en) | Method for improving TCP performance over wireless links | |
Ha et al. | Hybrid slow start for high-bandwidth and long-distance networks | |
US9379989B2 (en) | Congestion avoidance and control for UDP-based protocols | |
US9559927B2 (en) | Terminal, system and method for measuring network state using the same | |
WO2013172996A1 (en) | Link microbenchmarking with idle link correction | |
CN109167734A (zh) | 识别传输控制协议状态的方法和装置 | |
US9769695B2 (en) | Adaptive quality of service for wide area network transport | |
US8315164B2 (en) | Controlling packet transmission | |
CN109218122A (zh) | 一种实现传输性能检测的方法、装置和*** | |
JP2014116771A (ja) | 情報処理システム | |
Ozturk et al. | DIChirp: Direct injection bandwidth estimation | |
EP1443704A1 (en) | Information collecting protocol | |
Ohkawa et al. | Path capacity estimation by passive measurement for the constant monitoring of every network path | |
Qu | An enhanced TCP Vegas algorithm based on route surveillance and bandwidth estimation over geo satellite networks | |
CN114900426A (zh) | 一种基于主被动混合测量的故障定位方法及相关设备 | |
Lipovac et al. | Testing traffic congestion by distributed protocol analysis | |
Tekala et al. | Throughput analysis of Scalable TCP congestion control | |
Lipovac et al. | Testing TCP traffic congestion by distributed protocol analysis and statistical modelling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190211 Address after: Room 1103, Building B2, 700 Yishan Road, Xuhui District, Shanghai, 2003 Patentee after: SHANGHAI YINGLIAN INFORMATION TECHNOLOGY CO.,LTD. Address before: 100190 South Road, Zhongguancun Science Academy, Haidian District, Beijing 6 Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |
|
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: 20181204 Termination date: 20220206 |