《数据通信实验报告.docx》由会员分享,可在线阅读,更多相关《数据通信实验报告.docx(26页珍藏版)》请在优知文库上搜索。
1、电子科技大学实验报告实验一NS2的基础使用NS2是一种提供虚拟环境进行网络摹拟仿真,能验证网络性能的正确性和进行相关性能 测试的软件。一、实验环境:Ubuntu 12.04/kernel 3.5GCC 4.6.3NS-2.33二、网络拓扑:实验共有6个节点,每一个节点的连接情况如图所示。其中节点NO、N2和节点Nk N2 连 接,N3、M和N4、N5连接,N2和N3连接。从0号节点到2号节点,带宽为2Nh延时为 IOmSo 。 Z 三、实践步骤:切换到用户根目录下Cd Z建立自己的文件夹mkdir your document name进入刚刚新建的文件夹Cd your_document_nam
2、e新建一个 TCL 脚本文件 gedit your_TCL_f i 1 e_name. tcl# Here is the beginning of this code fileset val (stop) 5. 0 ;#摹拟器结束时间# 新建一个NS摹拟对象set ns new Simulator# 打开NS追踪文件set tracefile open out. tr w$ns trace-all Stracefile# 打开NAM追踪文件 set namfile open out. nam w $ns namtrace-all Snamfile# 新建6个节点set n $ns nodese
3、t nl $ns nodeset n2 $ns nodeset n3 $ns nodeset n4 $ns nodeset n5 $ns node# 建立节点之间的链路,格式解释如下ftduple-link 双向链路可选选项(duplexTink, SimpleTink 单向链 路)# $n0 $n2表明从0号节点到2号节点# 2. OMb申明链路传输速率,可使用Mb, Kb, b# 1OmS申明链路传输延迟# DrOPTail队列类型$ns queue-limit $n0 $n2 10$ns$nsduplex-link queue-limit$nl $n2 2. OMb $nl $n2 10
4、IOms$ns$nsduplex-link queue-limit$n4 $n3 2. OMb$n4 $n3 10IOms$ns$nsduplex-link queue-limit$n3 $n2 1.0Mb $n3 $n2 1020ms$ns $nsduplex-link queue-limit$n3 $n5 2. OMb$n3 $n5 10IOms$ns duplex-link $n0 $n2 2. OMb IOms DropTail#申明链路队列长度DropTailDropTailDropTailDropTail#为NAM创建节点位置描述,以第一个为例,2号节点在0号节点的右下 方$ns
5、duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $nl $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 udp new gentUDP# 将0号节点Agent/UDP绑定,以下类似$ns attach-agent $n0 $udpOset null2 new
6、Agent/Nul1$ns attach-agent $n4 $null2# 将Agent/UDP及Agent/Null节点进行连接$ns connect $udpO $nul12# 设置Agent/UDP包大小$udpO set packetSize_ 1500# 新建另一个UDP连接set udpl new Agent/UDP$ns attach-agent $nl $udplset null3 new Agent/Null$ns attach-agent $n5 $null3$ns connect $udpl $nul13$udpl set packetSize_ 1500# 在UDP连
7、接上新建一个CBR应用set cbr new pplicationTrafficCBR$cbr0 attach-agent $udp0$cbr0 set packetSize_ 1500$cbr0 set rate_ 1. OMb$cbr0 set random_ null# 在第1秒,ScbrO服务开始发送$ns at 1.0 $CbrO start”# 在第4秒,$Cbro服务住手发送$ns at 4. 0 zzScbrO stop”# 在UDP连接上新建一个CBR应用set cbrl new App1ication/TrafficCBR$cbrl attach-agent $udpl$c
8、brl set packetSize_ 1500$cbrl set rate_ 1. OMb$cbrl set random_ null $ns at 2. 0 zzScbrl startz, $ns at 3. 0 $CbrI stop”# 定义一个finish,过程用以处理摹拟结束之后需要完成的动作 proc finish ) # 申明使用外部变量global ns tracefile namfile val$ns at $val (stop) $ns nam-end-wire 1 ess $val (stop)zz# 清空追踪区域 $ns flush-trace# 关闭trace文件 c
9、lose Stracefile# 关系nam文件 close Snamfile# 执行系统命令nam out. nam exec nam out. nam & exit 0)# 在VaI(StOP)时间调用finish过程$ns at $val(stop) “finish”$ns at $val (stop) ,zputs done” ; $ns halt”# 启动ns$ns run保存退出,在当前目录下,使用ns your TCL file name. tcl四、实践数据及分析结果:2/7图一(开始传输数据)4/7图二(开始发生丢包)图三(节点1住手发送数据)6/7图四(节点5住手接收数据)
10、7/7图五(节点。住手发送数据)五、实验结论通过这次实验,我学会了在LINUX系统上安装NS2,同时更直观的理解了一 旦发生丢包后,节点会等到队列中的数据发送完后才会接受新的数据包。电子科技大学实验报告实验二实验二TCP性能仿真实验一、网络拓扑:三个节点:NO、NL N2,节点NO和N1相连,N1和N2相连工网络配置:TCP协议三、实验环境:Ubuntu 12. 04/kernel 3.5GCC 4. 6. 3NS-2. 33四、实践步骤:修改tcp. CC代码Gedit ns-allinone-2. 33ns-2. 33/tcp/tcp. cc(将窗口阈值一半变为的窗口阈值1/3wt_tcp
11、l.cc) 第一处:if (cwnd_ ssthresh_) 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 );/ ssthres
12、h_ = int( window() / 3 );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代码,实现一个简单的3节点
13、,2条链路的网 络网络如下图这个是该网络结构对应代码set val (stop) 5. 0set ns new Simulator# 设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文 件set f open out. tr wset tracefd open wired, tr w$ns trace-all Stracefdset nf open wired, nam w$ns namtrace-al1 $nfrecord过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现 proc record ) global sink fset ns Simulator in
14、stance# 设置经过多少时间再次调用该过程set time 0. 5# 计数Sink节点接受了多少数据set bw $sink set bytes_# 设置当前时间set now $ns now# 计算网络流量并写入文件中puts $f0 $noW expr $bw/$time*8l000000zz# 重置计数器$sink set bytes_ 0# 循环调用该过程一$ns at expr $now+$time “record”)$ns at 0. 0 record”proc finish global ns tracefd nf val f$ns at $val(stop) $ns nam-end-wireless $val(stop)$ns flush-traceclose $f0close Stracefdclose $nfexec nam wired, nam &exit 0set n $ns nodeset nl $ns nodeset n2 $ns node$ns duplex-l