APP下载

NS2条件网络性能分析实践

2013-08-06马元飞

电脑与电信 2013年1期
关键词:包率封包字段

马元飞

(内蒙古集宁师范学院,内蒙古 乌兰察布 012000)

1.引言

网络性能分析[1]一般有以下3种手段:数学分析法、实验探究法和仿真模拟法。然而前两种方法都存在很大的局限性:数学分析法的有效性和精确性受假设限制很大,一些假设无法对复杂网络系统进行准确的限定和描述;实验探究法局限于成本居高不下,重新配置与资源共享难度大,运行缺少灵活性,实验床规模难以做到很大,不能实现网络中多种通信量和拓扑的融合。而仿真模拟的方法可以弥补前两种方法的不足,它采用计算机程序对网络进行模型化,通过程序的运行模拟仿真网络的运行过程。仿真模拟法利用数学建模和统计分析的方法模拟网络行为,通过建立网络设备和网络链路的统计模型,模拟网络流量的传输,从而获取网络设计及优化所需要的网络性能数据。

NS2[2]是一个面向对象、可扩展的离散事件驱动的网络仿真器,其核心部分是一个离散事件模拟引擎。NS2仿真器具有强大的数据处理功能,可扩展性强,执行效率高,且仿真结果的可靠性高。NS2支持TCP、UDP等传输层网络协议,可以模拟网络数据传输如FTP、CBR等以及路由队列的管理机制如DropTail,RED和CBQ等。同时,NS2可以进行无线通信网络和卫星网络进行仿真。

NS2中并未直接提供性能分析工具,但是NS2会将仿真过程中的封包事件进行记录[3],本文以此为据,通过对其进行数据采集来完成性能分析。封包事件记录每条由11个字段构成,字段含义从左到右依次为:(1)封包事件发生原因:“r”表示接收封包,“+”表示封包入队、"-"表示封包出队、“d”表示丢弃封包;(2)事件发生的时间;(3)发生地点;(4)封包类型;(5)封包大小;(6)封包标志标注;(7)封包数据流归属;(8,9)源端、目的端;(10,11)封包序号、封包 ID。为了便于执行分析,我们将上述记录文件分割为接收端和发送端两个部分,其中发送端包含:序号、时间、和封包大小,接收端包含序号、传送时间、到达时间、封包延迟时间、封包大小。

2.性能分析指标

常用的网络性能分析指标[4]有吞吐量、丢包率、抖动率等,具体内容说明如下:(1)吞吐量定义为在一个时隙内成功发送的数据包数量,一般指链路上所有通信数据总的传输速率,计算时采用接收的封包总大小除以所花费的时间即可;(2)丢包率是指测试中所丢失数据包数量占所发送数据包的比率,计算采用发送端的封包数量减去接收端封包数量并除以封包总数;(3)抖动率是网络延迟的变化量,它是由同一应用的任意两个相邻数据包在传输路由

中经过网络延迟而产生,计算采用封包延迟时间差距除以封包序号差距得到,计算公式如下:

3.实验拓扑

实验网络环境(图1)包括两个传输节点s1和s2,路由器r和数据接收端d。s1到r之间和s2到r之间的网络带宽都是2Mbps,传递时延为10ms。网络中的带宽瓶颈在r和d之间,带宽为1.7Mbps,传递时延为20ms。所有链路管理机制都采用DropTail,r到d之间的最大队列长度是10个封包。s1与d之间会有一条FTP联机,另外,s2到d之间有一条CBR[3]联机,其传送速度为1Mbps,每一个封包大小为1KB。

图1 实验拓扑图

4.性能分析

我们假设CBR数据流持续时间从0.1秒到4.5秒,FTP数据流持续时间从1.0到4.0秒。按照上述网络环境编写TCL程序代码,并在NS2中仿真执行,得到sd_udp(发送端s2),rd_udp(接受端d)两个记录文件。我们以这两个文件为数据样本,针对CBR,完成性能分析。本文性能分析关注点有3个方面:丢包率、抖动率、吞吐量。

(1)丢包率计算。从sd_udp文件中,可以得知共有550条记录(550行):从rd_udp文件中,可以得知共有542笔记录,所以共有8个封包遗失,因此udp封包遗失率为8/550=1.45%.

(2)抖动率计算。计算采用AWK[5]脚本语言编写,脚本代码如下:

###执行方法:###

###awk-f measure-jitter.awk rd_udp>cbr_jitter###BEGIN{

last_pkt_id=-1;

