CN109167734A - 识别传输控制协议状态的方法和装置 - Google Patents

识别传输控制协议状态的方法和装置 Download PDF

Info

Publication number
CN109167734A
CN109167734A CN201810886264.XA CN201810886264A CN109167734A CN 109167734 A CN109167734 A CN 109167734A CN 201810886264 A CN201810886264 A CN 201810886264A CN 109167734 A CN109167734 A CN 109167734A
Authority
CN
China
Prior art keywords
packet
state
congestion window
tcp
load
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
Application number
CN201810886264.XA
Other languages
English (en)
Other versions
CN109167734B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201810886264.XA priority Critical patent/CN109167734B/zh
Publication of CN109167734A publication Critical patent/CN109167734A/zh
Application granted granted Critical
Publication of CN109167734B publication Critical patent/CN109167734B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

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

本申请提供了一种识别TCP状态的方法和装置,该方法包括:获取TCP数据码流,TCP数据码流中包括多个数据包,数据包包括载荷包和确认包;根据多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;根据拥塞窗口曲线,识别TCP数据码流中的慢启动状态和拥塞避免状态;根据载荷包和确认包的抵达顺序,识别TCP数据码流中的快速重传状态和超时重传状态。本申请的方法通过TCP头字段中的参数,得到拥塞窗口曲线以识别慢启动状态和拥塞避免状态,通过载荷包和确认包的抵达顺序,以识别快速重传状态和超时重传状态,识别方法简单准确,使得能够参考TCP状态的情况,可以提高进行进一步分析的准确性,可以应用于TCP数据传输问题分析。

Description

