一种带宽计算方法及装置与流程

文档序号:14914487发布日期:2018-07-11 00:20阅读:110来源:国知局

本发明涉及带宽测量技术领域,特别是涉及一种带宽计算方法及装置。



背景技术:

目前主流的点播视频网站所应用的客户端-服务器的网络架构中,客户端下载视频文件使用的网络层协议,超过95%都是TCP协议。随着技术的发展,各种网络设备的缓存越来越大,因此对于TCP协议而言,服务器端发送数据的带宽和客户端接收数据的带宽会出现不一致的情况。例如,服务器端在0.5秒内发送了1M的数据,但是客户端接收这些数据花了1秒,在延迟的0.5秒的时间里,数据被缓存在网络设备中。这种情况下,就等于服务器端发送数据过快,然而客户端没有快速接收的能力。

现有的带宽计算方法,在计算服务器端的发送带宽或客户端的接收带宽时,是将预设时间内、服务器与客户端之间的通信数据量与所述预设时间求商实现,可见,现有的带宽计算方法只能计算出服务器和客户端两者之间的最小带宽,而无法将服务器端的发送带宽和客户端的接收带宽分开计算,因此要找到下载速度的瓶颈较为困难。



技术实现要素:

为解决上述技术问题,本发明实施例提供了一种带宽计算方法及装置,以实现将服务器端的发送带宽和客户端的接收带宽分开计算,技术方案如下:

一种带宽计算方法,应用于交换机,包括:

获取预设时间内所述交换机转发的目标TCP包,所述目标TCP包包括ACK包和DATA包;

将具有相同元组的目标TCP包划分为同一个连接;

从所述连接中筛选出符合预设条件的连接作为目标连接;

从所述目标连接中获取具有ACK包的连接作为第一目标连接,并依据所述第一目标连接中的ACK包计算所述第一目标连接的时间粒度;

从所述目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉所述第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,所述第一目标连接与所述第二目标连接属于同一组服务器和客户端;

计算每一所述目标窗口下的所述服务器端的的发送带宽,同时根据所述时间粒度计算每一所述目标窗口下的所述客户端的接收带宽;

根据每一所述目标窗口下的服务器端的发送带宽,计算所述至少一个目标窗口下的服务器端的平均发送带宽,以作为所述第二目标连接的服务器端的发送带宽,同时根据每一所述目标窗口下的客户端的接收带宽,计算所述至少一个目标窗口下的客户端的平均接收带宽,以作为所述第二目标连接的客户端的接收带宽。

优选地,还包括:

抓取所述预设时间内经过所述交换机的TCP包,所述TCP包包括控制包、ACK包和DATA包;

从所述TCP包中筛选出所述目标TCP包中的ACK包和DATA包。

优选地,依据所述第一目标连接中的ACK包计算所述第一目标连接的时间粒度,包括:

获取所述第一目标连接中、间隔预设抓取时间的第一ACK包和第二ACK包;

获取所述第一ACK包的unix时间戳和第二ACK包的unix时间戳,所述unix时间戳为所述交换机抓取所述目标TCP包的时间;

根据所述第一ACK包的unix时间戳、所述第二ACK包的unix时间戳、所述第一ACK包的TCP时间戳和所述第二ACK包的TCP时间戳,并利用第一计算公式,计算所述第一ACK包与所述第二ACK包的时间粒度;

判断是否已完成对所述第一目标连接中、间隔所述预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算;

若是,计算所有时间粒度的平均值;

根据所述平均值,利用第二计算公式计算所述第一目标连接的时间粒度;

若否,返回执行根据所述第一ACK包的unix时间戳、所述第二ACK包的unix时间戳、所述第一ACK包的TCP时间戳和所述第二ACK包的TCP时间戳,利用第一计算公式,计算所述第一ACK包与所述第二ACK包的时间粒度的步骤。

优选地,所述第二计算公式为:

其中,G为所述目标时间的时间粒度,所述为所有时间粒度的平均值,other为除区间(0.8,1.2)、(8,12)和(80,120)之外的所有区间数据。

优选地,依据时间窗口发送模式过滤掉所述第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,包括:

将所述第二目标连接中的DATA包按照unix时间戳排序;

在排列后的第二目标连接中,计算相邻的任意两个DATA包的时间间隔,所述时间间隔为所述任意两个DATA包的unix时间戳的差;

判断所述时间间隔是否大于时间间隔阈值;

若是,将所述两个数据分布划为不同的数据窗口中;

若否,将所述两个数据包划为同一数据窗口中;

