数据通信实验-电子科技大学_第1页
数据通信实验-电子科技大学_第2页
数据通信实验-电子科技大学_第3页
数据通信实验-电子科技大学_第4页
数据通信实验-电子科技大学_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据通信实验-电子科技大学实验一 NS2的基础使用一.实验室名称:主楼A2412二.实验目的:熟悉NS模拟软件的基本使用方法。熟悉ubuntu的操作命令和Linux桌面环境下编辑器的使用。三.实验原理:NS模拟传输层的UDP协议的工作四,实验环境Ubuntu12.04/kernel3.5NS-2.33五实验步骤使用熟悉的Linux桌面环境下的编辑器(通常使用例如VIM,Gedit),新手推荐使用Gedit。以下例子以使用Gedit为准。切换到用户根目录下 cd~建立自己的文件夹 mkdiryour_document_name进入刚刚新建的文件夹 cdyour_document_name新 建 一 个 TCL 脚 本 文 件 gedityour_TCL_file_name.tcl将如下代码复制粘贴到你的文件中:#Hereisthebeginningofthiscodefilesetval(stop) 5.0 ;#模拟器结束时间#新建一个NS模拟对象setns[newSimulator]#打开NS追踪文件settracefile[openout.trw]$nstrace-all$tracefile#打开NAM追踪文件setnamfile[openout.namw]$nsnamtrace-all$namfile#新建6个节点setn0[$nsnode]setn1[$nsnode]setn2[$nsnode]setn3[$nsnode]setn4[$nsnode]setn5[$nsnode]#建立节点之间的链路,格式解释如下#duplex-link双向链路可选选项(duplex-link,simple-link单向链路)#$n0$n2表明从0号节点到2号节点#2.0Mb申明链路传输速率,可使用Mb,Kb,b#10ms申明链路传输延迟#DropTail 队列类型$nsduplex-link$n0$n22.0Mb10msDropTail#申明链路队列长度$nsqueue-limit$n0$n210$nsduplex-link$n1$n22.0Mb10msDropTail$nsqueue-limit$n1$n210$nsduplex-link$n4$n32.0Mb10msDropTail$nsqueue-limit$n4$n310$nsduplex-link$n3$n21.0Mb20msDropTail$nsqueue-limit$n3$n210$nsduplex-link$n3$n52.0Mb10msDropTail$nsqueue-limit$n3$n510#为NAM创建节点位置描述,以第一个为例,2号节点在0号节点的右下方$nsduplex-link-op$n0$n2orientright-down$nsduplex-link-op$n1$n2orientright-up$nsduplex-link-op$n4$n3orientleft-down$nsduplex-link-op$n3$n2orientleft$nsduplex-link-op$n3$n5orientright-down#新建一个UDP连接setudp0[newAgent/UDP]#将0号节点Agent/UDP绑定,以下类似$nsattach-agent$n0$udp0setnull2[newAgent/Null]$nsattach-agent$n4$null2#将Agent/UDP及Agent/Null节点进行连接$nsconnect$udp0$null2#设置Agent/UDP包大小$udp0setpacketSize_1500#新建另一个UDP连接setudp1[newAgent/UDP]$nsattach-agent$n1$udp1setnull3[newAgent/Null]$nsattach-agent$n5$null3$nsconnect$udp1$null3$udp1setpacketSize_1500#在UDP连接上新建一个CBR应用setcbr0[newApplication/Traffic/CBR]$cbr0attach-agent$udp0$cbr0setpacketSize_1500$cbr0setrate_1.0Mb$cbr0setrandom_null#在第1秒,$cbr0服务开始发送$nsat1.0"$cbr0start"#在第4秒,$cbr0服务停止发送$nsat4.0"$cbr0stop"#在UDP连接上新建一个CBR应用setcbr1[newApplication/Traffic/CBR]$cbr1attach-agent$udp1$cbr1setpacketSize_1500$cbr1setrate_1.0Mb$cbr1setrandom_null$nsat2.0"$cbr1start"$nsat3.0"$cbr1stop"#定义一个'finish'过程用以处理模拟结束之后需要完成的动作procfinish{}{#申明使用外部变量globalnstracefilenamfileval$ns at $val(stop) "$ns nam-end-wireless$val(stop)"#清空追踪区域$nsflush-trace#关闭trace文件close$tracefile#关系nam文件close$namfile#执行系统命令namxecnamout.nam&exit0}#在val(stop)时间调用finish过程$nsat$val(stop)"finish"$nsat$val(stop)"puts\"done\";$nshalt"#启动ns$nsrun保存退出,在当前目录下,使用 nsyour_TCL_file_name.tcl观察仿真过程六实验结果及数据分析网络拓扑结构图和数据传输图:由实验代码可知:实验通过NS模拟软件建立了六个节点,各节点均采用全双工形式,两条UDP连接(数据发送方向如图),0-2,1-2,4-3,5-3的链路速率均为2.0Mb,延迟10ms,DropTail队列形式,而2-3的链路速率只有1.0Mb,延迟10ms,DropTail队列形式。数据包包的大小为1500字节,传输速率为 1.0Mb。具体流程截图如图:n0通过udp0向n4开始发送数据n2通过udp1向n5发送数据:由于在节点n2出数据传进的速率大于传出的速率,发生丢包:n1发送数据停止,丢包现象消失:n0发送数据停止,流程结束:七.新的发现在代码中修改n2-n3的数据链路的速率,可以避免丢包现象的发生。原因是,通过增大n2-n3的传输速率可以使n2节点的数据传出速率大于传进速率,这样数据就可以很快的被转发,从而不会因数据传出过慢而产生排队,进而丢包的现象。实验二 TCP性能仿真实验一. 实验室名称:主楼A2412二.实验目的:复习TCP相关性能知识;实现TCP性能仿真实验在NS上三.实验原理:NS仿真TCP/IP的工作原理和工作方式。四,实验环境Ubuntu12.04/kernel3.5NS-2.33五实验步骤修改tcp.cc 代码Gedit ~/ns-allinone-2.33/ns-2.33/tcp/tcp.cc(将窗口阈值一半变为的窗口阈值 1/3——wt_tcp1.cc)第一处:⋯⋯if(cwnd_<ssthresh_)slowstart=1;if(precision_reduce_){//halfwin=windowd()/2; //halfwin=windowd()/3;⋯⋯第二处:⋯⋯}else {inttemp;//temp=(int)(window()/2);//temp=(int)(window()/3);halfwin=(double)temp;⋯⋯第三处:⋯⋯switch(how){case0:/*timeouts*///ssthresh_=int(window()/2);//ssthresh_=int(window()/3);if(ssthresh_<2)ssthresh_=2;cwnd_=int(wnd_restart_);break;case1:⋯⋯第四处⋯⋯case4:/*Tahoedupacks*///ssthresh_=int(window()/2);//ssthresh_=int(window()/3);if(ssthresh_<2)ssthresh_=2;cwnd_=1;break;default:abort();⋯⋯返回ns根目录执行./install执行安装(此时间较长,请耐心等待)参照实验1代码,编写tcl 代码,实现一个简单的3节点,2条链路的网络网络如下图这个是该网络结构对应代码setval(stop)5.0setns[newSimulator]#设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件setf0[openout.trw]settracefd[openwired.trw]$nstrace-all$tracefdsetnf[openwired.namw]$nsnamtrace-all$nf#record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现procrecord{}{globalsinkf0setns[Simulatorinstance]#设置经过多少时间再次调用该过程settime0.5#计数sink节点接受了多少数据setbw[$sinksetbytes_]#设置当前时间setnow[$nsnow]#计算网络流量并写入文件中puts$f0"$now[expr$bw/$time*8/1000000]"#重置计数器$sinksetbytes_0#循环调用该过程$nsat[expr$now+$time]"record"}$nsat0.0"record"procfinish{}{globalnstracefdnfvalf0$nsat$val(stop)"$nsnam-end-wireless$val(stop)"$nsflush-traceclose$f0close$tracefdclose$nfexecnamwired.nam&exit0}setn0[$nsnode]setn1[$nsnode]setn2[$nsnode]$nsduplex-link$n0$n12Mb10msDropTail$nsduplex-link$n1$n22Mb10msDropTail$nsqueue-limit$n0$n110$nsqueue-limit$n1$n210$nsduplex-link-op$n0$n1orientright$nsduplex-link-op$n1$n2orientrightsettcp[newAgent/TCP]$nsattach-agent$n0$tcpsetsink[newAgent/TCPSink]$nsattach-agent$n2$sink$nsconnect$tcp$sinksetftp[newApplication/FTP]$ftpattach-agent$tcp$nsat0.5"$ftpstart"$nsat4.5"$ftpstop"$nsat$val(stop)"finish"$nsat$val(stop)"puts\"done\";$nshalt"$nsrun保存并返回在当前目录调用nsyour_TCL_file_name.tcl观察nam效果在当前目录调用 graphout.tr-geometry800x400 用Xgraph软件观察仿真过程六实验结果及数据分析网络拓扑结构和数据传输图:由实验代码可知:实验通过NS模拟软件建立了三个节点,各节点均采用全双工形式,一条TCP连接(数据发送方向如图),0-1,1-2的链路速率均为2.0Mb,延迟10ms,DropTail队列形式。具体流程截图如图:tcp连接启动,进入慢启动过程:慢启动阶段,拥塞窗口大小指数增长:达到阈值,拥塞窗口大小线性增长:整个过程中的网络流量如图:实验三 数据通信NS2仿真实验一. 实验室名称:主楼A2412二.实验目的:掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。三.实验原理:请按照以下要求,根据上次实验的代码,设计一个网络拓扑,并用NAM(能用XGRAPH分析更好)查看网络流量变化并分析结果。要求如下:网络包含4个node,各节点之间都是以全双工的链路相连(duplex-link)。n0和n2之间链路的带宽为2Mbps,延迟为10ms,为DropTail队列方式;n1和n2之间链路带宽为2Mbps,延迟为10ms,也为DropTail队列方式;n2和n3之间链路的带宽为 1.7Mbps,延迟为20ms,为RED方式(将DropTail替换成为RED)。n0处有一个FTP的TCP流量产生器,n1处为CBR的UDP流量产生器,n3有一个接收TCP的sink和接收UDP的NULL。节点间位置关系如下图:四,实验环境Ubuntu12.04/kernel3.5NS-2.33五实验步骤相关代码如下:代码:setval(stop)5.5setns[newSimulator]$nscolor1Blue$nscolor2Red#设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件setf0[openout.trw]settracefd[openwired.trw]$nstrace-all$tracefdsetnf[openwired.namw]$nsnamtrace-all$nf#record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现procrecord{}{globalsinkf0setns[Simulatorinstance]#设置经过多少时间再次调用该过程settime0.5#计数 sink 节点接受了多少数据setbw[$sinksetbytes_]#设置当前时间setnow[$nsnow]#计算网络流量并写入文件中puts$f0"$now[expr$bw/$time*8/1000000]"#重置计数器$sinksetbytes_0#循环调用该过程$nsat[expr$now+$time]"record"}$nsat0.0"record"procfinish{}{globalnstracefdnfvalf0$nsat$val(stop)"$nsnam-end-wireless$val(stop)"$nsflush-traceclose$f0close$tracefdclose$nfexecnamwired.nam&exit0}#新建 4个节点setn0[$nsnode]setn1[$nsnode]setn2[$nsnode]setn3[$nsnode]$nsduplex-link$n0$n22.0Mb10msDropTail$nsduplex-link$n1$n22.0Mb10msDropTail$nsduplex-link$n2$n31.7Mb20msRED$nsqueue-limit$n1$n210$nsqueue-limit$n0$n210$nsqueue-limit$n2$n310$nsduplex-link-op$n0$n2orientright-down$nsduplex-link-op$n1$n2orientright-up$nsduplex-link-op$n2$n3orientright#UDP连接setudp[newAgent/UDP]$nsattach-agent$n1$udpsetnull[newAgent/Null]$nsattach-agent$n3$null$nsconnect$udp$null$udpsetpacketSize_1500$udpsetfid_2#CBR应用#在 UDP连接上新建一个 CBR 应用setcbr[newApplication/Traffic/CBR]$cbrattach-agent$udp$cbrsetpacketSize_1500$cbrsetrate_1.0Mb$cbrsetrandom_null#在第 1秒,$cbr0 服务开始发送$nsat1.0"$cbrstart"#在第 4秒,$cbr0 服务停止发送$nsat4.0"$cbrstop"#TCP连接settcp[newAgent/TCP]$nsattach-agent$n0$tcpsetsink[newAgent/TCPSink]$nsattach-agent$n3$sink$nsconnect$tcp$sink$tcpsetfid_1#FTP应用setftp[newApplication/FTP]$ftpattach-agent$tcp$nsat0.5"$ftpstart"$nsat4.5"$ftpstop"$nsat$val(stop)"finish"$nsat$val(stop)"puts\"done\";$nshalt"$nsrunns_3.tcl六实验结果集数据分析网络拓扑结构和数据传输图:由实验代码可知:实验通过 NS模拟软件建立了4个节点,各节点均采用全双工形式,一条 TCP连接一条 UDP连接(数据发送方向如图) ,0-1,1-2 的链路速率均为 2.0Mb,延迟 10ms,DropTail 队列形式,而 2-3 的链路速率只有1.7Mb,延迟20ms,RED队列形式。udp数据包大小1500字节,发送速率为1.0Mb。具体流程截图如图:tcp连接发送数据:n2节点堵塞,发生丢包,进行流量控制:udp发送数据,n2节点堵塞,发生丢包:tcp拥塞控制,乘性减:整个阶段,网络流量如图,与上面的过程分析相符:七.新的发现TCP协议能通过拥塞控制,流量控制和分组重传等机制,来实现可靠的数据传输服务,通过观察nam可以看出,每个TCP数据报文后面都会有接收方返回的一个ACK报文,而对于不可靠数据传输的UDP协议,则接收方不会想发送方返回一个确认报文。TCP与UDP的区别可见一斑。实验四 数据通信NS2仿真实验一. 实验室名称:主楼A2412二.实验目的:掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。三.实验原理:本实验使用文本处理工具 gwak对仿真生成的trace文件进行解析,处理,然后用 以画图或者数据分析网络的实时情况。四,实验环境Ubuntu12.04/kernel3.5NS-2.33五实验步骤1,使用文本编辑工具(例如gedit,vim)新建tcl文本文件Gedityout_tcl_file_name.tcl2,复制一下代码到你的 tcl文件中:setns[newSimulator]$nscolor1Blue$nscolor2Redsetnf[openout.namw]$nsnamtrace-all$nfsetnd[openout.trw]$nstrace-all$ndprocfinish{}{globalnsnfnd$nsflush-traceclose$nfclose$ndexecnamout.nam&exit0}setn0[$nsnode]setn1[$nsnode]setn2[$nsnode]setn3[$nsnode]$nsduplex-link$n0$n22Mb10msDropTail$nsduplex-link$n1$n22Mb10msDropTail$nsduplex-link$n2$n31.7Mb20msRED$nsqueue-limit$n2$n3100$nsduplex-link-op$n0$n2orientright-down$nsduplex-link-op$n1$n2orientright-up$nsduplex-link-op$n2$n3orientright#监控链路队列(n2-n3).(forNAM)$nsduplex-link-op$n2$n3queuePos0.5settcp[newAgent/TCP]$tcpsetclass_2$nsattach-agent$n0$tcpsetsink[newAgent/TCPSink]$nsattach-agent$n3$sink$nsconnect$tcp$sink$tcpsetfid_1setftp[newApplication/FTP]$ftpattach-agent$tcp$ftpsettype_FTPsetudp[newAgent/UDP]$nsattach-agent$n1$udpsetnull[newAgent/Null]$nsattach-agent$n3$null$nsconnect$udp$null$udpsetfid_2setcbr[newApplication/Traffic/CBR]$cbrattach-agent$udp$cbrsettype_CBR$cbrsetpacket_size_1000$cbrsetrate_1mb$cbrsetrandom_false$nsat0.1"$cbrstart"$nsat1.0"$ftpstart"$nsat40.0"$ftpstop"$nsat4.5"$cbrstop"$nsat50.0"finish"#监视n2,n3的RED队列信息setredq[[$nslink$n2$n3]queue]settraceq[openredQueue.trw]#监视当前队列长度$redqtracecurq_#监视平均队列长度$redqtraceave_#将2个监视结果存入文件中$redqattach$traceq$nsrun3,使用Linux命令对跟踪队列信息的trace文件(redQueue.tr)进行分离$grep “a”redQueue.tr>average.tr$grep“Q”redQueue.tr>current.tr用文本编辑工具新建一个 awk文件Gedityour_awk_file_name_1.awk加入以下代码 (注意必须有大括号,否则报错 ):{print$2,$3>>"average_xg.tr"}用文本编辑工具新建一个 awk文件Gedityour_awk_file_name_2.awk加入以下代码 :{print$2,$3>>"current_xg.tr"}分别调用对应 awk程序处理对应文件,例如:Gawk–fyour_awk_file_name.awkaverage.tr得到average_xg.tr 文件最后使用 xgraph4, 计算丢包率

