1、数据通信实验电子科技大学数据通信实验-电子科技大学 实验一 NS2的基础使用1. 实验室名称:主楼A24122实验目的: 熟悉NS模拟软件的基本使用方法。 熟悉ubuntu的操作命令和Linux桌面环境下编辑器的使用。三. 实验原理: NS模拟传输层的UDP协议的工作四, 实验环境 Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33五 实验步骤 使用熟悉的Linux桌面环境下的编辑器(通常使用例如VIM, Gedit),新手推荐使用Gedit。以下例子以使用Gedit为准。切换到用户根目录下 cd 建立自己的文件夹 mkdir your_document_nam
2、e进入刚刚新建的文件夹cd your_document_name新建一个TCL脚本文件 gedit your_TCL_file_name.tcl将如下代码复制粘贴到你的文件中:#Here is the beginning of this code file set val(stop) 5.0 ;# 模拟器结束时间#新建一个NS模拟对象set ns new Simulator#打开NS追踪文件set tracefile open out.tr w$ns trace-all $tracefile#打开NAM追踪文件set namfile open out.nam w$ns namtrace-all
3、 $namfile#新建6个节点set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns nodeset n4 $ns nodeset n5 $ns node#建立节点之间的链路,格式解释如下#duplex-link 双向链路 可选选项(duplex-link,simple-link 单向链路)#$n0 $n2 表明从0号节点到2号节点#2.0Mb 申明链路传输速率,可使用Mb,Kb,b#10ms 申明链路传输延迟#DropTail 队列类型$ns duplex-link $n0 $n2 2.0Mb 10ms DropTail#申明链路队列
4、长度$ns queue-limit $n0 $n2 10$ns duplex-link $n1 $n2 2.0Mb 10ms DropTail$ns queue-limit $n1 $n2 10$ns duplex-link $n4 $n3 2.0Mb 10ms DropTail$ns queue-limit $n4 $n3 10$ns duplex-link $n3 $n2 1.0Mb 20ms DropTail$ns queue-limit $n3 $n2 10$ns duplex-link $n3 $n5 2.0Mb 10ms DropTail$ns queue-limit $n3 $n
5、5 10#为NAM创建节点位置描述,以第一个为例,2号节点在0号节点的右下方$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n4 $n3 orient left-down$ns duplex-link-op $n3 $n2 orient left$ns duplex-link-op $n3 $n5 orient right-down #新建一个UDP连接set udp0 new Agent/UDP#将0号节点Agent/UDP绑定,
6、以下类似$ns attach-agent $n0 $udp0set null2 new Agent/Null$ns attach-agent $n4 $null2#将Agent/UDP及Agent/Null节点进行连接$ns connect $udp0 $null2#设置Agent/UDP包大小$udp0 set packetSize_ 1500#新建另一个UDP连接set udp1 new Agent/UDP$ns attach-agent $n1 $udp1set null3 new Agent/Null$ns attach-agent $n5 $null3$ns connect $udp
7、1 $null3$udp1 set packetSize_ 1500#在UDP连接上新建一个CBR应用set cbr0 new Application/Traffic/CBR$cbr0 attach-agent $udp0$cbr0 set packetSize_ 1500$cbr0 set rate_ 1.0Mb$cbr0 set random_ null#在第1秒,$cbr0 服务开始发送$ns at 1.0 $cbr0 start#在第4秒,$cbr0 服务停止发送$ns at 4.0 $cbr0 stop#在UDP连接上新建一个CBR应用set cbr1 new Application
8、/Traffic/CBR$cbr1 attach-agent $udp1$cbr1 set packetSize_ 1500$cbr1 set rate_ 1.0Mb$cbr1 set random_ null$ns at 2.0 $cbr1 start$ns at 3.0 $cbr1 stop#定义一个finish过程用以处理模拟结束之后需要完成的动作proc finish #申明使用外部变量 global ns tracefile namfile val $ns at $val(stop) $ns nam-end-wireless $val(stop) #清空追踪区域$ns flush-t
9、race #关闭trace文件close $tracefile#关系nam文件close $namfile#执行系统命令nam out.nam exec nam out.nam & exit 0#在val(stop)时间调用finish过程$ns at $val(stop) finish$ns at $val(stop) puts done ; $ns halt#启动ns$ns run保存退出,在当前目录下,使用ns your_TCL_file_name.tcl观察仿真过程六 实验结果及数据分析网络拓扑结构图和数据传输图:由实验代码可知:实验通过NS模拟软件建立了六个节点,各节点均采用全双工形
10、式,两条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节点的数据传出速率
11、大于传进速率,这样数据就可以很快的被转发,从而不会因数据传出过慢而产生排队,进而丢包的现象。实验二 TCP性能仿真实验一 实验室名称:主楼A2412 二实验目的: 复习TCP相关性能知识;实现TCP性能仿真实验在NS上三. 实验原理:NS仿真TCP/IP的工作原理和工作方式。四, 实验环境 Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33五 实验步骤修改tcp.cc代码 Gedit /ns-allinone-2.33/ns-2.33/tcp/tcp.cc(将窗口阈值一半变为的窗口阈值1/3wt_tcp1.cc)第一处:if (cwnd_ ssthresh_)
12、slowstart = 1; if (precision_reduce_) /halfwin = windowd() / 2; / halfwin = windowd() / 3;第二处: else int temp; /temp = (int)(window() / 2);/ temp = (int)(window() / 3); halfwin = (double) temp;第三处:switch (how) case 0: /* timeouts */ /ssthresh_ = int( window() / 2 );/ ssthresh_ = int( window() / 3 );
13、if (ssthresh_ 2) ssthresh_ = 2; cwnd_ = int(wnd_restart_); break; case 1:第四处case 4: /* Tahoe dup acks */ /ssthresh_ = int( window() / 2 );/ ssthresh_ = int( window() / 3 ); if (ssthresh_ 2) ssthresh_ = 2; cwnd_ = 1; break; default: abort();返回ns根目录 执行./install 执行安装(此时间较长,请耐心等待)参照实验1代码,编写tcl代码,实现一个简单的
14、3节点,2条链路的网络网络如下图这个是该网络结构对应代码set val(stop) 5.0set ns new Simulator#设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件set f0 open out.tr wset tracefd open wired.tr w$ns trace-all $tracefdset nf open wired.nam w$ns namtrace-all $nf#record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现proc record global sink f0set ns Simulator instanc
15、e#设置经过多少时间再次调用该过程set time 0.5#计数sink节点接受了多少数据 set bw $sink set bytes_ #设置当前时间set now $ns now#计算网络流量并写入文件中puts $f0 $now expr $bw/$time*8/1000000#重置计数器$sink set bytes_ 0#循环调用该过程 $ns at expr $now+$time record $ns at 0.0 recordproc finish global ns tracefd nf val f0 $ns at $val(stop) $ns nam-end-wireles
16、s $val(stop) $ns flush-trace close $f0 close $tracefd close $nf exec nam wired.nam & exit 0set n0 $ns nodeset n1 $ns nodeset n2 $ns node$ns duplex-link $n0 $n1 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns queue-limit $n0 $n1 10$ns queue-limit $n1 $n2 10$ns duplex-link-op $n0 $n1 ori
17、ent right$ns duplex-link-op $n1 $n2 orient rightset tcp new Agent/TCP$ns attach-agent $n0 $tcpset sink new Agent/TCPSink$ns attach-agent $n2 $sink$ns connect $tcp $sinkset ftp new Application/FTP$ftp attach-agent $tcp$ns at 0.5 $ftp start$ns at 4.5 $ftp stop$ns at $val(stop) finish$ns at $val(stop)
18、puts done ; $ns halt$ns run保存并返回在当前目录调用ns your_TCL_file_name.tcl 观察nam效果在当前目录调用graph out.tr -geometry 800x400 用Xgraph软件观察仿真过程六 实验结果及数据分析网络拓扑结构和数据传输图:由实验代码可知:实验通过NS模拟软件建立了三个节点,各节点均采用全双工形式,一条TCP连接(数据发送方向如图),0-1,1-2的链路速率均为2.0Mb,延迟10ms,DropTail队列形式。具体流程截图如图:tcp连接启动,进入慢启动过程:慢启动阶段,拥塞窗口大小指数增长:达到阈值,拥塞窗口大小线性
19、增长:整个过程中的网络流量如图:实验三 数据通信NS2仿真实验一 实验室名称:主楼A2412 二实验目的: 掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。三. 实验原理:请按照以下要求,根据上次实验的代码,设计一个网络拓扑,并用NAM(能用XGRAPH分析更好)查看网络流量变化并分析结果。要求如下:网络包含4个node,各节点之间都是以全双工的链路相连(duplex-link)。n0和n2之间链路的带宽为2Mbps,延迟为10ms,为DropTail队列方式;n1和n2之间链路带宽为2Mbps,延迟为10ms,也为DropTail队列方式;n2和n3之间链路的带宽为1.7Mbp
20、s,延迟为20ms,为RED方式(将DropTail替换成为RED)。n0处有一个FTP的TCP流量产生器,n1处为CBR的UDP流量产生器,n3有一个接收TCP的sink和接收UDP的NULL。节点间位置关系如下图:四, 实验环境 Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33五 实验步骤相关代码如下:代码:set val(stop) 5.5set ns new Simulator$ns color 1 Blue$ns color 2 Red#设置用 XGRAPH 软件打开的跟踪文件,通常可以一条完整链路对应一个文件set f0 open out.tr w
21、set tracefd open wired.tr w$ns trace-all $tracefdset nf open wired.nam w$ns namtrace-all $nf#record 过程用以记录仿真过程,然后通过使用 XGRAPH 画图软件来表现proc record global sink f0set ns Simulator instance#设置经过多少时间再次调用该过程set time 0.5#计数 sink 节点接受了多少数据set bw $sink set bytes_#设置当前时间set now $ns now#计算网络流量并写入文件中puts $f0 $now
22、 expr $bw/$time*8/1000000#重置计数器$sink set bytes_ 0#循环调用该过程$ns at expr $now+$time record$ns at 0.0 recordproc finish global ns tracefd nf val f0$ns at $val(stop) $ns nam-end-wireless $val(stop)$ns flush-traceclose $f0close $tracefdclose $nfexec nam wired.nam &exit 0#新建 4 个节点set n0 $ns nodeset n1 $ns n
23、odeset n2 $ns nodeset n3 $ns node$ns duplex-link $n0 $n2 2.0Mb 10ms DropTail$ns duplex-link $n1 $n2 2.0Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms RED$ns queue-limit $n1 $n2 10$ns queue-limit $n0 $n2 10$ns queue-limit $n2 $n3 10$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n
24、1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right#UDP连接set udp new Agent/UDP$ns attach-agent $n1 $udpset null new Agent/Null$ns attach-agent $n3 $null$ns connect $udp $null$udp set packetSize_ 1500$udp set fid_ 2#CBR应用#在 UDP 连接上新建一个 CBR 应用set cbr new Application/Traffic/CBR$cbr attach-age
25、nt $udp$cbr set packetSize_ 1500$cbr set rate_ 1.0Mb$cbr set random_ null#在第 1 秒,$cbr0 服务开始发送$ns at 1.0 $cbr start#在第 4 秒,$cbr0 服务停止发送$ns at 4.0 $cbr stop#TCP连接set tcp new Agent/TCP$ns attach-agent $n0 $tcpset sink new Agent/TCPSink$ns attach-agent $n3 $sink$ns connect $tcp $sink$tcp set fid_ 1#FTP应
26、用set ftp new Application/FTP$ftp attach-agent $tcp$ns at 0.5 $ftp start$ns at 4.5 $ftp stop$ns at $val(stop) finish$ns at $val(stop) puts done ; $ns halt$ns runns _3.tcl六 实验结果集数据分析网络拓扑结构和数据传输图:由实验代码可知:实验通过NS模拟软件建立了4个节点,各节点均采用全双工形式,一条TCP连接一条UDP连接(数据发送方向如图),0-1,1-2的链路速率均为2.0Mb,延迟10ms,DropTail队列形式,而2-3
27、的链路速率只有1.7Mb,延迟20ms,RED队列形式。udp数据包大小1500字节,发送速率为1.0Mb。具体流程截图如图:tcp连接发送数据:n2节点堵塞,发生丢包,进行流量控制:udp发送数据,n2节点堵塞,发生丢包:tcp拥塞控制,乘性减:整个阶段,网络流量如图,与上面的过程分析相符:7新的发现 TCP协议能通过拥塞控制,流量控制和分组重传等机制,来实现可靠的数据传输服务,通过观察nam可以看出,每个TCP数据报文后面都会有接收方返回的一个ACK报文,而对于不可靠数据传输的UDP协议,则接收方不会想发送方返回一个确认报文。TCP与UDP的区别可见一斑。实验四 数据通信NS2仿真实验一
28、实验室名称:主楼A2412 二实验目的: 掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。 三. 实验原理: 本实验使用文本处理工具gwak对仿真生成的trace文件进行解析,处理,然后用 以画图或者数据分析网络的实时情况。四, 实验环境 Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.33五 实验步骤1, 使用文本编辑工具(例如gedit,vim)新建tcl文本文件Gedit yout_tcl_file_name.tcl2, 复制一下代码到你的tcl文件中:set ns new Simulator$ns color 1 Blue$ns color
29、2 Redset nf open out.nam w$ns namtrace-all $nfset nd open out.tr w$ns trace-all $ndproc finish global ns nf nd$ns flush-traceclose $nfclose $ndexec nam out.nam &exit 0set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns node$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms RED$ns queue-limit $n2 $n3 100$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1