IP网络性能的测量与分析

来源:互联网 发布:手机淘宝如何消除差评 编辑:程序博客网 时间:2024/04/29 12:09
摘要:本文介绍网络性能的测量、网络性能指标及相关的统计分析方法,对网络性能的测量和分析作了一个系统的总结;并对网络性能下一步的研究方向和研究重点进行了讨论。
1. 引言
随着网络新技术、新业务的飞速发展,网络用户也变得越来越成熟,他们希望得到更好的服务,希望更快的上网速度;另一方面,网络提供商也要尽力提供最好的服务给用户,以在激烈的竞争环境下生存。不可避免地,网络性能越来越成为人们关注的焦点,网络提供商和网络用户都需要了解自己提供或正在使用的网络,其性能如何,是不是与所期望的一致。
IP网络性能的测量与分析是一项复杂的工作。如何能得到准确、可靠的测量数据?又如何在大量的测量数据基础上,对网络的总体运行状态做一个恰当的评价?本文将对有关IP网络性能的测量、统计分析知识作一个系统的介绍。
2. 测量类型
要了解网络的运行状态,就需要对相关的对象进行测量。测量数据显示了网络性能及其变化;有了这些测量数据,才能对网络性能作进一步的评估。
对于网络性能的测量,基本有以下几种分类:
2.1 主动测量与被动测量
 主动测量
主动测量就是通过向网络、服务器或应用发送测试流量,以获取与这些对象相关的性能指标。例如,可以向网络发送数据包并不断提高发送速率直至网络饱和,以此来测量网络的最大负载能力。
主动测量的主要优点是不依赖于被测对象的测量能力。但另一方面,这种测量会给网络增加额外的通信流量,这在一定程度上也可能影响测量的结果。所以应该考虑试图进行的测量对测量结果产生的影响,并尽量使这种影响降到最低。
 被动测量
被动测量通过监测网络通信状况进行,因此不会影响网络。被动测量通常用于测量通信流量,即经过指定源和目的地之间路由器或链路的数据包或字节数,也可用于获取网络节点的资源使用状况的信息。
被动测量可以通过三种方式获得:
 服务器端测量:通常是在服务器端安装测试代理,实时监测服务器的性能、资源使用等状况。
 用户端测量:将监测功能封装到客户应用中,从特定用户的角度实时监测相关的业务性能。
 利用网络探针:网络探针可用于监测网络传输状态,分析捕获的数据包,以实现对网络及相关业务的测量。
被动测量的一个潜在问题在于它依赖于测量链路上的通信流量或被测节点的负载情况。例如,要测量网络上某主机和某Web服务器之间的通信流量,我们可以从客户端通过监测上传或从该Web服务器下载的数据包来得到测量结果。这种方法适合于用户确实经常下载该Web服务器页面的情况。如果只是不时浏览一下页面,那就没有足够的通信流量,这种情况下进行的被动测量也就不可靠了。这时,可以建立一个脚本,每隔一段时间从该Web服务器下载页面以得到测量结果,即采用主、被动混合的测量方式。事实上,在很多情况下,主动测量和被动测量都是结合着进行的。因为一台进行主动测试的主机只需处理与该测量相关的通信,因此其硬件要求不高。而对于进行被动测试的主机而言就不同了,因为它必须处理通过该测量点的所有通信流量,尤其当通信速率增长的时候,对执行测量的主机性能要求就更高。
2.2 单点测量与多点测量
网络测量的另一个方面在于测量所处的位置。一些测量依赖于在网络的多个点上进行监测。例如要测量一个数据包从主机A到主机B所需的时间,则需使用准确、同步的时钟记录数据包离开主机A和到达主机B的时间。
对于大型网络上通信流量的测量,也可考虑在多点监测流量,以收集到数据包通过该网络的详细信息。但这并不是个理想的办法。因为要使不同测量点上同一时间的测量值彼此关联是很难的。更简单的方法是监测网络的入口和出口链路的通信流量,以避免对单个数据包经过网络的详细路径信息进行跟踪,同时我们也可以建立一个通信矩阵,以获得整个网络的通信流量。通常,在网络的入口和出口点上设置被动测试是非常有效的。
2.3 网络层测量与应用层测量
应用层测量可以使我们对整个应用的性能有一个清楚的认识,而这是很难从低层测量数据综合得到的。同时应用层测量也能提供客户机和服务器之间、网络链路之间的性能参考。比如,Web下载是一种网络业务,但测量其性能也能间接反映网络层的性能。
比如想比较某一特定业务连续几天或几星期的性能,假定由服务器负载引起的变化比由网络拥塞引起的变化小,则测量该业务的总体性能就足够了。这种方法常用于对不同提供商提供的业务进行性能比较。
采用应用层测量的另一个原因是一些ISP在其网络内使用通信过滤(Traffic Filtering)技术,比如阻止ICMP响应包或限制其传送速率。虽然用ping作一些网络测量还是有用的,但通信过滤技术的使用日益广泛,在一定程度上减少了此类测量的使用。
因此,对于ISP提供的骨干网一般采用网络层测量,以评估其提供的网络链路或路由器、服务器等网络节点的性能;而对于基于网络平台的各种业务,其应用层性能的测量正变得越来越重要。
2.4 采样技术
在网络上监测数据包,其目标是通过测量,实时监测通信状况,不因任何原因错过任何数据包;但随着通信速率的日益提高,这个目标变得越来越难以实现。
如果速率太高以至难以可靠地监测数据包,则测量工具应至少能报告错过的数据包数目。在这种情况下,别无选择,只能对数据包进行采样,即对网络通信进行采样。
那么,应该采用什么采样算法呢?常用的方法是周期性采样,遵循采样定理,即“采样频率必须大于所采样信号最高频率的两倍”。但这种方法可能受同步效应的影响。同步效应是指当被测量的指标,其变化规律与采样频率同步时,将导致采样数据只能部分反映真实的测量数据;另一种情况是,当采取主动测量时,测量发出的测试流量对网络产生的影响,使网络进入一种周期性变化状态时,这时也可能发生同步效应。[IETF-IPPM-FRAM]11.1节中对这个问题进行了讨论,并提出了随机附加采样(random additive sampling)的解决算法。
很多人认为网络速率越高,采样间隔应越小。其实,数据处理的最终目的才是决定采样间隔的重要因素。比如,用于计费的数据需要更小的采样间隔,而用于容量规划就没必要取太小的采样间隔了。
3. 网络性能指标
  对于不同的网络业务或应用,其涉及的性能指标也不尽相同。以下介绍的是几个常用于描述网络性能的指标,这些指标对各种网络业务或应用的性能都有一定影响,但对于具体的业务类型或应用,还需具体分析,因为同一种性能指标对于不同的业务类型,其影响是有很大区别的。

