NS2入门与提高资料课件

上传人:艳*** 文档编号:242979180 上传时间:2024-09-13 格式:PPT 页数:81 大小:307KB
返回 下载 相关 举报
NS2入门与提高资料课件_第1页
第1页 / 共81页
NS2入门与提高资料课件_第2页
第2页 / 共81页
NS2入门与提高资料课件_第3页
第3页 / 共81页
点击查看更多>>
资源描述
SeaSon,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,计算机学院-数据库中心,NS2入门与提高,柯志亨 SeaSon,哈尔滨工业大学,2006-5-28,计算机学院-数据库中心,SeaSon,目录,NS2 简介,安装,模拟流程,添加新协议,调试以及结果分析,计算机学院-数据库中心,SeaSon,NS2 简介,背景,NS2目标,NS2功能,NS2 组件,NS2体系结构,计算机学院-数据库中心,SeaSon,NS2 背景,1989 REAL network simulator,1995: DARPA VINT project at LBL,Xerox PARC, UCB, and USC/ISI,Present: DARPA SAMAN project and NSF CONSER project,Collaboration with other researchers,including 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,Gawk,gnuplot,计算机学院-数据库中心,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 next,if 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,离散事件模拟示例,时间,事件,A.,1s,S decides to send pkt to D,S starts sending pkt,delay,value,transmission,0.005s,propagation,0.01s,D,S,S,D,B.,1.005s,S finishes transmitting pkt to D,C.,1.01s,D begins to recv pkt,D.,1.015s,D recvs entire pkt and delivers to application,B.,D.,C.,A.,事件队列,计算机学院-数据库中心,SeaSon,一个数据包怎样从源节点到目的节点,同一个节点内各层协议之间传数据?,节点之间怎么传?,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,SeaSon,安装,安装环境及方法,安装问题,计算机学院-数据库中心,SeaSon,安装(1),推荐直接安装all-inone版本(最新all-inone-2.29),Linux(直接install就行了),Windows+Cygwin+Ns2,windows安装方法,柯老师网站(不要看中文安装说明,选英文的),http:/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仿真软件-问题求助的地方,http:/=16&PN=1,常见错误原因,主要问题,gcc,版本,重装,计算机学院-数据库中心,SeaSon,开始进行摸拟,一个简单的无线网络的例子(1),无线场景的产生,利用NS模拟前搞清楚的问题,添加新协议,编译NS2,计算机学院-数据库中心,SeaSon,一个简单的无线网络的例子(1),场景配置,3 个mobile nodes,平面拓扑 670mX670m,ad hoc 路由协议 DSDV,Random Waypoint mobility model,TCP 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 670x670 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),#Define traffic model,source traffic-scenario-files,#Define node movement model,source movement-scenario-files,计算机学院-数据库中心,SeaSon,一个简单的无线网络的例子(8),#Define node initial position in nam,for set i 0 $i access(offset_);,;,计算机学院-数据库中心,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 ,/发送函数,其实就是调用目的节点的接受函数,inline void send(Packet *p) target_-recv(p); ,;,计算机学院-数据库中心,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(&,hdr_mflood,:offset_);,class_mfloodhdr,;,计算机学院-数据库中心,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 season,PT_MFLOOD,/,Trace,用到,PT_NTYPE / This MUST be the LAST one,class,p_info,public:,p_info,() ,/add by season,name_,PT_MFLOOD,= “,MFlood,”;,/,与前面对应,name_PT_NTYPE,= undefined;,目的:,Trace,中使用,协议构造函数,SpTreeAgent,(),初始化时使用,计算机学院-数据库中心,SeaSon,添加新协议(10),如果是路由协议如(AODV),还需要修改ns-lib.tcl,Simulator 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_ $ragent,return $ragent,计算机学院-数据库中心,SeaSon,添加新协议(11),还有这段代码(Mflood未使用)ns-mobilenode.tcl,# Special processing for AODV,set 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.tcl,1m-修改Makefile,将新协议添加,计算机学院-数据库中心,SeaSon,添加新协议总结,关于添加应用协议如ping,跟路由协议类似,甚至跟简单,如果从Agent继承,除了不需要修改ns-lib.tcl之外其它类似。,但是别忘了设置包头的大小,不然你发出的所有数据包头的大小都是0!,PingAgent:PingAgent() : Agent(PT_PING) ,bind(packetSize_, ,修改Ns-defautl.tcl,Agent/Ping set packetSize_ 64,计算机学院-数据库中心,SeaSon,编译NS2(1),前面的过程是将代码添加到NS2里面,但尚未编译,只有经过编译才能使用。,一般我们将我们所有的C+代码放在一个文件夹内,如mflood,然后放在ns-2.29/之下,修改Makefile(无任何后缀的),添加如下红色所示代码,将mflood编译进NS2,OBJ_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 depend,Make,计算机学院-数据库中心,SeaSon,编译NS2(5),修改了Otcl文件,修改NS中已有的代码,recompile,source,添加新的代码,source,修改 Makefile (NS_TCL_LIB), tcl/ns-lib.tcl (source) and recompile,都只需要make即可,计算机学院-数据库中心,SeaSon,调试NS,TCL的调试,Gdb的安装调试,计算机学院-数据库中心,SeaSon,调试(1),Tcl调试,个人觉得没什么用途,如果你感兴趣我的space有安装方法,Swowseason,C+代码的调试(segment fault),调试工具gdb,另外自带的insight可视化界面,本质也是调用gdb,下面介绍gdb的安装调试,计算机学院-数据库中心,SeaSon,调试(2),gdb安装,安装gdb,以cygwin为例,重新运行cygwin的setup文件,选择界面中的keep(,必须!否则会死的很惨的,),然后找到gdb选择安装即可。,重新编译NS2,添加调试信息,修改Makefile在下面位置添加-g,CCOPT=,-g,进入ns-2.29目录下面执行,Make clean,Make depend # 执行这个命令过程中如出错,不用管!,Make,如果没有错误,就安装成功,V!,计算机学院-数据库中心,SeaSon,调试(2),Gdb调试NS2,以命令行为例,进入ns-2.29(%为命令提示符),% gdb ns,gdb,即进入调试,计算机学院-数据库中心,SeaSon,调试(3),调试常用命令,bt列出运行栈中信息,b sptree.cc:linenum 在sptree.cc文件linenum行设置断点,注意中间”:”不能丢,c 相当于vc中continue, n 相当于vc中next,display 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.plot,Windows下还有origin(收费的),分析trace文件,使用gawk,命令格式,gawk f delay.awk output.tr,计算机学院-数据库中心,SeaSon,常用工具以及结果分析,柯老师强烈推荐,模拟wireless网络 ,可以用,生成无线网络场景,免去写tcl脚本的痛苦,WIRED NETWORK,可以建議使用NSBENCH,计算机学院-数据库中心,SeaSon,计算机学院-数据库中心,SeaSon,常用工具以及结果分析,网络性能度量,details on,1.Bandwidth utilization,The aggregate of all traffic currently being consumed on a hop or path.,2.Packets per second,3.Round Trip Time,The elapsed time for transit of a signal over a closed circuit.,4.RTT variance,http:/www.cs.utk.edu/dunigan/tcptour/javis/tcp_rttvar.html,5.packet loss,6.Reachability,7.Circuit Performance,8.Bandwidth Utilization and Packets Per second,计算机学院-数据库中心,SeaSon,常用工具以及结果分析,必须了解各种协议的trace格式,分析协议性能的gawk代码,柯老师的网站,http:/140.116.72.80/smallko/ns2/tool.htm,NS FAQ,Question 14,http:/web.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 0,r,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中的一行,$0,$1,$2,$3,$4,$5,$6,$7,整行,s,10.1,_1_,AGT,-,22(uid),tcp,注:列之间一般用空格区分,计算机学院-数据库中心,SeaSon,Gawk相关语法,$0,$1,$2,$3,$4,$5,$6,$7,整行,s,10.1,_1_,AGT,-,22,tcp,(2)执行动作,Pattern1 Actions1 ,Pattern2 Actions2 ,Pattern3 Actions3 ,其中pattern为条件语句(或正则表达式)如:,if ($1 = “s” & $4 = “AGT”),Actions为动作,如:AgtNum+;,计算机学院-数据库中心,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 & $4 = AGT),AgtNum+;,END,printf( Num of AGT pkts: %d n, AgtNum);,最后保存文,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);,获得节点能量,使节点进入休眠模式,跨层设计,将真实数据导入NS2,Tcl与C+之间相互调用(演示),Tcl中调用C+函数,Command(),C+中调用tcl命令,char out100;,sprintf(out, %s setColor %d , name(),level);,Tcl,tcl.eval(out);,计算机学院-数据库中心,SeaSon,其他,threshold 计算通信半径,使用前先complier threshold.cc$ cd ns-2.29/indep-utils/propagation/$ g+ -lm threshold.cc -o threshold,示例,$ threshold -m TwoRayGround 250distance = 250propagation model: TwoRayGround,计算机学院-数据库中心,SeaSon,联系我,QQ:67483698,NS仿真软件-season,http:/,计算机学院-数据库中心,SeaSon,参考文献,柯老师的网站,http:/140.116.72.80/smallko/ns2/ns2.htm,NS与网络模拟,ns-2 Tutorial,http:/www-scf.usc.edu/bhuang,Introduction to Computer Networks,Network simulator 2 (ns-2),计算机学院-数据库中心,SeaSon,OVER,谢谢,计算机学院-数据库中心,SeaSon,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!