高速网络环境下的网络带宽测试算法分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
来源:/network_security_zone/2008/0709/972743.shtml 1 引言
作为网络测试内容的一部分,精确的测量网络的带宽是非常有意义的。它不但可以帮助网络管理人员了解整个网络的状态,及时发现网络的瓶颈所在,更重要的是可以给网络设计人员,特别是网络协议的开发人员提供指导,采用新的算法来控制路由的选择,避免拥塞的发生,实现更好的拥塞控制策略。近年来国内外对于网络带宽的测试也做了大量的研究,得出了很多网络带宽测试的算法。这些算法中就测试的对象来讲,有的是测试网络的总容量(Capacity);有的是测试网络的可用带宽(Avaible Bandwidth);就测试的范围来讲有的
是测试每一条链路(Hop by Hop);有的是测试端到端(End to End)[3][4][5]。总的来讲,这些技术可以归为两类:单数据包(Single packet)技术和数据包对(Packet Pairs)技术。名字来源于在一次探测中所使用到的数据包的数量。随着网络速度的不断提高,目前这些测试算法都面临很多新的问题,特别是系统的软硬件资源对于测试所带来的影响。
2 基本算法
2.1 单数据包技术
单数据包技术通常也称为可变大小数据包技术(Variable Packet Size),因为它向网络发送大小变化的探测数据包并统计达到目的端的时延来测试网络的带宽。网络的时延由传播时延、发送时延、排队
时延三部分组成。这类算法典型的有pathchar、pchar、clink[3][5]等。其基本原理是基于低速的链路传输一个数据包所用的时间比高速的链路长。单数据包技术测试到的是网络的容量。如果一个大小已知的数据包经过一条链路的时间已知,则该链路的带宽就可以计算出来。计算必须考虑链路的传播时延,对于一定的传输媒介,传播时延是固定的。在不考虑网络的排队时延的情况下,传输时间(t)由数据包的大小(p),链路的带宽(b)还有一个固定的传播时延(l)
决定。
测试时,发送多个不同大小的数据包,当这些数据包在该链路的传输时间被测到后,通过公式(1)我们可以得出链路的带宽b,当然这些值都存在干扰,采用滤波的方法可以过滤出最接近于实际带宽值的数据。
2.2 数据包对技术
数据包对技术(Packet Pairs)利用数据包在传输过程中所形成的时间间隔(Dispersion Time)来测试带宽[1]。数据包对技术衍生
出了很多的算法和工具,如bprobe、PBM算法、nettimer、pathload[2][4]等。数据包对技术所测试的是链路的瓶颈带宽或是可用带宽,而不是单个数据包技术所测得的链路的容量。数据包对技术基本方法可以用图一来说明。
图中链路L1和L3的带宽是L2的两倍,L2是链路中的瓶颈。在没有干扰的情况下,由于L3带宽大于L2,因此两个数据包在经过
L2、L3之间的节点处会形成时间间隔t。这个间隔时间等于L2链路末端的节点在接收完第一个数据包之后,用在接收第二个数据包上的时间。这个值也实际上就等于第二个包的发送时延。发送时延与数据包大小成正比和链路的带宽成反比。
注意等式1和2之间的差别。单数据包技术在计算的时候必须考虑链路的传播时延,而数据包对技术并不需要考虑链路的传播时延,因为在没有干扰流量的情况下,对于所有的数据包而言,该值都是相等的。
数据包对技术受干扰流量的影响非常严重。如果干扰流量使得第一个数据包出现延迟,那么将会导致两个数据包之间的间隔时间被压缩,那么这样测试出来的链路带宽就会偏高。这就是时间压缩问题;如果干扰流量出现在第一个数据包和第二个数据包之间,那么将会出现排队的情况,则两个数据包之间的间隔将会被拉大,其结果使得测得的链路带宽偏小,这就是时间扩展问题。要采用数据包对技术获得精确的带宽测量值就必须把时间压缩和扩展过滤出来。
2.3 传输时间的计算
数据包传输时间的确定不仅需要两端的测试主机具有精确的时钟,同时还需要测试主机的时钟必须同步,另外在每一端的测试主机
上部署测试的软件也是必须的。因此,为了简化测试,通常多数算法是测试数据包在网络链路上的往返时间RTT(Round Trip Time)[5]。这样可以避免时钟同步问题,同时也减少了测试软件的部署。对于数据包的传输控制,两类技术大都利用了IP数据包报头中的生存时间域(TTL)[6]。该值在数据包每经过一个路由器节点的时候会被消耗,其值会减一。一旦TTL被减为0时,该数据包就会被丢弃并且该节点会发送一个ICMP的TTL失效错误信息给原数据发送端。如果把被测试的链路终点设置为数据包TTL失效,发送端就可以通过记录数据包的发送时间加上ICMP错误信息的返回时间从而找到数据包
到达链路终点并返回的时间RTT。
如下图所示:
测试数据包的TTL值被设置为2,在第一个节点TTL被减为1,第二个节点减为0。于是该主机就会发送一个ICMP错误信息返回给主机A。主机A即可获得数据包到达第二个路由器节点的RTT时间。
RTT的计算通用的方法都是测试主机在发送和接收到数据包时,通过申请系统中断,给每个数据包分配一时间戳(timestamp),发送时间戳与接收时间戳之差即是数据包在网络链路上的RTT传输时间。
3 高速网络环境下的带宽测试
从两类基本网络带宽测试技术的基本原理的分析可知,不论是单
数据包技术还是数据包对技术都没有考虑到网络中的软硬件资源,特别是测试的主机系统对于网络带宽测试所带来的影响。这些影响特别是在高速的网络环境中,将会对测试的结果带来巨大的偏差。
目前的网络带宽测试算法的提出都是基于低速网络的,它们中的大部分,例如数据包对技术,要求网络的带宽不能高于发送端主机的发送速率。举例来讲,如果发送端在1ms的时间中发送1000Byte 的数据包,那么被测网络的瓶颈带宽就不能超过8Mb/s,否则数据包之间将不可能产生时间间隔。随着网络技术的不断发展,目前的网络已经达到千兆的带宽,并向更高的传输速率发展。系统资源对于网络带宽测试的影响主要体现在1、网络中的元素2、测试主机对于数据包的处理速度3、测试主机系统I/O的带宽。
3.1网络中的元素
多数的网络带宽测试算法都需要通过ICMP返回信息确定数据包在网络中RTT时间。但是不同的路由设备具有不同的ICMP传播时延,如果链路中存在二层的交换设备,问题就更加的严重,因为二层的存储转发设备本身并不具有对IP数据包的控制机制,它不能递减TTL域的值,同时也不能产生ICMP的控制信息,因此使得在这样的条件下测试出的网络带宽必将是不可靠的,甚至不能测试出网络的带宽。另外,不同的路由选择有可能使得ICMP的返回路径与数据包的传输路径是非对称的,因此也就不能得出正确的结论。