舍弃数据窗口中DATA包数量小于预设数量阈值的数据窗口,以得到所述目标窗口。

优选地,计算每一所述目标窗口下的服务器端的发送带宽,同时根据所述时间粒度计算每一所述目标窗口下的客户端的接收带宽,包括:

通过第三计算公式计算所述服务器端的发送带宽;

所述第三计算公式为:

其中,Bsnd为服务器端的发送带宽,s为所述目标窗口中数据包的平均发送字节数,t1为所述目标窗口中第一数据包的unix时间戳,tk-1为所述目标窗口中第k-1个数据包的unix时间戳,s*(k-2)为tk-1-t1时间内服务器传输给客户端的DATA包的数据数量,k为正整数,且k≥2;

通过第四计算公式计算所述客户端的接收带宽;

所述第四计算公式为:

其中,

Brev为客户端的接收带宽,s为所述目标窗口中数据包的平均发送字节数,s*(k-2)为tk-1-t1时间内服务器传输给客户端的数据报的数据数量,TS2为所述目标窗口中的第一个ACK包中的携带的TCP时间戳,TSK为所述目标窗口中的第k个ACK包中携带的TCP时间戳,G为目标连接的时间粒度。

一种带宽计算装置,应用于交换机,包括:

第一获取单元,用于获取预设时间内所述交换机转发的目标TCP包,所述目标TCP包包括ACK包和DATA包;

分离单元,用于将具有相同元组的目标TCP包划分为同一个连接;

第一筛选单元,用于从所述连接中筛选出符合预设条件的连接作为目标连接;

第一计算单元,用于从所述目标连接中获取具有ACK包的连接作为第一目标连接,并依据所述第一目标连接中的ACK包计算所述第一目标连接的时间粒度;

第二筛选单元,对于从所述目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉所述第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,所述第一目标连接与所述第二目标连接属于同一组服务器和客户端;

第二计算单元,用于计算每一所述目标窗口下的所述服务器端的的发送带宽,同时根据所述时间粒度计算每一所述目标窗口下的所述客户端的接收带宽;

确定单元,用于根据每一所述目标窗口下的服务器端的发送带宽,计算所述至少一个目标窗口下的服务器端的平均发送带宽,以作为所述第二目标连接的服务器端的发送带宽,同时根据每一所述目标窗口下的客户端的接收带宽,计算所述至少一个目标窗口下的客户端的平均接收带宽,以作为所述第二目标连接的客户端的接收带宽。

优选地,还包括:

抓取单元,用于抓取所述预设时间内经过所述交换机的TCP包,所述TCP包包括控制包、ACK包和DATA包;

第三筛选单元,用于从所述TCP包中筛选出所述目标TCP包中的ACK包和DATA包。

优选地,所述第一计算单元,包括:

第二获取单元,用于获取所述第一目标连接中、间隔预设抓取时间的第一ACK包和第二ACK包;

第三获取单元,用于获取所述第一ACK包的unix时间戳和第二ACK包的unix时间戳,所述unix时间戳为所述交换机抓取所述目标TCP包的时间;

第三计算单元,用于根据所述第一ACK包的unix时间戳、所述第二ACK包的unix时间戳、所述第一ACK包的TCP时间戳和所述第二ACK包的TCP时间戳,并利用第一计算公式,计算所述第一ACK包与所述第二ACK包的时间粒度;

第一判断单元,用于判断是否已完成对所述第一目标连接中、间隔所述预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算;

第四计算单元,用于第一判断单元确定未完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算时,计算所有时间粒度的平均值;

第五计算单元,用于根据所述平均值,利用第二计算公式计算所述第一目标连接的时间粒度;

执行单元,用于第一判断单元确定完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算时,返回执行根据所述第一ACK包的unix时间戳、所述第二ACK包的unix时间戳、所述第一ACK包的TCP时间戳和所述第二ACK包的TCP时间戳,利用第一计算公式,计算所述第一ACK包与所述第二ACK包的时间粒度的步骤。

优选地,所述第二计算公式为:

其中,G为所述目标时间的时间粒度,所述为所有时间粒度的平均值,other为除区间(0.8,1.2)、(8,12)和(80,120)之外的所有区间数据。

优选地,所述第二筛选单元,包括:

排序单元,用于将所述第二目标连接中的DATA包按照unix时间戳排序;

第六计算单元,用于在排列后的第二目标连接中,计算相邻的任意两个DATA包的时间间隔,所述时间间隔为所述任意两个DATA包的unix时间戳的差;