3.1 延迟(Latency)
  通常,延迟是指等待某动作发生所需的时间。对很多种网络通信而言,一个数据包(或一组数据包)一旦从一台主机发送到另一台主机,就必须等待直到收到一个应答包。网络延迟的确定常需测量往返时间(round-trip time,RTT),即一个数据包自客户机到服务器间往返所需的时间间隔。
网络延迟由几部分组成:
  a) 数据包沿物理链路传输所需时间(transport time)
  b) 数据包经路由器时排队及转发所需时间(queuing and transmission time)
  c) 服务器处理数据包并产生响应包所需时间(server response time)
  通常我们不测量网络上每个路由器上每一跳的延迟,而是分别测量延迟的每一部分。例如:
 前向延迟,即数据包从客户机到服务器过程中时间a) 和时间b) 的和。
服务器延迟,即时间c)
 反向延迟,即数据包从服务器到客户机过程中时间a) 和时间b) 的和,通常不同于前向延迟。
Ping常用于测量延迟。ISP们通常用ping来测量响应时间,并假定服务器延迟c) 与前向和反向延迟(a+b)相比很小。因此,其响应时间的测量结果只是大致表示了网络的性能。虽然如此,这仍然是一种广泛使用的性能指标。但需要注意的是ping使用的是ICMP协议,用ping得出的测量结果并不能准确地反映使用其它协议的业务性能。对于使用TCP相关协议的应用,如Web、Email、Telnet等,可以考虑用TCP建立时间(TCP Open time)来表示延迟。
网络延迟并不是固定不变的,它随着网络状态变化而变化。比如:
 如果服务器闲,则响应快;如服务器忙,则响应慢。(影响服务器响应时间)
 如果网络路径无拥塞,则排队时间最小;如网络路径拥塞,则路由器排队时间延长。(影响排队时间)
 由链路故障引起的路由变化可能导致数据包往返路径不一致。
路由变化可影响传输时间。如路由器确定的最佳路径可使数据包经过更多的路由器,从而延长数据包花在路由器和路由器间跳的时间。
  可以对某一段时期的网络延迟进行监测,如果出现网络延迟的突升或突降,通常表明网络出现故障或受到安全攻击等。

