基于ns2无线传感网adhoc网络仿真设计本科学位论文.docx
《基于ns2无线传感网adhoc网络仿真设计本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于ns2无线传感网adhoc网络仿真设计本科学位论文.docx(80页珍藏版)》请在冰豆网上搜索。
![基于ns2无线传感网adhoc网络仿真设计本科学位论文.docx](https://file1.bdocx.com/fileroot1/2023-7/10/46da0cfe-c264-462f-b224-1a57bd3bfa25/46da0cfe-c264-462f-b224-1a57bd3bfa251.gif)
基于ns2无线传感网adhoc网络仿真设计本科学位论文
课程设计
课程名称:
无线传感器网络原理及方法
设计题目:
基于NS2无线传感网“AdHoc网络仿真”设计
学院:
信息工程与自动化学院
专业年级:
2010级计算机系104班
学号:
201010405424
学生姓名:
李本双
指导教师:
江虹
日期:
2013-7月
课程设计任务书
信息工程与自动化学院计算机科学与技术专业2010年级学生姓名:
李本双
课程设计题目:
基于NS2无线传感网“AdHoc网络仿真”设计
课程设计主要内容:
本课程设计的任务是在原有书本知识和实验基础上学习嵌入式系统中基本的程序设计方法和技术。
本课程设计的目的是通过设计使学生加深对理论课的理解,提高学生运用理论知识解决实际问题的能力。
基本理论
1、无线传感网技术原理
2、操作系统
3、嵌入式软件开发技术
实验方法与基本要求
嵌入式开发采用宿主机加目标机的模式,宿主机是执行编译、链接、定址过程的计算机;目标机是远行嵌入式软件的硬件平台。
要求学生掌握嵌入式系统开发的一般方法,整个设计过程必须由学生自己独立完成,课程设计按二人一组,分组进行全过程的设计。
设计内容
1、建立传感网汇聚节点
2、设计传感节点的网络结构(星形、树形)
3、设计上位机监控程序(图形方式显示节点拓扑结构、采集数据)
设计指导教师(签字):
教学基层组织负责人(签字):
2013年7月13日
1、课程设计的目的及要求……………………………………4
1.1、设计目的……………………………………………………………4
1.2、所需仿真平台及网络仿真软件……………………………………4
1.3、ns-allinone-2.35的安装…………………………………………4
2、WSN开发背景……………………………………………7
2.1、WSN简介…………………………………………………………7
2.2、 应用领域 …………………………………………………………8
2.3、 主要特点 …………………………………………………………8
2.4、 硬件平台…………………………………………………………8
2.5、软件平台…………………………………………………………8
2.6、仿真系统…………………………………………………………10
2.7、 数据可视化………………………………………………………10
3、NS2开发理论及方法…………………………………………………10
4、AdHoc网络仿真通信场景的设计与实现…………………………14
4.1设计要求………………………………………………………14
4.2详细设计………………………………………………………14
随机建立通信场景文件……………………………………………………14
4.3源代码(dd.tcl文件)…………………………………………14
4.4仿真截图………………………………………………………………21
5、AdHoc网络仿真有关数据跟踪的设计与实现………………23
5.1设计要求………………………………………………………23
5.2详细设计………………………………………………………23
1)定义节点的配置参数……………………………………………23
2)初始化跟踪档案…………………………………………………24
5.3源代码(aa.tcl文件)……………………………………24
5.4仿真截图……………………………………………………30
6.总结和体会…………………………………………………………33
7、参考文献…………………………………………………………33
基于NS2无线传感网“AdHoc网络仿真”设计
1、课程设计的目的及要求
1.1、设计目的
1).学习AdHoc网络AODV路由协议与其在NS2中的仿真;
2).掌握NS2中的随机数据流与随机场景的生成;
3).初步学习使用trace文件的处理方法,进行。
4).建立个网络,再进行测试网络全程跟踪(对于吞吐量、数据包丢失、分组延迟)
5).评价指标为数据包成功递交率、平均延迟等
1.2、所需仿真平台及网络仿真软件
Ubuntu系统13.04.1
ns-allinone-2.35
1.3、ns-allinone-2.35的安装
1).下载软件
ns-allinone-2.35.tar.gz(
通过ctrl+alt+T打开终端,在其中输入
cdns2.35<回车>
tarzxvfns-allinone-2.35.tar.gz<回车>将ns2.35解压到当前目录下
2).安装前的准备工作
为了更好的安装ns2,需要更新ubuntu系统文件,在终端中输入命令
sudoapt-getupdate
sudoapt-getupgrade
sudoapt-getdist-upgrade
首次采用sudo时,需要用户密码,也就是安装ubuntu时设置的。
还需要进行一些package的安装,输入命令
sudoapt-getinstallbuild-essential
sudoapt-getinstalltcl8.5tcl8.5-devtk8.5tk8.5-dev
sudoapt-getinstalllibxmu-devlibxmu-headers
3).准备工作做好后,开始安装软件
$cdns-allinone-2.35
$./install(别忘了前面的那个点)
安装过程需要一会。
安装正确的话应该可以看到如下提示:
IMPORTANTNOTICES:
4).配置环境变量
$sudogedit.bashrc(这里一定要看清gedit和.bashrc之间有一个空格)
在弹出来的窗口的文件末尾加入:
(注意:
下列代码中wangtiantian/mysoft/是我的ns-allinone-2.35文件路径,要按照你自己的更改)
Export
PATH=$PATH:
/home/administrato/桌面/ns2.35/bin:
/home/administrator/桌面/ns2.35/tcl8.5.10/unix:
/home/administrator/桌面/ns2.35/tk8.5.10/unix
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
/home/administrator/桌面/ns2.35/otcl-1.14:
/home/administrator/桌面/ns2.35/lib
export
TCL_LIBRARY=$TCL_LIBRARY:
/home/administrator/桌面/ns2.35/tcl8.5.10/library
保存退出。
5).验证测试
重新打开一个终端,输入ns并回车
$ns
(如果正常的话,会出现“%”操作提示符)
输入一段TCL脚本代码进行测试
%puts"Hellons2"
Hellons2
%
说明安装成功。
真是不容易呀!
6)、安装过程遇到的问题以及解决办法
问题1Errorencounteredbyme:
-
Infileincludedfromlinkstate/ls.cc:
67:
0:
linkstate/ls.h:
Ininstantiationof‘voidLsMap:
:
eraseAll()[withKey=int;T=LsIdSeq]’:
linkstate/ls.cc:
396:
28:
requiredfromhere
linkstate/ls.h:
137:
20:
error:
‘erase’wasnotdeclaredinthisscope,andnodeclarationswerefoundbyargument-dependentlookupatthepointofinstantiation[-fpermissive]
linkstate/ls.h:
137:
20:
note:
declarationsindependentbase‘std:
:
map,std:
:
allocator>>’arenotfoundbyunqualifiedlookup
linkstate/ls.h:
137:
20:
note:
use‘this->erase’instead
make:
***[linkstate/ls.o]Error13Nsmakefailed!
解决办法Solution:
a.Gotons-allinone-2.35/ns-2.35/linkstate/
b.Noweditls.h
Inlinenumber137,inplaceofvoideraseAll(){erase(baseMap:
:
begin(),baseMap:
:
end());}
makeitvoideraseAll(){this->erase(baseMap:
:
begin(),baseMap:
:
end());}
c.Savethefileandagainrun./install
问题二
administrator@ubuntu:
~$ns
%nam
Can'tfindausableinit.tclinthefollowingdirectories:
:
/home/administrator/桌面/ns2.35/tcl8.5.10/library:
/home/administrator/桌面/ns2.35/tcl8.5.10/library/init.tcl
/home/administrator/桌面/ns2.35/lib/tcl8.5.10/lib/tcl8.5.10/lib/tcl8.5.10/library./library./tcl8.5.10/library
./tcl8.5.10/library
ThisprobablymeansthatTclwasn'tinstalledproperly.
childkilled:
SIGABRT
%
解决办法:
administrator@ubuntu:
~$sudoapt-getinstallnam
2、WSN开发背景
2.1、WSN简介
无线传感网(wireless sensor network)是由在空间中分布的含有传感器的自主设备所组成的无线网络。
这些设备协同监测不同位置上的物理或环境条件,比如温度、声音、振动、压力、运动、污染等。
无线传感网的开发最初用于军事用途,比如战场监视。
如今无线传感网已被用于很多民事用途,包括生态环境监测、医疗卫生应用、家庭自动化、交通控制等。
传感网络中的每一个节点除了装有一个或多个传感器以外,一般还装有一个无线电收发器,一个小型微控制器,和一个能量装备,这通常是一个电池。
单一传感节点的大小不一,大如一个鞋盒,小至一粒尘土。
同样的,部署这些传感节点的花费也不一,这要取决于传感网络的大小以及单一传感节点的复杂度。
在尺寸和费用上对传感节点的制约,导致了对其在能源、存储、计算速度和带宽等资源方面上的相关制约。
在计算机科学和电信学领域,无线传感网是一个活跃的研究方向,每年都安排有大量的研究小组和研讨会。
2.2、 应用领域
无线传感网在不同的场合有很多应用。
在商业和工业领域,有些数据很难用有线传感器来监视,或者实现起来代价过于昂贵,在这种场合可以用无线传感网来监视。
无线传感网可以被部署在野外环境,它们可以被放置多年(用来监视某些环境因素)而不需要重新充电或者更换能量装备。
它们能够组成属地的边界,监视入侵者的行进过程(将信息在节点之间传递)。
无线传感网的用途很多,典型的应用包括监视、跟踪和控制。
它一般被用于自然环境监视、目标跟踪、核反应堆控制、火警监测、交通监视等用途。
在一个典型的工作环境中,无线传感网被分散布置到区域中的各处,通过它的传感节点来采集数据。
地区监视是无线传感网的一种典型应用。
在此应用中,无线传感网被布置在需要监视某种现象的区域中。
举例来讲,可将大量的传感节点布置在战场上,取代地雷来监视敌人的入侵。
一旦传感器检测到被监视事件(热、压力、声音、光、电磁场、振动等)的发生,就需要将该事件报告给基站,基站收到报告后做出相应的动作(比如将消息发至互联网或者卫星)。
根据具体应用的场合,不同的性能目标需要不同的数据传播策略,这些目标包括对响应的实时性的要求,对数据冗余的要求,对安全性的要求等。
2.3、 主要特点
无线传感网的特点有:
Ø 节点小型化 Ø 有限的能量供给 Ø 苛刻的环境条件 Ø 节点失效问题
Ø 动态的网络拓扑 Ø 通讯失败问题 Ø 大量部署的节点 Ø 无人值守
可以将传感节点想像成一台小巧的计算机,特别是在它们的接口和组件方面。
传感节点通常由这些部分组成,一个计算能力和存储能力有限的处理单元,一些传感器(有特定的调节电路),一个通讯设备(通常为无线电收发器),和一个通常为电池的能量供给装置。
其他一些可选部分有环境能源发电模块,辅助的专用集成电路,以及可能的辅助通讯设备(比如RS232或USB)。
基站可以有一个或者多个,它们是无线传感网中的特殊成员,具有相对强大的计算、能量和通讯资源。
基站的作用相当于传感节点和最终用户之间的网关。
典型的无线传感网架构见图1。
2.4、 硬件平台
硬件方面的主要挑战在于制造低成本和微小的传感节点。
考虑这一目标,现在的传感节点主要还处在原型阶段。
小型化和低成本的解决要寄希望于最近以及将来在微机电系统(MEMS)和纳机电系统(NEMS)领域的进展。
SNM - Sensor Network Museumtm.上概括了常见的传感网络平台,组件,技术和相关主题。
和主流计算机不同,目前还没有无线传感网的官方标准,所以硬件以及软件的互操作性和可重用性都较低。
下面列出一些领域内研究所使用的标准:
ZigBee Ø Wibree Ø 6lowpan
2.5、 软件平台
对无线传感网节点而言,能量是最缺乏的资源,它决定了节点们的生命周期。
无线传感网节点将被大量放置到各式各样的环境下,包括遥远和敌对的区域,这样自组织通讯将变得重要。
由于这些原因,算法和协议必须解决以下问题:
Ø 生命周期最大化 Ø 鲁棒性和容错性 Ø 自配置
无线传感网软件研究上的一些热门课题有:
Ø
安全性
Ø 可移动性(移动中的传感节点或者基站)
Ø 中间件(在软件和硬件之间设计中间层)
(1) 操作系统
一般来说,无线传感网节点上的操作系统比通用操作系统的复杂度低。
这有两方面的原因,一方面是由于传感网应用程序的特定需求,另一方面是由于传感网硬件平台的资源限制。
举一个例子,传感网应用程序通常不要求像PC机应用程序那样的可交互性,这样操作系统就不需要支持那样的用户接口。
更进一步讲,在内存和内存映射硬件支持上的资源限制,使得类似于虚拟内存的机制变得不必要或者不可能实现。
无线传感网在硬件上和传统的嵌入式系统没有区别,这就有可能在传感网上使用像eCos或者uC/OS这样的嵌入式操作系统。
不过这些操作系统的设计通常具有实时特性,而与传统嵌入式操作系统不同的是,专用于传感网的操作系统一般不支持实时性。
TinyOS也许是第一个专门为无线传感网而设计的操作系统。
和大多数操作系统不同,TinyOS采用基于事件驱动的编程模型,而不是基于多线程。
TinyOS程序由事件处理例程和具备语义运行的任务所组成。
当外部事件发生时,比如新到数据包或者读传感器,TinyOS调用相应的事件处理例程来处理该事件。
事件处理例程可以发布任务,这些任务将被TinyOS核心所调度。
不管是TinyOS系统,还是TinyOS下开发的应用程序,都是用nesC编程语言写成的。
nesC是C编程语言的扩展,它被设计成可以发现在任务和事件处理例程之间的竞争条件。
存在一些操作系统支持C语言编程,这些操作系统包括Contiki、MANTIS、BTnut、SOS和Nano-RK。
Contiki的设计支持从网络加载模块,还支持运行时加载标准ELF文件。
和TinyOS一样,Contiki的核心是基于事件驱动的,但是Contiki支持基于每应用程序的多线程。
更进一步的,Contiki支持protothreads,它在提供类似于多线程编程抽象的同时,只支付了非常小的内存开销。
与事件驱动的Contiki核心不同,MANTIS和Nano-RK的核心基于抢先式多线程。
在抢先式多线程方式下,应用程序不需要显式地释放微处理器给其他进程,取而代之的是,核心将时间划片给活动进程,并决定当前可以执行哪一个进程。
这使得应用程序的编程更加容易。
Nano-RK核心对资源的分配是实时的,能够有很好的粒度来控制任务对CPU时间、网络和传感器的占用。
和TinyOS、Contiki一样,SOS是基于事件驱动的操作系统,SOS的主要功能是支持可加载模块,一个完整的系统由一些小模块所构建,这样的构建可能发生在运行时。
为了支持模块接口内在的动态性,SOS也致力于支持动态内存管理。
BTnut基于协作式多线程和plain C代码,有打包的开发工具和指南。
(2) 中间件
目前有大量的研究投入在无线传感网中间件的设计上。
一般来讲研究方向可以分为分布式数据库、移动代理和基于事件的模型。
(3) 编程语言
在传感节点上的编程比在常规的计算机系统困难。
这些节点上受限的资源状态,带来了新的编程模型,尽管这些节点大多采用C编程语言。
下面是一些编程语言列表:
Ø c@t(在空间和时间上的某一点上进行计算)
Ø DCL(分布式组合语言) Ø galsC Ø nesC Ø Prototheads Ø SNACK Ø SQTL
(4) 算法
无线传感网包含大量的传感节点,这就隐含地要求为无线传感网所设计的算法是分布式算法。
在无线传感网中,最匮乏的资源是能源供给,而最耗费能源的操作之一是数据传输。
由于这个原因,无线传感网的算法研究大都集中在能源相关的从传感节点到基站的数据传输算法上。
由于无线传输的能源消耗相对于传输距离以多项式增长,数据传输常是多跳的(从节点到节点,往基站方向)。
无线传感网的算法研究和协议研究的区别在于,算法研究的数学模型通常更抽象,更具一般性,但是有时候实用性不如协议设计的模型。
2.6、 仿真系统
存在一些专门的无线传感网仿真平台,比如TOSSIM,它是TinyOS的一部分。
ns-2之类的传统的网络仿真器也可用来仿真。
一份详尽的无线传感网络仿真工具列表可以在CRUISE WSN Simulation Tool Knowledgebase上找到。
2.7、 数据可视化
无线传感网所采集的数据通常以数字数据的形式存放在一个中心基站。
有很多程序支持查看其所存放的大量数据,比如TosGUI、MonSense和GSN。
另一方面,开放地理空间联盟(Open Geospatial Consortium)正在制定可互操作接口和元数据编码的标准,这些标准支持将那些异质的传感站点实时地集成到互联网,允许任何一个个体使用Web浏览器监视或控制无线传感网。
3、NS2开发理论及方法
NS简单工具介绍
对于使用网络仿真软件来做网络效能分析的人而言,步骤通常是先设计出符合自己需要的网络仿真环境,设定其不同的参数,执行仿真,收集结果资料,最后把资料使用图片或表格把结果呈现出来以方便分析实验。
一般而言,对于ns2的初学者而言,总是会遇到一个问题,就是网络仿真程序跑完后,接下来该如何分析。
这是非常重要的一个过程,所以希望ns2的初学者能好好的研究此章节的内容,相信一定会对大家的研究有相当的帮助。
本节打算以一个简单的网络环境为范例,介绍如何使用一些工具来分析和呈现仿真结果,这包含了如何去量测End-to-EndDelay、Jitter、PacketLoss、和Throughput。
而采用的方法是去分析traffictrace档案的方式,这种方法的优点是简单且不需要去修改到ns2核心的部份,但缺点是若是仿真资料若是太多,traffictrace的档案会太大,这样会增加分析所需要的时间。
另外一种方法,是去更改ns2核心,增加或修改一些档案,把所需要量测的参数直接记录下来,这种方法的优点是仿真结束后,所需要量测的数据已经完全记录下来,但缺点是要动到ns2核心的部分,对于初学者而言,这是一个很大的门槛,这个方法笔者留到后面的章节在做介绍。
笔者先对要仿真的环境做一个简单的介绍。
这个网络的环境包含了四个网络节点(n0,n1,n2,n3),如下图所示。
网络节点n0到节点n2之间,和节点n1到节点n2之间的网络频宽(bandwidth)是2Mbps,延迟时间(propagationdelay)是10ms。
网络拓朴中的频宽瓶颈是在节点n2到节点n3之间,频宽为1.7Mbps,延迟的时间为20ms。
每个网络节都是采用DropTailqueue的方式,且在节点n2到节点n3之间的最大队列长度是10个封包的长度。
在节点n0到n3之间会有一条FTP的联机,FTP应用程序是架构在TCP之上,所以在写仿真环境的描述语言的时候,必需先建立一条TCP的联机,在来源端n0上使用TCPagent产生”tcp”来发送TCP的封包;在目的地端n3使用TCPsinkagent产生”sink”来接受TCP的资料、并产生回复封包(ACK)回传送端、最后把接收的TCP封包释放。
最后要把这两个agent连起来(connect),联机才能建立。
若是没有额外的参数设定,TCP封包的长度为1Kbytes。
在这里顺便补充说明一下,对于ns2仿真参数内定值设定是在ns-allinone-2.27\ns-2.27\tcl\lib目录下的ns-default.tcl,有想要进一步了解的人,可以去查看此档。
另外,在节点n1到n3之间有一条固定的传输速率的联机(ConstantBitRate,CBR),CBR应用程序是架构在UDP之上,因此必需在n1使用UDPagent来产生”udp”用来发送UDP封包,在n3上使用Nullagent来产生”sink”以接收由n1传送过来的UDP封包,然后把接收的封包释放。
CBR的传送速度为1Mbps,每一个封包大小为1Kbytes。
CBR是在0.1秒开始传送,在4.5秒结束传输;FTP是在1.0秒开始传送,4.0秒结束传输。
[SimulationTopology]
Ns2.35里面的simple.tcl例子仿真结果:
如下
仿真结束后,会产生两个档案,一个是out.nam,这是给NAM用的,用来把仿真的过程用可视化的方式呈现出来,这可以让使用者用”看”的方式去了解封包传送是如何从来源端送到接收端。
另一个档案是out.tr,这个档案记录了仿