第二判断单元,用于判断所述时间间隔是否大于时间间隔阈值;

第一划分单元,用于当所述第二判断单元确定所述时间间隔大于时间间隔阈值时,将所述两个数据分布划为不同的数据窗口中;

第二划分单元,用于当所述第二判断单元确定所述时间间隔不大于时间间隔阈值时,将所述两个数据包划为同一数据窗口中;

舍弃单元,用于舍弃数据窗口中DATA包数量小于预设数量阈值的数据窗口,以得到所述目标窗口。

优选地,所述第二计算单元,包括:

第一计算子单元,用于通过第三计算公式计算所述服务器端的发送带宽;

所述第三计算公式为:

其中,Bsnd为服务器端的发送带宽,s为所述目标窗口中数据包的平均发送字节数,t1为所述目标窗口中第一数据包的unix时间戳,tk-1为所述目标窗口中第k-1个数据包的unix时间戳,s*(k-2)为tk-1-t1时间内服务器传输给客户端的DATA包的数据数量,k为正整数,且k≥2;

第二计算子单元,用于通过第四计算公式计算所述客户端的接收带宽;

所述第四计算公式为:

其中,

Brev为客户端的接收带宽,s为所述目标窗口中数据包的平均发送字节数,s*(k-2)为tk-1-t1时间内服务器传输给客户端的数据报的数据数量,TS2为所述目标窗口中的第一个ACK包中的携带的TCP时间戳,TSK为所述目标窗口中的第k个ACK包中携带的TCP时间戳,G为目标连接的时间粒度。

本发明实施例提供的技术方案,交换机获取预设时间内经过交换机的目标TCP包,将具有相同元组的目标TCP包分离为同一个连接,从连接中筛选出符合预设条件的连接作为目标连接,并从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度,从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽,根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。可见,相对于现有技术,本发明实施例能够分别计算服务器端的发送带宽与客户端的接收带宽。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例所提供的一种带宽计算方法的一种流程示意图;

图2为本发明实施例所提供的一种带宽计算方法的另一种流程示意图;

图3为本发明实施例所提供的一种带宽计算装置的一种结构示意图;

图4为本发明实施例所提供的一种带宽计算装置的另一种结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供的带宽计算方法应用于支持IPFIX(IP Flow InformationExport,IP数据流信息输出)协议功能的交换机。

请参阅图1,图1为本发明实施例提供的一种带宽计算方法的一种实现流程图,该方法包括:

步骤S101、获取预设时间内经过交换机的目标TCP包。

目标TCP包包括ACK包和数据包。

优选地,在获取目标TCP包前,还包括:

抓取预设时间内经过交换机的TCP包,TCP包包括控制包、ACK包和DATA包;

从TCP包中筛选出目标TCP包中的ACK包和DATA包。

实际应用中,由于以秒为时间单元抓取TCP包时,抓取的TCP包数量较少,不利于后续计算,而以天为时间单位抓取TCP包时,抓取的数据量过大,计算耗时较长,因此,本实施例中以小时为单元抓取TCP包,如预设时间可以取1小时。

步骤S102、将具有相同元组的目标TCP包分离为同一个连接。

其中,相同元组可以指相同四元组,具体地,该四元组为源IP地址、目的IP地址、源端口号和目的端口号。

根据实际应用需要,相同元组还可以为相同五元组,相同七元组,本实施例不作具体限定。

步骤S103、从连接中筛选出符合预设条件的连接作为目标连接;

由于本发明实现的是对带宽的被动测量,所以需要对步骤S102中分离出的连接进行筛选以得到目标连接,用于筛选的预设条件可以为:

(a)保留数据流的方向由服务器端至客户端的连接;

数据流的方向由服务器端至客户端指的是客户端获得数据,服务器端发送数据;

数据流的方向可以通过数据包中携带的源地址与目的地址区分,具体地,源地址为服务器地址、目的地址为客户端地址的,表示该数据包由服务器端发送至客户端,源地址为客户端地址、目的地址为服务器地址的,表示该数据包由客户端至服务器。

(b)整个连接持续时间足够长(如,大于5秒);

(c)该连接包含预设个数的目标TCP包(如,100个包以上);

(d)该连接的网络传输丢包率低于预设丢包阈值(如,低于1%);

(e)该连接使用了timestamp选项,此选项为TCP一种扩展选项,为的是解决TCP重传可能带来的包混乱现象;实际应用中,使用linux系统或ios系统的客户端发起的TCP连接使用该选项,因此,本发明适用于客户端使用linux系统或ios系统的端发起的TCP连接。

