ZigBee路由协议分析及仿真实现毕业论文摘要作为无线传感器网络WSNWirelessSensorNetworks的一项新型技术ZigBee技术具有低功耗低速率低延时低成本等特性本文然后讲解了NS2网络仿真软件的工作原理详细介绍了仿真环境的搭建和仿真分析的过程通过对CLUSTERTREE路由算法和AODVjr路由算法在不同发包间隔下的平均延时丢包率和控制包数量模拟获得仿真结果关键字NS2ZigBeeCLUSTERTREEAODVjrAsaWSNWirelessSensornetworkanewtechnologyZigBeetechnologywithlowpowerconsumptionlowspeedlowlatencylowcostfeaturesisapowerfulnetworkingcapabilitiesandlargenetworkcapacityandcanbewidelyusedinconsumerelectronicshomeandbuildingautomationindustrialcontrolmedicalequipmentandotherfieldsBecauseofitsuniquepropertiesZigBeewirelesstechnologyisthefirsttechnologyofwirelesssensornetworkhasabroaddevelopmentprospectsZigBeeprotocolstandardusingopensysteminterfaceOSIhierarchicalstructureincludingthephysicallayerandthemediaaccesslayershallbeformulatedbytheIEEE802154workinggroupandthenetworklayersecurityandapplicationframeworklayershallbeformulatedbytheZigBeeallianceInthispaperbasedonIEEE802154standardspecificationandZigBeestandardsbrieflyexpoundsthesimpleZigBeeprotocolstackprotocolstackarchitecturefocusingontheZigBeenetworklayerroutingandmeshnetworksbythetreeThenexplainedtheworkingprincipleofNS2networksimulationsoftwareintroducesindetailtheprocessoftheconstructionofthesimulationenvironmentandsimulationanalysisRoutingalgorithmbasedonCLUSTERTREEandAODVjrroutingalgorithmunderdifferentcontractawardingintervalaveragedelaypacketlossrateandthecontrolpacketnumbersimulationthesimulationresultsKEYWORDSNS2ZigBeeCLUSTERTREEAODVjr目录摘要Abstract目录III1绪论11背景介绍12课程设计环境和工作内容2ZigBee技术及仿真软件介绍21ZigBee技术概述22ZigBee协议栈架构23ZigBee网络层路由协议231ZigBee支持的网络拓扑232ZigBee网络编址方式233ZigBee网络路由算法介绍24NS2网络仿真软件介绍241NS2软件概述242trace文件格式介绍3仿真环境搭建过程31Fedora21安装过程32NS2的安装过程33NS2中添加ZBR路由协议的过程331协议底层文件332需要修改的文件333需要修改的具体内容334编译335测试脚本2734gnuplot的安装35本章小结4仿真过程与仿真结果分析41使用NS2进行模拟的基本流程42星型拓扑环境搭建和模拟421任务分析422编写Tcl脚本423执行模拟424修改路由算法425再次执行模拟43星型拓扑仿真结果分析431gawk工具介绍432传输延时433丢包率434控制包数量44树形拓扑环境的搭建和执行40441任务分析442编写Tcl脚本443执行模拟444修改路由算法445再次执行模拟45树形拓扑仿真结果分析451平均延时452丢包率453控制包数量46本章小结5总结和展望51总结52展望50参考文献致谢绪论背景介绍随着科技的发展文明的进步人类对于信息的需求也日益增大推广了信息的蓬勃发展近年来以移动通信和计算机技术为代表的信息技术更是进步飞速普及广泛在年月通过了标准及年工作组成立以后无线通信技术的发展更是如虎添翼日新月异其中孕育了大量的无线通信技术如蓝牙技术无线超宽带技术无线高保真技术紫蜂技术等等将无线通信技术带入了一个全新的阶段而像手机蓝牙宽带卫星等技术已经深入地应用到了人类社会生活的各个方面无线传感器网络是由大量分布在一个监控区域内的具有无线传输功能的传感器节点所组成的面向查询任务的无线自助网络将无线通信技术传感器技术网络技术分布式计算技术嵌入式信息处理技术等多种现代科学发张的高尖端技术领域融合在一起传感器节点通常由传感器微处理器存储单元电源射频芯片等几个主要模块组成但被设计成不同的类型在网络中起不同的作用接受查询任务时他们协同起来共同工作完成对目标数据的采集融合处理和无线传输并通过网络使得远处的监测者获得所需数据信息无线传感网络感念一经出现就引起了国际学术界的广泛关注年月美国玛萨诸塞理工学院的技术评论杂志将评为改变未来世界的十大技术之一同年在美国商业周刊的未来技术专版中专家认为传感器网络能够跟踪各种动态事务能够极大扩充互联网功能而将无线传感网络技术预测为全球未来的高新技术产业之一课程设计环境和工作内容硬件环境电脑型号LenovoZ465笔记本处理器AMDPhenomtmIIP960QuadCoreProcessor18GHz安装内存500GB软件环境系统windows764位操作系统软件VMWareWorkstation1001Fedora21WorkstationNS2allinone235工作内容运用NS2networkSimulatorversion2网络仿真软件仿真ZigBee路由协议通过对CLUSTERTREE路由算法和AODVjr路由算法在不同发包间隔下的平均延时丢包率和控制包数量模拟获得仿真结果技术及仿真软件介绍技术概述ZigBee名字来源有一个小故事大意是说蜜蜂发现事物源的时候通过之字形的舞蹈Zigzag舞在同伴之间传递这信息称之为ZigBee法则正是通过这个ZigBee法则使得蜂群能够维持生存和发展当然这只是个传说不过也是一个对于低功耗低成本传输速率低的新无线通信技术及其所组成的无线网络很好的比喻功耗低在低耗电待机模式下两节普通号干电池可使用个月以上成本低因数据传输速率低协议简单所以成本很低网络容量大每个网络最多可支持个设备工作频段灵活使用的频段分别为欧及美均为免执照频段技术适合于承载数据流量较小的业务也可嵌入其他设备中同事也能够支持地理定位功能其目标市场是工业家庭以及医学等需要的短距离低功耗低成本无线通信应用相对于现有的各种无线通信技术技术是最低功耗和低成本的技术常用无线通信协议的比较如表所示表常用无线通信协议比较协议栈架构在协议栈当中各协议层之间通过服务接入点ServiceAccessPointSAP进行信息交互低协议层通过SAP为高协议提供服务其中物理层与MAC层之间是物理层数据服务接入点PDSAP和物理层管理实体服务接入点PLMESAPMAC层与网络层之间是MAC层数据实体服务接入点MLDESAP和MAC层管理实体服务接入点MLMESAP网络层与APS之间是网络层数据实体服务节点NLDESAP和网络层管理实体服务接入点NLMESAPAPS与个应用对象或ZDO之间是APS数据实体服务接入点APSDESAP和APS管理实体服务接入点APSMESAPSAP一般较少出现跨层的情况只有在ZDO当中由于网络管理需要直接调用网络层所以网络层通过NLMESAP给ZDO直接提供服务而一般应用只能从APS获取服务另外安全服务SSP并不是一个单独的协议层次它是一系列安全功能嵌入到网络层和应用层的功能当中最后ZDO也会给其他应用对象提供一些功能称为ZDO公共接口ZDOPublicInterfaces当然实际上每个应用对象都有可能给其他引用对象提供可使用的功能接口这就像面向对象编程当中公共类型的方法或接口如图21所示图21ZigBee协议栈架构ZigBee通过SAP原语实现ZigBee各层之间的各种服务SAP是低协议层为高协议层提供服务的接口而这个接口的具体表现形式就是一系列原语原语是高协议层与低协议层之间传递的命令是在设备内传递的信息原语一共有4类型请求确认指示和相应如图22所示图22SAP和原语示意图网络层路由协议支持的网络拓扑ZigBee网络支持3种网络拓扑星型拓扑树形拓扑和网状拓扑如图23所示星型拓扑中间为ZigBee协调器它负责网络的建立服务维护其他节点是ZigBee的末端节点直接与协调器进行通信树形拓扑中有协调器路由器末端设备树形拓扑中协调器负责网络的建立和维护同时需要确定一些参数网络中的节点并不一定直接与协调器通信可能要通过若干个路由器后才能与协调器通信网状拓扑中通树形拖扑一样也具有协调器路由器末端设备但是它拓扑建立灵活不需要再建立网络的时候限制网络的形状并且节点之间通信可以通过最优路径进行请求高协议层低协议层确认指示相应网络编址方式ZigBee网络的编址方式主要有以下两种一是树形编址二是随机编址ZigBee网络中默认的地址分配机制是树形编址在使用这种编址机制时首先要确定部分网络参数包括网络最大深度Lm子节点最大数目Cm子节点当中路由器的数量Rm协调器节点的深度为0其他节点的深度为其父节点的深度加1树形节点的地址可以由父节点计算得到节点地址计算公式如式21AnApCSkipdRmn式21其中An代表节点的地址Ap代表父节点的地址n是1CmRm的值CSkipd是计算预留地址块大小的函数其计算公式如式22CSkipd1CmLmd1Rm1式22CSkipd1CmRmCmRmLmd11RmRm1在这种编址方式中每个路由器节点都可以给自己的子节点分配地址并不需要专门的节点分配地址因此又有分布式地址分配方式之称这种地址分配方式的缺点是网络拓扑受到很大的限制同时造成地址浪费这种编址的好处是路由算法简单随机编址机制相对于树形编址更加简单节点加入网络时它的父节点随机给它分配一个地址为了尽量避免地址冲突父节点为其分配地址之前首先检查已知的地址包括路由表网络管理器地址邻居表路由记录表等中存储的地址信息即使这样也难免出现地址冲突的情a星型拓扑a树形拓扑a网状拓扑末端节点路由器协调器图23ZigBee支持网络拓扑况这是就需要引入地址冲突检测和解决机制网络路由算法介绍ZigBee的路由包括单播路由广播路由组播路由这里只介绍与本论文相关的单播路由单播路由包括树路由网状网路由树路由使用CLUSTERTREE算法它依赖于前面讲到的树形编址树路由过程除了几个必须的网络拓扑参数外不需要存储其他的信息计算也很简单但是由于只能沿着树路径传递数据路径单一效率一般情况下比较低而且可靠性不强如出现单点故障网状网路由是ZigBee中一个高效的路由方案它采用简化后的AODV算法称之为AODVjrAODVjr对路由请求路由应答等命令进行了适当的修改将标志位源和目的序号等去掉了把条数域改为了路径代价域这种路由算法适合于拓扑和通信环境承载数据量不是很重而且有时会发生变化的网络使用AODVjr算法节点之间通信会寻找一条最佳路径通过路由代价来判断最佳路径网络仿真软件介绍软件概述人们提出了很多方法来验证网络协议的正确性和相关性能的测试目前使用最为广泛的就是通过使用模拟仿真器的虚拟环境来进行测试而流行的网络模拟仿真软件使用最多的就是NS2和OPNET了NS2是开源的免费的而OPNET是商业软件并不开源所以现在NS2已经被广大高校用于网络分析研究和教学NS2支持大量的协议并提供了丰富的测试脚本NSNetworkSimulator是网络模拟器的意思NS2是其第二版NS是由伯克利大学开发的一款开源的网络模拟软件它是一个面向对象的网络模拟器使用C和OTclOrientedToolCommandLanguage作为开发语言因此又被称为分裂对象模型开发机制NS2的系统结构图如图24所示图24NS2系统结构图NS2本质上是一个离散事件模拟器其本身有一个虚拟时钟所有的模拟都由离散事件驱动模拟器所做的就是不停的处理一个个事件直到所有的时间都被处理完或者某一特定的事件发生为止NS2拥有大量的构件库例如链路的队列节点分组链路等并通过对象实现这些实体的特性和功能这些对象易于组合易于扩展用户可以充分利用这些已有的对象进行少量的扩展组合出所需要研究的网络系统的模型图25给出了NS构件库的部分类层次结构图部分网络构建层次结构文件格式介绍Trace文件是在模拟过程中是生成的记录模拟每一个分组调度事件的文件一次模拟生成的信息基本上全体现在Trace文件中Trace文件包含很多有用的可供参考的数据我们需要从中筛选出我们关注的数据进行分析NS发展过程中对无线Trace的格式进行过修订目前NS兼容修订前的无线Trace格式称修订前的格式为无线网络Trace旧格式这次论文自使用到Trace旧格式所以只讲解旧格式下面是无线网络Trace旧格式EventTimeNodeLayerFlagsPktidPkttypePktsizeMACLayerInfo4545IPInfo动作时间节点层次4545分组UID分组类型分组大小MAC层信息4545IP层信息62551255300zbr102无线网络的Trace旧格式的记录的每项信息事件的类型有种类型和分别表示分组的发送接收丢弃和转发事件时间的发生时间事件发生的节点发生事件所在的层标志项分组的分组的类型分组的类型层的信息包含四项内容第一项是发送节点在无线信道上发送该分组所期望的时间其值为十六进制表示单位为妙第二项是接收节点的地址第三项内容是发送节点的地址第四项表示层封装的分组类型例如表示分组表示分组分隔符层的信息包含四项内容第一项是发送分组的源节点地址格式为节点号端口号第二项是接收分组的目的节点地址格式为节点号端口号第三项是分组的值第四项是源节点到目的节点的条数仿真环境搭建过程安装过程首先在Fedora官方网站下载Fedora21Workstation1下载之后打开VMWareWorkstation点击新建虚拟机如图31所示图31创建虚拟机2选择典型推荐T安装单击下一步如图32所示图32选择典型安装3点击安装光盘映像文件iso前的小圆点然后点击浏览找到自己刚才下载的FedoraLiveWorkstationi686215iso文件然后单击下一步如图33所示图33选择安装源文件镜像4客户机操作系统选择LinuxL版本选择Fedora然后单击下一步注如果你下载的是64位的Workstation请选择Fedora64位如图34所示图34选择客户机操作系统5为自己的虚拟机起一个名字这个可以随意最好是一眼就能看出是什么系统什么版本我这里取名为Fedora位置L是你想要将Fedora虚拟机安装的位置最好选用一个剩余空间大于20G的磁盘我选用的位置为GVirtualMachinefedora如图35所示图35命名虚拟机6默认配置给Fedora的容量为20G将虚拟磁盘拆分成多个文件这里保持默认就好然后单击下一步如图36所示图36指定磁盘容量7单击完成结束配置如图37所示图37已准备好创建虚拟机8单击打开此虚拟机开始正式安装Fedora21注安装前可以设置一下内存了处理器默认为1GB1处理器如果你的电脑是2GB4处理器就可以设置为2GB4处理器只需要单击编辑虚拟机设置设置就好增加内存和处理器可以使虚拟器安装更快如果不设置等安装完成后下次开机前在设置也可以如图38所示图38开启虚拟机9然后出现如下图的界面选择StartFedoraLive开始进行安装如图39所示图39开始安装Fedora10选择InstalltoHardDrive如果选择TryFedora只是试用Fedora而真正的安装到硬盘如图310所示图310安装到硬盘11选择安装的语言我选择的中文然后单击继续如图311所示图311选择语言12接下来设置日期和时间键盘安装位置网络和主机名只要设置安装位置就好其他的保持默认单击带有感叹号的安装位置设置虚拟机的安装位置如图312所示图312安装信息摘要13安装位置是使我们前面第6步设置的20G硬盘然后单击完成如图313所示图313安装目标位置14完成以上配置然后单击开始安装这个过程要进行大概十分钟如图314所示图314开始安装15在系统安装过程中设置一下root密码和创建用户单击ROOT密码设置root密码单击创建用户创建普通用户如图315所示图315设置用户密码16root密码最好是复杂度高的密码这样有助于保护系统的安全性root密码一定要记好如果忘记要想修改root密码是很麻烦的如果你设置了一个简单的密码如123系统会提示你密码太简单如果你向继续使用这个密码单击两次完成按钮就可以了如图316所示图316设置root用户密码17为普通用户设置用户名和密码也可以不设置密码如图317所示图317设置普通用户18等待安装进度条完成安装然后单击完成配置如图318所示图318完成配置19接下来系统自动进行一些配置重新启动就可以开始使用Fedora21了如图319所示图319Fedora21界面20在Fedora的terminal中输入ifconfg发现Fedora并没有获取到IP地址说明Fedora没有连上Internet现在关闭Fedora做一些配置使其能够连上Internet因为后续步骤安装软件需要使用网络如图320所示图320查看网络21网络适配器设置为NAT如图321所示图321网络适配器配置22接下来单击菜单栏编辑选择虚拟网络编辑器对虚拟网络进行设置如图322所示图322虚拟网络编辑器23单击左下角的恢复默认设置然后单击确定就会出现中间的小界面需要等待大概1分钟如图323所示图323恢复默认设置24接下来重新启动Fedora21就会在右上角显示一个小方块提示有限链接在terminal中输入ifconfig可以看到获取到了IP地址这是Fedora就可以正常使用了如图324所示图324查看网址的安装过程25所示图325下载NS2软件包然后打开终端先进行NS2安装前的其他必须软件的安装否则NS2安装的时候会报错如checkingforgccno等等打开终端terminal依次在终端下输入命令yuminstallgccYUM会自动下载rpm包和具有依赖关系的rpm包进行自动安装如图326所示图326安装gcc当出现IsthisokydN键入y按enter键如图327所示图327安装gcc安装完成会出现如下提示如图328所示图328安装gcc接下来还有很多类似的操作命令分别是yuminstallgccc安装gcccyuminstalllibX11devel安装libX11develyuminstallxorgx11protodevel安装xorgx11protodevelyuminstalllibXtdevel安装libXtdevelyuminstalllibXmudevel安装libXmudevel接下来进入解压后的文件夹命令cdusrlocalnsallinone235如图329所示图329安装NS2接下来要修改一个文件linkstate中lsh文件命令vins235linkstatelsh在第137行添加高亮的符号如果没有修改待会安装的时候就会出现makelinkstatelso错误注vi中常用命令1显示行号setnu2编辑i3退出esc4保存退出x如图330所示图330安装NS2安装NS2执行一个安装文件系统会自动安装所有内容首先进入usrlocalnsallinone235文件夹下然后输入命令install安装完成会出现安装成功的提示这个过程比较慢大概需要十几分钟如图331所示图331安装NS2接下来要配置环境变量命令virootbashprofile在其最后一行添加下列环境变量参数exportexportPATHPATHusrlocalnsallinone235otcl114usrlocalnsallinone235libexport接下来关闭终端重新打开然后测试环境变量是否设置成功在终端下输入ns如果出现说明环境变量配置成功如图332所示图332测试NS2运行测试用例测试是否安装成功命令nsusrlocalnsallinone235ns235tclexsimpletcl运行成功出现如下图所示的界面如图333所示图333测试NS2中添加路由协议的过程协议底层文件新建的协议名字就叫做zbr在usrlocalnsallinone235ns235文件夹下新建zbr目录在zbr目录下包含zbrhzbrcczbrpackethzbrrtablehzbrrtablecczbrlinkcczbrlinkhzbrrqueuecczbrrqueueh九个文件这9个文件包含在毕业设计的光盘中需要修改的文件需要对ns2中的一些文件进行修改来使这个协议在tcl中被调用需要修改的文件有以下几个commonpackethtracecmutracehtracecmutracecctcllibnspackettcltcllibnsdefaulttcltcllibnslibtclqueuepriqueueccMakefile需要修改的具体内容commonpacketh两个需要修改的地方添加代码第一个大约在202行staticconstpackettPTMDART72staticconstpackettPTZBR73新添加staticpackettPTNTYPE74这一行必须为最后一行第二个大约在421行namePTDCCPRESETDCCPResetnamePTZBRzbr新添加namePTNTYPEundefinedtracecmutraceh一个需要修改的地方添加代码大约在165行voidformatmdartPacketpintoffsetvoidformatzbrPacketpintoffset新添加ThisholdsallthetracersaddedatruntimestaticPacketTracerpktTrctracecmutracecc需要修改三个地方第一个在大约55行添加头文件include第二个找个合适的地方加上下面的函数可以在大约864行添加voidCMUTraceformatzbrPacketpintoffsetstructhdrzbrzhHDRZBRpstructhdrzbrrequestrqHDRZBRREQUESTpstructhdrzbrreplyrpHDRZBRREPLYpswitchzhahtypecaseZBRTYPERREQifpttaggedsprintfptbufferoffsetzbrtxzbrhdzbrbdzbrddzbrdsdzbrsdzbrssdzbrcREQUESTrqrqtyperqrqhopcountrqrqbcastidrqrqdstrqrqdstseqnorqrqsrcrqrqsrcseqnoelseifnewtracesprintfptbufferoffsetPzbrPt0xxPhdPbdPddPdsdPsdPssdPcREQUESTrqrqtyperqrqhopcountrqrqbcastidrqrqdstrqrqdstseqnorqrqsrcrqrqsrcseqnoelsesprintfptbufferoffset0xxddddddREQUESTrqrqtyperqrqhopcountrqrqbcastidrqrqdstrqrqdstseqnorqrqsrcrqrqsrcseqnobreakcaseZBRTYPERREPcaseZBRTYPEHELLOcaseZBRTYPERERRifpttaggedsprintfptbufferoffsetzbrtxzbrhdzbrddzbrdsdzbrlfzbrcsrprptyperprphopcountrprpdstrprpdstseqnorprplifetimerprptypeAODVTYPERREPREPLYrprptypeAODVTYPERERRERRORHELLOelseifnewtracesprintfptbufferoffsetPzbrPt0xxPhdPddPdsdPlfPcsrprptyperprphopcountrprpdstrprpdstseqnorprplifetimerprptypeZBRTYPERREPREPLYrprptypeZBRTYPERERRERRORHELLOelsesprintfptbufferoffset0xxdddfsrprptyperprphopcountrprpdstrprpdstseqnorprplifetimerprptypeZBRTYPERREPREPLYrprptypeZBRTYPERERRERRORHELLObreakdefaultifdefWIN32fprintfstderrCMUTraceformatzbrinvalidZBRpackettypeelsefprintfstderrsinvalidZBRpackettypeFUNCTIONendifabort第三个在大约1529行添加casePTPINGbreakcasePTZBR新添加formatzbrpoffset新添加break新添加casePTARPformatarppoffsetbreaktcllibnspackettcl需要修改一个添加大约172行添加WirelessARPAddressResolutionProtocolnetworkwirelessstackGAFGeographicAdaptiveDelityforadhocnetworksLLnetworkwirelessstackLRWPANzhengwpanp802154macccMacnetworkwirelessstackZBRZigBee新添加tcllibnsdefaulttcl需要修改一个最后一行添加DefaultsdefinedforzbrAgentZBRsetaccessiblevartruetcllibnslibtcl需要修改两个第一个大约672行添加ZBRsetragentselfcreatezbragentnode第二个大约891行添加SimulatorinstproccreatezbragentnodeCreatezbrroutingagentsetragentnewAgentZBRnodenodeaddrselfat00ragentstartnodesetragentragentreturnragentqueuepriqueuecc需要修改一个大约93行casePTAODVcasePTZBR新添加casePTAOMDVwpanp802154sscsh需要修改一个在大约57行打开ZigBeeIFdefineZigBeeIFwpanp802154sscscc需要修改一个大约在179行添加ifdefZigBeeIFboolnoCapacityintchildnumintlogAddrendifweassigntheclustertreeaddressastheMACshortaddressMakefile需要修改一个修改OBJCC大约在335行zbrzbrozbrzbrlinkozbrzbrrtableozbrzbrrqueueo编译进入ns235目录下输入下名命令进行编译makecleanmakesudomakeinstall以后若修改了程序需要先make再执行sudomakeinstall这一步必须执行测试脚本参考nsallinone235ns235tclexwpan下面的脚本的安装gnuplot是一个使用命令进行科学绘制图形的工具它能够把数据函数或数据资料转换成直观的二维或三维图形方便进行数据分析这次设计要使用到这个工具用它将测试出来的数据绘制成为图形方便对比和分析gnuplot的安装过程十分简单在终端下输入命令yuminstallgnuplot进行安装就可以了安装完成后在Fedora终端运行命令gnuplot就会进入gnuplot的绘图环境再输入plotsinx就会自动绘制出sinx的曲线图如图334所示图334测试gnuplot本章小结俗话说工欲善其事必先利其器本章节基于windows7操作系统在其上安装VMWareWorkstation然后在VM中安装Linux工作环境如RedHatCentOSUbuntuFedora等这里选择了Fedora21作为Linux工作环境然后在Fedora上安装了NS2网络模拟软件在NS2网络模拟软件中添加了这次设计需要的ZBR路由协议而后有安装了gnuplot绘图软件Linux工作环境NS2软件ZBR协议gnuplot绘图软件都是进行协议仿真和分析必不可少的工具只有做好了前面的铺垫工作才能做接下来要做的仿真工作上面的工作还有一个替代方案就是在windows工作环境下安装cygwinns2进行仿真实验仿真过程与仿真结果分析使用进行模拟的基本流程使用NS2进行网络模拟基本操作流程如图41所示用户首先进行问题定义考虑自己要模拟什么内容大概的拓扑应该怎样是否需要对源代码进行修改或添加功能等如果需要添加或修改代码如图中右边方框中所示有一个对NS2源码进行修改重新编译和调试的过程如果不需要修改代码即采用NS2已有构件即可完成模拟工作那么用户的主要任务就是编写TclOTcl模拟代码生成一个tcl脚本文件并在NS2环境下执行该脚本进行模拟模拟程序结束后会生成相应的Trace文件即模拟结果文件用户使用不同的工具对脚本中的内容进行分析得到想要的结果图表如果使我们所预期的那么整个模拟过程即可顺利结束否则应该分析问题所在并重新考虑问题定义源码及Tcl脚本的修改需要修改源代码时额外工作量满意不满意未通过通过需要结束分析任务需要修改源代编写Tcl脚执行模拟分析结果结果满开始分析问题所在修改源代码重新编译NS编译通调试NS不需要星型拓扑环境搭建和模拟任务分析拓扑共设置7个节点其中中心节点作为PAN协调器其余6个节点为设备节点节点0节点1节点3节点4节点5节点6分别向节点2发送CBRConstantBitRate恒定速率数据流分别使用clustertree路由协议和zbr路由协议对其做Trace记录然后分析对比两种算法的平均延迟丢包率控制包数量编写脚本设置各个节点的位置保存在toposcn中这个文件供tcl脚本使用以节点0为例node0为节点的名字setX25是设置x坐标为25setY25是设置y坐标为25setZ0是设置Z坐标为0因为设计中选用的是TwoRayGround既二径传输信道没有使用到三图41NS2进行网络模拟基本流程图维所以Z坐标设置为0这样0节点正好位于拓扑图的中心其他六个节点按照同样的方法进行设置下面是节点0的位置代码node0setX25node0setY25node0setZ0拓扑的结构图如图42所示图42星型拓扑下面编写模拟仿真的tcl脚本使用tcl来描述模拟环境中网络的环境和参数设置脚本文件保存在startcl中下面是一些重要代码描述设置无线节点参数包括无线节点使用的物理信道无线电波传播模型物理层使用标准MAC使用标准接口队列类型链路层类型天线模型使用的路由协议等这里面由于是做ZigBee的协议仿真所以在物理层和MAC层标准使用802154路由协议使用ZBRZigBeeRoutingsetvalchanChannelWirelessChannel物理信道类型setvalpropPropagationTwoRayGround无线电波传播模型setvalnetifPhyWirelessPhy802154setvalifqQueueDropTailPriQueue接口队列类型setvalllLL链路层类型setvalantAntennaOmniAntenna天线模型setvalifqlen150最大包队列setvalnn7移动节点数量setvalrpZBR路由协议为ZigBee协议setvalx50设定拓扑范围长度50msetvaly50设定拓扑范围宽度50m开启Trace跟踪文件和NAM显示文件在运行完tcl脚本后运用startr进行结果分析运用starnam进行模拟演示setnsnewSimulator初始化一个仿真对象nssettracefdopenstartrwtrace跟踪文件保存在startr中nstracealltracefd开启trace跟踪文件ifvalnamstarnamnamtrace显示文件保存在starnam中setnamtraceopenvalnamwnsnamtraceallwirelessnamtracevalxvaly设置每个节点的通信半径为15mCSThresh信号感应门限当两个信号发生碰撞被某几个节点同时接收时若其中一个信号的强度是另一个的CSThresh倍以上时虽然受到另一信号的干扰它仍能被解调假若不满足这一条件两个信号都不能直接被接收端感应RXThresh信号接收门限当信号强度大于信号接收门限才能被接受FormodelTwoRayGroundsetdist5m769113e06距离为5m时信号接收或发送门限值setdist9m237381e06距离为9m时信号接收或发送门限值setdist10m192278e06距离为10m时信号接收或发送门限值setdist11m158908e06距离为11m时信号接收或发送门限值setdist12m133527e06距离为12m时信号接收或发送门限值setdist13m113774e06距离为13m时信号接收或发送门限值setdist14m981011e07距离为14m时信号接收或发送门限值setdist15m854570e07距离为15m时信号接收或发送门限值setdist16m751087e07距离为16m时信号接收或发送门限值setdist20m480696e07距离为20m时信号接收或发送门限值setdist25m307645e07距离为25m时信号接收或发送门限值setdist30m213643e07距离为30m时信号接收或发送门限值setdist35m156962e07距离为35m时信号接收或发送门限值setdist40m120174e07距离为40m时信号接收或发送门限值PhyWirelessPhysetCSThreshdist15m设置CSThresh为15mPhyWirelessPhysetRXThreshdist15m设置RXThresh为15m配置节点的属性默认为RN使用AODVjr路由算法将RNType设置为1就是使用CLUSTERTREE路由算法defaultisRNsoonlysetRNnode0RNType0node1RNType0node2RNType0node3RNType0node4RNType0node5RNType0调用节点的位置信息sourcetoposcn开启PAN协调器协调器和设备nodesscsstartPANCoord3这条命令用来开启一个新的PAN并且节点会被作为PAN协调器使用时可以省略一下参数省略的参数就是用默认配置nodesscsstartDevice这条命令用于开启一个设备或协调器可以省略一些参数如node0sscsstartDevice0表示开启一个没有协调器能力的设备如node0sscsstartDevice表示开启一个非信标模式的协调器如node0sscsstartDevice111表示开启一个信标模式的协调器nodesscsstartCTPANCoord1这条命令用于开启一个基于clustertree的PAN协调器nodesscsstartCTDevice这条命令用于开启一个基于clustertree的设备其用法与命令b相似nsat00node0NodeLabelPANCoornsat00node0sscsstartCTPANCoord在00秒开启PAN节点0nsat05node1sscsstartCTDevice10在05秒开启设备节点1nsat15node2sscsstartCTDevice10nsat25node3sscsstartCTDevice10nsat35node4sscsstartCTDevice10nsat45node5sscsstartCTDevice10nsat55node6sscsstartCTDevice10控制节点间流量控制节点间流量源节点目的节点发送间隔开始时间ifvaltrafficcbrvaltrafficpoissonputsTrafficvaltrafficMac802154wpanCmdack4dataonputsformatAcknowledgementfordatasMac802154wpanCmdack4data修改nam演示速度nsatappTime1Mac802154wpanNamPlaybackRate03msnsatexprappTime105Mac802154wpanNamPlaybackRate15ms设置节点流量的源目的发送间隔开始时间valtraffictraffic0214appTime1valtraffictraffic1214appTime2valtraffictraffic3214appTime3valtraffictraffic4214appTime4valtraffictraffic5214appTime5valtraffictraffic6214appTime6设置提示信息nsatappTime1nstraceannotateatappTime1valtraffictrafficfromnode0tonode2nsatappTime3nstraceannotateatappTime2valtraffictrafficfromnode1tonode2nsatappTime5nstraceannotateatappTime3valtraffictrafficfromnode3tonode2nsatappTime1nstraceannotateatappTime4valtraffictrafficfromnode4tonode2nsatappTime3nstraceannotateatappTime5valtraffictrafficfromnode5tonode2nsatappTime5nstraceannotateatappTime6valtraffictrafficfromnode6tonode2设置不同类型流量的显示颜色Mac802154wpanNamFlowClrpAODVctomatoMac802154wpanNamFlowClrpARPcgreenMac802154wpanNamFlowClrpMACs0d1cnavyifvaltrafficcbrsetpktTypecbrelsesetpktTypeexp设置点到点流量的显示颜色Mac802154wpanNamFlowClrppktTypes0d2cblueMac802154wpanNamFlowClrppktTypes1d2cgreen4Mac802154wpanNamFlowClrppktTypes3d2ccyan4Mac802154wpanNamFlowClrppktTypes4d2credMac802154wpanNamFlowClrppktTypes5d2cyellowMac802154wpanNamFlowClrppktTypes6d2cblack结束进程相当于程序中的析构函数将开始创建的trace进程如果要演示nam动画就执行namstarnamprocstopglobalnstracefdappTime1valenvnsflushtraceclosetracefd关闭trace进程sethasDISPLAY0foreachindexarraynamesenvputsindexenvindexifindexDISPLAYampampenvindexsethasDISPLAY1ifvalnamtest1namampamphasDISPLAY1execnamstarnamamp执行nam演示仿真过程开始执行仿真模拟putsStartingSimulationnsrun开始执行仿真模拟执行模拟执行startcl脚本在Fedora终端中的startcl存放的文件夹下输入命令nsstartcl运行完成后使用ls命令查看当前文件夹中的所有文件会发现产生了startr和starnam两个文件其中startr是trace跟踪文件starnam是NAM显示文件其中startr文件用于后续做数据分析使用starnam文件用来简单的动画演示整个模拟过程修改路由算法复制startcl更名为star2tcl命令cpstartclstar2tcl然后打开start2tcl将tcl脚本中的startr改为star2tr将starnam改为star2nam然后修改节点的属性RNType1修改节点的开启命令defaultisRNsoonlysetRNnode0RNType1使用AODVjr算法node1RNType1node2RNType1node3RNType1node4RNType1node5RNType1node6RNType1开启设备和协调器nsat00node0NodeLabelPANCoorstartPANCoordnsat00node0sscsstartPANCoordstartDevicensat05node1sscsstartDevice10nsat15node2sscsstartDevice10nsat25node3sscsstartDevice10nsat35node4sscsstartDevice10nsat45node5sscsstartDevice10nsat55node6sscsstartDevice10再次执行模拟执行star2tcl脚本在Fedora终端中的star2tcl存放的文件夹下输入命令nsstar2tcl运行完成后使用ls命令查看当前文件夹中的所有文件会发现产生了star2tr和star2nam两个文件其中star2tr是trace跟踪文件star2nam是NAM显示文件星型拓扑仿真结果分析利用仿真模拟后产生的startr文件对Trace结果进行分析比较使用AODVjr和CLUSTERTREE路由算法端到端的平均延时控制包的个数数据包的丢失率工具介绍在进行分析Trace结果的过程中会使用到Linux中的gawk工具gawk每次从Trace文件中读取一行将读取的数据行分割成n个字段一般来说是以空格符来分割相邻的字段表41以starttr中的一行数据为例进行说明表41字段分割表1234567891011121314S2AGT451cbr7000004545452122320000当gawk把一行数据读入之后会把每一个字段存放在字段变量内如表42所示表42字段变量说明字段变量意义0为一字符串其内容为目前awk所读入的数据行1代表0上第一个字段的数据2代表0上第二个字段的数据编写awk文件resultawk计算平均时延丢包率控制包数量resultawk文件代码与注释如下BEGINhighestpacketid0初始化最高分组IDrecvpackets0初始化接收包数量sendpackets0初始化发送包数量ctrlpackets0初始化控制包数量action1第1个字段1标识事件的类型time2第2个字段2标识事件发送时间node3第3个字段3标识事件发生所在的节点agent4第4个字段4标识事件所发生的代理packetid6第6个字段6标识事件的分组IDtype7第7个字段7标识事件的分组类型更新最高分组IDifactionsampamppacketidhighestpacketidhighestpacketidpacketid记录发包时间和发包数量ifactionsampampagentAGTampamptypecbrsendtimepacketidtimesendpackets记录发包时间和和控制包数量ifactionsampampagentRTRsendtimepacketidtimectrlpackets记录接收包时间和控制包数量ifactionrampampagentAGTampamptypecbrrecvtimepacketidtimerecvpacketsENDlostratiosendpacketsrecvpacketssendpackets11是因为有0号分组的原因printfSendpacketsdsendpackets输出发送包数量printfRecvpacketsdrecvpackets输出接收包数量printfLostratio9flostratio输出丢包率averagedelaysumrecvpacketsprintfTheaveragedelaytime9faveragedelay输出平均延时printfTheCtrlpacketdctrlpackets控制包数量传输延时网络的传输时延DendtoendDelay定义为源节点发送出一个分组到目的节点接收到该分组之间的时间差它包括电或光信号在物理介质中的传播延时和数据在网络中的处理延时也即指网络中数据流量传输所用的时间在分析网络的传输时延时一般都统计平均传输时延D平均传输时延D的计算如式41平均延时所有延时之和传输数据包数量式41打开startcl脚本设置数据流的发送包间隔为01秒执行nsstartcl产生startr文件然后执行awkfresultawkstartcl计算出传输延时然后平均延迟数据记录到rtdelaydata如图43所示图43resultawk运行结果然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtdelaydata中打开star2tcl文件按照startcl的步骤将计算出来的数据保存在zbrdelaydata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel平均延迟gnuplotplotrtdelaydatawithlinespointszbrdelaydatawithlinespoints绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的平均延迟对比图样如图44所示图44平均延迟图样从图中可以看出clustertree的平均延迟在发包间隔高于02秒时都高于AODVjr路由协议这主要是因为使用AODVjr路由算法的发送报文可以选用最佳路径在物理介质间的传输时间会更短但二者相差不多主要是拓扑太小最佳路径和树形路径的距离相差无几丢包率丢包率LPacketLossRatio定义了传输期间网络丢失分组的数量通常指的是在特定时间段内丢失的分组占传输的数据总量的比例发生丢包的原因很多例如网络拥塞接收分组的缓冲区太小TTL值超过规定值以及无线信号的同频干扰等丢包率也是反应网络质量的一个重要参数丢包率的计算公式如式42丢包率发送包数量接收包数量发送包数量式42打开startcl脚本设置数据流的发送包间隔为01秒执行nsstartcl产生startr文件然后执行awkfresultawkstartcl计算出传输延时然后平均延迟数据记录到rtratiodata然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtratiodata中打开star2tcl文件按照startcl的步骤将计算出来的数据保存在zbrratiodata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel丢包率gnuplotplotrtratiodatawithlinespointszbrratiodatawithlinespoints绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的丢包率对比图样如图45所示图45丢包率图样从丢包率来看ZBR协议丢包率要小于CLUSTERTREE由于相对于CLUSTERTREE而言ZBR使用了AODVjr算法路径更短丢包率相对较小控制包数量控制包的数量定义了在发送数据包的数量一样时控制包的数量越少数据传输效率就越高打开startcl脚本设置数据流的发送包间隔为01秒执行nsstartcl产生startr文件然后执行awkfresultawkstartcl计算出传输延时然后平均延迟数据记录到rtcontroldata然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtcontroldata中打开star2tcl文件按照startcl的步骤将计算出来的数据保存在zbrcontroldata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel控制包数量gnuplotplotrtcontroldatawithlinespointszbrcontroldatawithlinespoints绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的控制包数量对比图样如图所示图46控制包数量图样从控制包来看ZBR协议控制包的个数与CLUSTERTREE控制包数量相差无几而且走势也所以并驾齐驱所以在不同发包速率下控制包数量基本一致clustertree略占优势因为CLUSTERTREE路由算法不需要计算最佳路径就减少了控制包的数量树形拓扑环境的搭建和执行任务分析拓扑共设置11个节点其中0节点作为PAN协调器节点1至节点5为路由器节点节点6至节点10位设备节点节点6向节点10发送CBR流量节点7向节点9发送CBR流量节点8向节点0发送CBR流量分别使用CLUSTTERTREE路由算法和ZBR路由算法分别记录其Trace文件然后对Trace文件进行分析计算其丢包率平均延迟控制包数量对比分析两种算法的性能编写脚本设置各个节点的位置保存在toposcn中拓扑的结构图如图47所示图47树形拓扑下面编写模拟仿真的tcl脚本使用tcl来描述模拟环境中网络的环境和参数设置脚本文件保存在treetcl中下面是一些重要代码描述设置无线节点参数包括无线节点使用的物理信道无线电波传播模型物理层使用标准MAC使用标准接口队列类型链路层类型天线模型使用的路由协议等这里面由于是做ZigBee的协议仿真所以在物理层和MAC层标准使用802154路由协议使用ZBRZigBeeRoutingsetvalchanChannelWirelessChannel物理信道类型setvalpropPropagationTwoRayGround无线电波传播模型setvalnetifPhyWirelessPhy802154setvalmacMac802154setvalifqQueueDropTailPriQueue接口队列类型setvalllLL链路层类型setvalantAntennaOmniAntenna天线模型setvalifqlen150最大包队列setvalnn7移动节点数量setvalrpZBR路由协议为ZigBee协议setvalx50设定拓扑范围长度50msetvaly50设定拓扑范围宽度50m开启Trace跟踪文件和NAM显示文件在运行完tcl脚本后运用treetr进行结果分析运用treenam进行模拟演示setnsnewSimulator初始化一个仿真对象nssettracefdopentreetrwtrace跟踪文件保存在startr中nstracealltracefd开启trace跟踪文件ifvalnamtreenamnamtrace显示文件保存在starnam中setnamtraceopenvalnamwnsnamtraceallwirelessnamtracevalxvaly设置每个节点的通信半径为15mCSThresh信号感应门限当两个信号发生碰撞被某几个节点同时接收时若其中一个信号的强度是另一个的CSThresh倍以上时虽然受到另一信号的干扰它仍能被解调假若不满足这一条件两个信号都不能直接被接收端感应FormodelTwoRayGroundsetdist5m769113e06距离为5m时信号接收或发送门限值setdist9m237381e06距离为9m时信号接收或发送门限值setdist10m192278e06距离为10m时信号接收或发送门限值setdist11m158908e06距离为11m时信号接收或发送门限值setdist12m133527e06距离为12m时信号接收或发送门限值setdist13m113774e06距离为13m时信号接收或发送门限值setdist14m981011e07距离为14m时信号接收或发送门限值setdist15m854570e07距离为15m时信号接收或发送门限值setdist16m751087e07距离为16m时信号接收或发送门限值setdist20m480696e07距离为20m时信号接收或发送门限值setdist25m307645e07距离为25m时信号接收或发送门限值setdist30m213643e07距离为30m时信号接收或发送门限值setdist35m156962e07距离为35m时信号接收或发送门限值setdist40m120174e07距离为40m时信号接收或发送门限值PhyWirelessPhysetCSThreshdist15m设置CSThresh为15mPhyWirelessPhysetRXThreshdist15m设置RXThresh为15m配置节点的属性默认为RN使用AODVjr路由算法将RNType设置为1就是使用CLUSTERTREE路由算法defaultisRNsoonlysetRNnode0RNType0node1RNType0node2RNType0node3RNType0node4RNType0node5RNType0调用节点的位置信息sourcetoposcn开启PAN协调器协调器和设备nodesscsstartPANCoord3这条命令用来开启一个新的PAN并且节点会被作为PAN协调器使用时可以省略一下参数省略的参数就是用默认配置nodesscsstartDevice这条命令用于开启一个设备或协调器可以省略一些参数如node0sscsstartDevice0表示开启一个没有协调器能力的设备如node0sscsstartDevice表示开启一个非信标模式的协调器如node0sscsstartDevice111表示开启一个信标模式的协调器nodesscsstartCTPANCoord1这条命令用于开启一个基于clustertree的PAN协调器nodesscsstartCTDevice这条命令用于开启一个基于clustertree的设备其用法与命令b相似nsat00node0NodeLabelPANCoornsat00node0sscsstartCTPANCoord在00秒开启PAN节点0nsat05node1sscsstartCTDevice10在05秒开启设备节点1nsat15node2sscsstartCTDevice10nsat25node3sscsstartCTDevice10nsat35node4sscsstartCTDevice10nsat45node5sscsstartCTDevice10nsat55node6sscsstartCTDevice10控制节点间流量控制节点间流量源节点目的节点发送间隔开始时间ifvaltrafficcbrvaltrafficpoissonputsTrafficvaltrafficMac802154wpanCmdack4dataonputsformatAcknowledgementfordatasMac802154wpanCmdack4data设置nam演示速率为03msnsatappTime6Mac802154wpanNamPlaybackRate030msnsatexprappTime605Mac802154wpanNamPlaybackRate15ms设置流量的源目的发送间隔开始时间valtraffictraffic61010appTime6valtraffictraffic7910appTime7valtraffictraffic8010appTime8为流量源节点到目的节点设置标识并在NAM演示时设置提示nsatappTime6node6addmarkm6bluecirclensatappTime6nstraceannotateatappTime6valtraffictrafficfromnode6tonode10nsatappTime7node7addmarkm7yellowcirclensatappTime7nstraceannotateatappTime7valtraffictrafficfromnode7tonode9nsatappTime8node8addmarkm8redcirclensatappTime8nstraceannotateatappTime8valtraffictrafficfromnode8tonode0nsatappTime6node10addmarkm6bluecirclensatappTime7node9addmarkm7yellowcirclensatappTime8node0addmarkm8redcircle设置不同类型流量的颜色Mac802154wpanNamFlowClrpZBRctomatoMac802154wpanNamFlowClrpARPcgreenMac802154wpanNamFlowClrpMACcnavyifvaltrafficcbrsetpktTypecbrelsesetpktTypeexp设置不同源和目的的端到端流量的颜色Mac802154wpanNamFlowClrppktTypes6d10cblueMac802154wpanNamFlowClrppktTypes7d9cyellowMac802154wpanNamFlowClrppktTypes8d0cred结束进程相当于程序中的析构函数将开始创建的trace进程如果要演示nam动画就执行namstarnamprocstopglobalnstracefdappTime1valenvnsflushtraceclosetracefd关闭trace进程sethasDISPLAY0foreachindexarraynamesenvputsindexenvindexifindexDISPLAYampampenvindexsethasDISPLAY1ifvalnamtreenamampamphasDISPLAY1execnamtreenamamp执行nam演示仿真过程开始执行仿真模拟putsStartingSimulationnsrun开始执行仿真模拟执行模拟执行treetcl脚本在Fedora终端中的treetcl存放的文件夹下输入命令nstreetcl运行完成后使用ls命令查看当前文件夹中的所有文件会发现产生了treetr和treenam两个文件其中treetr是trace跟踪文件treenam是NAM显示文件其中treetr文件用于后续做数据分析使用treenam文件用来简单的动画演示整个模拟过程修改路由算法复制treetcl更名为tree2tcl命令cptreetcltree2tcl然后打开tree2tcl将tcl脚本中的treetr改为tree2tr将treenam改为tree2nam然后修改节点的属性RNType使其保持默认然后修改节点的开启命令将startCTDevice修改为startDevicedefaultisRNsoonlysetRNRNType保持默认将原有代码删除开启协调器和设备nsat00node0NodeLabelPANCoornsat00node0sscsstartPANCoord1startPANCoordnsat05node1sscsstartCTDevice111startDevicensat15node2sscsstartDevice111nsat25node3sscsstartDevice111nsat35node4sscsstartDevice111nsat45node5sscsstartDevice111nsat55node6sscsstartDevice0nsat58node7sscsstartDevice0nsat65node8sscsstartDevice0nsat68node9sscsstartDevice0nsat70node10sscsstartDevice0再次执行模拟在Fedora终端中的tree2tcl存放的文件夹下输入命令nstree2tcl运行完成后使用ls命令查看当前文件夹中的所有文件会发现产生了tree2tr和tree2nam两个文件其中tree2tr是trace跟踪文件tree2nam是NAM显示文件树形拓扑仿真结果分析利用仿真模拟后产生的treetr文件对Trace结果进行分析比较使用AODVjr和CLUSTERTREE路由算法端到端的延时控制包的个数数据包的丢失率平均延时打开treetcl脚本设置数据流的发送包间隔为01秒执行nstreetcl产生treetr文件然后执行awkfresultawktreetcl计算出传输延时然后平均延迟数据记录到rtdelaydata然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtdelaydata中打开tree2tcl文件按照treetcl的步骤将计算出来的数据保存在zbrdelaydata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel平均延迟gnuplotplotrtdelaydatawithlinespointszbrdelaydatawithlinespoints绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的平均延迟对比图样如图48所示图48平均延时对比图样从平均端到端的延时来看ZBR的平均端到端的延时要远远小于CLUSTERTREE这主要是因为ZBR协议使用AODVjr算法使用最佳路由算法可以节省端到端的传输时延丢包率打开treetcl脚本设置数据流的发送包间隔为01秒执行nstreetcl产生treetr文件然后执行awkfresultawktreetcl计算出传输延时然后平均延迟数据记录到rtratiodata然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtratiodata中打开tree2tcl文件按照treetcl的步骤将计算出来的数据保存在zbrratiodata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel平均延迟gnuplotplotrtratiodatawithlinespointszbrratiodatawithlinespoins绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的丢包率对比图样如图49所示图49丢包率对比图样当发包间隔小于02秒时CLUSTERTREE路由协议算法的丢包率迅速增高而ZBR路由协议的丢包率就比较稳定这主要是因为使用CLUSTERTREE路由算法路径固定容易造成排队现象而ZBR使用AODVjr算法可以动态的选择最优路径当一条路径发生拥塞可以选择另一条这样就大大降低了丢包率提高了网络带宽的利用率当发送间隔大于02秒时两种路由算法的丢包率相互持平一般都是刚开始路径没建立起来产生丢包后面就没有丢包现象了控制包数量打开treetcl脚本设置数据流的发送包间隔为01秒执行nstreetcl产生treetr文件然后执行awkfresultawktreetcl计算出传输延时然后平均延迟数据记录到rtcontroldata然后再分别修改数据流的发送包间隔为02秒03秒04秒10秒重复上述步骤将平均延迟保存到rtcontroldata中打开tree2tcl文件按照treetcl的步骤将计算出来的数据保存在zbrcontroldata中在终端输入gnuplot进入gnuplot绘图进程然后输入下面命令gnuplotsetxlabel发包间隔gnuplotsetylabel平均延迟gnuplotplotrtcontroldatawithlinespointszbrcontroldatawithlinespoins绘制出clustertree路由协议与ZBR路由协议在不同发包间隔下的控制包数量对比图样如图所示图410控制包数量对比图样从控制包来看ZBR协议控制包的个数与CLUSTERTREE控制包数量相差无几而且走势也所以并驾齐驱所以在不同发包速率下控制包数量基本一致ZBR协议略占优势因为ZBR路由算法网络拥塞程度没有CLUSTERTREE严重本章小结本章主要对模拟仿真的结果进行分析使用awk程序语言进行分析使用gnuplot进行绘图验证了在星型拓扑和树形拓扑中AODVjr路由算法和CLUSTERTREEE路由算法的性能根据分析可知在星型拓扑中AODVjr路由算法无论在端到端延迟控制包数量方面还是在丢包率方面都优于CLUSTERTREE路由算法这主要是因为AODVjr路由算法可以使用最优路径而CLUSTERTREE路由算法中数据的发送必须沿着树形路径因此性能会低于AODVjr路由算法因此在星型拓扑中ZigBee适合使用AODVjr算法而在树形拓扑中当发包间隔大于02秒时两种路由算法的丢包率都比较低并且相差不大但是当发包间隔小于02秒时AODVjr路由算法就展现出了它的优势比CLUSTERTREE路由算法更稳定在发送延迟AODVjr算法的优势更加明显总的来看AODVjr算法的确具有更好的稳定性能够更加充分的利用网络带宽资源如果网络拓扑较小AODVjr的优势就不易显现出来这是使用CLUSTERTREE算法也是一个不错的选择因为这样可以降低ZigBee的复杂度使其更加节能总结和展望总结无线传感网络WSN是一种以数据为中心的自组织无线AdHoc网络网络中的节点密集数量巨大且部署在十分广泛的区域网络拓扑结构动态变化网络具有自组织和自调整的特点网络节点具有成本低体积小能量极其有限计算能力存储能力和通信能力有限的特点节点的能量是设计节点是考虑的最关键因素之一而ZigBee协议能很好的解决WSN设计过程中的各方面需求ZigBee是一种新兴的近距离低复杂度低功耗低的方式通过无线电波将数据从一个传感器传到另一个传感器所以它们的通信效率非常高本文针对ZigBee协议中的CLUSTERTREE路由算法和AODVjr算法的性能进行分析和仿真模拟首先详细介绍了ZigBee协议栈的组成重点阐述了ZigBee网络层的两种路由算法然后介绍了NS2网络模拟软件的工作架构和工作流程详细描述了设计环境的搭建过程和网络模拟的实现过程最后对模拟过程进行了记录和分析展望本文采用NS2对ZigBee协议进行了模拟验证了其路由算法的性能提出了在不同网络环境下使用不同路由算法方案为了使ZigBee协议具有更高的实时性更加智能化本文以后还需要做很多的工作如更改CLUSTERTREE算法为其添加路由表使其可以选用最优的路由而地址分配依然使用树形编址然后在横向和纵向进行验证改进后的性能参考文献2徐雷鸣等着NS与网络模拟北京人民邮电出版社20033黄化吉冯穗力等着NS网络模拟和协议仿真北京人民邮电出版社20104柯志亨程荣祥邓德隽着NS2仿真实验多媒体和无线网络协议通信北京电子工业出版社20095NS2中文手册6方路平等着NS2网络模拟基础与应用北京国防工业出版社20087钟永峰刘永俊着ZigBee无线传感器网络北京北京邮电大学出版社20118瞿雷刘德胜胡咸斌着ZigBee技术及应用北京北京航空航天大学出版社20079邹国霞李燕着ZigBee中ClusterTree路由算法改进研究制造业自动化10刘新吴秋峰无线个域网技术及相关协议J计算机工程20061213致谢在论文完成之际谨向我尊敬的导师蔡照鹏老师致以诚挚的谢意和崇高的敬意在整个课程设计和论文撰写期间我始终的得到了导师蔡照鹏的悉心指导热情的鼓励和支持蔡老师的渊博的专业知识丰富的实践经验务实的工作作风精益求精的科研态度令我钦佩感谢我的室友们和一起学习网络技术的同学们感谢你们一直以来陪伴我鼓励我支持我在生活和学习方面给我无私的帮助感谢我的父母家人对我的养育之恩感谢你们对我学习生活的大力支持你们的激励永远是我不断进取的源动力无以为报仅在此表示我最忠心的谢意