3.2 丢包率(Packet Loss)
  IP网上的传输基本是一种“尽力而为”的工作方式。路由器尽力而为地转发数据包,但也可能根据即时情况而将一些包丢弃。尽力而为是IP协议的一个重要设计思想,而需要可靠数据包传输的业务就必须检查丢包率并重发丢失的数据包。TCP就是为高层的应用提供可靠的传输。
  数据包经过网络时可能因路由器排队而延迟。如果队列满了,路由器将由于没有足够的空间而丢弃一些包。其它的网络故障也可能引起丢包,但不那么普遍。
  网络丢包率是指在一特定时间间隔,从客户机到服务器间往返过程中丢失的数据包占所发送数据包的百分比数。数据包丢失一般是由网络拥塞引起的。丢包率一般在0%~15%(严重拥塞)间变化。更高的丢包率可能导致网络不可用。
  少量的丢包率并不一定表示网络故障,很多业务在少量丢包的情况下也能继续进行。比如:一些实时应用或流媒体业务,如VoIP,就可以忍受少量的丢包,并且也不重发丢失的包;另外,TCP协议正是靠检测丢包以发现网络拥塞的,这时它会以更低的速率重发丢失的包。

3.3 吞吐量(Throughput)
  吞吐量是指数据在网络上的传输速率,一般以bps(位/秒)、Bps(字节/秒)或pps(包/秒)表示。吞吐量一般指链路上所有通信数据总的传输速率,有时也可以表示某特定业务的数据传输速率。
吞吐量通过监测某特定时间间隔传输的字节数来测量。要注意选取适当的测量时间间隔。过长的时间间隔会平滑掉突发速率,过短的时间间隔又会夸大突发速率。折衷的办法是1~5分钟的时间间隔。

3.4 链路使用率(Link Utilization)
  互联网业务通常是通过若干条物理链路接入的。简单地说,链路使用率就是指特定时间间隔吞吐量占链路接入速率的百分比。
  一些链路,如T1和T3,其最大速率是预定义好的;另一些链路,如帧中继PVC,则还有一个速率,即约定信息速率(Committed Information Rate,CIR),CIR是与提供商约定的速率,但它允许瞬时的突发速率。其链路使用率要基于CIR计算。

3.5 可用性(Availability)
  可用性是指在某特定时间段内,系统正常工作的时间段占总时间段的百分比。比如,有
 业务的可用性:对一特定业务,能够发包并收到响应包
主机的可用性:能发包(ping)到某一主机,并收到响应包
 网络的可用性:能从该网络发包到互联网,并收到响应包
对于上述情况,都可以通过发送相应的数据包并检测响应包来测试。如:
 Web业务可用性测试:用Web浏览器从目标服务器下载指定页面,测量响应时间、丢包率和吞吐量。
 主机可用性测试:ping目标主机,确认该主机对ICMP包有响应。
 网络可用性测试:对目标主机进行路由跟踪(traceroute),以确定与目标网络之间的连通性。
这些测量都会产生延迟和丢包率,可以根据需要确定系统正常进行所能容忍的最大延迟和丢包率,当超过这些限值时,就认为该网络或业务是不可用的。
还有两个与可用性相关的概念是:
 平均修复时间(MTTR):业务故障后用于恢复正常的时间
 平均故障间隔时间(MTBF):业务正常至下次故障之间的时间