步骤S104、从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度。

计算时间粒度需要利用ACK包,所以计算之前需要从目标连接中筛选出具有ACK包的连接作为第一目标连接。

步骤S105、从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,第一目标连接与第二目标连接属于同一组服务器和客户端。

在获得目标窗口时,需要利用DATA包,所以获得之前需要从目标连接中筛选出具有DATA包的连接作为第二目标连接。

其中,时间窗口发送模式指的是那将相邻DATA包的时间间隔与预设时间间隔阈值做比较,从而过滤掉不满足预设时间间隔的DATA包。

其中,第一目标连接与第二目标连接属于同一组服务器和客户端指的是第一目标连接和第二目标连接中的源IP地址和目的IP地址相同。

步骤S106、计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽。

步骤S107、根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。

实际应用中,计算每一目标窗口下的服务器端的发送带宽与客户端的接收带宽后,还可以计算至少一个目标窗口下的服务器端的平均发送带宽和客户端的接收带宽,并将服务器端的平均发送带宽作为第二目标连接的服务器端的发送带宽,将客户度的平均接收带宽,作为第二目标连接的客户端的接收带宽。

本发明实施例提供的技术方案,交换机获取预设时间内经过交换机的目标TCP包,将具有相同元组的目标TCP包分离为同一个连接,从连接中筛选出符合预设条件的连接作为目标连接,并从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度,从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽,根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。可见,相对于现有技术,本发明实施例能够分别计算服务器端的发送带宽与客户端的接收带宽。

请参阅图2,图2为本发明实施例提供的一种带宽计算方法的另一种实现流程图,该方法包括:

步骤S201、获取预设时间内经过交换机的目标TCP包。

目标TCP包包括ACK包和数据包。

步骤S202、将具有相同元组的目标TCP包划分为同一个连接。

步骤S203、从连接中筛选出符合预设条件的连接作为目标连接。

可选的,步骤S201-S203的执行过程与上述实施例提供的步骤S101-S103的执行过程相同,有关步骤S201-S203的详细过程,请参见上述对步骤S101-S103的描述,在此不做赘述。

步骤S204、获取第一目标连接中、间隔预设抓取时间的第一ACK包和第二ACK包。

unix时间戳为交换机抓取目标TCP包的时间。

实际应用中,预设抓取时间可以为3秒,间隔预设抓取时间指的是大于3秒。

步骤S205、获取第一ACK包的unix时间戳和第二ACK包的unix时间戳,unix时间戳为交换机抓取目标TCP包的时间。

步骤S206、根据第一ACK包的unix时间戳、第二ACK包的unix时间戳、第一ACK包的TCP时间戳和第二ACK包的TCP时间戳,并利用第一计算公式,计算第一ACK包与第二ACK包的时间粒度。

实际应用中,第一计算公式可以为:

其中,Gmn为第一ACK包与第二ACK包的时间粒度,tn为第一ACK包的unix时间戳,tm为第二ACK包的unix时间戳,TSn为第一ACK包的TCP时间戳,TS2为第二ACK包的TCP时间戳。

步骤S207、判断是否已完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算,若是,执行步骤S208,否则执行返回执行步骤S205。

步骤S208、计算所有时间粒度的平均值。

步骤S209、根据平均值,利用第二计算公式计算第一目标连接的时间粒度。

第二计算公式为:

其中,G为目标连接的时间粒度,为所有时间粒度的平均值。

步骤S210、将第二目标连接中的DATA包按照unix时间戳排序。

步骤S211、在排列后的第二目标连接中,计算相邻的任意两个DATA包的时间间隔,时间间隔为任意两个DATA包的unix时间戳的差。

步骤S212、判断时间间隔是否大于时间间隔阈值,若是,执行步骤S213,否则执行步骤S214。

步骤S213、将两个数据包划为不同的数据窗口中。

步骤S214、将两个数据包划为同一数据窗口中。

以下举例说明步骤S210-步骤S213的实施:

假设时间上相邻的数据包h和数据包h+1的时间间隔为0.01毫秒,数据包h+1和数据包h+2的时间间隔为0.02毫秒,数据包h+2和数据包h+3间隔为0.01毫秒,数据包h+3和数据包h+4为2毫秒,数据包h+4和数据包h+5之间为0.02毫秒,时间间隔阈值为0.1毫秒。

