ns2中动态路由协议议的仿真 毕业设计

基于NS2的网络路由协议仿真(AODV、COPE+AODV)
由于毕设需要,才开始接触NS2。现在准备整理下整个过程,估计以后不会用到NS2了。首先是安装NS2了,笔者用的是NS2.34版本,安装过程有点小麻烦。后来看了下NS2.3
由于毕设需要,才开始接触NS2。现在准备整理下整个过程,估计以后不会用到NS2了。
首先是安装NS2了,笔者用的是NS2.34版本,安装过程有点小麻烦。后来看了下NS2.35的安装过程,都没啥报错,方便多了,大家有需要可以直接安装2.35版本。附上下载链接:
Ubuntu10.04安装NS2.34
1、更新下系统,在终端输入
sudo apt-get update
#更新源列表
sudo apt-get upgrade
#更新已安装的包
sudo apt-get dist-upgrade
#更新软件,升级系统
2、装几个需要使用的软件包
sudo apt-get install build-essential
#for gcc and some essential
sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev
#for tcl and tk
sudo apt-get install libxmu-dev libxmu-headers
拷贝安装包到合适的目录中比如/usr
sudo cp ns-allinone-2.34.tar.gz /usr
cd&/usr&& #到安装目录ls&& #可以查看该目录下的文件sudo tar -xzf ns-allinone-2.34.tar.gz&& #解压到当前目录cd ns-allinone-2.34&& #进入目录sudo ./install&& #开始安装
4、开始出现错误了。。。
……(以上省略)&&& make: *** [libotcl.so] 错误 1&&& otcl-1.13 make failed! Exiting ...
在网上找的解释:gcc 4.0版本以前是用ld -share来生成共享库的,但是到了4.0以上的版本,这个命令改为了gcc -share。在终端里输入gcc -v查看,我的版本是gcc version 4.4.1。
解决方法:
cd /usr/ns-allinone-2.34/otcl-1.13sudo gedit configure.in
把77行的SHLIB_LD=&ld -shared&,改为SHLIB_LD=&gcc -shared&,保存退出。然后
sudo gedit configure
按照[2]中的说法,在5518行找,木有。于是Ctrl+F了一下,在6000+行找到了。把SHLIB_LD=&ld -shared&改为SHLIB_LD=&gcc -shared&,保存退出。
cd回到目录ns-allinone-2.34下,重新运行
sudo ./install  
顺利完成安装。最后出来提示:  
Please put /usr/ns-allinone-2.34/bin:/usr/ns-allinone-2.34/tcl8.4.18/unix:/usr/ns-allinone-2.34/tk8.4.18/unix
into your PATH so that you'll be able to run itm/tclsh/wish/xgraph.  
IMPORTANT NOTICES: 
& & (1) You MUST put /usr/ns-allinone-2.34/otcl-1.13, /usr/ns-allinone-2.34/lib,&&& into your LD_LIBRARY_PATH environment variable.&&& If it complains about X libraries, add path to your X libraries &&& into LD_LIBRARY_PATH.&&& If you are
using csh, you can set it like:&&& &&& setenv LD_LIBRARY_PATH &&& If you are using sh, you can set it like:&&& &&& export LD_LIBRARY_PATH=  
&&& (2) You MUST put /usr/ns-allinone-2.34/tcl8.4.18/library into your TCL_LIBRARY environmental&&& variable. Otherwise ns/nam will complain during startup.  
&&& After these steps, you can now run the ns validation suite with&&& cd ns-2.34; ./validate
5、配置环境变量
用cd进入目录/home/hm(hm是我的用户名),,然后  
sudo gedit .bashrc  
在文件末尾加入:  
PATH=&$PATH:/usr/ns-allinone-2.34/bin:/usr/ns-allinone-2.34/tcl8.4.18/unix:/usr/ns-allinone-2.34/tk8.4.18/unix&  
LD_LIBRARY_PATH=&/usr/ns-allinone-2.34/otcl-1.13:/usr/ns-allinone-2.34/lib&  
TCL_LIBRARY=&$TCL_LIBRARY:/usr/ns-allinone-2.34/tcl8.4.18/library&
保存退出(上述内容在安装结束后的提示中有,见粗体部分)。
6、验证  
&&& 打开一个新终端,输入ns,如果出现%,则说明安装成功。  
&&& 也可以进入/usr/ns-allinone-2.34/ns-2.34/,输入./validate验证。  
&&& 到此。上面红色标注的部分记得都要用自己的安装路径替换。
安装结束后,开始进入正题,路由协议仿真。。。
由于我的毕设是做2个协议仿真,AODV、COPE+AODV。
AODV是NS2自带的协议,直接编写tcl仿真脚本就可以了;而COPE+AODV是需要自己添加的新协议。
COPE+AODV是一种基于网络编码的无线路由协议。将网络编码思想应用于无线单播网络通信的方案。COPE方案充分利用无线网络节点的广播特性,用简单的异或算法取代复杂的矩阵运算。COPE是一个机会主义的网络编码,其中每个节点窥探其在传输中的位置,学习它邻居节点的位置,同时探测编码机会,确保接收方可以解码。这种灵活的设计允许COPE有效地支持多个单播流,甚至当发送者和接受者是动态的或者数据流是未知和突发性的。COPE的一个设计目的是保证更高层协议和应用的互操作性。
接下来介绍我在NS2中添加COPE+AODV协议的过程。
step 1:比这里将COPE+AODV协议的名字叫做caodv,以ns2.34平台为例,我们在ns2.34目录下建立一个caodv目录。此目录包含caodv.h,caodv.cc,caodv_packet.h,caodv_rtable.h,caodv_rtable.cc五个文件。
其中五个文件的具体功能和作用如下:
(1)caodv.h 定义必要的计时器和路由代理
(2)caodv.cc 执行计时器、路由代理和Tcl文件
(3)caodv_packet.h 声明caodv路由协议需要在无线自组网节点交换的数据包
(4)caodv.h 声明我们自己的路由选择表
(5)caodv.cc 执行路由选择表
step 2:相应文件的代码
代码太多了,不贴了,附上下载地址。
step 3:我们需要对ns2中的一些文件进行修改,来使这个协议在tcl中被调用,
需要修改的文件有以下几个,你可以在ns目录下找到它们:
Common/packet.h
Trace/cmu-trace.h
Trace/cmu-trace.cc
Tcl/lib/ns-packet.tcl
Tcl/lib/ns-default.tcl
Tcl/lib/ns-lib.tcl
Queue/priqueue.cc
step4:需要修改的具体内容(在需要修改的地方添加红色的字)
<mon/packet.h&(两个需要修改的地方)
1: enum packet_t {
2: PT_TCP,
3: PT_UDP,
4: PT_CBR,
5: /* ... much more packet types ... */
6:&PT_CAODV,
7: PT_NTYPE // This MUST be the LAST one
=======================================
1: p_info() {
2: name_[PT_TCP]= &tcp&;
3: name_[PT_UDP]= &udp&;
4: name_[PT_CBR]= &cbr&;
5: /* ... much more names ... */
6:&name_[PT_CAODV]= &caodv&;
2.Trace/cmu-trace.h&(一个)
1: class CMUTrace : public Trace {
2: /* ... definitions ... */
3: private:
4: /* ... */
5:&void format_aodv(Packet *p, int offset);
6:&void format_caodv(Packet *p, int offset);
3.Trace/cmu-trace.cc&(三个,先在最上面加头文件,在找一个合适的地方加函数)
1:&#include &caodv/caodv_packet.h&
3: /* ... */
6: CMUTrace::format_caodv(Packet *p, int offset)
&&&&&& //这里面的代码可以参考自带的CMUTrace::format_aodv(Packet *p, int offset)
&&&&&& //将里面的aodv全部改成caodv
=========================================
2: CMUTrace::format(Packet* p, const char *why)
4: /* ... */
5: case PT_PING:
8: case PT_CAODV:
9: format_caodv(p, offset);
12: default:
13: /* ... */
4.Tcl/lib/ns-packet.tcl(一个)
1: foreach prot {
8: add-packet-header $prot
5.Tcl/lib/ns-lib.tcl(两个)
1: Simulator instproc create-wireless-node args {
3: switch -exact $routingAgent_ {
5: set ragent [$self create-caodv-agent $node]
=======================================
1: Simulator instproc create-caodv-agent { node } {
2: # Create CAODV routing agent
3: set ragent [new Agent/CAODV[$node node-addr]]
4: $self at 0.0 &$ragent start&
5: $node set ragent_ $ragent
6: return $ragent
6.Queue/priqueue.cc(一个)
2: PriQueue::recv(Packet *p, Handler *h)
4: struct hdr_cmn *ch = HDR_CMN(p);
6: if (Prefer_Routing_Protocols) {
8: switch(ch-&ptype()) {
9: case PT_DSR:
10: case PT_MESSAGE:
11: case PT_TORA:
12: case PT_AODV:
13: case PT_CAODV:
14: recvHighPriority(p, h);
7.Makefile(一个)
1: OBJ_CC = \
2: tools/random.o tools/rng.o tools/ranvar.o common/misc.o common/timer-handler.o \
你最喜欢的你可能喜欢
我要评论:
相关文档:
更多文档:
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright
All Rights Reserved. 基于NS2的洪泛路由协议的仿真移植及性能分析-博泰典藏网
典藏文档 篇篇精品
基于NS2的洪泛路由协议的仿真移植及性能分析
导读:1.1仿真技术应用现状,计算机仿真技术是以多种学科和理论为基础,通过虚拟试验的方法来分析和解决问题的一门综合性技术,计算机仿真(模拟)早期称为蒙特卡罗方法,根据仿真过程中所采用计算机类型的不同,计算机仿真大致经历了模拟机仿真、模拟-数字混合机仿真和数字机仿真三个大的阶段,20世纪50年代计算机仿真主要采用模拟机,60年代后串行处理数字机逐渐应用到仿真之中,但难以满足航天、化工等大规模复杂系统对第1章 概述1.1仿真技术应用现状计算机仿真技术是以多种学科和理论为基础,以计算机及其相应的软件为工具,通过虚拟试验的方法来分析和解决问题的一门综合性技术。计算机仿真(模拟)早期称为蒙特卡罗方法,是一门利用随机数实验求解随机问题的方法。其原理可追溯到1773年法国自然学家G.L.L.Buffon为估计圆周率值所进行的物理实验。根据仿真过程中所采用计算机类型的不同,计算机仿真大致经历了模拟机仿真、模拟-数字混合机仿真和数字机仿真三个大的阶段。20世纪50年代计算机仿真主要采用模拟机;60年代后串行处理数字机逐渐应用到仿真之中,但难以满足航天、化工等大规模复杂系统对仿真时限的要求;到了70年代模拟-数字混合机曾一度应用于飞行仿真、卫星仿真和核反应堆仿真等众多高技术研究领域;80年代后由于并行处理技术的发展,数字机才最终成为计算机仿真的主流。现在,计算机仿真技术已经在机械制造、航空航天、交通运输、船舶工程、经济管理、工程建设、军事模拟以及医疗卫生等领域得到了广泛的应用。网络协议的开发和完善需要进行许多验证和性能相关的测试工作,在很多情况下这些工作是不可能在实际的硬件系统上完成的,例如有一个算法需要几十个甚至上百个节点共同协作完成,受资源、经费、技术条件和场地等因素的限制,我们往往难以在实际的网络系统中完成验证和测试工作,这时就需要在虚拟的环境中进行模拟仿真。NS(Network Simulator)是目前主流的网络模拟软件之一,其开源、免费和易于拓展的特性使其拥有庞大的用户群体。经过多年的发展,目前流行的是版本2,也就是NS2(Network Simulator 2),最新的版本是NS2.35,在本课题中使用的是NS2.34。1.2本课题意义1.2.1本课题内容本课题隶属于“NS2网络协议仿真与模拟”的研究性课题小组,是其子课题之一,研究的主要方向是NS2下洪泛路由协议的原理及其实现机制,基于对NS2仿真工具的理解和运用,以及对常见路由协议的移植过程的理解,将其运用到具体的洪泛路由协议上,并且借助NS2自带的一些辅助分析工具对协议的性能进行可视化分析。1.2.2本课题研究意义由于互联网的发展,整个世界经济正在迅速融为一体,计算机网络已经成为国家的经济基础和命脉。计算机网络在生活和经济的各个领域正在迅速普及,总之,整个社会对网络的依赖程度越来越大,因此,计算机网络的性能问题也就变得突出起来,所以设计性能稳定的网络协议,就成为研究网络的一个重要而又具有挑战性的任务。而MFLOOD洪泛路由协议是一个最简单和最可靠的路由算法,在节点运动剧烈、进出网络频繁变化的场景下,全网洪泛是最有效的方式,其具有极好地健壮性,可用于军事应用,也可以作为衡量标准评价其他的路由算法,因此,本课题将研究重心放在洪泛路由协议的仿真移植和性能分析上。1.3 网络课程教学仿真实验库构建的意义目前,多数网络教材都是以OSI七层模型或TCP/IP五层模型的分层概念,概念多、理论抽象。因此,课堂教学不能照本宣科,切忌只讲空洞的理论,而不注重理论与应用的结合。教学过程必须做到生动、形象、全面、透彻。在具体的教学过程中,要讲清楚OSI或TCP/IP每一层要解决的问题,层与层之间的关系,对于每一层的相关协议要从应用的角度让学生理解。网络相关课程主要集中在对网络协议的教学内容上,传统的教学模式和呈现办法,很容易让初学者感到枯燥无味,失去学习的热情和积极性。即使那些经验丰富的教师能够利用生动活泼的语言解释枯燥的协议,在带给学生轻松课堂氛围的同时,也仍然不能让他们把书本知识和计算机网络中的实际运行机制建立联系。而若能在课堂教学中让学生“亲眼所见”,则必将会收到较好的效果。本论文对此提出了“网络课程教学仿真实验库构建的意义”的新观点,旨在构建一个能够引导学生自主式学习、实现开放式教育的课程教学仿真实验库,并利用NS自带的TK工具包进行实质的开发应用。构建网络课程教学仿真实验库,使用网络仿真软件仿真各种网络和协议,不但使教师可以生动形象的教授计算机网络知识,提高学生学习的热情和积极性,而且能使学生更为直观的吸收、掌握知识,培养学生善于思考的能力,使学生在学习过程中活跃起来,从而有助于理解和运用各种协议,达到对计算机网络协议的真正掌握。计算机网络课程教学仿真实验库的构建,无疑使教师在轻松授课的同时,为学生学好网络相关课程中的网络协议内容打下良好的基础。构建网络课程教学仿真实验库的主要目的是要推动推动计算机网络相关课程教学改革的进程,提高网络课程教学的的质量,使学生在轻松的授课环境下迅速的掌握网络相关课程知识。目前我国的网络仿真技术主要还是停留在科学技术研究的应用层面上,在网络相关课程辅助教学上还没有得到广泛的应用。本文针对洪泛路由协议仿真进行了设计和实现,对其中一些网络的运行进行了一定的改进,并对各种网络进行了数据分析,为丰富网络课程教学仿真实验库提供了一套可行的研究基础。这个网络的模拟仿真实验中包含了多种协议如TCP、UDP、AODV和DSDV和mflood等,对今后针对协议仿真的进一步研究提供了有利的参考。第2章 NS2仿真概述2.1 NS2简介NS是由UC Berkelay 大学开发的,来源于1989年的Real Network Simulator 项目,经过多年的发展,全世界各地研究者在此基础上不断地综合和完善,已经成为一个涉及网络各个方面的优秀的网络模拟工具。NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。2.2 NS2框架及组件2.2.1 NS2 的原理NS2仿真的核心思想有主要有三个方面:基于离散时间仿真、采用混合语言编程并提供多种仿真模型、tcl文件输入,trace及nam文件输出的仿真流程。1基于离散事件的仿真系统NS2是一个离散事件调度器,模拟的时间是由调度器的事件来推进的。调度器管理列表,使模拟得以进行。NS2采用面向对象、离散事件驱动的模拟方法。易于实现网络建模,模拟效率高,系统易于扩展。此外,NS2有一个内置的定时器,离散事件触发事件有内置定时器控制,不会受计算机速度影响。2 NS2的仿真模型NS采用了C++与tcl两种语言进行混合编程从而达到仿真的目的,其中,为了方便用户对方正流程进行控制,采用了易编写、修改的TCL语言做为仿真器的控制部分,而为了提高系统执行效率,各个协议的核心代码部分采用C++编写,这样的好处提高系统效率,且用户不必编写复杂的算法来进行仿真,只需要简单的调用既有功能即可完成仿真,此外用户也可以用C++编写新的协议加入自己的仿真系统中,整个仿真的模块及其关系如下图所示。 图2-1 NS2仿真模块图a.tcl脚本输入NS2的仿真过程由TCL脚本控制,TCL是Linux下一种很常见的脚本编写语言,因其优秀的可移植性及便于修改的特性而被广泛使用,NS2使用TCL脚本做为控制输入语言是为了方便用户编写代码控制仿真流程,也可以方便用户在仿真时对网络进行调整。 b.NS2仿真流程NS2仿真器内部是由很多个编写好的控制模块及协议模块构成,TCL脚本输入后,调用其中不同的控制模块及协议模块来实现对仿真过程,这种过程是面向对象的,即TCL调用不同的使用C++编写的对象,如仿真流程控制对象及协议对象,来实现整个仿真过程。 c.NS2文件输出部分NS2可以将仿真结构通过两种文件格式输出,具体的输出格式和方法由TCL脚本定义,NS2仿真器调用相应的对象将仿真结果写入文件中,通常有两种输出文件格式:(1)标准的Trace文件输出采用标准的Trace文件输出,Trace文件会按照以下格式记录每个节点在某一时刻对数据的处理情况,其格式如下。 图2-2 Trace文件格式说明(2)NAM文件输出在编写tcl脚本的时候,可以要求NS2输出一个nam文件用于nam显示,nam文件中包括了Trace文件中的所有部分,此外还有关于节点与链路位置、颜色等定义的代码。生成的NAM文件可以调用NAM辅助程序进行直观的仿真演示3 NS2的仿真流程用户对NS2一般采用如下的策略进行仿真:首先编写Tcl代码及协议模块(可以仅使用内置的协议模块),然后调用NS2对TCL代码进行仿真,最后对trace文件进行分析(使用AWK或Gnuplot)或者使用NAM工具对NAM文件进行演示操作。如图2-3是用NS模拟仿真的基本过程。图 2-3 使用NS模拟仿真的基本过程否包含总结汇报、计划方案、农林牧渔、外语学习、高中教育、党团工作、求职职场以及基于NS2的洪泛路由协议的仿真移植及性能分析等内容。本文共9页
相关内容搜索您现在的位置:
基于NS2的Ad-hoc网络路由协议仿真
综合排名:970&&&馆藏数:24944&&&总收益:?2313.8
资料等级:
在上学吧挣得收益数
资料价格:10学豆
文件类型: (rar)
资料大小:282.8 KB
上传时间:
标签: & & &
基于NS2的Ad-hoc网络路由协议仿真欢迎下载学习交流!!
[] [] [] [] [] [] [] []
¥45689.31¥32636.22¥16983.13¥10678.54¥10050.45¥5990.86NS2 路由协议的仿真_百度知道
NS2 路由协议的仿真
毕设题目是
无线自组织网络路由协议研究
题目要求用NS2仿真协议
代码可以找到
可NS2具体怎么操作??? 比如我要仿真AODV协议,需要编写tcl?怎么放进去啊?
哪位大神能帮帮我?QQ :
提问者采纳
已经将我有的一些 模拟的TCL文件发给你了,希望对你有所帮助关于ns的一些问题,可以查看我的博客,里面有些说明文档。地址为:hanyueyingdeng.
方便加我QQ吗
我想请教您一些问题
有问题给我发邮件吧,我最近比较忙
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
路由协议的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 动态路由协议 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信