




免费预览已结束,剩余76页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院-数据库中心,SeaSon,NS2入门与提高,柯志亨SeaSon哈尔滨工业大学2006-5-28,SeaSon,计算机学院-数据库中心,目录,NS2简介安装模拟流程添加新协议调试以及结果分析,SeaSon,计算机学院-数据库中心,NS2简介,背景NS2目标NS2功能NS2组件NS2体系结构,SeaSon,计算机学院-数据库中心,NS2背景,1989REALnetworksimulator1995:DARPAVINTprojectatLBL,XeroxPARC,UCB,andUSC/ISIPresent:DARPASAMANprojectandNSFCONSERprojectCollaborationwithotherresearchersincludingCIRI,SeaSon,计算机学院-数据库中心,NS2研究范围,支持网络协议的研究和教育通信协议的设计,数据流的研究等不同协议的比较优点与平台无关,有大量的协议、代码以及模型可供使用,开源的,不同的协议很容易进行比较。,SeaSon,计算机学院-数据库中心,NS2目标,NS2不适合做的?大多数任务都是单节点完成的,比如交换机的性能分析等。,SeaSon,计算机学院-数据库中心,NS2功能,有线网络路由层DV,LS,PIM-SM传输层:TCPandUDP流量产生:web,ftp,telnet,cbr,stochastic队列模型:drop-tail,RED,FQ,SFQQoS:IntServandDiffserv,SeaSon,计算机学院-数据库中心,NS2功能,无线网络网络类型:MANET,SensorNetworks路由:AODV,DSR,DSDV,MobileIP以及HMIPv6等MAC:802.11,802.15.4,Smac等传输层、多种数据流模拟,SeaSon,计算机学院-数据库中心,NS2组件,ns:网络模拟器执行tcl脚本,进行模拟,并将所有的模拟结果以trace文件的个是输出。nam:网络AniMator将ns的结果可视化。模拟的流程,tcl脚本,ns-2,Trace文件Nam文件,nam,Gawkgnuplot,SeaSon,计算机学院-数据库中心,NS2体系结构,面向对象的设计支持重用容易维护方便扩展,如添加新协议分裂对象模型C+是高效的编译执行语言,功能模拟,性能较好Otcl解释执行的,进行场景配置。不必重新编译更灵活,SeaSon,计算机学院-数据库中心,NS2体系结构,NS2结合两者的优点,C+,otcl,SeaSon,计算机学院-数据库中心,Tcl与C+对象绑定过程,以tcp为例,当你在tcl脚本中使用以下命令创建一个Tcp对象时settcp0newAgent/TCP首先创建tcl对象,即解释对象procnewclassNameargssetoSplitObjectgetid#创建分裂对象ifcatch$classNamecreate$o$argsmsgreturn$o,SeaSon,计算机学院-数据库中心,Tcl与C+对象绑定过程,然后通过Tcl对象的init()函数中创建对应的shadow对象SplitObjectinstprocinitargs$selfnextifcatch$selfcreate-shadow$argserror_FAILED_SHADOW_OBJECT_,SeaSon,计算机学院-数据库中心,Tcl与C+对象绑定过程,Create-shadow怎样找到tcl对象对应的C+对象?答案就是TclClass类!staticclassTcpClass:publicTclClasspublic:TcpClass():TclClass(Agent/TCP)TclObject*create(int,constchar*const*)return(newTcpAgent();class_tcp;,SeaSon,计算机学院-数据库中心,NS2系统结构-离散事件模拟,把世界上的一切都看成事件维护一个基于发生时间排序的事件(events)队列维护一个系统的时间virtualtime重复的执行以下的过程:从对首取出一个事件,setvirtualtime=eventstime处理这个事件如果在处理时间过程中产生新的event,插入queue每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。CPU执行的快慢不影响结果。,SeaSon,计算机学院-数据库中心,离散事件模拟示例,D,S,S,D,事件队列,SeaSon,计算机学院-数据库中心,一个数据包怎样从源节点到目的节点,同一个节点内各层协议之间传数据?节点之间怎么传?,SeaSon,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,安装安装环境及方法安装问题,SeaSon,计算机学院-数据库中心,安装(1),推荐直接安装all-inone版本(最新all-inone-2.29)Linux(直接install就行了)Windows+Cygwin+Ns2windows安装方法柯老师网站(不要看中文安装说明,选英文的)0/smallko/ns2/ns2.htm,SeaSon,计算机学院-数据库中心,安装(2),windows安装方法柯老师网站上Cygwin可以成功安装的ns2版本有NS-2.26,NS-2.27,NS-2.28,ns-2.29注:NS-2.26需要PATCH过.才能安装柯老师的安装经验:不過安裝的過程還是可能會有一些問題.最確保可以安裝成功的方法是:重新安裝WINDOWS.裝完馬上安裝CYGWIN+NS2,安裝後.在裝SERVICEPACK.或其他的軟件.這是我的經驗,SeaSon,计算机学院-数据库中心,安装(3),NS仿真软件-问题求助的地方,SeaSon,计算机学院-数据库中心,开始进行摸拟,一个简单的无线网络的例子(1)无线场景的产生利用NS模拟前搞清楚的问题添加新协议编译NS2,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(1),场景配置3个mobilenodes平面拓扑670mX670madhoc路由协议DSDVRandomWaypointmobilitymodelTCPandCBRtraffic,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(2),setns_newSimulator;createanssimulatorinstance,#DefineGlobalVariables,settoponewTopography;createatopologyand$topoload_flatgrid670670;defineitin670 x670area,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(3),#Definestandardns/namtrace,settracefdopen694demo.trw$ns_trace-all$tracefd,setnamtraceopen694demo.namw$ns_namtrace-all-wireless$namtrace670670,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(4),#Create“God”,setgod_create-god3God用来保存一个结点到另外一个结点直接的跳部数.例如:$ns_at899.00“$god_setdist231”,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(5),#Definehowamobilenodeshouldbecreated,$ns_node-config-adhocRoutingDSDV-llTypeLL-macTypeMac/802_11-ifqLen50-ifqTypeQueue/DropTail/PriQueue-antTypeAntenna/OmniAntenna-propTypePropagation/TwoRayGround-phyTypePhy/WirelessPhy-channelTypeChannel/WirelessChannel-topoInstance$topo-agentTraceON-routerTraceOFF-macTraceOFF,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(6),#Createamobilenodeandattachittothechannel,setnode$ns_node$noderandom-motion0;#disablerandommotion,Use“forloop”tocreate3nodes:forseti0$i3incrisetnode_($i)$ns_node,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(7),SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(8),SeaSon,计算机学院-数据库中心,无线场景的产生(1),生成节点运动模型setdest-n-ppausetime-s-t-x-ySource:Seens-2/indep-utils/cmu-scen-gen/setdest/网上还可以下载更多的模型,如组移动模型等,SeaSon,计算机学院-数据库中心,无线场景的产生(2),生成无线网络数据流CBRtrafficnscbrgen.tcl-typecbf|tcp-nnnodes-seedseed-mcconnections-raterateSource:ns-allinone-2.29ns-2.29indep-utilscmu-scen-gen,SeaSon,计算机学院-数据库中心,利用NS模拟前搞清楚的问题,SeaSon,计算机学院-数据库中心,NS2源代码目录,tclcode,example,validationtest,C+code,tclcodecore,SeaSon,计算机学院-数据库中心,添加协议(1),添加别人实现的协议为什么我安装总是出错?环境问题,OS,gcc版本,ns版本解决办法1.修改环境,装相应的os,gcc,ns22.移植到新的环境,怎么移?gdb调试,没有别的办法!,SeaSon,计算机学院-数据库中心,添加新协议(2),自己写协议路由协议?应用层协议?MAC协议?最好的方法就是模仿已有的协议,代表协议AODV,MAC802.11,Ping添加路由协议,从Agent继承添加应用层协议,从Agent(更灵活)或者Application(有些不能实现),SeaSon,计算机学院-数据库中心,添加新协议(3),示例:一个泛洪协议(Mflood)协议类型:路由层协议1.定义包头structhdr_mfloodu_int32_tseq_;/根据需要定义变量,这个灵活决定./包头访问的方法,你只需要复制下来就OK了staticintoffset_;/requiredbyPacketHeaderManagerinlinestaticint,SeaSon,计算机学院-数据库中心,添加新协议(4),2.实现协议classMFlood:publicAgentpublic:MFlood();voidrecv(Packet*p,Handler*);intcommand(int,constchar*const*);protected:inlineintinitialized()return1,SeaSon,计算机学院-数据库中心,添加新协议(5),3关联tcl对象与C+对象(模板)staticclassMFloodclass:publicTclClasspublic:MFloodclass():TclClass(Agent/MFlood)TclObject*create(intargc,constchar*const*argv)assert(argc=5);return(newMFlood(nsaddr_t)atoi(argv4);/PBOagrv4isindex_class_rtProtoMFlood;,SeaSon,计算机学院-数据库中心,添加新协议(6),4关联tcl对象与C+对象的包头(模板)inthdr_mflood:offset_;staticclassMFloodHeaderClass:publicPacketHeaderClasspublic:MFloodHeaderClass():PacketHeaderClass(PacketHeader/MFlood,sizeof(hdr_mflood)bind_offset(,SeaSon,计算机学院-数据库中心,添加新协议(7),目前为止,所有的代码工作都已经完成了生下的工作就是将这个协议编译到NS2中。需要修改一下文件1.ns-packet.tcl(ns-allinone-2.29ns-2.29tcllib)2.packet.h(ns-allinone-2.29ns-2.29common)3ns-lib.tcl(ns-allinone-2.29ns-2.29tcllib)对于我们这个应用层协议不需要修改,SeaSon,计算机学院-数据库中心,添加新协议(8),1.修改ns-packet.tcl(ns-2.29/tcl/lib)foreachprot#addbyseasonMFlood目的:在NS启动的时候加载我们的包头。,SeaSon,计算机学院-数据库中心,添加新协议(9),2.修改packet.h(一共修改两处ns-2.29/common)enumpacket_t/insertnewpackettypeshere/addbyseasonPT_MFLOOD,/Trace用到PT_NTYPE/ThisMUSTbetheLASToneclassp_infopublic:p_info()/addbyseasonname_PT_MFLOOD=“MFlood”;/与前面对应name_PT_NTYPE=undefined;目的:Trace中使用,协议构造函数SpTreeAgent()初始化时使用,SeaSon,计算机学院-数据库中心,添加新协议(10),如果是路由协议如(AODV)还需要修改ns-lib.tclSimulatorinstproccreate-wireless-nodeargsMFloodsetragent$selfcreate-mflood-agent$nodeSimulatorinstproccreate-mflood-agentnodesetragentnewAgent/MFlood$nodeid$nodesetragent_$ragentreturn$ragent,SeaSon,计算机学院-数据库中心,添加新协议(11),还有这段代码(Mflood未使用)ns-mobilenode.tcl#SpecialprocessingforAODVsetaodvonlystringfirstAODV$agentinfoclassif$aodvonly!=-1$agentif-queue$selfsetifq_(0);#ifqbetweenLLandMAC,SeaSon,计算机学院-数据库中心,添加新协议总结,5c+2t+1m(521规则)5c-必须实现的五个C+模块MFlood与MFloodclasshdr_mflood与MFloodHeaderClasspackt.h添加包头类型2t-修改两个tcl文件ns-lib.tcl与ns-packet.tcl有时候还会修改ns-defaut.tcl1m-修改Makefile,将新协议添加,SeaSon,计算机学院-数据库中心,添加新协议总结,关于添加应用协议如ping,跟路由协议类似,甚至跟简单,如果从Agent继承,除了不需要修改ns-lib.tcl之外其它类似。但是别忘了设置包头的大小,不然你发出的所有数据包头的大小都是0!PingAgent:PingAgent():Agent(PT_PING)bind(packetSize_,修改Ns-defautl.tclAgent/PingsetpacketSize_64,SeaSon,计算机学院-数据库中心,编译NS2(1),前面的过程是将代码添加到NS2里面,但尚未编译,只有经过编译才能使用。一般我们将我们所有的C+代码放在一个文件夹内,如mflood,然后放在ns-2.29/之下修改Makefile(无任何后缀的)添加如下红色所示代码,将mflood编译进NS2OBJ_CC=#addbyseasonmflood/mflood.omflood/mflood-seqtable.o,SeaSon,计算机学院-数据库中心,编译NS2(2),从cygwin进入ns-2.29目录下执行makeclean#删除所有的*.o文件makedependmake#重新编译ns如果没有错误,则可以编写场景测试什么时候要makeclean?,SeaSon,计算机学院-数据库中心,编译NS2(3),如果添加新协议,或者修改了多个协议公用的NS中头文件,如packet.h我们都需要重新makeclean然后makedepend,make。,SeaSon,计算机学院-数据库中心,编译NS2(4),修改了C+文件对于NS中已有的代码修改不需要修改makefile,只需要make添加新的模块或协议修改Makefile并重新MakecleanMakedependMake,SeaSon,计算机学院-数据库中心,编译NS2(5),修改了Otcl文件修改NS中已有的代码recompilesource添加新的代码source修改Makefile(NS_TCL_LIB),tcl/ns-lib.tcl(source)andrecompile都只需要make即可,SeaSon,计算机学院-数据库中心,调试NS,TCL的调试Gdb的安装调试,SeaSon,计算机学院-数据库中心,调试(1),Tcl调试个人觉得没什么用途,如果你感兴趣我的space有安装方法SwowseasonC+代码的调试(segmentfault)调试工具gdb,另外自带的insight可视化界面,本质也是调用gdb下面介绍gdb的安装调试,SeaSon,计算机学院-数据库中心,调试(2),gdb安装安装gdb,以cygwin为例重新运行cygwin的setup文件,选择界面中的keep(必须!否则会死的很惨的),然后找到gdb选择安装即可。重新编译NS2,添加调试信息修改Makefile在下面位置添加-gCCOPT=-g进入ns-2.29目录下面执行MakecleanMakedepend#执行这个命令过程中如出错,不用管!Make如果没有错误,就安装成功,V!,SeaSon,计算机学院-数据库中心,调试(2),Gdb调试NS2以命令行为例进入ns-2.29(%为命令提示符)%gdbnsgdb即进入调试,SeaSon,计算机学院-数据库中心,调试(3),调试常用命令bt列出运行栈中信息bsptree.cc:linenum在sptree.cc文件linenum行设置断点,注意中间”:”不能丢c相当于vc中continue,n相当于vc中nextdisplayvar,显示变量var的值其他的参看gdb文档NS中调试技巧以及演示,SeaSon,计算机学院-数据库中心,结果分析,场景测试工具使用及结果分析其他,SeaSon,计算机学院-数据库中心,场景测试,为了使模拟更接近真实网络,参数选择,非常重要!可以参看相关论文简单测试用两三个节点测试一下首发数据,根据trace文件分析。功能测试测试每一个功能,对于无线网络的,要测试多跳,各种拓扑。利用trace分析结果,SeaSon,计算机学院-数据库中心,参数选择(802.11b),TheAntennaheightoftransmitterandreceiveris1.5m.ThepropagationmodelisTwoRayGroundmodel.Antenna/OmniAntennasetGt_1/TransmitantennagainAntenna/OmniAntennasetGr_1/ReceiveantennagainPhy/WirelessPhysetL_1.0/SystemLossFactorPhy/WirelessPhysetfreq_2.472e9/channel-13.2.472GHzPhy/WirelessPhysetbandwidth_11Mb/DataRatePhy/WirelessPhysetPt_0.031622777/TransmitPowerPhy/WirelessPhysetCPThresh_10.0/CollisionThresholdPhy/WirelessPhysetCSThresh_5.011872e-12/CarrierSensePowerPhy/WirelessPhysetRXThresh_5.82587e-09/ReceivePowerThreshold;calculatedunderTwoRayGroundmodelbytoolsfromNS2.*Mac/802_11setdataRate_11Mb/RateforDataFrames*Mac/802_11setbasicRate_1Mb/RateforControlFrames,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,看代码推荐sourceinsight画图,gnuplot,xgraph命令格式如下,示例演示%gnuplotdelay.plotWindows下还有origin(收费的)分析trace文件使用gawk命令格式gawkfdelay.awkoutput.tr,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,柯老师强烈推荐模拟wireless网络,可以用.tw/wordpress/?p=66生成无线网络场景,免去写tcl脚本的痛苦WIREDNETWORK,可以建議使用NSBENCH,SeaSon,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,网络性能度量detailson/dunigan/tcptour/javis/tcp_rttvar.html5.packetloss6.Reachability7.CircuitPerformance8.BandwidthUtilizationandPacketsPersecond,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,必须了解各种协议的trace格式分析协议性能的gawk代码柯老师的网站0/smallko/ns2/tool.htmNSFAQQuestion14/dchen02/FAQ.txt示例,SeaSon,计算机学院-数据库中心,使用Gawk分析结果,Gawk简介与NS相关的基本知识具体例子,SeaSon,计算机学院-数据库中心,使用Gawk分析结果,无线通信的trace格式s10.107722800_1_AGT-22tcp43021800-1:02:030213000r10.110474850_2_AGT-22tcp36021800-1:02:030213010,SeaSon,计算机学院-数据库中心,Gawk简介,解释性的脚本语言变量以及数组不用声明按行处理有pipe功能,可以将处理数据传给shell,SeaSon,计算机学院-数据库中心,Gawk相关语法,s10.1_1_AGT-22tcp43021800-1:02:030213000(1).Gawk读入trace中的一行,注:列之间一般用空格区分,SeaSon,计算机学院-数据库中心,Gawk相关语法,(2)执行动作Pattern1Actions1Pattern2Actions2Pattern3Actions3其中pattern为条件语句(或正则表达式)如:if($1=“s”,SeaSon,计算机学院-数据库中心,Gawk相关语法,(3)IO操作print、printf()、getline.(4)控制语句if(.).else、while(),SeaSon,计算机学院-数据库中心,Gawk工作流程,Gawk反复执行以下四个步骤:1.自动从trace文件中读取一行。2.自动更新内建参数的值($n)。3.逐行执行程序中所有的PatternActions代码。4.如果trace文件还有未读取的行,则循环执行上面步骤13。,SeaSon,计算机学院-数据库中心,Gawk程序的框架,BEGINAgtNum=0;if($1=s最后保存文agtnum.awk文件,SeaSo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024税务师考试真题及答案解析【考生回忆版】
- 企业灾备系统建设实施方案
- 极限运动场馆项目可行性分析报告
- 学生学业水平评价方案设计与实施
- 广东省云浮市体育中心消防安全测试题三(含答案)
- 幼儿园科学游戏教学教案范本
- 2019数学分类考试真题集
- 口腔保健服务规范与操作流程
- 高中英语词根词缀专项训练
- 厨师操作培训安全考试题及答案解析
- 污泥池清理管理制度
- 推进信息化建设“十五五”规划-(2025-2025年)-根据学校十五五
- 保护环境的课件
- 华电集团就业协议书
- 拆旧建屋合同协议书
- 图深度强化学习在配电网故障恢复中的应用研究
- (2017)海南省房屋建筑与装饰装修工程综合定额交底资料
- 拆除重建工程施工方案
- 《社会科学研究方法》课件
- 《基础护理学》第七版考试题库大全-上部分(600题)
- 基坑安全事故及防范措施
评论
0/150
提交评论