欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载
     

    NS2入门和提高课件.ppt

    • 资源ID:2139680       资源大小:327.50KB        全文页数:83页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    NS2入门和提高课件.ppt

    计算机学院-数据库中心,SeaSon,NS2入门与提高,柯志亨 SeaSon 哈尔滨工业大学 2019-5-28,SeaSon,计算机学院-数据库中心,目录,NS2 简介安装模拟流程添加新协议调试以及结果分析,SeaSon,计算机学院-数据库中心,NS2 简介,背景NS2目标NS2功能NS2 组件NS2体系结构,SeaSon,计算机学院-数据库中心,NS2 背景,1989 REAL network simulator 2019:DARPA VINT project at LBL,Xerox PARC,UCB,and USC/ISIPresent:DARPA SAMAN project and NSF CONSER project Collaboration with other researchersincluding CIRI,SeaSon,计算机学院-数据库中心,NS2研究范围,支持网络协议的研究和教育 通信协议的设计,数据流的研究等 不同协议的比较优点 与平台无关,有大量的协议、代码以及模型可供使用,开源的,不同的协议很容易进行比较。,SeaSon,计算机学院-数据库中心,NS2目标,NS2不适合做的?大多数任务都是单节点完成的,比如交换机的性能分析等。,SeaSon,计算机学院-数据库中心,NS2功能,有线网络 路由层 DV,LS,PIM-SM 传输层:TCP and UDP 流量产生:web,ftp,telnet,cbr,stochastic 队列模型:drop-tail,RED,FQ,SFQ QoS:IntServ and Diffserv,SeaSon,计算机学院-数据库中心,NS2功能,无线网络网络类型:MANET,Sensor Networks路由:AODV,DSR,DSDV,Mobile IP以及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对象时set tcp0 new Agent/TCP首先创建tcl对象,即解释对象proc new className args set o SplitObject getid#创建分裂对象if catch$className create$o$args msg return$o,SeaSon,计算机学院-数据库中心,Tcl与C+对象绑定过程,然后通过Tcl对象的init()函数中创建对应的shadow对象SplitObject instproc init args$self nextif catch$self create-shadow$args error _FAILED_SHADOW_OBJECT_,SeaSon,计算机学院-数据库中心,Tcl与C+对象绑定过程,Create-shadow怎样找到tcl对象对应的C+对象?答案就是TclClass类!static class TcpClass:public TclClass public:TcpClass():TclClass(Agent/TCP)TclObject*create(int,const char*const*)return(new TcpAgent();class_tcp;,SeaSon,计算机学院-数据库中心,NS2系统结构-离散事件模拟,把世界上的一切都看成事件维护一个基于发生时间排序的 事件(events)队列维护一个系统的时间virtual time重复的执行以下的过程:从对首取出一个事件,set virtual time=events time处理这个事件如果在处理时间过程中产生新的event,插入queue每一个事件都有一个预定的执行(虚拟的)时间,独立于真实执行时间。CPU 执行的快慢不影响结果。,SeaSon,计算机学院-数据库中心,离散事件模拟示例,D,S,S,D,事件队列,SeaSon,计算机学院-数据库中心,一个数据包怎样从源节点到目的节点,同一个节点内各层协议之间传数据?节点之间怎么传?,SeaSon,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,安装安装环境及方法安装问题,SeaSon,计算机学院-数据库中心,安装(1),推荐直接安装all-inone版本(最新all-inone-2.29)Linux(直接install就行了)Windows+Cygwin+Ns2windows安装方法柯老师网站(不要看中文安装说明,选英文的)140.116.72.80/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,安裝後.在裝SERVICE PACK.或其他的軟件.這是我的經驗,SeaSon,计算机学院-数据库中心,安装(3),NS仿真软件-问题求助的地方 netforum/forum_topics.asp?FID=16&PN=1常见错误原因 主要问题gcc版本 重装,SeaSon,计算机学院-数据库中心,开始进行摸拟,一个简单的无线网络的例子(1)无线场景的产生利用NS模拟前搞清楚的问题添加新协议编译NS2,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(1),场景配置3 个mobile nodes平面拓扑 670mX670mad hoc 路由协议 DSDVRandom Waypoint mobility modelTCP and CBR traffic,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(2),set ns_ new Simulator;create a ns simulator instance,#Define Global Variables,set topo new Topography;create a topology and$topo load_flatgrid 670 670;define it in 670 x670 area,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(3),#Define standard ns/nam trace,set tracefd open 694demo.tr w$ns_ trace-all$tracefd,set namtrace open 694demo.nam w$ns_ namtrace-all-wireless$namtrace 670 670,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(4),#Create“God”,set god_ create-god 3 God 用来保存一个结点到另外一个结点直接的跳部数.例如:$ns_ at 899.00“$god_ setdist 2 3 1”,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(5),#Define how a mobile node should be created,$ns_ node-config-adhocRouting DSDV-llType LL-macType Mac/802_11-ifqLen 50-ifqType Queue/DropTail/PriQueue-antType Antenna/OmniAntenna-propType Propagation/TwoRayGround-phyType Phy/WirelessPhy-channelType Channel/WirelessChannel-topoInstance$topo-agentTrace ON-routerTrace OFF-macTrace OFF,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(6),#Create a mobile node and attach it to the channel,set node$ns_ node$node random-motion 0;#disable random motion,Use“for loop”to create 3 nodes:for set i 0$i3 incr i set node_($i)$ns_ node,SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(7),SeaSon,计算机学院-数据库中心,一个简单的无线网络的例子(8),SeaSon,计算机学院-数据库中心,无线场景的产生(1),生成节点运动模型setdest-n-p pausetime-s-t-x-y Source:See ns-2/indep-utils/cmu-scen-gen/setdest/网上还可以下载更多的模型,如组移动模型等,SeaSon,计算机学院-数据库中心,无线场景的产生(2),生成无线网络数据流CBR trafficns cbrgen.tcl-type cbf|tcp-nn nodes-seed seed-mc connections-rate rateSource:ns-allinone-2.29ns-2.29indep-utilscmu-scen-gen,SeaSon,计算机学院-数据库中心,利用NS模拟前搞清楚的问题,SeaSon,计算机学院-数据库中心,NS2 源代码目录,tcl code,example,validation test,C+code,tcl code core,SeaSon,计算机学院-数据库中心,添加协议(1),添加别人实现的协议为什么我安装总是出错?环境问题,OS,gcc版本,ns版本解决办法1.修改环境,装相应的os,gcc,ns2 2.移植到新的环境,怎么移?gdb调试,没有别的办法!,SeaSon,计算机学院-数据库中心,添加新协议(2),自己写协议路由协议?应用层协议?MAC协议?最好的方法就是模仿已有的协议,代表协议AODV,MAC802.11,Ping添加路由协议,从Agent继承添加应用层协议,从Agent(更灵活)或者Application(有些不能实现),SeaSon,计算机学院-数据库中心,添加新协议(3),示例:一个泛洪协议(Mflood)协议类型:路由层协议1.定义包头struct hdr_mflood u_int32_tseq_;/根据需要定义变量,这个灵活决定./包头访问的方法,你只需要复制下来就OK了 static int offset_;/required by PacketHeaderManager inline static int,SeaSon,计算机学院-数据库中心,添加新协议(4),2.实现协议class MFlood:public Agent public:MFlood();void recv(Packet*p,Handler*);int command(int,const char*const*);protected:inline int initialized()return 1,SeaSon,计算机学院-数据库中心,添加新协议(5),3 关联tcl对象与C+对象(模板)static class MFloodclass:public TclClass public:MFloodclass():TclClass(Agent/MFlood)TclObject*create(int argc,const char*const*argv)assert(argc=5);return(new MFlood(nsaddr_t)atoi(argv4);/PBO agrv4 is index_ class_rtProtoMFlood;,SeaSon,计算机学院-数据库中心,添加新协议(6),4 关联tcl对象与C+对象的包头(模板)int hdr_mflood:offset_;static class MFloodHeaderClass:public PacketHeaderClass public: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)3 ns-lib.tcl(ns-allinone-2.29ns-2.29tcllib)对于我们这个应用层协议不需要修改,SeaSon,计算机学院-数据库中心,添加新协议(8),1.修改ns-packet.tcl(ns-2.29/tcl/lib)foreach prot#add by season MFlood目的:在NS启动的时候加载我们的包头。,SeaSon,计算机学院-数据库中心,添加新协议(9),2.修改 packet.h(一共修改两处ns-2.29/common)enum packet_t/insert new packet types here/add by seasonPT_MFLOOD,/Trace用到PT_NTYPE/This MUST be the LAST oneclass p_info public:p_info()/add by seasonname_PT_MFLOOD=“MFlood”;/与前面对应name_PT_NTYPE=undefined;目的:Trace中使用,协议构造函数SpTreeAgent()初始化时使用,SeaSon,计算机学院-数据库中心,添加新协议(10),如果是路由协议如(AODV)还需要修改ns-lib.tclSimulator instproc create-wireless-node args MFlood set ragent$self create-mflood-agent$node Simulator instproc create-mflood-agent node set ragent new Agent/MFlood$node id$node set ragent_$ragentreturn$ragent,SeaSon,计算机学院-数据库中心,添加新协议(11),还有这段代码(Mflood未使用)ns-mobilenode.tcl#Special processing for AODVset aodvonly string first AODV$agent info class if$aodvonly!=-1$agent if-queue$self set ifq_(0);#ifq between LL and MAC,SeaSon,计算机学院-数据库中心,添加新协议总结,5c+2t+1m(521规则)5c-必须实现的五个C+模块 MFlood与MFloodclass hdr_mflood与MFloodHeaderClass packt.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/Ping set packetSize_ 64,SeaSon,计算机学院-数据库中心,编译NS2(1),前面的过程是将代码添加到NS2里面,但尚未编译,只有经过编译才能使用。一般我们将我们所有的C+代码放在一个文件夹内,如mflood,然后放在ns-2.29/之下修改Makefile(无任何后缀的)添加如下红色所示代码,将mflood编译进NS2OBJ_CC=#add by season mflood/mflood.o mflood/mflood-seqtable.o,SeaSon,计算机学院-数据库中心,编译NS2(2),从cygwin进入ns-2.29目录下执行 make clean#删除所有的*.o文件 make depend make#重新编译ns如果没有错误,则可以编写场景测试什么时候要make clean?,SeaSon,计算机学院-数据库中心,编译NS2(3),如果添加新协议,或者修改了多个协议公用的NS中头文件,如packet.h我们都需要重新make clean 然后make depend,make。,SeaSon,计算机学院-数据库中心,编译NS2(4),修改了C+文件 对于NS中已有的代码修改 不需要修改makefile,只需要 make 添加新的模块或协议修改Makefile并重新Make clean Make dependMake,SeaSon,计算机学院-数据库中心,编译NS2(5),修改了Otcl文件修改NS中已有的代码recompilesource 添加新的代码source修改 Makefile(NS_TCL_LIB),tcl/ns-lib.tcl(source)and recompile都只需要make即可,SeaSon,计算机学院-数据库中心,调试NS,TCL的调试Gdb的安装调试,SeaSon,计算机学院-数据库中心,调试(1),Tcl调试个人觉得没什么用途,如果你感兴趣我的space有安装方法Spaces.msnwowseasonC+代码的调试(segment fault)调试工具gdb,另外自带的insight可视化界面,本质也是调用gdb下面介绍gdb的安装调试,SeaSon,计算机学院-数据库中心,调试(2),gdb安装安装gdb,以cygwin为例重新运行cygwin的setup文件,选择界面中的keep(必须!否则会死的很惨的),然后找到gdb选择安装即可。重新编译NS2,添加调试信息 修改Makefile在下面位置添加-g CCOPT=-g进入ns-2.29目录下面执行Make cleanMake depend#执行这个命令过程中如出错,不用管!Make如果没有错误,就安装成功,V!,SeaSon,计算机学院-数据库中心,调试(2),Gdb调试NS2以命令行为例进入ns-2.29(%为命令提示符)%gdb nsgdb即进入调试,SeaSon,计算机学院-数据库中心,调试(3),调试常用命令bt列出运行栈中信息b sptree:linenum 在sptree文件linenum行设置断点,注意中间”:”不能丢c 相当于vc中continue,n 相当于vc中nextdisplay var,显示变量var的值其他的参看gdb文档NS中调试技巧以及演示,SeaSon,计算机学院-数据库中心,结果分析,场景测试工具使用及结果分析其他,SeaSon,计算机学院-数据库中心,场景测试,为了使模拟更接近真实网络,参数选择,非常重要!可以参看相关论文简单测试 用两三个节点测试一下首发数据,根据trace文件分析。功能测试 测试每一个功能,对于无线网络的,要测试多跳,各种拓扑。利用trace分析结果,SeaSon,计算机学院-数据库中心,参数选择(802.11b),The Antenna height of transmitter and receiver is 1.5m.The propagation model is TwoRayGround model.Antenna/OmniAntenna set Gt_ 1/Transmit antenna gain Antenna/OmniAntenna set Gr_ 1/Receive antenna gain Phy/WirelessPhy set L_ 1.0/System Loss Factor Phy/WirelessPhy set freq_ 2.472e9/channel-13.2.472GHz Phy/WirelessPhy set bandwidth_ 11Mb/Data Rate Phy/WirelessPhy set Pt_ 0.031622777/Transmit Power Phy/WirelessPhy set CPThresh_ 10.0/Collision Threshold Phy/WirelessPhy set CSThresh_ 5.011872e-12/Carrier Sense Power Phy/WirelessPhy set RXThresh_ 5.82587e-09/Receive Power Threshold;calculated under TwoRayGround model by tools from NS2.*Mac/802_11 set dataRate_ 11Mb/Rate for Data Frames*Mac/802_11 set basicRate_ 1Mb/Rate for Control Frames,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,看代码推荐sourceinsight画图,gnuplot,xgraph命令格式如下,示例演示%gnuplot delay.plotWindows下还有origin(收费的)分析trace文件使用gawk命令格式gawk f delay.awk output.tr,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,柯老师强烈推荐模拟wireless网络,可以用edith.cse.nsysu.edu.tw/wordpress/?p=66生成无线网络场景,免去写tcl脚本的痛苦WIRED NETWORK,可以建議使用NSBENCH,SeaSon,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,网络性能度量details on academ/nanog/june2019/performance.html1.Bandwidth utilizationThe aggregate of all traffic currently being consumed on a hop or path.2.Packets per second3.Round Trip TimeThe elapsed time for transit of a signal over a closed circuit.4.RTT variance cs.utk.edu/dunigan/tcptour/javis/tcp_rttvar.html5.packet loss6.Reachability7.Circuit Performance8.Bandwidth Utilization and Packets Per secondcisco/en/US/tech/tk648/tk362/technologies_tech_note09186a008009496e.shtml,SeaSon,计算机学院-数据库中心,常用工具以及结果分析,必须了解各种协议的trace格式分析协议性能的gawk代码柯老师的网站140.116.72.80/smallko/ns2/tool.htmNS FAQ Question 14web.syr.edu/dchen02/FAQ.txt示例,SeaSon,计算机学院-数据库中心,使用Gawk分析结果,Gawk简介与NS相关的基本知识具体例子,SeaSon,计算机学院-数据库中心,使用Gawk分析结果,无线通信的trace格式s 10.107722800 _1_ AGT-22 tcp 43 0 2 1 800-1:0 2:0 30 2 13 0 0 0r 10.110474850 _2_ AGT-22 tcp 36 0 2 1 800-1:0 2:0 30 2 13 0 1 0,SeaSon,计算机学院-数据库中心,Gawk简介,解释性的脚本语言变量以及数组不用声明按行处理有pipe功能,可以将处理数据传给shell,SeaSon,计算机学院-数据库中心,Gawk相关语法,s 10.1 _1_ AGT-22 tcp 43 0 2 1 800-1:0 2:0 30 2 13 0 0 0(1).Gawk读入trace中的一行,注:列之间一般用空格区分,SeaSon,计算机学院-数据库中心,Gawk相关语法,(2)执行动作Pattern1 Actions1 Pattern2 Actions2 Pattern3 Actions3 其中pattern为条件语句(或正则表达式)如:if($1=“s”,SeaSon,计算机学院-数据库中心,Gawk相关语法,(3)IO操作 print、printf()、getline.(4)控制语句 if(.).else、while(),SeaSon,计算机学院-数据库中心,Gawk工作流程,Gawk反复执行以下四个步骤:1.自动从trace文件中读取一行。2.自动更新内建参数的值($n)。3.逐行执行程序中所有 的 Pattern Actions 代码。4.如果trace文件还有未读取的行,则循环执行上面步骤13。,SeaSon,计算机学院-数据库中心,Gawk程序的框架,BEGIN AgtNum=0;if($1=s 最后保存文agtnum.awk文件,SeaSon,计算机学院-数据库中心,执行的命令(演示),可以在cygwin或者xwin窗口下执行命令格式$gawk f agtnum.awk out.tr对于mflood例子,输出结果SeaSonColorfulSeaSon/ns-allinone-2.29/ns-2.29/test/ppt$gawk-f agtnum.awk mflood.tr Num of AGT pkts:50,SeaSon,计算机学院-数据库中心,一个分析协议的完整例子(推荐),Performance Evaluation of Ad Hoc Routing Protocols using ns2 simulations文章对ad hoc routing protocol进行了比較,包括DSDV,AODV,DSR其中TORA因为測不出來.就没进行比较作者把如何比較的程式碼都附在上面.下载网址:ww.cs.utk.edu/gupta/Adhoc.doc,SeaSon,计算机学院-数据库中心,其他,获得节点的位置,速度信息static Node*get_node_by_address(nsaddr_t);获得节点能量,使节点进入休眠模式跨层设计将真实数据导入NS2ivs.cs.uni-magdeburg.de/EuK/forschung/projekte/nse/howtos/ns2uml_userguide.pdfTcl与C+之间相互调用(演示)Tcl中调用C+函数Command()C+中调用tcl命令char out100;sprintf(out,%s setColor%d,name(),level);Tcl,SeaSon,计算机学院-数据库中心,其他,threshold 计算通信半径使用前先complier threshold$cd ns-2.29/indep-utils/propagation/$g+-lm threshold-o threshold 示例$threshold-m TwoRayGround 250distance=250propagation model:TwoRayGround,SeaSon,计算机学院-数据库中心,联系我,Email:yuhui.wu163MSN:yuhui.wuhotmaiQQ:67483698NS仿真软件-season netforum/,SeaSon,计算机学院-数据库中心,参考文献,柯老师的网站 140.116.72.80/smallko/ns2/ns2.htmNS与网络模拟ns-2 Tutorialwww-scf.usc.edu/bhuangIntroduction to Computer Networks Network simulator 2(ns-2),SeaSon,计算机学院-数据库中心,OVER 谢谢,SeaSon,计算机学院-数据库中心,敬请指导!,谢谢,骑封篙尊慈榷灶琴村店矣垦桂乖新压胚奠倘擅寞侥蚀丽鉴晰溶廷箩侣郎虫林森-消化系统疾病的症状体征与检查林森-消化系统疾病的症状体征与检查,

    注意事项

    本文(NS2入门和提高课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开