工具对

average_xg.tr,current_xg.tr

进行解析得到图像。用文本编辑器新建一个

awk文件并加入以下代码

:#程序初始化BEGIN{dropNum=0;totalNum=0;i=0;}{event=$1;time=$2;fromNode=$3;toNode=$4;pktType=$5;pktSize=$6;flags=$7;fid=$8;srcAddr=$9;dstAddr=$10;seqNum=$11;pktId=$12;if(fromNode==1&&toNode==2&&event=="+"){totalNum++;#记录时间timeArr[i]=time;#计算丢包率lossrate[i]=(float)(dropNum/totalNum);i++;}if(fid==2&&event=="d")dropNum++;}END{printf("#numberofpacketsent:%d,lost:%d\n",totalNum,dropNum);printf("#lostrateofpackets:%f\n",dropNum/totalNum);for(j=0;j<i;j++)printf("%f\t%f\n",timeArr[j],lossrate[j]);}退出文本编辑器调用命令查看结果Gawk–fyour_awk_file_name.awk out.tr5, 计算延迟用上述方法,新建一个 awk文件,加入以下代码:#delayanalyseBEGIN{highestPktId=0;}{event=$1;time=$2;fromNode=$3;toNode=$4;pktType=$5;pktSize=$6;flags=$7;fid=$8;srcAddr=$9;dstAddr=$10;seqNum=$11;pktId=$12;#判断最大分组标识if(pktId>highestPktId)highestPktId=pktId;#设置分组开始时间if(beginTime[pktId]==0)beginTime[pktId]=time;#计算结束时间if(fid==2&&event!="d"){if(event=="r")endTime[pktId]=time;}else{endTime[pktId]=-1;}}END{for(pktId=0;pktId<=highestPktId;pktId++){#计算延迟begin=beginTime[pktId];end=endTime[pktId];pktDuration=end-begin;if(begin<end)printf("%f\t%f\n",begin,pktDuration);}}用命令查看结果Gawk–fyour_awk_file_name.awk out.tr6, 计算吞吐量用文本编辑器新建一个 awk文件加入以下代码 :#throughputBEGIN{flag=0;i=0;}{event=$1;time=$2;fromNode=$3;toNode=$4;pktType=$5;pktSize=$6;flags=$7;fid=$8;srcAddr=$9;dstAddr=$10;seqNum=$11;pktI

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论