数据通信实验报告_第1页
数据通信实验报告_第2页
数据通信实验报告_第3页
数据通信实验报告_第4页
数据通信实验报告_第5页
已阅读5页,还剩21页未读, 继续免费阅读

下载本文档

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

文档简介

1、电 子 科 技 大 学实 验 报 告实验一NS2的基础使用 NS2是一种提供虚拟环境进行网络模拟仿真,能验证网络性能的正确性和进行相关性能测试的软件。1、 实验环境: Ubuntu 12.04/kernel 3.5 GCC 4.6.3 NS-2.332、 网络拓扑: 实验共有6个节点,每个节点的连接情况如图所示。其中节点N0、N2和节点N1、N2连接,N3、N4和N4、N5连接,N2和N3连接。从0号节点到2号节点,带宽为2Mb,延时为10ms。 三、实践步骤:切换到用户根目录下cd 建立自己的文件夹mkdir your_document_name进入刚刚新建的文件夹cd your_docum

2、ent_name新建一个TCL 脚本文件gedit your_TCL_file_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 $tracefile#打开NAM 追踪文件set namfile open out.nam w$ns namtrace-all $namfile#新建6 个节点set n0 $ns nodeset n1

3、 $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#申明链路队列长度$ns queue-limit $n0 $n2 10$ns dupl

4、ex-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 $n5 10#为NAM 创建节点位置描述,以第一个为例,2 号节点在0 号节

5、点的右下方$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 绑定,以下类似$ns attach-agent $n0 $udp0s

6、et 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 $udp1 $null3$udp1 set packetSiz

7、e_ 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/Traffic/CBR$cbr1 att

8、ach-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-trace#关闭trace 文件close $tr

9、acefile#关系nam 文件close $namfile#执行系统命令nam xec 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四、实践数据及分析结果:图一(开始传输数据)图二 (开始发生丢包)图三 (节点1停止发送数据)图四 (节点5停止接收数据)图五 (节点0停止发送数据)五、实验结论通过这次实验,我学会

10、了在LINUX系统上安装NS2,同时更直观的理解了一旦发生丢包后,节点会等到队列中的数据发送完后才会接受新的数据包。电 子 科 技 大 学实 验 报 告实验二实验二 TCP性能仿真实验1、 网络拓扑: 三个节点:N0、N1、N2,节点N0和N1相连,N1和N2相连2、 网络配置:TCP协议三、实验环境:Ubuntu 12.04/kernel 3.5GCC 4.6.3NS-2.33四、实践步骤:修改tcp.cc 代码Gedit /ns-allinone-2.33/ns-2.33/tcp/tcp.cc(将窗口阈值一半变为的窗口阈值1/3wt_tcp1.cc)第一处:if (cwnd_ ssthre

11、sh_)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 );if (ss

12、thresh_ 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_ average.tr $grep “Q” redQueue.tr current.tr用文本编辑工具新建一个awk文件Gedit your_awk_file_name_1.awk加入以下代码(注意必须有大括号,否则报错):print $2,$3 avera

13、ge_xg.tr用文本编辑工具新建一个awk文件Gedit your_awk_file_name_2.awk加入以下代码:print $2,$3 current_xg.tr分别调用对应awk程序处理对应文件,例如:Gawk f your_awk_file_name.awk average.tr得到average_xg.tr文件最后使用xgraph工具对average_xg.tr, current_xg.tr进行解析得到图像。4, 计算丢包率用文本编辑器新建一个awk文件并加入以下代码:#程序初始化BEGIN dropNum=0; totalNum=0; i=0; event = $1; tim

14、e = $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+; #记录时间timeArri=time; #计算丢包率lossratei=(float)(dropNum/totalNum); i+; if(fid = 2 & event= d) dropNum +; END pri

15、ntf(#number of packet sent:%d,lost:%dn,totalNum,dropNum); printf(#lost rate of packets:%fn,dropNum/totalNum); for(j=0;jhighestPktId) highestPktId=pktId; #设置分组开始时间if(beginTimepktId=0) beginTimepktId=time;#计算结束时间 if(fid=2 & event!=d) if(event=r) endTimepktId=time; else endTimepktId=-1; END for(pktId=0

16、;pktId=highestPktId;pktId+) #计算延迟begin=beginTimepktId; end=endTimepktId; pktDuration=end-begin; if(beginend) printf(%ft%fn,begin,pktDuration); 用命令查看结果Gawk f your_awk_file_name.awk out.tr6, 计算吞吐量用文本编辑器新建一个awk文件加入以下代码:#throughput BEGIN 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; pktId = $12; if(event=r & fromNode=2 & toNode=3 & fid=2) #计算当前总流量pktSumi+1=pktSumi+pktSize; if(flag=0) beginTime=time; flag=1; endTimei=time; i+; END printf(%.6ft%.5fn,endTime0,0); for(j=

温馨提示

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

评论

0/150

提交评论