识别传输控制协议状态的方法和装置
技术领域
本申请涉及传输控制协议(transmission control protocol,TCP)数据传输领域,并且更具体地,涉及一种识别TCP状态的方法和装置。
背景技术
由于大数据技术和人工智能技术地驱动,全球数据流量持续爆发性增长。根据国际数字公司(international data corporation,IDC)在数字领域的报告,到2020年,全球数据流量将达到44ZB(zettabyte)。在万物互联的时代,各种应用层出不穷。为了保持良好的用户上网体验,运营商需要维护好网络,提升业务质量和用户感知。因此,实现网络的“可视化”、“可测量化”,是运营商在网络运维时面临的挑战。
网络流量中的大部分数据基于TCP数据传输。以青海省信通院2017年发布报告为例,TCP数据传输占全网流量的79.58%,UDP数据传输占20.37%,两者比例为3.91:1。在数据传输问题分析领域,现有的一种方案是设定一套TCP指标,例如包括握手时延、丢包次数、上下游乱序等,从多个维度对网络进行监控。网络运维人员通过TCP指标的恶化程度分析TCP速率的变化,来进行根因分析和异常事件定界。这种方案中,TCP指标依赖阈值判断,获取阈值需要业务专家根据经验合理设定,交付难度大。
现有的其他方案中提供了一些识别拥塞事件或拥塞避免算法的方法,以期用于数据传输问题分析中。然而这些识别技术只是简单地对TCP数据传输的单个或仅部分状态进行识别,而非对TCP数据传输中的各个状态进行识别。并且,这些识别技术使用的判定因素较为理想化和单一,识别结果并不合理。
发明内容
本申请提供一种识别传输控制协议状态的方法和装置,能够简单准确地识别TCP状态,可以提高进行进一步分析的准确性。
第一方面,提供了一种识别TCP状态的方法,包括:获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
第一方面的识别TCP状态的方法通过TCP数据码流中包括数据包的TCP头字段中的参数,得到拥塞窗口曲线以识别慢启动状态和拥塞避免状态,通过载荷包和确认包的抵达顺序,以识别快速重传状态和超时重传状态,识别方法简单准确,使得能够参考TCP状态的情况,可以提高进行进一步分析的准确性,例如可以应用于TCP数据传输问题分析。
应理解,第一方面的识别TCP状态的方法可以基于探针实现,即识别TCP状态的装置可以部署在探针上。
应理解,第一方面的识别TCP状态的方法得到的识别结果可以通过外部数据表达(external data representation,xDR)字段,反馈给探针上层的功能模块。
在第一方面的一种可能的实现方式中,根据该多个数据包的TCP头字段中的参数,得到拥塞窗口曲线,可以包括:根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;根据所述多个发送窗口值,估计得到多个拥塞窗口值;根据所述多个拥塞窗口值,得到所述拥塞窗口曲线。在本可能的实现方式中,通过TCP头字段中的参数可以估计发送窗口值,进而估计出拥塞窗口值,得到拥塞窗口曲线,得到的结果准确,以便于后续识别TCP状态。
在第一方面的一种可能的实现方式中,所述根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值,可以包括:根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。在本可能的实现方式中,采用已发送但尚未被确认的载荷包的大小来近似反映真实的发送窗口值,得到的结果准确,有利于后续识别TCP状态。
可选地,已发送但尚未被确认的载荷包的大小Flight_Size=Seq-Ack+MSS。
在第一方面的一种可能的实现方式中,所述根据所述多个拥塞窗口值,得到所述拥塞窗口曲线,可以包括对所述拥塞窗口曲线进行以下处理中的至少一种:删除所述多个拥塞窗口值中的异常值;提取所述拥塞窗口曲线的上包络线;采用中值滤波方法,对所述拥塞窗口曲线进行平滑;采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。在本可能的实现方式中,采用多种处理可以得到更平滑的拥塞窗口曲线。
在第一方面的一种可能的实现方式中,所述根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态,可以包括:根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。在本可能的实现方式中,基于拥塞窗口曲线上点的斜率变化情况,可以简单准确地确定慢启动状态和拥塞避免状态的交界点。
可选地,所述根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态,可以包括:通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。在本可能的实现方式中,线性拟合差分算法成熟,运算简单,可以简单准确地确定慢启动状态和拥塞避免状态的交界点。
在第一方面的一种可能的实现方式中,所述根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态,可以包括:满足以下条件的载荷包为快速重传状态的包:重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;载荷包的序列号小于已发出载荷包的最大序列号;快速重传状态标记为假;并且载荷包携带有效数据;满足以下条件的载荷包为超时重传状态的包:重复确认包的数量等于0;最近时刻收到的确认包不携带SACK字段;载荷包的序列号小于或等于已发出载荷包的最大序列号;载荷包的序列号等于之前收到确认包的最大确认号;快速重传状态标记为假;并且载荷包携带有效数据。在本可能的实现方式中,以上述条件判断可以准确判断快速重传状态和超时重传状态。
在第一方面的一种可能的实现方式中,所述方法还包括:对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包的数量的比值;根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。在本可能的实现方式中,依据重复确认包和已发出但未确认载荷包的数量关系来进行根因分析,可以准确确定出引发快速重传状态和/或超时重传状态的原因。
在第一方面的一种可能的实现方式中,所述根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序,包括:当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
第二方面,提供了一种识别TCP状态的装置,用于执行上述第一方面或其任一可能的实现方式中的方法。具体地,该识别TCP状态的装置可以包括用于执行第一方面或其任一可能的实现方式中的方法的模块。
第三方面,本申请提供了一种识别TCP状态的装置,该识别TCP状态的装置包括接口和处理器,所述接口和所述处理器耦合,通过所述接口获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;所述处理器用于:根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。该识别TCP状态的装置能够执行第一方面或其任一可能的实现方式中的方法。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有指令,当该指令在计算机上运行时,使得该计算机执行第一方面及其任一可能的实现方式的方法。
第五方面,本申请提供了一种包括指令的计算机程序产品,其特征在于,当计算机运行该计算机程序产品的该指时,该计算机执行第一方面及其任一可能的实现方式的方法。
第六方面,本申请提供了一种计算机芯片,该计算机芯片使得计算机执行第一方面及其任一可能的实现方式的方法。
附图说明
图1是本申请一个实施例中拥塞窗口值随传输次数变化的规律的示意图。
图2是拥塞窗口值随传输次数变化的规律并由其判断拥塞避免算法的示意图。
图3是本申请涉及的无线通信系统的示意图。
图4是本申请一个实施例的识别TCP状态的方法的示意性流程图。
图5是本申请的一个实施例在探针上部署以识别TCP状态的示意图。
图6是本申请一个实施例的关于发送窗口的示意图。
图7是本申请另一个实施例的关于发送窗口的示意图。
图8是本申请实施例抓取的TCP数据码流的参数的示意图。
图9是本申请一个实施例的拥塞窗口曲线处理的示意性流程图。
图10是本申请一个实施例的原始的拥塞窗口曲线的示意图。
图11是本申请一个实施例的处理后的拥塞窗口曲线的示意图。
图12是本申请一个实施例的拥塞窗口曲线上的点的斜率差的示意图。
图13是本申请一个实施例的通过线性拟合差分确定交界点的示意图。
图14是本申请一个实施例的TCP数据传输中数据包参数的示意图。
图15是本申请一个实施例的序列曲线贴近确认曲线的时长的示意图。
图16是本申请一个实施例的确认曲线等于序列曲线的时长的示意图。
图17是本申请一个实施例的通告窗口曲线受限时长的示意图。
图18是本申请一个实施例的载荷包的丢包乱序的示意图。
图19是本申请的实施例最终识别TCP状态的效果的示意图。
图20是本申请一个实施例提供的识别TCP状态的装置的示意性框图。
图21是本申请另一实施例提供的识别TCP状态的装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
TCP数据传输包括四种重要的状态:慢启动状态(慢启动阶段)、拥塞避免状态(拥塞避免阶段)、快速重传状态(快速重传阶段,也称为快速恢复状态/阶段)和超时重传状态(超时重传阶段)。图1是本申请一个实施例中拥塞窗口值随传输次数变化的规律的示意图。在图1中,横轴表示传输次数,纵轴表示拥塞窗口的大小,即拥塞窗口值。基于TCP原理,TCP握手之后首先进入慢启动状态,拥塞窗口的大小由小变大,呈指数增长。当拥塞窗口增长超过阈值,TCP数据传输进入拥塞避免状态,拥塞窗口的大小呈线性增长。如果网络出现拥塞,拥塞窗口的大小将大幅减小,TCP数据传输进入快速重传状态或超时重传状态。不同TCP数据传输阶段的数据传输特征不同,对网络的要求也不同。例如,慢启动状态要求网络的往返时延(round trip time,RTT)尽量低,有利于发送窗口快速扩张。拥塞避免状态要求网络的带宽足够大,避免出现丢包等,导致TCP数据传输进入异常状态。在快速重传状态,TCP数据传输的发送端会立即重传丢失的数据包。如果重传超时(retransmission time out,RTO),拥塞窗口的大小会减小到很小的值,重新开启慢启动状态,将对吞吐率造成严重影响。
一种方案是基于TCP指标进行数据传输问题分析。该方案对丢包、乱序、重传和RTT等多个TCP指标进行评估,不同TCP指标对应各自的阈值。对异常的TCP指标进行关联分析,进而对数据传输问题进行根因识别和异常事件定界。在该方案中,不同局点不同时段,TCP指标的变化趋势都不相同。因此,需要对每一项TCP指标设定阈值来判断是否异常,阈值的设定不仅工作量大且难以准确设定。此外,当TCP指标数量较多时,多个TCP指标的异常是否说明网络出现了问题,需要有经验的专家进行识别,工作量大。最后,网络吞吐率的降低是TCP指标恶化的结果,但是TCP指标的恶化是否真的会引起吞吐率的降低,仅从TCP指标的恶化程度无法直观的反映出来。
另一种方案提出了TCP数据传输中拥塞避免算法的识别方法。图2是拥塞窗口值随传输次数变化的规律并由其判断拥塞避免算法的示意图。如图2所示,横轴表示传输次数,纵轴表示拥塞窗口的大小,即拥塞窗口值。在传输次数为12时,主动使网络出现一次超时重传,使得TCP数据传输进入慢启动状态。记录超时重传发生前的拥塞窗口的大小w损耗(如图2所示大小为24)。通过识别每个RTT内拥塞窗口大小的增量,判断慢启动状态和拥塞避免状态的交界点(传输次数为17处)。记录交界点处的拥塞窗口的大小ws(如图2所示大小为14)。求两个窗口大小的比值k=ws/w损耗=7/12。由于不同拥塞避免算法对应不同的比值k,通过比值k的大小可以对拥塞避免算法进行识别。该方案采用主动识别技术,需要额外向网络中注入数据,可能影响网络本身的流量分布。该方案只能对目标网站或服务器所采用的拥塞避免(或协议)算法进行识别,无法对网络中已存在的大量TCP数据码流进行识别。该方案只能够识别拥塞避免状态采用的拥塞避免算法,无法对TCP数据传输的其他状态进行识别,更不具备根因识别和异常事件定界的功能。该方案设定了很多理想的假设,例如即使丢包或乱序,同样按照正常方式回复确认(acknowledgement,ACK)响应,而实际场景较为复杂,该方案无法应用于被动测量的场景。
又一种方案提供了一套拥塞事件识别工具,可以对拥塞事件进行识别及分类。这些拥塞事件包括超时重传、快速重传、包乱序、伪超时重传等。该识别工具仅设定TCP数据传输过程中的三种状态,其至少不能识别慢启动状态。该识别工具以拥塞事件为对象,仅对预先定义的几种拥塞事件进行识别,并不能对每种事件进行根因识别和异常事件定界。该工具识别超时重传时并非依据超时重传的特征,仅依据某一两种因素而排除其它可能引发重传的因素,不够合理。
从TCP数据传输的三次握手到连接断开的整个连接期间,TCP数据传输不断在慢启动、拥塞避免、快速重传或快速恢复、超时重传等四个状态切换。如果能够识别出TCP数据传输的各种状态,特别是识别出异常状态(拥塞窗口的大小大幅度减小)及触发该状态的根因,如丢包导致拥塞窗口收缩、超时导致拥塞窗口收缩等,就可以不依赖设置的TCP指标的阈值,直接通过各种状态对网络的运行状况进行监测。基于上述问题,本申请提供了一种识别TCP状态的方法和装置,该方法和装置使得可以更精细的对单用户级TCP数据传输问题进行分析,能够降低交付难度。
图3是本申请涉及的无线通信系统100的示意图。该无线通信系统100可以工作在高频频段上,不限于第三代移动通信(the 3rd generation,3G)系统、长期演进(longtermevolution,LTE)系统,还可以是未来演进的第五代移动通信(the 5th generation,5G)系统、新空口(new radio,NR)系统,机器与机器通信(machine to machine,M2M)系统等。如图3所示,无线通信系统100可包括:一个或多个网络设备110,一个或多个终端120,以及核心网130。其中:
网络设备110可以为基站,基站可以用于与一个或多个终端进行通信,也可以用于与一个或多个具有部分终端功能的基站进行通信(比如宏基站与微基站,如接入点,之间的通信)。基站可以是LTE系统中的演进型基站(evolved Node B,eNB),以及5G系统、NR系统中的基站。另外,基站也可以为接入点(access point,AP)、传输节点(transportpoint,TRP)、中心单元(central unit,CU)或其他网络实体,并且可以包括以上网络实体的功能中的一些或所有功能。
终端120可以分布在整个无线通信系统100中,可以是静止的,也可以是移动的。在本申请的一些实施例中,终端120可以是移动设备、移动台(mobile station)、移动单元(mobile unit)、M2M终端、无线单元,远程单元、用户代理、移动客户端、用户设备(userequipment,UE)等。
具体的,网络设备110可用于在网络设备控制器(图3中未示出)的控制下,通过一个或多个天线与终端120通信。在一些实施例中,该网络设备控制器可以是核心网130的一部分,也可以集成到网络设备110中。具体的,网络设备110可用于通过回程(backhaul)接口150(如S1接口)向核心网130传输控制信息或者用户数据。具体的,网络设备110与网络设备110之间也可以通过回程(backhaul)接口140(如X2接口),直接地或者间接地,相互通信。
图3示出的无线通信系统仅仅是为了更加清楚的说明本申请的技术方案,并不构成对本申请的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请提供了一种识别TCP状态的方法。图4是本申请一个实施例的识别TCP状态的方法200的示意性流程图。该方法200可以包括:S210获取TCP数据码流,该TCP数据码流中包括多个数据包,该数据包包括载荷包和确认包。S220根据该多个数据包的TCP头字段中的参数,得到拥塞窗口曲线。S230根据该拥塞窗口曲线,识别该TCP数据码流中的慢启动状态和拥塞避免状态。S240根据该载荷包和该确认包的抵达顺序,识别该TCP数据码流中的快速重传状态和超时重传状态。
本申请实施例的识别TCP状态的方法通过TCP数据码流中包括数据包的TCP头字段中的参数,得到拥塞窗口曲线以识别慢启动状态和拥塞避免状态,通过载荷包和确认包的抵达顺序,以识别快速重传状态和超时重传状态,识别方法简单准确,使得能够参考TCP状态的情况,可以提高进行进一步分析的准确性,例如可以应用于TCP数据传输问题分析。
本申请实施例的方法可以用于识别出TCP数据传输过程中不同时间段内所处的状态。例如慢启动状态、拥塞避免状态、快速重传状态和超时重传状态各自的起始时刻。
图5是本申请的一个实施例在探针上部署,以识别TCP状态的示意图。如图5所示,本申请的识别TCP状态的装置或模块部署于探针上。其可以作为TCP性能测量模块/装置的子模块或子装置使用,也可以做成独立设备对TCP数据做离线处理。识别TCP状态的装置(识别TCP状态的模块)的输入为TCP数据码流,TCP数据码流由探针上的数据采集模块采集。输出可以包括所识别的TCP状态(或者称TCP状态指标)。更进一步地,输出还可以包括异常事件指标。输出的两类指标各自可以包括多个细分指标。可以将所有细分指标进行汇总,生成外部数据表达(external data representation,xDR)字段,反馈给探针更上层的功能模块。
在本申请的一些实施例中,S220根据该多个数据包的TCP头字段中的参数,得到拥塞窗口曲线,可以包括:根据该多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;根据该多个发送窗口值,估计得到多个拥塞窗口值;根据该多个拥塞窗口值,得到该拥塞窗口曲线。即S220主要包括的处理有发送窗口值的估计、拥塞窗口值的估计和拥塞窗口曲线的处理。应理解,拥塞窗口曲线也可以通过其他的计算或统计方法获得,本申请实施例对此不作限定。
对于发送窗口值的估计,参见图6和图7进行说明。图6是本申请一个实施例的关于发送窗口的示意图。图7是本申请另一个实施例的关于发送窗口的示意图。由于真实的发送窗口的大小难于确定,本申请实施例采用估计的发送窗口值来近似反映真实的发送窗口的大小。图6和图7示出了载荷包28至载荷包43,其中,假设载荷包28至载荷包30为已经发送并收到确认的载荷包,发送窗口的实际大小为载荷包31至载荷包40的大小总和,载荷包41至载荷包43为不允许发送的载荷包。在图6中,载荷包31至载荷包34为已发送但尚未被确认的载荷包,载荷包35至载荷包40为允许发送但尚未发送的载荷包。在图7中,载荷包31至载荷包40均为已发送但尚未被确认的载荷包。这其中已发送但尚未被确认的载荷包的大小是可以得到的,可以认为其是估计的发送窗口值,可以记为Flight_Size,用于估计发送窗口的真实的大小。
在一种可能的实现方式中,根据该多个数据包的TCP头字段中的参数,估计多个发送窗口值,可以包括:根据该载荷包的序列号、该确认包的最大确认号和最大报文段长度MSS,确定该多个发送窗口值。具体地,可以首先计算Flight_Size,Flight_Size计算公式可以如下:
Flight_Size=Seq-Ack+MSS。
其中,Seq表示载荷包的序列号,Ack表示载荷包前收到的确认包的最大确认号,MSS表示最大报文段长度(Maximum Segment Size)。
在本申请的一个实施例中,可以将Flight_Size近似认为是发送窗口的大小,根据多个发送窗口值,可以估计多个拥塞窗口值。按照Flight_Size的计算公式,每个载荷包均可计算出一个Flight_Size值。由于TCP数据传输采用滑动窗口机制,每个RTT内连续发送多个载荷包,因此每批载荷包中的最后一个载荷包对应的Flight_Size值最接近拥塞窗口的大小。
一个例子中,可以仅提取该最后一个载荷包对应的Flight_Size值即可。但实际网络的场景下存在乱序、重传等情况,如果仅保留最后一个载荷包对应的Flight_Size值,可能会丢弃掉很多重要的乱序、重传的载荷包。因此,在另一个例子中可以采用方式如下:如果当前载荷包为重传包,或者当前载荷包对应的Flight_Size值比前一个载荷包对应的Flight_Size值小,则提取该当前载荷包对应的Flight_Size值,存入拥塞窗口(congestionwindow,CWnd)容器中。如果上述情况均不满足,则提取每一批次连续(载荷包之间无确认包存在)载荷包中最后一个载荷包对应的Flight_Size值,将提取的Flight_Size值存入CWnd容器中。图8是本申请实施例抓取的TCP数据码流的参数的示意图。如图8所示,CWnd容器中将存入框中的76128、71136、78624等值。应理解,本申请其他实施例还可以通过其他方法估计拥塞窗口值,本申请实施例对此不作限定。
获取到多个拥塞窗口值后,即可得到拥塞窗口曲线。为了更好的利用得到的拥塞窗口曲线,可以进行拥塞窗口曲线处理,其对拥塞窗口曲线可以进行以下处理中的至少一种:删除所述多个拥塞窗口值中的异常值;提取所述拥塞窗口曲线的上包络线;采用中值滤波方法,对所述拥塞窗口曲线进行平滑;采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。拥塞窗口曲线处理的主要的目标是在尽可能保留拥塞窗口曲线变化特征的前提下,减小拥塞窗口曲线的局部波动,使其变得更平滑。图9是本申请一个实施例的拥塞窗口曲线处理300的示意性流程图。如图9所示,拥塞窗口曲线处理的输入为原始的拥塞窗口曲线,可以对其采取S310中S340中的任意一项或多项进行处理,处理的顺序以有利于获得平滑的曲线为原则,本申请实施例对此不作限定。
S310,删除多个拥塞窗口值中的异常值。即异常检测及处理,处理掉拥塞窗口曲线上的毛刺现象。
S320,提取拥塞窗口曲线的上包络线。在复杂的网络场景中,估计的拥塞窗口曲线往往存在大幅度波动,将对后续识别造成困难。通过提取拥塞窗口曲线的上包络线,不仅可以减小曲线的波动,而且能够保留拥塞窗口的变化特征。现有的技术存在多种求上包络线的方法,这里不限定采用何种方法,比较典型的例如有分段间隔取最大值法、希尔伯特(Hilbert)变换法等。
S330,采用中值滤波方法,对拥塞窗口曲线进行平滑。具体可以是结合滑动窗口方式,局部取中值或均值,使得曲线更平滑。滑动窗口的大小可以按时间划分或按数据包个数划分。
S340,采用曲线拟合方法,对拥塞窗口曲线进行拟合。具体地,如果采用上述步骤S310至S330的步骤处理后拥塞窗口曲线仍然不够平滑,可以结合滑动窗口的方式对拥塞窗口进行曲线拟合,现有的技术存在多种曲线拟合的方法,比较典型的例如有最小二乘法等。
下面以一个具体的例子,说明拥塞窗口曲线的获得过程。根据五元组(源网络之间互连的协议(Internet Protocol,IP)地址、源端口、目的IP地址、目的端口、传输层协议)信息,识别出属于同一条TCP数据码流的所有数据包,并按照接收时间进行排序。根据前文的描述,计算出相应载荷包的Flight_Size。根据多个发送窗口值,估计得到多个拥塞窗口值。根据多个拥塞窗口值,得到原始的拥塞窗口曲线。图10是本申请一个实施例的原始的拥塞窗口曲线的示意图。对拥塞窗口曲线进行处理后,得到较为光滑的拥塞窗口曲线。图11是本申请一个实施例的处理后的拥塞窗口曲线的示意图。
下面详细说明S230根据拥塞窗口曲线,识别TCP数据码流中的慢启动状态和拥塞避免状态的过程。可选地,在本申请的一些实施例中,可以根据拥塞窗口曲线上点的斜率变化情况,确定慢启动状态和拥塞避免状态的交界点。
改变点(change point)是指一条曲线从一种变化趋势变换到另外一种变化趋势的交界点。TCP数据传输从慢启动状态切换到拥塞避免状态,拥塞窗口值从指数增长变化为线性增长,这里的改变点即为慢启动门限所在的时刻。从图1可以看出,在慢启动状态,拥塞窗口曲线为弧形(不同的TCP协议版本拥塞窗口曲线的形状有所不同),曲线斜率不断增大。在拥塞避免状态,拥塞窗口曲线大致为一条直线(实际网络场景不一定为直线),曲线斜率基本保持不变。不论采用哪种TCP协议版本,拥塞窗口曲线都具有共同的规律:在同一个状态内,拥塞窗口曲线变化趋势相同或相近,曲线上相邻点的斜率差异不大;在两个相邻状态交界点处,拥塞窗口曲线变化趋势差异较大,曲线斜率变化较为剧烈。因此,可以利用该特征识别出交界点所在的时刻。
识别改变点的方法较多,例如常见的做法包括,在拥塞窗口曲线上间隔取点,求相邻点或间隔数点的斜率之差,斜率之差的最大点可能就为改变点。图12是本申请一个实施例的拥塞窗口曲线上的点的斜率差的示意图。如图12所示,斜率差的最大点就对应两个状态的交界点。
经过实测发现,由于现网中估计的拥塞窗口曲线可能存在较多波动,而局部的曲线波动对识别影响较大,导致斜率的识别准确率不高。本申请一些实施例可以通过对拥塞窗口曲线进行线性拟合差分,确定慢启动状态和拥塞避免状态的交界点。图13是本申请一个实施例的通过线性拟合差分确定交界点的示意图。如图13所示,可以采用滑动窗口的方式每隔数点或每隔一小段时间间隔,用一条直线y=Φ(x)=a0+a1x去拟合对应的拥塞窗口的离散曲线,从而得到两个系数a0和a1。然后求拟合系数a1与前一次拟合系数a1的差Δa,从而,除首次拟合外其余每次线性拟合均得到一个Δa,例如为Δa1,Δa2,...,ΔaM。提取最大Δa对应的时刻t,即:
该时刻t就是交界点所在的时刻,即图12中斜率差的最大点所在的时刻。
下面详细说明S240根据载荷包和确认包的抵达顺序,识别TCP数据码流中的快速重传状态和超时重传状态的过程。
对于TCP数据码流中的任一个载荷包,满足以下条件的载荷包可以被确定为快速重传状态的包:
a)重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认
(selective acknowledgment,SACK)字段;
b)载荷包的序列号与重复确认包的确认号相差不足MSS;
c)载荷包的序列号小于已发出载荷包的最大序列号;
d)快速重传状态标记为假;并且
e)载荷包携带有效数据。
对于TCP数据码流中的任一个载荷包,满足以下条件的载荷包可以被确定为超时重传状态的包:
f)重复确认包的数量等于0;
g)最近时刻收到的确认包不携带SACK字段;
h)载荷包的序列号小于或等于已发出载荷包的最大序列号;
i)载荷包的序列号等于之前收到确认包的最大确认号;
j)快速重传状态标记为假;并且
k)载荷包携带有效数据。
下面以一个具体的例子说明识别快速重传状态和超时重传状态的过程。图14是本申请一个实施例的TCP数据传输中数据包参数的示意图。对TCP数据传输中每一个载荷包依据上述判定条件逐一进行检测,如果a)至e)(快速重传状态的条件)中某一个或多个条件不满足并且f)至k)(超时重传状态的条件)中某一个或多个条件不满足,则忽略该包。以图14中编号为10253的载荷包为例,检测是否满足所有条件:
a)编号10253的载荷包之前存在3个重复确认包,满足条件;
b)编号10253的载荷包的序列号为3608889,此前收到重复确认包的确认号为3688889,两者之差不足1个MSS(MSS=536Byte),满足条件;
c)编号10253的载荷包的序列号3608889小于已发出载荷包的最大序列号3686073,满足条件;
d)此前并未进入快速重传状态,故快速重传状态标记为假(false),满足条件;
e)编号10253的载荷包携带590字节有效数据,满足条件。
因此,编号为10253的载荷包满足上述a)至e)五个条件,被判定为快速重传状态的包。判断超时重传状态的包的情况类似,只是条件有所不同,此处不再赘述。
应理解,本申请实施例的方法还可以保存多个数据包的TCP头字段中的多个参数。这些参数归纳起来可以分为三大类:输入的TCP数据码流中数据包的统计信息、根据统计信息计算出的多个特征参数、载荷包的丢包乱序信息记录。
其中,输入的TCP数据码流中数据包的统计信息种类相对较多,可以包括例如载荷包的序列号、确认包的确认号、之前收到的载荷包的最大序列号、重复确认包的个数、载荷包的个数、确认包的个数、通告窗口的大小等等。
根据统计信息计算出的多个特征参数可以包括多个受限时长参数、拥塞窗口的增量相对于确认包数量的比值等等。
如果满足条件:Ack+MSS≥Seq,即当前收到的确认包的最大确认号与当前载荷包的序列号相差不足一个MSS,可以认为序列曲线与确认曲线贴近。图15是本申请一个实施例的序列曲线贴近确认曲线的时长的示意图。如图15所示,如果序列曲线与确认曲线贴近,则记录下当前载荷包对应时刻与前一批最后一个数据包对应时刻的时间差,即为序列曲线贴近确认曲线的时长,且每一批载荷包仅记录一次该时长的最大值。
如果满足条件:Ack=Seq,即确认包将所有载荷包确认掉。图16是本申请一个实施例的确认曲线等于序列曲线的时长的示意图。如图16所示,确认曲线的值达到最大序列值,此后没有收到载荷包,记录下该时刻到下一次收到载荷包的时长,即为确认曲线等于序列曲线的时长。
如果满足条件:Seq+α·MSS≥AWnd,即当前收到的确认包的序列号与当前接收端通告的能够接收的最大序列号之间相差不足α(可以取3)个MSS,可以认为序列曲线与通告窗口(advised window,AWnd)曲线贴近。图17是本申请一个实施例的AWnd曲线受限时长的示意图。如图17所示,最顶部曲线为通告窗口曲线,当检测到某个数据包的序列号贴近通告窗口曲线时,记录该时刻与前一批最后一个载荷包的时间差,作为AWnd曲线受限时长,每一批载荷包仅记录一次最大的AWnd曲线受限时长。
重复确认包的数量相对于拥塞窗口值的增加量的比值(即重复确认包的数量和已发出但未确认载荷包的数量的比值),可以记为ratio,其计算公式可以如下:
其中,Npkt表示载荷包的数量,Nconfirm表示确认包确认掉的载荷包的数量,Nack表示某一时间段内确认包的数量。Npkt和Nconfirm的计算公式可以如下:
其中,
Seqstart表示待计算特征值的时间段起始点的载荷包的序列号。
Seqend表示该时间段结束点(此处表示第1个重传包所在的时刻)的载荷包的序列号。
MSS表示1个载荷包的最大报文段长度(或称最大有效数据长度)。
Ackstart表示该时间段起始点的确认包的确认号。
Ackend表示该时间段结束点的确认包的确认号。
载荷包的丢包乱序信息记录可以由以下类似的方式获得。图18是本申请一个实施例的载荷包的丢包乱序的示意图。如图18所示,序列号(sequence number)为365237的包前丢失了一个包(362741+1248=363989<365237),因此将序列段[363989,365237]记录进丢包队列中,形成载荷包的丢包乱序信息记录。
下面详细说明本申请实施例的根因分析和异常事件定界。
首先识别出拥塞窗口曲线大幅度(可以设定阈值)跌落的时刻,这些时刻通常情况为快速重传状态/超时重传状态所在的时刻。然后针对每一次跌落,识别出造成该跌落的根因,可能是丢包、乱序或RTT增大等。如果根因为丢包或乱序,则需要进行异常事件定界,即定位到发生在网络的哪一侧。
根因分析的方式,主要依据重复确认包和已发出但未确认载荷包的数量关系。可选地,方法200还可以包括:对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出载荷包的数量的比值。这一点已在前文中详细说明。方法200还可以包括:根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
具体而言,可以首先检测是否发生了重传,如果单独为RTT抖动引起,则通常造成伪超时重传;如果检测发生了超时重传,则在RTT抖动的同时伴随有丢包或乱序;如果发生快速重传,则可以通过重复确认包的数量和发送端已发出但未确认载荷包的数量的比值来判断,当比值接近或大于1时,可以认为根因为丢包,当比值接近0时,可能认为根因为乱序,因此可以通过设定合理的阈值来判定丢包或乱序。如果未发生重传,则需要结合记录的参数综合分析,例如检测是否由于TCP数据码流长时间无载荷包在传或者应用层暂停发包等等因素。
相应可选地,所述根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序,可以包括:当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
关于异常事件定界,主要通过检查丢包队列内是否含有待检测数据包的序列号,如果有,表明此前未收到该包,异常事件定界为接口上;否则,异常事件定界为接口下。
图19是本申请的上述实施例最终识别TCP状态的效果的示意图。如图19所示,利用本申请实施例的方法可以准确地识别出TCP数据传输过程中的各TCP状态。
以上结合图1至图19详细说明了本申请识别TCP状态的方法,下面结合图20至图21详细说明本申请的识别TCP状态的装置。
图20是本申请实施例提供的识别TCP状态的装置400的示意性框图。该识别TCP状态的装置400,包括:获取单元410,用于获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;计算单元420,用于根据所述获取单元410获取的所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;第一识别单元430,用于根据所述计算单元420计算得到的所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;第二识别单元440,用于根据所述获取单元410获取的所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
本申请实施例提供的识别TCP状态的方法通过TCP数据码流中包括数据包的TCP头字段中的参数,得到拥塞窗口曲线以识别慢启动状态和拥塞避免状态,通过载荷包和确认包的抵达顺序,以识别快速重传状态和超时重传状态,识别方法简单准确,使得能够参考TCP状态的情况,可以提高进行进一步分析的准确性,例如可以应用于TCP数据传输问题分析。
可选地,在本申请的一些实施例中,所述计算单元420具体可以用于:根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;根据所述多个发送窗口值,估计得到多个拥塞窗口值;根据所述多个拥塞窗口值,得到所述拥塞窗口曲线。
可选地,在本申请的一些实施例中,所述计算单元420具体可以用于:根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。
可选地,在本申请的一些实施例中,所述计算单元420具体可以用于进行以下处理中的至少一种:删除所述多个拥塞窗口值中的异常值;提取所述拥塞窗口曲线的上包络线;采用中值滤波方法,对所述拥塞窗口曲线进行平滑;采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。
可选地,在本申请的一些实施例中,第一识别单元430具体可以用于:根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。
可选地,在本申请的一些实施例中,第一识别单元430具体可以用于:通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。
可选地,在本申请的一些实施例中,所述第二识别单元440具体可以用于:
满足以下条件的载荷包为快速重传状态的包:重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;载荷包的序列号小于已发出载荷包的最大序列号;快速重传状态标记为假;并且载荷包携带有效数据;
满足以下条件的载荷包为超时重传状态的包:重复确认包的数量等于0;最近时刻收到的确认包不携带SACK字段;载荷包的序列号小于或等于已发出载荷包的最大序列号;载荷包的序列号等于之前收到确认包的最大确认号;快速重传状态标记为假;并且载荷包携带有效数据。
可选地,在本申请的一些实施例中,所述装置400还可以包括根因分析单元450,用于:对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包数量的比值;根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
可选地,在本申请的一些实施例中,所述根因分析单元450具体可以用于:当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
图21是本申请实施例提供的识别TCP状态的装置500的示意性框图。该识别TCP状态的装置500,包括:接口510和处理器520,所述接口510和所述处理器520耦合,通过所述接口510获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;所述处理器520用于:根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
本申请实施例提供的识别TCP状态的方法通过TCP数据码流中包括数据包的TCP头字段中的参数,得到拥塞窗口曲线以识别慢启动状态和拥塞避免状态,通过载荷包和确认包的抵达顺序,以识别快速重传状态和超时重传状态,识别方法简单准确,使得能够参考TCP状态的情况,可以提高进行进一步分析的准确性,例如可以应用于TCP数据传输问题分析。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;根据所述多个发送窗口值,估计得到多个拥塞窗口值;根据所述多个拥塞窗口值,得到所述拥塞窗口曲线
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于执行以下处理中的至少一种:删除所述多个拥塞窗口值中的异常值;提取所述拥塞窗口曲线的上包络线;采用中值滤波方法,对所述拥塞窗口曲线进行平滑;采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:
满足以下条件的载荷包为快速重传状态的包:重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;载荷包的序列号小于已发出载荷包的最大序列号;快速重传状态标记为假;并且载荷包携带有效数据;
满足以下条件的载荷包为超时重传状态的包:重复确认包的数量等于0;最近时刻收到的确认包不携带SACK字段;载荷包的序列号小于或等于已发出载荷包的最大序列号;载荷包的序列号等于之前收到确认包的最大确认号;快速重传状态标记为假;并且载荷包携带有效数据。
可选地,在本申请的一些实施例中,所述处理器520还可以用于:对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包的数量的比值;根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
可选地,在本申请的一些实施例中,所述处理器520具体可以用于:当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
应理解,图20所示的识别TCP状态的装置400或图21所示的识别TCP状态的装置500,可用于执行上述方法实施例的操作或流程,并且识别TCP状态的装置400或识别TCP状态的装置500中的各个模块和器件的操作和/或功能分别为了实现上述方法实施例中的相应流程,为了简洁,在此不再赘述。
应理解,本申请实施例中提及的处理器可以包括中央处理器(centralprocessing pnit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic Device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(genericarray logic,GAL)或其任意组合。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
还应理解,本申请实施例中提及的存储器可以是易失性存储器(volatilememory)或非易失性存储器(non-volatile memory),或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
本申请实施例还提供一种计算机可读存储介质,其上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行上述方法实施例的用于信道检测的方法的步骤。
本申请实施例还提供一种包括指令的计算机程序产品,其特征在于,当计算机运行所述计算机程序产品的所述指时,所述计算机执行上述方法实施例的用于信道检测的方法的步骤。
本申请实施例还提供一种计算机芯片,该计算机芯片使得计算机执行上述方法实施例的用于信道检测的方法的步骤。
本申请实施例提供给的设备,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital video disc,DVD))、或者半导体介质(例如,SSD)等。
应理解,本文中涉及的第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请的范围。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (28)

