一种TCP重传率计算方法、提高TCP KPI计算准确度的方法技术

技术编号:22446397 阅读:99 留言:0更新日期:2019-11-02 05:50
本发明专利技术揭示了一种TCP重传率计算方法、提高TCPKPI计算准确度的方法,通过上行TCP ACK应答报文包头的ACK字段,对下行TCP总包数和TCP重传包数进行较准,以提高TCP重传率指标的计算准确性。本发明专利技术提出的TCP重传率计算方法,可提高网络抓包有损情况下的TCP重传率计算的精确度,提高网络DPI设备对TCP流量监测的性能和效率。此外,本发明专利技术提出的提高TCPKPI计算准确度的方法,可提高TCP下载速率、TCP时延、TCP重传率指标计算精准度,提高网络DPI设备对TCP流量监测的性能和效率。

A method to calculate TCP retransmission rate and improve the accuracy of TCP KPI calculation

【技术实现步骤摘要】
一种TCP重传率计算方法、提高TCPKPI计算准确度的方法
本专利技术属于网络通讯
,涉及一种TCP流量性能监测方法,尤其涉及一种TCP重传率计算方法;同时,本专利技术还涉及一种提高TCPKPI计算准确度的方法。
技术介绍
近年来,随着互联网的快速发展,对IP网络和各种上层应用(如Web访问、电子商务、视频、游戏、即时通信等)业务质量的监测需求也日益增长。目前业界普遍采用在IP网络的各个关键网络节点位置(包括骨干层、汇聚层、接入层、用户侧)部署被动监测探针设备,来实现对IP网络流量和各种上层应用的业务质量监测。由于IP网络流量增长迅猛,在IP骨干网上广泛采用10G、40G甚至100G的光纤链路传输数据,在用户侧千兆家庭网关、百兆接口4K机顶盒也越来越普及。这种大流量的网络环境对监测设备和软件的底层抓包性能提出了极大的挑战,目前的商用万兆服务器网卡、家庭网关和机顶盒等终端设备的千兆/百兆网卡均无法保证在大流量情况下实现100%数据包捕获性能。由于大部分互联网应用主要采用TCP协议来传输数据,因此业界迫切需要找到一种能在网络抓包有损情况下,仍能较准确地计算各项TCPKPI指标(包括TCP下载速率、TCP时延、TCP重传率)的方法。高流量情况下IP网络抓包性能分析通常IP监测设备或软件的网络抓包分析模块使用libpcap接口从网口捕获IP数据包,libpcap采用“尽力而为”转发机制向抓包分析模块发送数据包。以OTT机顶盒中部署QoS软探针为例,机顶盒操作系统内核为了保障主要业务(如机顶盒视频播放)不受影响,到达网卡的数据包会优先发送给TCP/IP协议栈,经过重组后传递到机顶盒播放器。当开启libpcap抓包时,内核会通过中断通知QoS软探针抓包分析模块尽快将收到的数据复制传递走。在播放4K超高清视频等高流量的情况下,libpcap往往无法全量拷贝出网口数据包,从而造成QoS软探针所抓取的数据包大量缺失。以一个普通配置的安卓OTT机顶盒为例,在4K视频下载时,视频媒体流传输协议栈采用MPEG-TS/HTTP/TCP/IP/Ethernet情况下,对终端网卡抓包性能进行测试,抓包模块丢包严重程度与网口流量关系如图1所示。通过对抓包模块丢包的特性做进一步分析,发现一个规律:视频服务器发送给机顶盒的下行视频数据包,由于数据包长度较大(一般在1300-1500字节左右)、并且数量较多,因此丢包情况较为严重;相反机顶盒发送给视频服务器的上行TCPACK应答包文,由于数据包长度较小(一般在64-100字节左右),则不容易被抓包模块丢失。根据以上分析,在机顶盒这类网卡性能较低的设备上,通过传统网口抓包分析方法来计算TCPKPI指标,由于在高流量情况下抓包模块丢包严重,会导致所计算的TCP下载速率、TCP时延、TCP重传率等指标存在很大的误差。考虑到上行TCPACK小报文比下行TCP大数据包文的丢包概率要小很多,因此可以对传统TCPKPI指标计算方法进行了优化改进,来提高TCPKPI指标计算准确度,以达到合理的误差范围。传统的TCPKPI指标计算方法及缺陷1、TCP下载速率图2是一个TCP/IP报文的IP包头格式描述。由于IP包头的Totallength字段可用来标识当前IP包的总大小,因此可以通过统计这个字段的数值,来计算出来一段时间内的TCP下载速率(即这段时间内下载IP包的总大小除以该时间段长度)。这种算法的缺陷是:在网口抓包模块出现严重丢包的情景下,就无法准确统计出下行数据包的总字节数,从而导致TCP下载速率计算出现较大误差(误差率同丢包率严重程度基本成正比)。2、TCP时延图3是一个TCP连接建立过程中的三次握手流程示意图。一般情况下,根据TCP三次握手过程,TCP握手包SYN(时间戳t0)到握手响应包SYN,ACK(时间戳t1)记录了一次TCP包往返的过程,这个往返过程所消耗的时长即定义为TCP时延(TCP时延=t1-t0)。这种算法的缺陷是:在网络高流量情景下,TCP握手包SYN和TCP握手响应包SYN,ACK都很可能会被抓包模块丢失,从而造成无法计算出TCP时延指标。3、TCP重传率根据TCP协议规则,服务器向客户端发送数据包,若数据包在网络传输过程中出现丢失,客户端会向服务器发送重传请求,服务器会对丢失的数据包进行重传,这些重复发送的数据包称之为TCP重传包。TCP重传率的计算方法如下:TCP重传率=TCP重传包数/下行总包数这种算法的缺陷是:在网络高流量情景下,因为抓包模块对下行TCP报文的丢包严重,重复发送的数据包数和正常发送的下行包都可能未被捕获到,从而造成计算出的TCP重传率严重失真。有鉴于此,如今迫切需要设计一种新的IP网络性能监测优化方式,以便克服现有网络性能监测方式存在的上述缺陷。
技术实现思路
本专利技术所要解决的技术问题是:提供一种TCP重传率计算方法,可提高TCP重传率获取的精确度,提高网络DPI设备对TCP流量监测的性能和效率。此外,本专利技术还提供一种提高TCPKPI计算准确度的方法,可提高TCP下载速率、TCP时延、TCP重传率指标计算精准度,提高网络DPI设备对TCP流量监测的性能和效率。为解决上述技术问题,本专利技术采用如下技术方案:一种TCP重传率计算方法,所述方法包括:步骤C1、初始化TCP重传包数R=0,平均TCP下行包长B=0,初始ACK0;步骤C2、当捕获到一个新的下行TCP报文时,解析该报文的包头信息,获取其包长Bn和包序号SEQn,并累计下行总包数n;并计算下行TCP平均包长B=∑(B0,B1..Bn)/n;步骤C3、比对当前下行TCP报文包序号SEQn与上一个下行TCP报文的包序号SEQn-1:若SEQn<SEQn-1,即包序号发生回跳,则可判定包序号为SEQn的报文为TCP重传包,TCP重传包数R加1;同时记录每一个TCP重传包的ACK值,从而形成TCP重传包ACK_AGG集合;若SEQn>=SEQn-1,则不做任何处理;步骤C4、当捕获到一个新的上行TCP报文时,检查该报文的ACK字段,若发现该ACK数值与之前收到的上行报文的ACK数值相同,则记录该报文的ACK数值为ACK_up;步骤C5、对比ACK_up与TCP重传包ACK_AGG集合中的成员:若存在ACK_up与SEQ成员数值相同的情况,则不做任何处理;若不存在相同情况,则将TCP重传包R数量加1,并记录该ACK_up;步骤C6、计算TCP下行报文的总包数T:T=(ACK_up-ACK0)/B;步骤C7、计算TCP重传率=R/T*100%。作为本专利技术的一种优选方案,流程初始条件:设ACK上行包序号为0:ACK_up=0;设ACK下行包序号为0:ACK0=0;设时间戳为0:T=0。作为本专利技术的一种优选方案,通过上行TCPACK应答报文包头的ACK字段,对下行TCP总包数和TCP重传包数进行较准,以提高TCP重传率指标的计算准确性。一种提高TCPKPI计算准确度的方法,所述方法包括:TCP重传率计算步骤,具体包括:步骤C1、初始化TCP重传包数R=0,平均TCP下行包长B=0,初始ACK0;步骤C2、当捕获到一个新的下行TCP报文时,解析该报文的包头信息,获取其包长Bn和包序号SEQn,并累计下行本文档来自技高网
...

