计算机学院-数据库中心SeaSonNS2入门与提高柯志亨SeaSon哈尔滨工业大学2019-5-28SeaSon计算机学院-数据库中心目录NS2简介安装模拟流程添加新协议调试以及结果分析SeaSon计算机学院-数据库中心NS2简介背景NS2目标NS2功能NS2组件NS2体系结构SeaSon计算机学院-数据库中心NS2背景1989REALnetworksimulator2019:DARPAVINTprojectatLBL,XeroxPARC,UCB,andUSC/ISIPresent:DARPASAMANprojectandNSFCONSERprojectCollaborationwithotherresearchersincludingCIRISeaSon计算机学院-数据库中心NS2研究范围支持网络协议的研究和教育•通信协议的设计,数据流的研究等•不同协议的比较优点与平台无关,有大量的协议、代码以及模型可供使用,开源的,不同的协议很容易进行比较。SeaSon计算机学院-数据库中心NS2目标NS2不适合做的?大多数任务都是单节点完成的,比如交换机的性能分析等。SeaSon计算机学院-数据库中心NS2功能有线网络•路由层DV,LS,PIM-SM•传输层:TCPandUDP•流量产生:web,ftp,telnet,cbr,stochastic•队列模型:drop-tail,RED,FQ,SFQ•QoS:IntServandDiffservSeaSon计算机学院-数据库中心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-2Trace文件Nam文件namGawkgnuplotSeaSon计算机学院-数据库中心NS2体系结构面向对象的设计支持重用容易维护方便扩展,如添加新协议分裂对象模型C++是高效的编译执行语言,功能模拟,性能较好Otcl解释执行的,进行场景配置。不必重新编译更灵活SeaSon计算机学院-数据库中心NS2体系结构NS2结合两者的优点C++otclSeaSon计算机学院-数据库中心Tcl与C++对象绑定过程以tcp为例,当你在tcl脚本中使用以下命令创建一个Tcp对象时settcp0[newAgent/TCP]首先创建tcl对象,即解释对象procnew{classNameargs}{seto[SplitObjectgetid]#创建分裂对象if[catch$classNamecreate$o$argsmsg]{…}return$o}SeaSon计算机学院-数据库中心Tcl与C++对象绑定过程然后通过Tcl对象的init()函数中创建对应的shadow对象SplitObjectinstprocinitargs{$selfnextif[catch$selfcreate-shadow$args]{error__FAILED_SHADOW_OBJECT_}}SeaSon计算机学院-数据库中心Tcl与C++对象绑定过程Create-shadow怎样找到tcl对象对应的C++对象?答案就是TclClass类!!!staticclassTcpClass:publicTclClass{public:TcpClass():TclClass(Agent/TCP){}TclObject*create(int,constchar*const*){return(newTcpAgent());}}class_tcp;SeaSon计算机学院-数据库中心NS2系统结构--离散事件模拟把世界上的一切都看成事件维护一个基于发生时间排序的事件(events)队列维护一个系统的时间[virtualtime]重复的执行以下的过程:从对首取出一个事件,set[virtualtime]=event’stime处理这个事件如果在处理时间过程中产生新的event,插入queue每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。CPU执行的快慢不影响结果。SeaSon计算机学院-数据库中心离散事件模拟示例时间事件A.1sSdecidestosendpkttoDSstartssendingpktdelayvaluetransmission0.005spropagation0.01sDSSDB.1.005sSfinishestransmittingpkttoDC.1.01sDbeginstorecvpktD.1.015sDrecvsentirepktanddeliverstoapplicationB.D.C.A.事件队列SeaSon计算机学院-数据库中心一个数据包怎样从源节点到目的节点同一个节点内各层协议之间传数据?节点之间怎么传?SeaSon计算机学院-数据库中心SeaSon计算机学院-数据库中心安装安装环境及方法安装问题SeaSon计算机学院-数据库中心安装(1)推荐直接安装all-inone版本(最新all-inone-2.29)Linux(直接install就行了)Windows+Cygwin+Ns2windows安装方法柯老师网站(不要看中文安装说明,选英文的)140.116.72.80/~smallko/ns2/ns2.htmSeaSon计算机学院-数据库中心安装(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仿真软件-问题求助的地方netforum/forum_topics.asp?FID=16&PN=1常见错误原因主要问题gcc版本重装SeaSon计算机学院-数据库中心开始进行摸拟一个简单的无线网络的例子(1)无线场景的产生利用NS模拟前搞清楚的问题添加新协议编译NS2SeaSon计算机学院-数据库中心一个简单的无线网络的例子(1)场景配置3个mobilenodes平面拓扑670mX670madhoc路由协议DSDVRandomWaypointmobilitymodelTCPandCBRtrafficSeaSon计算机学院-数据库中心一个简单的无线网络的例子(2)setns_[newSimulator];createanssimulatorinstance#DefineGlobalVariablessettopo[newTopography];createatopologyand$topoload_flatgrid670670;defineitin670x670areaSeaSon计算机学院-数据库中心一个简单的无线网络的例子(3)#Definestandardns/namtracesettracefd[open694demo.trw]$ns_trace-all$tracefdsetnamtrace[open694demo.namw]$ns_namtrace-all-wireless$namtrace670670SeaSon计算机学院-数据库中心一个简单的无线网络的例子(4)#Create“God”setgod_[create-god3]•God用来保存一个结点到另外一个结点直接的跳部数.•例如:•$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\-macTraceOFFSeaSon计算机学院-数据库中心一个简单的无线网络的例子(6)#Createamobilenodeandattachittothechannelsetnode[$ns_node]$noderandom-motion0;#disablerandommotion–Use“forloop”tocreate3nodes:for{seti0}{$i3}{incri}{setnode_($i)[$ns_node]}SeaSon计算机学院-数据库中心一个简单的无线网络的例子(7)#Definetrafficmodelsourcetraffic-scenario-files#Definenodemovementmodelsourcemovement-scenario-filesSeaSon计算机学院-数据库中心一个简单的无线网络的例子(8)#Definenodeinitialpositioninnamfor{seti0}{$i3}{incri}{$ns_initial_node_position$node_($i)20}#Tellns/namthesimulationstoptime$ns_at200.00“$ns_halt”#Startyoursimulation$ns_runSeaSon计算机学院-数据库中心无线场景的产生(1)生成节点运动模型setdest-nnum_of_nodes-ppausetime-smaxspeed-tsimtime-xmaxx-ymaxySource:Seens-2/indep-utils/cmu-scen-gen/setdest/网上还可以下载更多的模型,如组移动模型等SeaSon计算机学院-数据库中心无线场景的产生(2)生成无线网络数据流CBRtrafficnscbrgen.tcl[-typecbf|tcp][-nnnodes][-seedseed][-mcconnections][-raterate]Source:ns-allinone-2.29\ns-2.29\indep-utils\cmu-scen-genSeaSon计算机学院-数据库中心利用NS模拟前搞清楚的问题StartNS有吗?网上呢?C++实现添加需要修改吗?编译调试配置场景修改编译调试测试分析NoYesNoNoYesYesSeaSon计算机学院-数据库中心NS2源代码目录simtk8.0otclTcltcl8.0ns-2nam-1tclextestlib......tclcodeexamplevalidationtestC++codetclcodecoreSeaSon计算机学院-数据库中心添加协议(1)添加别人实现的协议为什么我安装总是出错?????环境问题,OS,gcc版本,ns版本解决办法1.修改环境,装相应的os,gcc,ns22.移植到新的环境,怎么移?gdb调试,没有别的办法!!!SeaSon计算机学院-数据库中心添