NS2仿真实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Ns2简单有线网络仿真实验报告一、实验概述1、在windows系统下安装Centos虚拟机2、在Centos系统下安装NS2仿真工具包3、Nam方式示例二、实验内容1)NS2仿真工具包安装说明1.在Centos系统下设置root账户2.解压NS2文件3.安装ns-allinone-2.35设置环境变量4.验证NS2工具包安装情况2)Nam方式Otcl脚本#产生一个仿真的对象setns[newSimulator]#针对不同的资料流定义不同的颜色,这是要给NAM用的$nscolor1Green$nscolor2Red#开启一个NAMtracefilesetnf[openout.namw]$nsnamtrace-all$nf#开启一个tracefile,用来记录封包传送的过程setnd[openout.trw]$nstrace-all$nd#定义一个结束的程序procfinish{}{globalnsnfnd$nsflush-traceclose$nfclose$nd#以背景执行的方式去执行NAMexecnamout.nam&exit0}#产生6个网络节点setn0[$nsnode]setn1[$nsnode]setn2[$nsnode]setn3[$nsnode]setn4[$nsnode]setn5[$nsnode]#把节点连接起来$nsduplex-link$n0$n22Mb10msDropTail$nsduplex-link$n1$n22Mb10msDropTail$nsduplex-link$n2$n31.7Mb20msDropTail$nsduplex-link$n3$n41.7Mb30msDropTail$nsduplex-link$n3$n51.5Mb30msDropTail#设定ns2到n3之间的QueueSize为10个封包大小$nsqueue-limit$n2$n310$nsqueue-limit$n3$n45#$nsqueue-limit$n3$n510#设定节点的位置,这是要给NAM用的$nsduplex-link-op$n0$n2orientright-down$nsduplex-link-op$n1$n2orientright-up$nsduplex-link-op$n2$n3orientright$nsduplex-link-op$n3$n4orientright-up$nsduplex-link-op$n3$n5orientright-down#观测n2到n3之间queue的变化,这是要给NAM用的$nsduplex-link-op$n2$n3queuePos0.5#建立一条n0-n5TCP的联机settcp[newAgent/TCP]$nsattach-agent$n0$tcpsetsink[newAgent/TCPSink]$nsattach-agent$n5$sink$nsconnect$tcp$sink#在NAM中,TCP的联机会以Green表示$tcpsetfid_1#在TCP联机之上建立FTP应用程序setftp[newApplication/FTP]$ftpattach-agent$tcp$ftpsettype_FTP#建立一条UDP的联机setudp[newAgent/UDP]$nsattach-agent$n1$udpsetnull[newAgent/Null]$nsattach-agent$n3$null$nsconnect$udp$null#在NAM中,UDP的联机会以红色表示$udpsetfid_2#在UDP联机之上建立CBR应用程序setcbr[newApplication/Traffic/CBR]$cbrattach-agent$udp$cbrsettype_CBR$cbrsetpacket_size_1000$cbrsetrate_1mb$cbrsetrandom_false#设定FTP和CBR资料传送开始和结束时间$nsat0.1$cbrstart$nsat1.0$ftpstart$nsat4.0$ftpstop$nsat4.5$cbrstop#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$nsat4.5$nsdetach-agent$n0$tcp;$nsdetach-agent$n3$sink#在仿真环境中,5秒后去呼叫finish来结束仿真(这样要注意仿真环境中#的5秒并不一定等于实际仿真的时间$nsat5.0finish#执行仿真$nsrun3)仿真结果仿真结束后,会产生out.nam和out.tr两个档案用来把仿真的过程用可视化的方式呈现出来4)数据分析1.End-to-EndDelay把测量CBR封包端点到端点间延迟时间的awk程序,写在档案measure-delay.awk档案中BEGIN{#程序初始化,设定一变量以记录目前最高处理封包的ID。highest_packet_id=0;}{action=$1;time=$2;node_1=$3;node_2=$4;type=$5;flow_id=$8;node_1_address=$9;node_2_address=$10;seq_no=$11;packet_id=$12;#记录目前最高的packetIDif(packet_idhighest_packet_id)highest_packet_id=packet_id;#记录封包的传送时间if(start_time[packet_id]==0)start_time[packet_id]=time;#记录CBR(flow_id=2)的接收时间if(flow_id==2&&action!=d){if(action==r){end_time[packet_id]=time;}}else{#把不是flow_id=2的封包或者是flow_id=2但此封包被drop的时间设为-1end_time[packet_id]=-1;}}END{#当资料列全部读取完后,开始计算有效封包的端点到端点延迟时间for(packet_id=0;packet_id=highest_packet_id;packet_id++){start=start_time[packet_id];end=end_time[packet_id];packet_duration=end-start;#只把接收时间大于传送时间的记录列出来if(startend)printf(%f%f\n,start,packet_duration);}}执行方法:($为shell的提示符号)$awk-fmeasure-delay.awkout.tr若是要把结果存到档案,可使用导向的方式。(把结果存到cbr_delay档案中)$awk-fmeasure-delay.awkout.trcbr_delayXgraph画图2、JitterJitter就是延迟时间变化量delayvariance档案measure-jitter.awkBEGIN{#程序初始化old_time=0;old_seq_no=0;i=0;}{action=$1;time=$2;node_1=$3;node_2=$4;type=$5;flow_id=$8;node_1_address=$9;node_2_address=$10;seq_no=$11;packet_id=$12;#判断是否为n2传送到n3,且封包型态为cbr,动作为接受封包if(node_1==2&&node_2==3&&type==cbr&&action==r){#求出目前封包的序号和上次成功接收的序号差值dif=seq_no-old_seq_no;#处理第一个接收封包if(dif==0)dif=1;#求出jitterjitter[i]=(time-old_time)/dif;seq[i]=seq_no;i=i+1;old_seq_no=seq_no;old_time=time;}}END{for(j=1;ji;j++)printf(%d\t%f\n,seq[j],jitter[j]);}执行方法:($为shell的提示符号)$awk-fmeasure-jitter.awkout.tr若是要把结果存到档案,可使用导向的方式。(把结果存到cbr_jitter档案中)$awk-fmeasure-jitter.awkout.trcbr_jitterXgraph画图4、Loss把量测CBRPacketLoss的情况写在档案measure-drop.awk内BEGIN{#程序初始化,设定一变量记录packet被drop的数目fsDrops=0;numFs=0;}{action=$1;time=$2;node_1=$3;node_2=$4;src=$5;flow_id=$8;node_1_address=$9;node_2_address=$10;seq_no=$11;packet_id=$12;#统计从n1送出多少packetsif(node_1==1&&node_2==2&&action==+)numFs++;#统计flow_id为2,且被drop的封包if(flow_id==2&&action==d)fsDrops++;}END{printf(numberofpacketssent:%dlost:%d\n,numFs,fsDrops);}执行方法:($为shell的提示符号)$awk-fmeasure-drop.awkout.tr执行结果:这代表CBR送出了550个封包,但其中14个封包丢掉了。

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功