【技术保护点】
1.一种TCP重传率计算方法,其特征在于,所述方法包括:步骤C1、初始化TCP重传包数R=0,平均TCP下行包长B=0,初始ACK0;步骤C2、当捕获到一个新的下行TCP报文时,解析该报文的包头信息,获取其包长Bn和包序号SEQn,并累计下行总包数n;并计算下行TCP平均包长B=∑(B0,B1..Bn)/n;步骤C3、比对当前下行TCP报文包序号SEQn与上一个下行TCP报文的包序号SEQn‑1:若SEQn<SEQn‑1,即包序号发生回跳,则可判定包序号为SEQn的报文为TCP重传包,TCP重传包数R加1;同时记录每一个TCP重传包的ACK值,从而形成TCP重传包ACK_AGG集合;若SEQn>=SEQn‑1,则不做任何处理;步骤C4、当捕获到一个新的上行TCP报文时,检查该报文的ACK字段,若发现该ACK数值与之前收到的上行报文的ACK数值相同,则记录该报文的ACK数值为ACK_up;步骤C5、对比ACK_up与TCP重传包ACK_AGG集合中的成员:若存在ACK_up与SEQ成员数值相同的情况,则不做任何处理;若不存在相同情况,则将TCP重传包R数量加1,并记录该ACK_up;步骤C6、计算TCP下行报文的总包数T:T=(ACK_up‑ACK0)/B;步骤C7、计算TCP重传率=R/T*100%。...

