网络性能测量的目的是在网络建设或试运行阶段,检验网络性能是否达到了预期的设计要求,是否达到网络性能指标体系的要求;对网络行为进行监控和记录,探测并定位网络异常行为,以便对网络性能进行优化;为网络性能指标体系修订提供依据等。本文在分析IP网络端对端性能测量基本原理的基础上,提出了一个性能测量的框架系统,并对网络往返延迟、抖动、丢包等性能指标进行了测量和分析。
原理
目前,成熟的网络端对端测量理论有两种:一种是“单向延迟及丢包协议(OWDP)”,另一种是“回路延迟及丢包协议(RTDP)”。
OWDP基本方法是: 首先由客户端发起同步请求, 在请求报文中记录下当前机器的时间戳T1。当服务器端接收到此报文时, 立即记录下接收时的时间戳T2。服务器端接收到报文后, 向客户端发送一个应答报文, 并记录应答时间戳T3。客户端收到此应答报文, 也立即记录该时间戳T4。
但在事实上,不同的机器时间是不可能相同的,这就是时钟偏移。时钟偏移可以这样求出,设t为服务器和客户端之间的时钟偏移;R为两者之间的往返时间。因为T2=T1+t+R/2; T2-T1=t+R/2;T4=T3-t+R/2;T3-T4=t-R/2;所以R=(T4-T1)-( T3- T2);故最终得到时钟偏移t=((T2-T1)+(T3-T4))/2。
RTDP的基本思想是:通过计算网络数据包的往返延迟来评测网络的其他性能。往返延迟是指源主机src在T1时刻将数据发往宿主机dst,dst收到数据后马上把收到的数据发送到主机src,src在T2时刻收到从dst发回来数据的最后一个字节,则测试报文往返时间R就等于T2-T1。若发送端在指定的时间内没有收到从另一端发送的回应信息,就作为数据的一次丢包并记录下来。因为来回的时间是存在着差异的,且往返的路径有可能不同,所以R不一定能精确地反映出网络的单向延迟。
但R还是有很多有用之处:延迟的变化可以反映出带宽的变化,越大的延迟说明了传输层带宽的利用率越低;延迟的最小值反映出了网络在最小负载情况下的性能,超过延迟最小值的多少,大致反映了网络拥塞的情况。在精度要求不是很高的情况下,可以用双向延迟来估算单向延迟,以及估算其他一些性能参数等。此外,通过周期性的长期测试可以反映出这段时间里网络性能的变化。
与OWDP相比较而言,RTDP中R的计算比起单向延迟的计算要来的简便,计算的时间都是在同一台计算机上,不存在时间的同步问题,无需在测量的两端都安装上测量软件。只需要固定一个测量点,而另一个测量点可以任意选择,从而使得测量的范围扩充到整个Internet 。
被动式延时误差调节方案
前面求时钟偏移的公式t=((T2-T1)+(T3-T4))/2,使用双程延迟对分代替单程延迟。因此,算法的先决条件是网络处于对等状态,即两个单程延迟相等。但当网络出现突发事件或流量出现较大波动时,网络将不再处于对等状态,此时会产生较大的误差。特别地,网络越大,波动越大,产生的时钟漂移越大,对时误差也就越大。
新的时钟偏移计算方法同样采用客户端主动方式,不过差别在于,它通过对客户端和服务器端传输时产生的延时进行统计来检测网络是否处于对等状态,当认定网络处于对等状态的时候,才启动对时机制。
首先,客户端向时间服务器发送一系列的测试报文P1、P2……Pn 。当收回一个测试报文后, 客户端即利用该报文的四个时间戳计算出报文在网络上传输时产生的延迟时间ti ,再将之前取得的报文样本取均值和标准差。
取得延迟时间均值t和标准差s后,如果样本的标准差s很大,或超过规定的阀值S,则认定网络处于不稳定的状态。抛弃最先得到的回应报文,将该报文纳入统计范围,这样做的好处是:保证检测到的网络状态是实时的。如果样本标准差s小于阀值S,且延迟时间的均值t 在限定范围内,则意味着此时网络相对“平静”,此时可认定网络处于对等状态。客户端向服务器发送对时报文。如果此时对时报文的延迟差值小于阀值,则意味着该报文是在刚刚检测到的对等状态下回收的,此时客户端利用该报文完成对时。否则说明网络状态与刚刚测试到的状态发生了变化,此时用该对时报文对时则会产生较大的误差,放弃对时,将该报文纳入统计范围,重复上述的过程。
该方案应该考虑的一个重要问题是到底应该选定多少个样本才能得到准确的测试结果,如果样本个数少了,统计结果不足以说明网络是否处于平稳状态,反之,如果太多,样本反差将变得很大,此时,客户端将可能长时间不能完成对时。
设计思路
本测量系统主要基于RTDP理论,是一种主动的、基于TCP/IP的端到端测量。
系统利用的是ICMP协议在发送包和接受包时都盖上时间戳的特点。ICMP协议向某个主机发送ICMP请求回显报文时,会在发送包盖上时间戳;对方主机回送ICMP回显应答报文,也会盖上时间戳。因此,可利用此协议报文的时间戳,计算一系列的性能参数。
系统编程基于TCP/IP协议的SOCKET,时延测试程序采用Windows Sockets 编程的通讯控件——Winsock控件,可以较方便地实现网络通讯。Windows Socket规范是一套开放的支持多协议的Windows下的网络编程接口,已成为Windows网络编程标准。在Windows Socket规范中定义并记录了如何使用API(Application Programming Interface,应用编程接口)与Internet协议族的连接。Winsock控件对Winsock API进行了封装, 屏蔽了用Winsock 编写TCP/IP应用的细节。
系统用户是通过Web网页的形式访问系统,在访问界面上可以设定各种控制参数,来进行不同要求的测试。同时也用这种形式来查询最后的测试结果。通过Web这种形式,系统可以很方便地被远程并发访问。
在系统的结构功能上,一共分成了5个模块:控制模块、测试模块、参数计算模块、数据库存储管理模块和数据的显示模块。
控制模块
以Web形式向用户提供一个控制界面,用户可以在此设置测试端点的地址、发送测试信息报文的数量、发送的时间间隔、发送的队列的长度和报文的长度。
测试模块
测试模块依据用户控制信息,对Winsock控件属性、程序控制变量、报文数据结构等赋值,并在测试端开启一个SOCKET的接收进程,在约定的端口收发信息。SOCKET发送时,向一个目标主机以固定的频率和报文长度发送探测报文;接收时,计算探测报文往返时间R。
解包的流程如下:首先完成类型的转换,将字符串数据指针转换成IP报文格式的指针,再将指针后移,移动的大小为IP报头长度,将此时的指针再转换成ICMP的报文格式;其次进行回应报文的确定,第一,判断报文的类型是否为固定的ICMP回应报文类型,第二,确定报文的id项是否为发送进程的进程号。 第三,报文序号的确定。 满足以上三点即说明该报文是测试报文的回应报文;最后完成测试报文的往返时间Rtt的计算,将本机的时间减去数据包字段中属性data的值就是所要求的往返时间Rtt的值。整个测试模块作为一个常驻进程运行在测试的一个端点主机上,当受到控制信息就会被激活,开启报文的发送和报文的接收线程。因此系统具有一定的并发处理能力,可以同时根据不同的用户要求进行不同目标检测。
参数计算模块
用各种评价算法对测试模块中所得到的数据进行计算处理,从而得到平均Rtt时延、时延抖动、丢包率和网络吞吐量等性能指标,并将这些数据存入数据库。
数据库存储管理模块
将所得的计算结果以一定的格式存储,并提供其他模块统一的数据接口来进行数据的操作,系统所用的是基于windows的SQL Server数据库。数据库有三张主要的表,第一张表存放了各次测试的原始记录值。第二张表存放各次测试的统计值,和由此推算出的网络其他性能的参数值。表内包括Rtt的最大值、最小值、平均值、丢包率、抖动值、网络吞吐量等。第三张表存放了网络性能参数的统计均值,可以用来作为当前测量值的参照,来决定是否报警。
数据显示模块
将数据从数据库中读出以Web的形式显示出来,同时用到了JAVA的技术,将数据绘制成图表的形式显示。
网络异常报警模块
当前测量曲线与均值曲线比较,若差值超过规定的阀值,模块发出报警信号。
应用
测试系统分别在校园网、互联网环境进行多次测试。测试时,用户先登录测试发起机的测试设置网页,设置测试控制后启动测试。填入“对端IP”是校园网内IP,则测试是在校园网环境内进行;填入的是校外IP,则测试是在互联网(包括教科网)环境内进行。
在不同时段,发送不同大小的数据包,发送频率为10ms一次,发送次数2000次,在数据包中还有数据序号,用来判定是否丢包。
在网络负载较轻时段,选择发送数据长度为100Bytes测试时延结果。在相同时段将发送数据改为1K Bytes后, 测试时延结果。在网络负载较重时段,选择发送数据长度为1K Bytes, 测试时延结果。
引起网络时延的因素有很多,从实验测试结果中可以看出网络负载的大小,传送数据包的大小以及传输协议的选取都会对网络时延产生不同程度的影响。本系统主要用于端对端网络时延的数据采集,也可以用于网络性能监测。基于所采得的数据,对网络的性能进行分析。本系统已经在校园网中试运行,效果良好。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。