网络协议模拟分析文档格式.docx
《网络协议模拟分析文档格式.docx》由会员分享,可在线阅读,更多相关《网络协议模拟分析文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
掌握网络模拟工具NS2的使用,学习根本的网络模拟方法。
二、
课程设计内容
协议模拟
Ø
工具:
NS2,awk,shell,perl等;
要求:
掌握NS2网络模拟的根本流程;
内容:
NS2网络模拟根本流程
编写TCL脚本,搭建如下列图所示的一个网络,共6个节点,其中2、3节点用做ftp效劳器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。
各节点间的链路属性见图。
模拟时间设为13秒钟,在0.1秒开场产生cbr流量,在1.0秒开发发送发ftp流量;
8.0秒ftp流量完毕,12.0秒cbr流量完毕。
编写脚本〔可用shell,awk,或perl等〕分析模拟日志文件,统计每0.5s内0、1节点间链路通过的分组数以及字节数。
三、设计与实现过程
1.仿真脚本代码与详细注解
#Createasimulatorobject/创立模拟器对象
setns[newSimulator]/模拟器对象赋值给变量ns
#Definedifferentcolorsfordataflows(forNAM)
$nscolor1Red
$nscolor2Yellow/给NAM定义不同的数据流,颜色的选择比拟随意,只要易于区分就可以
#OpentheNAMtracefile
setnf[openout.namw]/翻开out.nam文件,一般都是在执行程序的时候自动生成的
$nsnamtrace-all$nf
#OpentheTracefile
settf[openout.trw]/翻开out.tr文件,也是自动生成的
$nstrace-all$tf
/两个文件主要都是用来记录封包传输过程的
#Definea'
finish'
procedure/定义finish程序,在后面执行的时候会用到
procfinish{}{
globalnsnftf
$nsflush-trace
close$nf/关闭nam文件
close$tf/关闭trace文件(在后面调用的时候,是在程序完毕的时候,所以前面生成的两个文件必须要关闭)
execnamout.nam&
#以后台方式执行nam
exit0
}
#Createsixnodes/创立六个节点,从n0到n5
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
setn5[$nsnode]
#Createlinksbetweenthenodes/创立结点之间的链路,而链路的创立都是基于题目要求的根底之上
$nsduplex-link$n0$n21.5Mb10msDropTail
$nsduplex-link$n0$n41.5Mb10msDropTail
$nsduplex-link$n1$n31.5Mb10msDropTail
$nsduplex-link$n1$n51.5Mb10msDropTail
$nsduplex-link$n1$n02Mb20msDropTail
#Givenodeposition(forNAM)/根据题目图示要求,给NAM创立的节点位置如下
$nsduplex-link-op$n2$n0orientright-down
$nsduplex-link-op$n4$n0orientright-up
$nsduplex-link-op$n0$n1orientright
$nsduplex-link-op$n1$n3orientright-up
$nsduplex-link-op$n1$n5orientright-down
#SetQueueSizeoflink(n0-n1)to10/设置n0到n1之间的列长度
$nsqueue-limit$n1$n010
#SetupaTCPconnection/建立TCP连接
settcp[newAgent/TCP]
$tcpsetclass_2
$nsattach-agent$n2$tcp
setsink[newAgent/TCPSink]
$nsattach-agent$n3$sink
$nsconnect$tcp$sink
$tcpsetfid_1/NAM中,TCP的连接用红色的数据流表示
#SetupaUDPconnection/建立UDP连接
setudp[newAgent/UDP]
$nsattach-agent$n4$udp
setnull[newAgent/Null]
$nsattach-agent$n3$null
$nsattach-agent$n5$null
$nsconnect$udp$null
$udpsetfid_2/NAM中,UDP的连接用黄色的数据流表示
//TCP与UDP的建立中,agent是一个代理,用来作为网络层的传输与接收
#SetupaFTPoverTCPconnection/在TCP连接上建立FTP
setftp[newApplication/FTP]
$ftpattach-agent$tcp
$ftpsettype_FTP
#SetupaCBRoverUDPconnection/在UDP连接上建立CBR
setcbr[newApplication/Traffic/CBR]
$cbrattach-agent$udp
$cbrsettype_CBR
$cbrsetpacket_size_1000
$cbrsetrate_1mb
$cbrsetrandom_false/设置了cbr流量的包类型,字节大小,以及传输速率
#ScheduleeventsfortheCBRandFTPagents/设置FTP和CBR起止时间
$nsat0.1"
$cbrstart"
/0.1秒产生cbr流量
$nsat1.0"
$ftpstart"
/1.0秒发送ftp流量
$nsat8.0"
$ftpstop"
/8.0秒ftp流量完毕
$nsat12.0"
$cbrstop"
/12.0秒cbr流量完毕
#Callthefinishprocedureafter13secondsofsimulationtime/13秒后调用前面写出的finish程序
$nsat13.0"
finish"
#Runthesimulation/执行模拟器程序
$nsrun
2.仿真过程示意〔动画截图1个〕
3.日志分析脚本设计〔设计思路与代码、注解〕
设计思路:
首先取出每行的时间〔第二字段〕、分组大小〔第六字段〕;
假设时间大于当前的时间段,变量加1,开场统计下一时间段信息;
数组count1记录分组的数目
数组count2记录每个时间段通过的分组的总字节数
#!
/usr/bin/perl
#countthenumberofpacketsbetweennode0andnode1,theintervalis0.5seconds.
$i=0;
/定义变量i
info;
/定义三个数组
count1;
count2;
while(<
>
){/读out.tr文件的内容
info=split(/+/,$_);
/以空格为分字符读取每一行的内容
$reason=$info[0];
/封包事件发生原因(r代表封包被接收,+表示进入队列,-表示离开队列)
$time=$info[1];
/时间,表示流量传输的开场时间
$src=$info[2];
/封包的起始节点
$dst=$info[3];
/封包的终止节点
$length=$info[5];
/包的字节长度
#if($reason==’r’&
&
($src==0&
$dst==1)||($src==1&
$dst==0)){
if($reason==’r’&
$dst==0)){
/包被某个节点所承受,而且链路传输是在从0到1的链路上,判断语句
if($time>
$i*0.5){/时间段超过0.5秒,执行下一行内容
$i++;
}
$count1[$i]++;
/这个数组用于统计包的个数
$count2[$i]+=$length;
/这个数组用于统计字节数
printf("
intervals(s)\t\tpackets\t\tbytes\n"
);
/显示语句,显示内容为:
时间间隔,包,还有字节数
$i=1.0;
while($count1[$i]){/打印出来统计的信息
printf("
%4.1f~%4.1f\t\t$count1[$i]\t\t$count2[$i]\n"
($i-1)*0.5,$i*0.5,);
}/显示统计出来的每个时间段的信息
4.分析结果展示〔通过自绘图来说明〕
Packers:
Bytes:
四、设计技巧及体会
1、对自己设计进展评价,指出合理和缺乏之处,提出改良的方案。
整体的设计,实现了题目中的所示要求,即模拟时间设为13秒钟,在0.1秒开场产生cbr流量,在1.0秒开发发送发ftp流量;
8.0秒ftp流量完毕,12.0秒cbr流量完毕,用两种不同的颜色定义了两种数据流,在执行ns的脚本之后,可以通过视觉上的直观感受真实的网络协议模拟过程。
两个脚本的编写,并非基于自身的能力水平,而是在通过网上查询资料以及在同学的指导下,才根本实现了实习内容,但是对局部脚本代码的理解有待于进一步提高。
2、在设计过程中的感受。
通过网络协议的模拟仿真,更加直观形象的观察到整个运行过程,但是基于自身的能力水平,需要进一步的理解每一步操作的原理,在学习的过程中,要不断探索,多询问,多理解,多请教,才能不断进步,进而提升自己,扬长避短,不断充实自己的专业根底知识。