1.一种识别传输控制协议TCP状态的方法,其特征在于,包括:
获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;
根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;
根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;
根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线,包括:
根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;
根据所述多个发送窗口值,估计得到多个拥塞窗口值;
根据所述多个拥塞窗口值,得到所述拥塞窗口曲线。
3.根据权利要求2所述的方法,其特征在于,所述根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值,包括:
根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述多个拥塞窗口值,得到所述拥塞窗口曲线,包括对所述拥塞窗口曲线进行以下处理中的至少一种:
删除所述多个拥塞窗口值中的异常值;
提取所述拥塞窗口曲线的上包络线;
采用中值滤波方法,对所述拥塞窗口曲线进行平滑;
采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态,包括:
根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态,包括:
通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态,包括:
满足以下条件的载荷包为快速重传状态的包:
重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;
载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;
载荷包的序列号小于已发出载荷包的最大序列号;
快速重传状态标记为假;并且
载荷包携带有效数据;
满足以下条件的载荷包为超时重传状态的包:
重复确认包的数量等于0;
最近时刻收到的确认包不携带SACK字段;
载荷包的序列号小于或等于已发出载荷包的最大序列号;
载荷包的序列号等于之前收到确认包的最大确认号;
快速重传状态标记为假;并且
载荷包携带有效数据。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包的数量的比值;
根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
9.根据权利要求8所述的方法,其特征在于,所述根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序,包括:
当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;
当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
10.一种识别传输控制协议TCP状态的装置,其特征在于,包括:
获取单元,用于获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;
计算单元,用于根据所述获取单元获取的所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;
第一识别单元,用于根据所述计算单元计算得到的所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;
第二识别单元,用于根据所述获取单元获取的所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
11.根据权利要求10所述的装置,其特征在于,所述计算单元具体用于:
根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;
根据所述多个发送窗口值,估计得到多个拥塞窗口值;
根据所述多个拥塞窗口值,得到所述拥塞窗口曲线。
12.根据权利要求11所述的装置,其特征在于,所述计算单元具体用于:
根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。
13.根据权利要求11或12所述的装置,其特征在于,所述计算单元具体用于进行以下处理中的至少一种:
删除所述多个拥塞窗口值中的异常值;
提取所述拥塞窗口曲线的上包络线;
采用中值滤波方法,对所述拥塞窗口曲线进行平滑;
采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。
14.根据权利要求10至13中任一项所述的装置,其特征在于,所述第一识别单元具体用于:
根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。
15.根据权利要求10至14中任一项所述的方法,其特征在于,所述第一识别单元具体用于:
通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。
16.根据权利要求10至15中任一项所述的装置,其特征在于,所述第二识别单元具体用于:
满足以下条件的载荷包为快速重传状态的包:
重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;
载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;
载荷包的序列号小于已发出载荷包的最大序列号;
快速重传状态标记为假;并且
载荷包携带有效数据;
满足以下条件的载荷包为超时重传状态的包:
重复确认包的数量等于0;
最近时刻收到的确认包不携带SACK字段;
载荷包的序列号小于或等于已发出载荷包的最大序列号;
载荷包的序列号等于之前收到确认包的最大确认号;
快速重传状态标记为假;并且
载荷包携带有效数据。
17.根据权利要求10至16中任一项所述的装置,其特征在于,所述装置还包括根因分析单元,用于:
对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包的数量的比值;
根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
18.根据权利要求17所述的装置,其特征在于,所述根因分析单元具体用于:
当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;
当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
19.一种识别传输控制协议TCP状态的装置,其特征在于,包括:
接口和处理器,所述接口和所述处理器耦合,
通过所述接口获取TCP数据码流,所述TCP数据码流中包括多个数据包,所述数据包包括载荷包和确认包;
所述处理器用于:
根据所述多个数据包的TCP头字段中的参数,得到拥塞窗口曲线;
根据所述拥塞窗口曲线,识别所述TCP数据码流中的慢启动状态和拥塞避免状态;
根据所述载荷包和所述确认包的抵达顺序,识别所述TCP数据码流中的快速重传状态和超时重传状态。
20.根据权利要求19所述的装置,其特征在于,所述处理器具体用于:
根据所述多个数据包的TCP头字段中的参数,估计得到多个发送窗口值;
根据所述多个发送窗口值,估计得到多个拥塞窗口值;
根据所述多个拥塞窗口值,得到所述拥塞窗口曲线。
21.根据权利要求20所述的装置,其特征在于,所述处理器具体用于:
根据所述载荷包的序列号、所述确认包的最大确认号和最大报文段长度MSS,确定所述多个发送窗口值。
22.根据权利要求20或21所述的装置,其特征在于,所述处理器具体用于执行以下处理中的至少一种:
删除所述多个拥塞窗口值中的异常值;
提取所述拥塞窗口曲线的上包络线;
采用中值滤波方法,对所述拥塞窗口曲线进行平滑;
采用曲线拟合方法,对所述拥塞窗口曲线进行拟合。
23.根据权利要求19至22中任一项所述的装置,其特征在于,所述处理器具体用于:
根据所述拥塞窗口曲线上点的斜率变化情况,确定所述慢启动状态和所述拥塞避免状态的交界点。
24.根据权利要求19至23中任一项所述的方法,其特征在于,所述处理器具体用于:
通过对所述拥塞窗口曲线进行线性拟合差分,确定所述慢启动状态和所述拥塞避免状态的交界点。
25.根据权利要求19至24中任一项所述的装置,其特征在于,所述处理器具体用于:
满足以下条件的载荷包为快速重传状态的包:
重复确认包的数量大于或等于1,或者最近时刻收到的确认包携带选择性确认SACK字段;
载荷包的序列号与重复确认包的确认号相差不足最大报文段长度MSS;
载荷包的序列号小于已发出载荷包的最大序列号;
快速重传状态标记为假;并且
载荷包携带有效数据;
满足以下条件的载荷包为超时重传状态的包:
重复确认包的数量等于0;
最近时刻收到的确认包不携带SACK字段;
载荷包的序列号小于或等于已发出载荷包的最大序列号;
载荷包的序列号等于之前收到确认包的最大确认号;
快速重传状态标记为假;并且
载荷包携带有效数据。
26.根据权利要求19至25中任一项所述的装置,其特征在于,所述处理器还用于:
对所述多个数据包的TCP头字段中的参数进行统计,得到特征值,所述特征值用于指示重复确认包的数量和已发出但未确认载荷包的数量的比值;
根据所述特征值,确定引发快速重传状态和/或超时重传状态的原因是丢包或是乱序。
27.根据权利要求26所述的装置,其特征在于,所述处理器具体用于:
当所述特征值与1的差值的绝对值小于或等于第一阈值时,确定引发快速重传状态和/或超时重传状态的原因是丢包;
当所述特征值与0的差值的绝对值小于或等于第二阈值时,确定引发快速重传状态和/或超时重传状态的原因是乱序。
28.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行权利要求1至9中任一项所述的方法。
CN201810886264.XA 2018-08-06 2018-08-06 识别传输控制协议状态的方法和装置 Active CN109167734B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810886264.XA CN109167734B (zh) 2018-08-06 2018-08-06 识别传输控制协议状态的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810886264.XA CN109167734B (zh) 2018-08-06 2018-08-06 识别传输控制协议状态的方法和装置