由于数据包h和数据包h+1、数据包h+1和数据包h+2、数据包h+2和数据包h+3的时间间隔都不大于时间间隔阈值,所以将数据包h,h+1,h+2,h+3划为一个数据窗口内的数据包;由于数据包h+3和数据包h+4的时间间隔大于时间间隔阈值,且数据包h+4和数据包h+5的时间间隔不大于时间间隔阈值,所以数据包h+4和数据包h+5为另一个数据窗口内的数据包。

步骤S215、舍弃数据窗口中DATA包数量小于预设数量阈值的数据窗口,以得到目标窗口。

将数据包划分到不同的数据窗口后,计算每个数据窗口内数据包的数量,并将数据包数量过少的数据窗口过滤掉。

另外,实际应用中,在过滤掉数据包数量过少的数据窗口后,还可以针对每个数据窗口,查看客户端的ACK包,以确定数据窗口内是否存在丢包,从而过滤掉存在丢包的数据窗口。例如,通常客户端连续收到两个数据包时,会向服务器端发送ACK包,针对数据窗口内的数据包进行匹配,若发现不能满足两个数据包与一个ACK包匹配,则说明该数据窗口内出现了丢包。

步骤S216、通过第三计算公式计算服务器端的发送带宽。

第三计算公式为:

其中,Bsnd为服务器端的发送带宽,s为目标窗口中数据包的平均发送字节数,t1为目标窗口中第一数据包的unix时间戳,tk-1为目标窗口中最后一个数据包的unix时间戳,s*(k-2)为tk-1-t1这段时间内服务器传输给客户端的数据报的数据数量。

步骤S217、通过第四计算公式计算客户端的接收带宽;

第四计算公式为:

其中,Brev为发送端的接收带宽,s为目标窗口中数据包的平均发送字节数,s*(k-2)为tk-1-t1这段时间内服务器传输给客户端的数据报的数据数量,TS2为目标窗口中的第一个ACK包中的携带的TCP时间戳,TSK为目标窗口中的最后一个ACK包中携带的TCP时间戳。

步骤S218、将所有目标窗口下的服务器端的发送带宽的均值作为每一目标连接下服务器端的发送带宽,将所有目标窗口下的客户端的接收带宽的均值作为每一目标连接下客户端的接收带宽。

本发明实施例提供的技术方案,交换机获取预设时间内经过交换机的目标TCP包,将具有相同元组的目标TCP包分离为同一个连接,从连接中筛选出符合预设条件的连接作为目标连接,并从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度,从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽,根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。可见,相对于现有技术,本发明实施例能够分别计算服务器端的发送带宽与客户端的接收带宽。另外,本实施例通过计算相邻的任意两个DATA包的时间间隔过滤掉目标连接中存在丢包的阶段,从而可以使得计算出的发送带宽和接收带宽更准确。

请参阅图3,图3为本发明实施例提供的带宽计算装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图1对应的实施例中方法的执行过程,该装置包括:

第一获取单元301,用于获取预设时间内交换机转发的目标TCP包,目标TCP包包括ACK包和DATA包;

分离单元302,用于将具有相同元组的目标TCP包划分为同一个连接;

第一筛选单元303,用于从连接中筛选出符合预设条件的连接作为目标连接;

第一计算单元304,用于从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度;

第二筛选单元305,用于对于从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,第一目标连接与第二目标连接属于同一组服务器和客户端;

第二计算单元306,用于计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽;

确定单元307,用于根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。

本发明实施例提供的技术方案,交换机获取预设时间内经过交换机的目标TCP包,将具有相同元组的目标TCP包分离为同一个连接,从连接中筛选出符合预设条件的连接作为目标连接,并从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度,从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽,根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。可见,相对于现有技术,本发明实施例能够分别计算服务器端的发送带宽与客户端的接收带宽。

请参阅图4,图4为本发明实施例提供的带宽计算装置的一种结构示意图,该装置结构示意图中的各单元的工作过程参照图2对应的实施例中方法的执行过程,该装置包括:

第一获取单元401,用于获取预设时间内交换机转发的目标TCP包,目标TCP包包括ACK包和DATA包;

优选地,还包括:

抓取单元,用于抓取预设时间内经过交换机的TCP包,TCP包包括控制包、ACK包和DATA包;

第三筛选单元,用于从TCP包中筛选出目标TCP包中的ACK包和DATA包。

分离单元402,用于将具有相同元组的目标TCP包划分为同一个连接;

第一筛选单元403,用于从连接中筛选出符合预设条件的连接作为目标连接;

第二获取单元404,用于获取第一目标连接中、间隔预设抓取时间的第一ACK包和第二ACK包;

