收藏 分销(赏)

网络协议模拟分析.doc

上传人:人****来 文档编号:4000488 上传时间:2024-07-24 格式:DOC 页数:5 大小:29.54KB 下载积分:6 金币
下载 相关 举报
网络协议模拟分析.doc_第1页
第1页 / 共5页
网络协议模拟分析.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
西 安 邮 电 大 学 (计算机学院) 课程设计报告 题 目: 网络协议模拟与分析 专业名称: 班 级: 学生姓名: 学号(8位): 指导教师: 设计起止时间:2014年12月15日—2014年12月26日 网络协议分析与仿真课程设计报告 网络模拟 一、    课程设计目的 l 掌握网络模拟工具NS2的使用,学习基本的网络模拟方法. 二、    课程设计内容 l 协议模拟 Ø 工具:NS2,awk,shell,perl等; Ø 要求:掌握NS2网络模拟的基本流程; Ø 内容:NS2网络模拟基本流程 编写TCL脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp服务器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。各节点间的链路属性见图。 模拟时间设为13秒钟,在0。1秒开始产生cbr流量,在1。0秒开发发送发ftp流量;8.0秒ftp流量结束,12.0秒cbr流量结束.编写脚本(可用shell,awk,或perl等)分析模拟日志文件,统计每0.5s内0、1节点间链路通过的分组数以及字节数. 三、 设计与实现过程 1.仿真脚本代码与详细注解 #Create a simulator object /创建模拟器对象 set ns [new Simulator] /模拟器对象赋值给变量ns #Define different colors for data flows (for NAM) $ns color 1 Red $ns color 2 Yellow /给NAM定义不同的数据流,颜色的选择比较随意,只要易于区分就可以 #Open the NAM trace file set nf [open out。nam w] /打开out.nam文件,一般都是在执行程序的时候自动生成的 $ns namtrace-all $nf #Open the Trace file set tf [open out。tr w] /打开out。tr文件,也是自动生成的 $ns trace—all $tf /两个文件主要都是用来记录封包传输过程的 #Define a ’finish’ procedure /定义finish程序,在后面执行的时候会用到 proc finish {} { global ns nf tf $ns flush—trace close $nf /关闭nam文件 close $tf /关闭trace 文件 (在后面调用的时候,是在程序结束的时候,所以前面生成的两个文件必须要关闭) exec nam out。nam & #以后台方式执行nam exit 0 } #Create six nodes /创建六个节点 ,从n0到n5 set n0 [$ns node] set n1 [$ns node] set n2 [$ns node] set n3 [$ns node] set n4 [$ns node] set n5 [$ns node] #Create links between the nodes /创建结点之间的链路,而链路的创建都是基于题目要求的基础之上 $ns duplex-link $n0 $n2 1。5Mb 10ms DropTail $ns duplex-link $n0 $n4 1.5Mb 10ms DropTail $ns duplex-link $n1 $n3 1。5Mb 10ms DropTail $ns duplex—link $n1 $n5 1.5Mb 10ms DropTail $ns duplex-link $n1 $n0 2Mb 20ms DropTail #Give node position (for NAM) /根据题目图示要求,给NAM创建的节点位置如下 $ns duplex—link-op $n2 $n0 orient right-down $ns duplex-link-op $n4 $n0 orient right-up $ns duplex-link—op $n0 $n1 orient right $ns duplex—link-op $n0 $n1 orient right $ns duplex-link-op $n1 $n3 orient right-up $ns duplex-link-op $n1 $n5 orient right-down #Set Queue Size of link (n0—n1) to 10 /设置n0到n1之间的列长度 $ns queue—limit $n1 $n0 10 #Setup a TCP connection /建立TCP连接 set tcp [new Agent/TCP] $tcp set class_ 2 $ns attach-agent $n2 $tcp set sink [new Agent/TCPSink] $ns attach-agent $n3 $sink $ns connect $tcp $sink $tcp set fid_ 1 /NAM中,TCP的连接用红色的数据流表示 #Setup a UDP connection /建立UDP连接 set udp [new Agent/UDP] $ns attach-agent $n4 $udp set null [new Agent/Null] $ns attach—agent $n3 $null set null [new Agent/Null] $ns attach—agent $n5 $null $ns connect $udp $null $udp set fid_ 2 /NAM中,UDP的连接用黄色的数据流表示 //TCP与UDP的建立中,agent是一个代理,用来作为网络层的传输与接收 #Setup a FTP over TCP connection /在TCP连接上建立FTP set ftp [new Application/FTP] $ftp attach—agent $tcp $ftp set type_ FTP #Setup a CBR over UDP connection /在UDP连接上建立CBR set cbr [new Application/Traffic/CBR] $cbr attach-agent $udp $cbr set type_ CBR $cbr set packet_size_ 1000 $cbr set rate_ 1mb $cbr set random_ false /设置了cbr流量的包类型,字节大小,以及传输速率 #Schedule events for the CBR and FTP agents /设置FTP和CBR起止时间 $ns at 0。1 ”$cbr start” /0.1秒产生cbr流量 $ns at 1。0 ”$ftp start” /1.0秒发送ftp流量 $ns at 8。0 "$ftp stop” /8.0秒ftp流量结束 $ns at 12.0 "$cbr stop" /12.0秒cbr流量结束 #Call the finish procedure after 13 seconds of simulation time /13秒后调用前面写出的finish程序 $ns at 13.0 "finish" #Run the simulation /执行模拟器程序 $ns run 2。仿真过程示意(动画截图1个) 3。日志分析脚本设计(设计思路与代码、注解) 设计思路: 首先取出每行的时间(第二字段)、分组大小(第六字段); 若时间大于当前的时间段,变量加1,开始统计下一时间段信息; 数组count1记录分组的数目 数组count2记录每个时间段通过的分组的总字节数 #!/usr/bin/perl #count the number of packets between node0 and node1 ,the interval is 0.5 seconds。 $i=0; /定义变量i @info; /定义三个数组 @count1; @count2; while(<>){ /读out.tr文件的内容 @info = split(/ +/,$_); /以空格为分字符读取每一行的内容 $reason = $info[0]; /封包事件发生原因 (r代表封包被接收,+ 表示进入队列,- 表示离开队列) $time = $info[1]; /时间,表示流量传输的开始时间 $src = $info[2]; /封包的起始节点 $dst = $info[3]; /封包的终止节点 $length = $info[5]; /包的字节长度 #if($reason==’r’ && ($src==0 && $dst==1) || ($src==1 && $dst==0)){ if($reason=='r' && ($src==0 && $dst==1) || ($src==1 && $dst==0)){ /包被某个节点所接受,而且链路传输是在从0到1的链路上,判断语句 if($time 〉 $i*0。5){ /时间段超过0。5秒,执行下一行内容 $i++; } $count1[$i]++; /这个数组用于统计包的个数 $count2[$i]+=$length; /这个数组用于统计字节数 } } printf(”intervals(s)\t\tpackets\t\tbytes\n"); /显示语句,显示内容为:时间间隔,包,还有字节数 $i=1.0; while($count1[$i]){ /打印出来统计的信息 printf("%4.1f~%4.1f\t\t$count1[$i]\t\t$count2[$i]\n",($i-1)*0.5,$i*0.5,); $i++; } /显示统计出来的每个时间段的信息 4.分析结果展示(通过自绘图来说明) Packers: Bytes: 四、设计技巧及体会 1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。 整体的设计, 实现了题目中的所示要求, 即模拟时间设为13秒钟,在0.1秒开始产生cbr流量,在1。0秒开发发送发ftp流量;8.0秒ftp流量结束,12.0秒cbr流量结束, 用两种不同的颜色定义了两种数据流, 在执行ns的脚本之后,可以通过视觉上的直观感受真实的网络协议模拟过程.两个脚本的编写,并非基于自身的能力水平,而是在通过网上查询资料以及在同学的指导下,才基本实现了实习内容,但是对部分脚本代码的理解有待于进一步提高。 2、在设计过程中的感受。 通过网络协议的模拟仿真,更加直观形象的观察到整个运行过程,但是基于自身的能力水平,需要进一步的理解每一步操作的原理,在学习的过程中,要不断探索,多询问,多理解,多请教,才能不断进步,进而提升自己,扬长避短,不断充实自己的专业基础知识。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 合同范本

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服