【技术特征摘要】
1.一种TCP重传率计算方法,其特征在于,所述方法包括:步骤C1、初始化TCP重传包数R=0,平均TCP下行包长B=0,初始ACK0;步骤C2、当捕获到一个新的下行TCP报文时,解析该报文的包头信息,获取其包长Bn和包序号SEQn,并累计下行总包数n;并计算下行TCP平均包长B=∑(B0,B1..Bn)/n;步骤C3、比对当前下行TCP报文包序号SEQn与上一个下行TCP报文的包序号SEQn-1:若SEQn<SEQn-1,即包序号发生回跳,则可判定包序号为SEQn的报文为TCP重传包,TCP重传包数R加1;同时记录每一个TCP重传包的ACK值,从而形成TCP重传包ACK_AGG集合;若SEQn>=SEQn-1,则不做任何处理;步骤C4、当捕获到一个新的上行TCP报文时,检查该报文的ACK字段,若发现该ACK数值与之前收到的上行报文的ACK数值相同,则记录该报文的ACK数值为ACK_up;步骤C5、对比ACK_up与TCP重传包ACK_AGG集合中的成员:若存在ACK_up与SEQ成员数值相同的情况,则不做任何处理;若不存在相同情况,则将TCP重传包R数量加1,并记录该ACK_up;步骤C6、计算TCP下行报文的总包数T:T=(ACK_up-ACK0)/B;步骤C7、计算TCP重传率=R/T*100%。2.根据权利要求1所述的TCP重传率计算方法,其特征在于:流程初始条件:设ACK上行包序号为0:ACK_up=0;设ACK下行包序号为0:ACK0=0;设时间戳为0:T=0。3.根据权利要求1所述的TCP重传率计算方法,其特征在于:通过上行TCPACK应答报文包头的ACK字段,对下行TCP总包数和TCP重传包数进行较准,以提高TCP重传率指标的计算准确性。4.一种提高TCPKPI计算准确度的...

【专利技术属性】
技术研发人员:翁昌清刘东杨文昊吴雪波
申请(专利权)人:德科仕通信上海有限公司
类型:发明
国别省市:上海,31

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

1