last_e2e_delay=-1;

}{

pkt_id=$1;

send_time=$2;

rcv_time=$3;

e2e_delay=$4;

pkt_size=$5;

if(last_pkt_id!=-1){

jitter=(e2e_delay-last_e2e_delay)/

(pkt_id-last_pkt_id);

printf("%f%f ",send_time,jitter);

}

last_pkt_id=pkt_id;

last_e2e_delay=e2e_delay;

}{}

执行后生成cbr_jitter文件,用GNUPLOT[6]作图,得到图2,从中发现在[1,4]秒时间段内,由于受到FTP数据流干扰,CBR数据流呈现较大的抖动,实验结果与预期相符。

图2 抖动率变化

(3)吞吐量计算

计算采用PERL脚本[7]编写,脚本代码如下:

#使用方法:perl measure-throughput.pl

#记录文件文件名

$infile=$ARGV[0];

#多少时间计算一次(单位为秒)

$granularity=$ARGV[1];

$sum=0;

$sum_total=0;

$clock=0;

$maxrate=0;

$init=0;

#打开记录文件

open(DATA,"<$infile")

||die"Can't open$infile$!";

#读取记录文件中的每行数据,数据是以空白分成众多字段while(){

@x=split('');

if($init==0){

$start=$x[2];$init=1;

}

#读取的第零个字段是pkt_id

#读取的第一个字段是封包传送时间

#读取的第二个字段是封包接收时间

#读取的第三个字段是封包end to end delay

#读取的第四个字段是封包大小

#判断所读到的时间,是否已经达到要统计吞吐量的时候

if($x[2]-$clock<=$granularity)

{

#计算单位时间内累积的封包大小

$sum=$sum+$x[4];

#计算累积的总封包大小

$sum_total=$sum_total+$x[4];

}

else

{

#计算吞吐量

$throughput=$sum*8.0/$granularity;

if($throughput>$maxrate){

$maxrate=$throughput;

}

#输出结果:时间吞吐量(bps)

print STDOUT"$x[2]:$throughput bps ";

#设定下次要计算吞吐量的时间

$clock=$clock+$granularity;

$sum_total=$sum_total+$x[4];

$sum=$x[4];

}

}

$endtime=$x[2];

#计算最后一次的吞吐量大小

$throughput=$sum*8.0/$granularity;

print STDOUT"$x[2]:$throughput bps ";

$clock=$clock+$granularity;

$sum=0;

#print STDOUT"$sum_total$start$endtime ";

$avgrate=$sum_total*8.0/($endtime-$start);

print STDOUT"Average rate:$avgrate bps ";

print STDOUT"Peak rate:$maxrate bps ";

#关闭档案

close DATA;

exit(0);

采用命令perl measure-throughput.pl rd_udp 0.5执行后,结果如图3,从中可以发现CBR最高吞吐量大约出现在4.5秒,也就是FTP停止后一段时间,此时正是信道被CBR独占的时段,实验结果与预期相符。

图3 吞吐量变化

5.结语

随着网络的不断发展,网络结构越来越复杂,人们对网络的要求也越来越高,随之对网络性能的分析也变得越来越重要。本文从丢包率、抖动率、吞吐量3个角度对NS2环境下网络性能分析方法进行了研究,下一步的工作可以在此基础上,将该方法扩展到更加复杂的网络应用场景,发现网络性能的瓶颈,进一步对网络环境进行改善,使网络资源得到充分利用。

[1]赵吉波,周宇,周红琼.基于NS2仿真的IP网络性能分析与研究[J].电子设计工程,2012,20(4):113-115.

[2]NS2.http://www.isi.edu/nsnam/ns/[EB/OL].2013

[3]柯志亨,程荣祥,邓德隽.NS2仿真实验-多媒体和无线网络通信[M].北京:电子工业出版社,2009.

[4]杨雅辉,李小东.IP网络性能指标体系的研究[J].通信学报,2002,23(11):1-7.

[5]AWK.[EB/OL].(2012-11-22)[2013-01-11].http://www.grymoire.com/Unix/Awk.html.

[6]GNUPLOT.[EB/OL].(2012-09-03)[2013-01-11].http://www.gnuplot.info/.

[7]Brian d foy,Tom Phoenix,Randal L,Schartz.Perl语言入门.http://wenku.baidu.com/view/c8dbc908f12d2af90242e629.html[EB/OL],2006.

猜你喜欢

包率封包字段
图书馆中文图书编目外包数据质量控制分析
支持向量机的船舶网络丢包率预测数学模型
中药封包在急诊老年急性胃肠炎患者中的临床应用
一种基于喷泉码的异构网络发包算法*
电磁线叠包率控制工艺研究
护肤 巧用保鲜膜
无冲突规则校园网络安全系统的设计
TCN 协议分析装置丢包率研究
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述