Publications (2)

Publication Number Publication Date
CN109167734A true CN109167734A (zh) 2019-01-08
CN109167734B CN109167734B (zh) 2020-12-01

Family

ID=64895043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810886264.XA Active CN109167734B (zh) 2018-08-06 2018-08-06 识别传输控制协议状态的方法和装置

Country Status (1)

Country Link
CN (1) CN109167734B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110896368A (zh) * 2019-11-01 2020-03-20 咪咕文化科技有限公司 网络质量监控方法及装置
CN111163491A (zh) * 2020-01-03 2020-05-15 重庆邮电大学 一种高信道利用率的细粒度统计优先多址接入方法
CN115378832A (zh) * 2022-07-29 2022-11-22 北京奇艺世纪科技有限公司 拥塞检测方法、装置及流媒体传输系统、电子设备和介质
US11956151B2 (en) 2021-12-22 2024-04-09 Industrial Technology Research Institute Transmission control protocol flow control method and device for performing the method

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769520A (zh) * 2012-07-17 2012-11-07 西安电子科技大学 基于sctp协议的无线网络拥塞控制方法
CN104954279A (zh) * 2014-03-28 2015-09-30 华为技术有限公司 一种传输控制方法、装置及系统
CN105207949A (zh) * 2014-06-12 2015-12-30 中国移动通信集团内蒙古有限公司 一种tcp优化方法和系统、sp服务器
US20180219787A1 (en) * 2017-01-27 2018-08-02 Verizon Patent And Licensing Inc. Congestion avoidance over a tcp flow that involves one or more devices using aqm, based on one or more tcp state conditions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102769520A (zh) * 2012-07-17 2012-11-07 西安电子科技大学 基于sctp协议的无线网络拥塞控制方法
CN104954279A (zh) * 2014-03-28 2015-09-30 华为技术有限公司 一种传输控制方法、装置及系统
CN105207949A (zh) * 2014-06-12 2015-12-30 中国移动通信集团内蒙古有限公司 一种tcp优化方法和系统、sp服务器
US20180219787A1 (en) * 2017-01-27 2018-08-02 Verizon Patent And Licensing Inc. Congestion avoidance over a tcp flow that involves one or more devices using aqm, based on one or more tcp state conditions

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B. QURESHI等: "Progress in various TCP variants", 《2009 2ND INTERNATIONAL CONFERENCE ON COMPUTER, CONTROL AND COMMUNICATION》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110896368A (zh) * 2019-11-01 2020-03-20 咪咕文化科技有限公司 网络质量监控方法及装置
CN111163491A (zh) * 2020-01-03 2020-05-15 重庆邮电大学 一种高信道利用率的细粒度统计优先多址接入方法
CN111163491B (zh) * 2020-01-03 2022-06-10 重庆邮电大学 一种高信道利用率的细粒度统计优先多址接入方法
US11956151B2 (en) 2021-12-22 2024-04-09 Industrial Technology Research Institute Transmission control protocol flow control method and device for performing the method
CN115378832A (zh) * 2022-07-29 2022-11-22 北京奇艺世纪科技有限公司 拥塞检测方法、装置及流媒体传输系统、电子设备和介质
CN115378832B (zh) * 2022-07-29 2024-03-26 北京奇艺世纪科技有限公司 拥塞检测方法、装置及流媒体传输系统、电子设备和介质

