背景技术
随着计算机技术的发展,因特网(Internet)逐渐成为人们获取信息、相互交流的重要平台之一。因特网在全球范围的急剧膨胀、以及因特网中实时业务和多媒体业务等新业务的快速发展,导致了因特网网络性能的下降。目前,影响网络性能的主要原因有链路带宽、链路瓶颈、应用与协议的设计和主机***等因素,其中,链路带宽是最重要的网络资源,也是传输路径性能的主要决定因素之一,并且与网络瓶颈、整体性能分析、容量规划等密切相关,因此,精确地测量带宽就成为因特网研究中的一个重要问题。
在网络带宽测量领域中,按不同的测度,网络带宽测量可分为链路带宽、路径带宽和可用带宽等不同方面的测量。可用带宽在工程中是网络路由、流量工程、QoS控制中的一个关键参数,相比于瓶颈带宽更具有实际意义。
链路带宽指一条链路的最大带宽、即该条链路的最大数据传输速率,由链路的物理性质决定;链路可用带宽指一条链路当前未被使用的带宽;路径带宽为当前路径上的所有链路带宽的最小值,路径带宽也被称为端到端路径带宽;路径可用带宽为当前路径上的所有链路可用带宽的最小值,路径可用带宽也被称为端到端路径可用带宽。在当前路径上的所有链路中,链路可用带宽最小的链路被称为该路径的紧迫链路,链路带宽最小的链路被称为该路径的瓶颈链路。
图1所示为端到端带宽示意图,发送端和接收端之间的路径由三条链路L1、L2和L3组成,其中,C1、C2、C3分别为链路L1、L2、L3的链路带宽;阴影部分表示当前链路已经使用的带宽,则A1、A2、A3分别为链路L1、L2、L3未被使用的带宽、即链路可用带宽。从图中可以看出C1<C2<C3、即链路L1的链路带宽最小,决定了发送端到接收端的路径带宽,则链路L1是发送端和接收端之间的瓶颈链路;另外,A3<A1<A2、即链路L3链路可用带宽最小,决定了发送端到接收端的路径可用带宽,则链路L3为该路径的紧迫链路。
现有的带宽测量方法多是基于时间戳的包队列算法,主要测量模型有探测间隔模型(PGM,Packet Gap Model)和探测速率模型(PRM,Packet Rate Model)。其中,基于PGM模型的算法主要是分析探测包队列的包间隔变化,根据变化趋势来确定带宽的估计值,也被称为基于时间戳的带宽测量方法;基于PRM模型的算法主要是在发送端以一定的速率发送探测包队列,根据接收端接收探测包队列的速率,动态调整探测包队列的发送速率,从而确定一个匹配的临界速率来估算待测带宽。
但是,现有的基于PGM和PRM的带宽测量方法主要存在以下缺点:
1.上述两种测量方法一般需要被动测量端的配合工作,也就是说,被动测量端需要根据探测包队列的一些信息进行相应的计算,并将这些计算信息返回给主动测量端,两测量端需要配合工作才能测试出链路带宽。这种情况下,需要被动测量端采取安装相应的测量程序等辅助措施,这样降低了测量方法的实用性和灵活性。
2.上述两种测量方法计算流程复杂,特别是基于PGM的带宽测量方法,对于定时精度等要求比较严格,计算的复杂度较高。
发明内容
有鉴于此,本发明的主要目的在于提供一种利用混合报文测量可用带宽的方法和装置,能够降低带宽测量的复杂度。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种利用混合报文测量可用带宽的方法,该方法包括:
主动测量端发送网际控制报文协议ICMP报文给被动测量端,所述主动测量端统计到被动测量端的网络正常ICMP报文丢包率;
主动测量端发送混合报文给所述被动测量端,主动测量端统计到被动测量端的所述混合报文的ICMP报文平均丢包率;
主动测量端判定所述ICMP报文平均丢包率与网络正常ICMP报文丢包率之差大于预设的丢包率阈值时,统计所述被动测量端接收混合报文的平均速率,作为主动测量端到被动测量端的可用带宽;
所述主动测量端判定所述ICMP报文平均丢包率与所述网络正常ICMP报文丢包率之差小于等于预设的丢包率阈值时,该方法还包括:所述主动测量端重新确定所述混合报文的发送速率,具体为:以所述混合报文的第一次发送速率为基础,采用线性提高、或者指数倍提高的方式增加所述发送速率。
该方法进一步包括:所述主动测量端以预设的初始发送速率发送ICMP报文给被动测量端,所述被动测量端接收到所述ICMP报文后,将所述ICMP报文返回给所述主动测量端,所述主动测量端依据自身发送的ICMP报文和被动测量端返回的ICMP报文,统计所述网络正常ICMP报文丢包率。
其中,所述主动测量端发送混合报文给所述被动测量端之前,该方法还包括:所述主动测量端确定所述混合报文的发送速率;
相应的,确定所述混合报文的发送速率,具体为:
当所述主动测量端第一次向所述被动测量端发送所述混合报文时,所述混合报文的第一次发送速率为所述预设的初始发送速率、或者为所述主动测量端到被动测量端之间瓶颈链路的链路带宽。
所述主动测量端发送的混合报文为n组混合报文,且所述混合报文包括所述ICMP报文和用户数据报文协议UDP报文,其中n为大于等于1的整数。
该方法还包括:所述主动测量端将所述UDP报文的目的端口设置为错误的目的端口;相应的,所述被动测量端接收到所述混合报文后,依据所述错误的目的端口将所述UDP报文丢弃,并将所述混合报文中的ICMP报文返回给所述主动测量端。
所述主动测量端统计所述ICMP报文平均丢包率,具体为:所述主动测量端依据自身发送的n组混合报文、和被动测量端返回的ICMP报文,统计所述n组中每组混合报文的ICMP报文丢包率,并对所述n组混合报文的ICMP报文丢包率进行平均,得到所述ICMP报文平均丢包率。
所述主动测量端统计所述被动测量端接收所述混合报文的平均速率,具体为:所述主动测量端依据自身发送的n组混合报文、和被动测量端返回的ICMP报文,统计所述被动测量端接收所述n组中每组混合报文的速率,并对所述被动测量端接收所述n组混合报文的速率进行平均,得到所述被动测量端接收所述混合报文的平均速率。
本发明还提供了一种利用混合报文测量可用带宽的装置,该装置包括:主动测量端和被动测量端,其中,
所述主动测量端,用于发送ICMP报文给所述被动测量端,并统计到所述被动测量端的网络正常ICMP报文丢包率;还用于发送混合报文给所述被动测量端,并统计到所述被动测量端的所述ICMP报文平均丢包率,并在判定所述ICMP报文平均丢包率与所述网络正常ICMP报文丢包率之差大于预设的丢包率阈值时,统计所述被动测量端接收所述混合报文的平均速率;
所述被动测量端,用于接收所述ICMP报文和所述混合报文;
所述主动测量端判定所述ICMP报文平均丢包率与所述网络正常ICMP报文丢包率之差小于等于预设的丢包率阈值时:所述主动测量端重新确定所述混合报文的发送速率,具体为:以所述混合报文的第一次发送速率为基础,采用线性提高、或者指数倍提高的方式增加所述发送速率。
其中,所述被动测量端还用于,在接收到所述主动测量端发送的ICMP报文时,返回所述ICMP报文给主动测量端;在接收到所述主动测量端发送的混合报文时,将所述混合报文中的UDP报文丢弃,并将混合报文中的ICMP报文返回给主动测量端。
本发明的带宽测量方案,由主动测量端发送ICMP报文给被动测量端,并统计到被动测量端的网络正常ICMP报文丢包率;由主动测量端发送混合报文给被动测量端,并统计到被动测量端的ICMP报文平均丢包率;当主动测量端判定ICMP报文平均丢包率与网络正常ICMP报文丢包率之差大于预设的丢包率阈值时,统计被动测量端接收混合报文的平均速率;该平均速率即为测量的路径可用带宽。另外,该方案中,主动测量端发送的混合报文中UDP报文的目的端口被设置为错误的,如此,被动测量端可以直接将UDP报文丢弃,只向主动测量端返回ICMP报文。由此可见,本发明中的带宽测量不需要被动测量端的配合工作,降低了测量工作的复杂度,同时本发明的测量方法的实用性和灵活性也比较高。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
本发明中的带宽测量主要是对端到端的路径可用带宽的测量,其中一端为主动测量端,则另外一端为被动测量端;主动测量端通过向被动测量端发送混合报文的方式,对两端的路径可用带宽进行测量。
本发明中混合报文指用户数据报文协议(UDP,User Datagram Protocol)报文和网际控制报文协议(ICMP,Internet Control Message Protocol)报文。
本发明利用混合报文测量可用带宽的流程如图2所示,包括:
步骤201,主动测量端发送ICMP报文给被动测量端,主动测量端统计到被动测量端的网络正常ICMP报文丢包率;
步骤202,主动测量端发送混合报文给被动测量端,主动测量端统计到被动测量端的混合报文中的ICMP报文平均丢包率;
步骤203,主动测量端判定ICMP报文平均丢包率与网络正常ICMP报文丢包率之差大于预设的丢包率阈值时,统计被动测量端接收混合报文的平均速率,作为主动测量端到被动测量端的可用带宽。
下面结合具体的实施里来说明本发明测量带宽的方法,如图3所示,包括:
步骤301,主动测量端测量网络正常ICMP报文丢包率。
主动测量端以预设的初始发送速率发送ICMP报文给被动测量端,被动测量端接收到ICMP报文后,将ICMP报文返回给主动测量端,主动测量端依据自身发送的ICMP报文和被动测量端返回的ICMP报文,统计主动测量端到被动测量端的网络正常ICMP报文丢包率,具体为:主动测量端以预设的初始发送速率V0向被动测量端发送ICMP报文,其中V0为一个较低的发送速率,当以V0为ICMP报文的发送速率时,需要确保不会造成网络的拥塞,在该前提下,主动测量端可以根据自身需要进行V0值的选择。
假设主动测量端向被动测量端一次发送了z(z为正整数)个ICMP报文,且被动测量端返回了z′(z′为正整数)个ICMP报文,则当前路径上网络正常ICMP报文丢包率为
步骤302,主动测量端确定当前混合报文的发送速率。
当主动测量端第一次向被动测量端发送混合报文,且在已知当前路径、即主动测量端到被动测量端的瓶颈链路的链路带宽时,该混合报文的第一次发送速率可以为该瓶颈链路的链路带宽;否则,可以为预设的初始发送速率V0。
如果混合报文的第一次发送速率不能满足路径可用带宽的测量,则需要提高混合报文的发送速率,具体的,根据需要可以采用线性提高和指数倍提高两种手段。其中,线性提高发送速率时,发送速率的增长速度较慢,导致测试时间相对较长,但是测试结果更为准确;指数倍提高发送速率时,发送速率的增长速度较快,测试收敛快,但是测试结果相对线性提高发送速率的误差较大。
步骤303,主动测量端以当前确定的发送速率向被动测量端发送混合报文;被动测量端向主动测量端返回ICMP报文。
本发明的混合报文中,UDP报文的数量较多,较佳地,可以设置连续发送k(k为正整数)个UDP报文后发送一个ICMP报文,如图4所示为一组混合报文的结构示意图,主动发送端以ICMP1报文作为该组混合报文的起始,然后连续发送k个UDP报文后发送一个ICMP2报文;再连续发送k个UDP报文后发送一个ICMP3报文,以此类推,以连续发送k个UDP报文后发送一个ICMPs报文作为该组混合报文的结束,可以将k个UDP报文+1个ICMP报文称为一组混合报文的一个发送间隔。由此可见两个连续ICMP报文的发送间隔很大,则被动测量端返回ICMP报文的间隔也很大。
该混合报文中共有s(s为正整数)个ICMP报文,且ICMP报文的编号是连续的,其中,ICMP1为第一个ICMP报文、ICMPs为最后一个ICMP报文;UDP报文的数量为(s-1)×k。
需要指出的是,本发明中主动测量端在发送UDP报文时,将UDP报文的目的端口设置为错误的目的端口号,如此被动测量端在接收到混合报文时,由于UDP报文的目的端口号错误,因此被动测量端直接将UDP报文丢弃,而只是接收ICMP报文,并向主动测量端返回ICMP报文。由于ICMP报文本身就具有测量端到端的数据传输功能(包括带宽测量),并且UDP报文由被动测量端主动丢弃,因此,被动测量端不需要对带宽测量作任何的配合工作,这样就大大地降低了带宽测量的复杂度。
上述UDP报文占混合报文的比例远远大于ICMP报文占混合报文的比例,如此,在上行(主动测量端向被动测量端发送混合报文)过程中,由于混合报文的数据量较大,致使ICMP报文的发送受网络状况的影响较大;在下行(被动测量端向主动测量端返回ICMP报文)过程中,由于UDP报文已经被丢弃,返回的只有ICMP报文,数据量大大减少,且ICMP报文之间的间隔很大,因此,ICMP报文受到网络状况的影响大大减小,这样有助于提高带宽测量的精度。
步骤304,主动测量端统计ICMP报文平均丢包率。
主动测量端依据自身发送的n组混合报文和被动测量端返回的ICMP报文,统计n组中每组混合报文的ICMP报文丢包率,并对这n组混合报文的ICMP报文丢包率进行平均,得到ICMP报文平均丢包率。
具体的,主动测量端需要统计在当前发送速率下的ICMP报文平均丢包率。仅以单组混合报文的ICMP报文丢包率为依据来测量路径可用带宽时,会产生较大的误差,因此,在进行一次路径可用带宽的测量时,上述步骤303中需要主动测量端一次发送n(n=1,2,3...)组混合报文,较佳地,n可以取大于1的整数,并分别计算每组混合报文的ICMP报文丢包率、即单组ICMP报文丢包率αn;然后取这n组ICMP报文丢包率的平均值,得到ICMP报文平均丢包率如此可以提高ICMP报文丢包率的计算精度。
下面对该步骤中单组ICMP报文丢包率αn的计算进行详细的说明。
当主动测量端接收到被动测量端返回的该组混合报文中的最后一个ICMP报文时,确认其接收到的ICMP报文是否有丢失;如果ICMP报文有丢失,则该步骤中单组ICMP报文丢包率αn的计算可以采用步骤301中丢包率的计算方法。
如果ICMP报文没有丢失,则采用下面的计算方法:
根据当前的路径情况可以确定该路径的极限带宽(最大带宽)B,此处可以采用现有技术,不再赘述;根据ICMP报文的发送时间,可以计算出第一个ICMP报文和最后一个ICMP报文的发送间隔为t;根据ICMP报文返回到主动测量端的时间,可以计算出第一个ICMP报文和最后一个ICMP报文返回到主动测量端的时间间隔为t+Δt,其中,
L为每组混合报文的长度,单位为bit;当某个ICMP报文返回到主动测量端的时间与与第一个ICMP报文返回到主动测量端的时间间隔大于t+Δt时,认为该ICMP报文为丢失的ICMP报文,如此可以得出该组混合报文中丢失的ICMP报文的个数m
n,则
步骤305,判断ICMP报文平均丢包率与网络正常ICMP报文丢包率之差是否大于预设的丢包率阈值,如果否,返回步骤302;如果是,执行步骤306。
丢包率阈值γ可以根据当前路径的物理特性进行设置。
ICMP报文平均丢包率为α、网络正常ICMP报文丢包率为β,一般情况下,由于混合报文的发送速率比网络正常时ICMP报文的发送速率要高,因此,α要大于β,如果α-β≤γ,则判定混合报文在当前发送速率下的ICMP报文平均丢包率与网络正常ICMP报文丢包率相当,说明混合报文当前的发送速率过低,以当前发送速率为依据无法测量出最精确的路径可用带宽,此时,主动测量端停止以当前的发送速率发送混合报文,需要提高混合报文的发送速率,返回执行步骤302,主动测量端重新确定混合报文的发送速率,以混合报文的第一次发送速率为基础,采用线性提高、或者指数倍提高的方式增加发送速率,然后执行步骤303,再次发送混合报文给被动测量端;需要指出的是,主动测量端再次发送混合报文时,可以选择增加混合报文的发送数量,如相比上一次多发送几组混合报文、和/或增加每组混合报文中的UDP报文和ICMP报文的数量。
如果α-β>γ,说明混合报文当前的发送速率不需要再提高,对于路径可用带宽的测量来说,已经是一个比较合理的发送速率,继续执行步骤306。
步骤306,主动测量端依据被动测量端返回的ICMP报文,统计被动测量端接收混合报文的平均速率,作为主动测量端到被动测量端的可用带宽。
主动测量端依据自身发送的n组混合报文和被动测量端返回的ICMP报文,统计被动测量端接收该n组中每组混合报文的速率,并对被动测量端接收该n组混合报文的速率进行平均,得到被动测量端接收混合报文的平均速率。
具体为,主动测量端需要测量在当前发送速率下,被动测量端接收n(n=1,2,3...)组混合报文的平均速率,具体的,主动测量端先计算出被动测量端接收单组混合报文的速率V
n,然后再统计这n组速率的平均值V,即被动测量端接收混合报文的平均速率
则该平均速率即为测量得到的当前路径、即主动测量端到被动测量端的可用带宽。
主动测量端统计被动测量端接收单组混合报文的速率是基于被动测量端返回的ICMP报文不受网络环境的影响这一前提条件的,但是,在实际的应用中,被动测量端返回的ICMP报文基本上都会受到网络环境的影响,因此,主动测量端需要对返回的ICMP报文进行样本过滤,选取受网络环境影响最小的ICMP报文作为依据来统计被动测量端接收单组混合报文的速率。
具体的本发明的ICMP报文样本过滤采用如下的方法:
1、假设主动测量端接收到被动测量端返回的ICMP报文的最小编号为i、最大编号为j,且最小编号ICMP报文和最大编号ICMP报文返回到主动测量端的时间分别为Ti和Tj,则ICMP报文返回到主动测量端的平均时间间隔为
2、设编号为x(i<x≤j)的ICMP报文返回到主动测量端的理想时间为Tx′=Ti+(x-i)×ΔT;
3、主动测量端选取Tx(编号为x的ICMP报文返回到主动测量端的时间)与Tx′最接近的ICMP报文、即返回到主动测量端的时间最接近理想时间的ICMP报文,作为依据来计算被动测量端接收该组混合报文的速率。
当然,ICMP报文的样本过滤还可以采用现有技术中其他的样本过滤算法。
假设该组混合报文中ICMP报文的长度为lICMP、UDP报文的长度为lUDP,单位为bit,则被动测量端接收该组混合报文的速率为: 其中k为一组混合报文的一个发送间隔中UDP报文的个数。
为了实现上述带宽测量方法,本发明还提供了一种测量装置,如图5所示,包括:主动测量端10和被动测量端20,其中,
主动测量端10,用于发送ICMP报文给被动测量端20,并统计到被动测量端20的网络正常ICMP报文丢包率;还用于发送混合报文给被动测量端20,并统计到被动测量端20的ICMP报文平均丢包率;还用于在判定ICMP报文平均丢包率与网络正常ICMP报文丢包率之差大于预设的丢包率阈值时,统计被动测量端20接收混合报文的平均速率;
被动测量端20,用于接收ICMP报文和混合报文。还用于在接收到主动测量端10发送的ICMP报文时,返回该ICMP报文给主动测量端10;在接收到主动测量端10发送的混合报文时,将该混合报文中的UDP报文丢弃,并将混合报文中的ICMP报文返回给主动测量端10。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。