MTTR和MTBF都是与可用性相关的重要指标。每2年故障1次但MTTR为1周的业务确实不那么理想(故障次数少但故障后修复时间长);但对于MTTR更小、而MTBF也很小的业务(故障次数多,但每次故障修复时间短),虽然可能有很好的可用性数据,但这种频繁故障、频繁修复的业务对用户来说却是无法容忍的。
4. 统计分析
当我们了解有关网络性能的指标及如何测量这些指标后,下一步该做的就是如何将收集到的原始数据经统计、处理和分析,得出相关网络或业务的总体情况以及性能指标数据的变化与业务性能、网络故障之间的关系,以达到进一步隔离、排除故障、提高服务质量的目的。这里,我们会用到一些统计分析技术。
4.1 汇总统计:Mean,Median,Percentile
Mean:算术平均(arithmetic mean or average)是一种常用的统计方法,但这种方法适用于状态较平稳、越界情况不多的数据统计,因为越界数据对算术平均值的影响极大。
另一种简单的平均方法是几何平均(geometric mean),这种方法受越界数据影响较小。它是N个数据之积的N次方根,一般采用先计算各数据对数的平均值、再取幂的方法计算。
Median:对于大多数情况,中值(Median,50th percentile)是一个好的选择,它是指将数据排序后,位置在最中间的数值;如果数据中包含有偶数个数字,中值为位于中间的两个数的平均值。中值基本不受越界数据的影响。
Percentile:可以用百分位区域(percentile ranges)来表示测量数据的分布情况,如5%和95%,10%和90%或25%和75%等,当百分位为95th时,表明数据中95%的数据小于或等于该百分位值,5%的数据大于该百分位值。
4.2 阈值(Threshold)
阈值也称门限值,它是网络性能分析中常用到的一个参数。阈值通常是由网络管理人员预定的一个指标数值,这个数值反映网络处于临界状态时该性能指标的值。当测量值高于(或低于)此值时,表明此时网络异常。为表示测量值的异常程度,我们往往还要围绕阈值定义一些条件,依据不同的条件定义不同级别的异常,如严重异常、重大异常或轻微异常等。
需要注意的是,确定网络性能状况的很多性能指标,其测量值在不同时段会有一些变化,这些变化并不是因网络异常引起的,而是由对某些网络业务使用量的周期性变化引起的,这种变化往往是基于24*7时间而变化的。因此,很多情况下,我们还需采取更灵活的统计分析方法,如采用可变的阈值来分析网络的一些正常的变化情况,以便更客观地评价网络的性能。这时,我们往往将阈值与下面提到的基线值结合起来分析。
4.3 基线值(Baseline)
基线值表示某时间上某测量指标的“标准”值,它是通过对一定时期的历史数据进行采样并统计分析得来的。一旦基线值被确立,则可以基于基线值定义一个范围,其边界就是最高阈值和最低阈值,当测量值超越此边界时,则认为此时网络异常。这里,阈值是基于基线值建立的,更能反映网络性能的真实状况。
与基线值计算有关的几个参数是:Period、History Length和Window。
Period:指相似测量值之间的时间间隔,比如每周二5:00pm时业务使用率的测量值应该很相似。Period一般取天或周。也可能更长或更短些。通常是通过对历史数据的分析来确定多长的时期最好。
History Length:为建立更准确的基线值,要对一段历史时间的数据采样。这段历史时间即称History Length,决定了基线值的准确性,并且在很大程度上会影响基于基线值选取的阈值的置信度。比如,业务使用率在同一天的不同时间或同一周的不同天里,其测量值是不同的,为得到较准确的基线值,需要分析数周的测量数据。
Window:窗口是为每一时期特定时间间隔的数据建立的。所有该窗口中的数据用于确定将来时期相应窗口的理想值。窗口通常用分钟或小时表示。
举例来说,为确定某业务使用率的基线值,可以取History Length为4周,Period为周,窗口为1小时,假如当前时间为周一8:00am,则基线值应为最近4周(History Length)每周(Period)一8:00am~9:00am(Window)间测量数据的一个统计值。
4.4 权重因子(Weighting Factors)
对网络性能数据的统计分析,往往还要考虑来源不同的测量数据对网络总体性能的影响。同一种性能指标在不同区域、不同网络位置、用不同的主机或不同的测量工具测量,其结果是不同的,那么,如何将众多来源的测量数据进行统计分析,以得到整个网络的总体性能评价呢?这里,往往要引入权重因子的概念。权重因子取值的大小,反映了该测量值对网络总体性能的影响程度。
举例而言,对于某ISP提供的骨干网络,其中的各个服务器、路由器或不同网络链路,对整个网络而言,其份量是不同的。如果不引入权重因子,则从广州测量的结果与从中山测量的结果对网络总体性能影响是一样的,尽管两个城市的人口相差巨大。这显然是不合适的。通常,我们会将广州节点的权重因子设得大一些,而将中山节点的权重因子设得小一些,以此来显示不同节点对整个网络性能影响的不同程度。
4.5 测量指标间的关联(”Mononumerosis”)
只着眼于单个指标的测量值是不足取的,我们还需要具体分析相关的性能指标,从中找出一个折衷。
例如时延和丢包。我们可以用缩减路由器队列的办法来减少时延,但这会导致更高的丢包率。那么,时延和丢包到底孰轻孰重?对于某些应用,为减少丢包就需要容忍更长的延时。而在应用层,稍长的路由时延还可能缩短平均响应时间,因为丢包引起的重传时间减小了。
再比如,对于性能和可用性指标,你是更注重上网速度(性能)呢还是更注重能不能上网(可用性)?
因此,对于性能指标的分析需要折衷,而折衷的方案还有赖于具体的网络通信模式或业务类型。
5. 结束语
网络性能的评估是一项复杂的工作。随着网络技术的日益发展、网络业务的日益更新,基于特定应用的性能测量与分析,更成为今后网络性能研究的重要内容。对于不同的应用,有必要建立不同的性能评价模型,以实现不同的业务质量保证;而对于多种不同应用所基于的网络平台,更需要确立一种综合的性能体系架构,为进一步实现基于性能策略的网络结构提供基础。如NGN中语音业务的性能问题,由于语音业务的特殊性,对语音质量的测量和评估需要结合多方面因素来考虑,如何客观而又真实地评价语音的质量,又如何在数据、语音、视频业务融合的IP网络上保证各种业务的质量,对于正处于激烈竞争状态下的运营商而言,这些都是十分迫切且重要的问题,因而,也成为下一步网络性能研究的重点之列。