Also Published As

Publication number Publication date
CN109167734B (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN109167734A (zh) 识别传输控制协议状态的方法和装置
US20190110211A1 (en) Automated network diagnostic techniques
EP1382219B1 (en) Method and device for robust real-time estimation of bottleneck bandwidth
US20210203578A1 (en) Round-Trip Time Evaluation System, Method, and Apparatus
US9246822B2 (en) Methods and apparatus for using a layered gear to analyze and manage real-time network quality of service transmission for mobile devices on public networks
US20160212031A1 (en) Determining link conditions of a client lan/wan from measurement point to client devices and application servers of interest
CN105141542B (zh) 基于tcp通信协议的拥塞窗口的控制算法和系统
EP1876758A2 (en) Peer-to-Peer method of quality of service (QoS) probing and analysis and infrastructure employing same
KR102378290B1 (ko) 패킷 손실 허용 송신 제어 프로토콜 혼잡 제어
CN106464598A (zh) 用于基于传输速率梯度的网络拥塞控制的方法和装置
US8665745B2 (en) Method and device for determining a jitter buffer level
WO2021133767A1 (en) System and method for estimation of quality of experience (qoe) for video streaming
WO2017133014A1 (zh) Tcp传输流中基于接收端的网络性能检测方法及系统
JP2018504050A (ja) トラフィックフローの監視
CN105591843B (zh) Tcp传输流中基于接收端的网络性能检测方法及系统
US8593947B2 (en) Congestion detection method, congestion detection apparatus, and recording medium storing congestion detection program recorded thereon
CN105721333B (zh) 一种数据传输装置及方法
Sundaresan et al. TCP congestion signatures
EP2690821A1 (en) Method And Apparatus For Packet Buffering Measurement
CN101414938B (zh) 自适应的数字家庭网络可用带宽实时检测方法
JP7003467B2 (ja) パケット分類プログラム、パケット分類方法およびパケット分類装置
CN108092840B (zh) 网络速率分段处理方法及装置
Kato et al. Comparing TCP Congestion Control Algorithms Based on Passively Collected Packet Traces
CN105611406A (zh) 一种接入网服务商监测用户到视频服务器延迟特性方法
Pötsch Future Mobile Transport Protocols

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