数据通信实验电子科技大学.docx
- 文档编号:8567813
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:36
- 大小:492.42KB
数据通信实验电子科技大学.docx
《数据通信实验电子科技大学.docx》由会员分享,可在线阅读,更多相关《数据通信实验电子科技大学.docx(36页珍藏版)》请在冰豆网上搜索。
数据通信实验电子科技大学
数据通信实验-电子科技大学
实验一NS2的基础使用
1.实验室名称:
主楼A2412
2.实验目的:
熟悉NS模拟软件的基本使用方法。
熟悉ubuntu的操作命令和Linux桌面环境下编辑器的使用。
三.实验原理:
NS模拟传输层的UDP协议的工作
四,实验环境
Ubuntu12.04/kernel3.5
GCC4.6.3
NS-2.33
五实验步骤
使用熟悉的Linux桌面环境下的编辑器(通常使用例如VIM,Gedit),新手推荐使用Gedit。
以下例子以使用Gedit为准。
切换到用户根目录下cd~
建立自己的文件夹mkdiryour_document_name
进入刚刚新建的文件夹cdyour_document_name
新建一个TCL脚本文件gedityour_TCL_file_name.tcl
将如下代码复制粘贴到你的文件中:
#Hereisthebeginningofthiscodefile
setval(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$udp0
setnull2[newAgent/Null]
$nsattach-agent$n4$null2
#将Agent/UDP及Agent/Null节点进行连接
$nsconnect$udp0$null2
#设置Agent/UDP包大小
$udp0setpacketSize_1500
#新建另一个UDP连接
setudp1[newAgent/UDP]
$nsattach-agent$n1$udp1
setnull3[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
$nsat$val(stop)"$nsnam-end-wireless$val(stop)"
#清空追踪区域
$nsflush-trace
#关闭trace文件
close$tracefile
#关系nam文件
close$namfile
#执行系统命令namout.nam
execnamout.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发送数据停止,流程结束:
7.新的发现
在代码中修改n2-n3的数据链路的速率,可以避免丢包现象的发生。
原因是,通过增大n2-n3的传输速率可以使n2节点的数据传出速率大于传进速率,这样数据就可以很快的被转发,从而不会因数据传出过慢而产生排队,进而丢包的现象。
实验二TCP性能仿真实验
一.实验室名称:
主楼A2412
二.实验目的:
复习TCP相关性能知识;实现TCP性能仿真实验在NS上
三.实验原理:
NS仿真TCP/IP的工作原理和工作方式。
四,实验环境
Ubuntu12.04/kernel3.5
GCC4.6.3
NS-2.33
五实验步骤
修改tcp.cc代码
Gedit~/ns-allinone-2.33/ns-2.33/tcp/tcp.cc
(将窗口阈值一半变为的窗口阈值1/3——wt_tcp1.cc)
第一处:
……
if(cwnd_ 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.0 setns[newSimulator] #设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件 setf0[openout.trw] settracefd[openwired.trw] $nstrace-all$tracefd setnf[openwired.namw] $nsnamtrace-all$nf #record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现 procrecord{}{ globalsinkf0 setns[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-trace close$f0 close$tracefd close$nf execnamwired.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$n2orientright settcp[newAgent/TCP] $nsattach-agent$n0$tcp setsink[newAgent/TCPSink] $nsattach-agent$n2$sink $nsconnect$tcp$sink setftp[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.5 GCC4.6.3 NS-2.33 五实验步骤 相关代码如下: 代码: setval(stop)5.5 setns[newSimulator] $nscolor1Blue $nscolor2Red #设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件 setf0[openout.trw] settracefd[openwired.trw] $nstrace-all$tracefd setnf[openwired.namw] $nsnamtrace-all$nf #record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现 procrecord{}{ globalsinkf0 setns[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-trace close$f0 close$tracefd close$nf execnamwired.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$udp setnull[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$tcp setsink[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" $nsrun ns_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拥塞控制,乘性减: 整个阶段,网络流量如图,与上面的过程分析相符: 7.新的发现 TCP协议能通过拥塞控制,流量控制和分组重传等机制,来实现可靠的数据传输服务,通过观察nam可以看出,每个TCP数据报文后面都会有接收方返回的一个ACK报文,而对于不可靠数据传输的UDP协议,则接收方不会想发送方返回一个确认报文。 TCP与UDP的区别可见一斑。 实验四数据通信NS2仿真实验 一.实验室名称: 主楼A2412 二.实验目的: 掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。 三.实验原理: 本实验使用文本处理工具gwak对仿真生成的trace文件进行解析,处理,然后用以画图或者数据分析网络的实时情况。 四,实验环境 Ubuntu12.04/kernel3.5 GCC4.6.3 NS-2.33 五实验步骤 1,使用文本编辑工具(例如gedit,vim)新建tcl文本文件 Gedityout_tcl_file_name.tcl 2,复制一下代码到你的tcl文件中: setns[newSimulator] $nscolor1Blue $nscolor2Red setnf[openout.namw] $nsnamtrace-all$nf setnd[openout.trw] $nstrace-all$nd procfinish{}{ globalnsnfnd $nsflush-trace close$nf close$nd execnamout.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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据通信 实验 电子科技大学