第三获取单元405,用于获取第一ACK包的unix时间戳和第二ACK包的unix时间戳,unix时间戳为交换机抓取目标TCP包的时间;

第三计算单元406,用于根据第一ACK包的unix时间戳、第二ACK包的unix时间戳、第一ACK包的TCP时间戳和第二ACK包的TCP时间戳,并利用第一计算公式,计算第一ACK包与第二ACK包的时间粒度;

第一判断单元407,用于判断是否已完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算;

第四计算单元408,用于第一判断单元确定未完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算时,计算所有时间粒度的平均值;

第五计算单元409,用于根据平均值,利用第二计算公式计算第一目标连接的时间粒度;

优选地,第二计算公式为:

其中,G为目标时间的时间粒度,为所有时间粒度的平均值。

执行单元410,用于第一判断单元确定完成对第一目标连接中、间隔预设抓取时间的所有第一ACK包与第二ACK包的时间粒度的计算时,返回执行根据第一ACK包的unix时间戳、第二ACK包的unix时间戳、第一ACK包的TCP时间戳和第二ACK包的TCP时间戳,利用第一计算公式,计算第一ACK包与第二ACK包的时间粒度的步骤。

排序单元411,用于将第二目标连接中的DATA包按照unix时间戳排序;

第六计算单元412,用于在排列后的第二目标连接中,计算相邻的任意两个DATA包的时间间隔,时间间隔为任意两个DATA包的unix时间戳的差;

第二判断单元413,用于判断时间间隔是否大于时间间隔阈值;

第一划分单元414,用于当第二判断单元确定时间间隔大于时间间隔阈值时,将两个数据分布划为不同的数据窗口中;

第二划分单元415,用于当第二判断单元确定时间间隔不大于时间间隔阈值时,将两个数据包划为同一数据窗口中;

舍弃单元416,用于舍弃数据窗口中DATA包数量小于预设数量阈值的数据窗口,以得到目标窗口。

第一计算子单元417,用于通过第三计算公式计算服务器端的发送带宽;

第三计算公式为:

其中,Bsnd为服务器端的发送带宽,s为目标窗口中数据包的平均发送字节数,t1为目标窗口中第一数据包的unix时间戳,tk-1为目标窗口中第k-1个数据包的unix时间戳,s*(k-2)为tk-1-t1时间内服务器传输给客户端的DATA包的数据数量,k为正整数,且k≥2;

第二计算子单元418,用于通过第四计算公式计算客户端的接收带宽;

第四计算公式为:

其中,

Brev为客户端的接收带宽,s为目标窗口中数据包的平均发送字节数,s*(k-2)为tk-1-t1时间内服务器传输给客户端的数据报的数据数量,TS2为目标窗口中的第一个ACK包中的携带的TCP时间戳,TSK为目标窗口中的第k个ACK包中携带的TCP时间戳,G为目标连接的时间粒度。

确定单元419,用于根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。

本发明实施例提供的技术方案,交换机获取预设时间内经过交换机的目标TCP包,将具有相同元组的目标TCP包分离为同一个连接,从连接中筛选出符合预设条件的连接作为目标连接,并从目标连接中获取具有ACK包的连接作为第一目标连接,并依据第一目标连接中的ACK包计算第一目标连接的时间粒度,从目标连接中获取具有DATA包的连接作为第二目标连接,并依据时间窗口发送模式过滤掉第二目标连接中存在丢包的数据窗口,得到至少一个目标窗口,计算每一目标窗口下的服务器端的的发送带宽,同时根据时间粒度计算每一目标窗口下的客户端的接收带宽,根据每一目标窗口下的服务器端的发送带宽,计算至少一个目标窗口下的服务器端的平均发送带宽,以作为第二目标连接的服务器端的发送带宽,同时根据每一目标窗口下的客户端的接收带宽,计算至少一个目标窗口下的客户端的平均接收带宽,以作为第二目标连接的客户端的接收带宽。可见,相对于现有技术,本发明实施例能够分别计算服务器端的发送带宽与客户端的接收带宽。另外,本实施例通过计算相邻的任意两个DATA包的时间间隔过滤掉目标连接中存在丢包的阶段,从而可以使得计算出的发送带宽和接收带宽更准确。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

对于装置或系统实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,在没有超过本发明的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本发明的目的。例如,所述单元或子单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或多个子单元结合一起。另外,多个单元可以或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

另外,所描述系统,装置和方法以及不同实施例的示意图,在不超出本发明的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1