NS2入門和提高課件_第1頁
NS2入門和提高課件_第2頁
NS2入門和提高課件_第3頁
NS2入門和提高課件_第4頁
NS2入門和提高課件_第5頁
已閱讀5頁,還剩161頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

NS2入門與提高柯志亨SeaSon哈爾濱工業(yè)大學(xué)2019-5-28計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2入門與提高柯志亨SeaSon計算機1目錄NS2簡介安裝模擬流程添加新協(xié)議調(diào)試以及結(jié)果分析計算機學(xué)院-數(shù)據(jù)庫中心SeaSon目錄NS2簡介計算機學(xué)院-數(shù)據(jù)庫中心SeaSon2NS2簡介背景NS2目標(biāo)NS2功能NS2組件NS2體系結(jié)構(gòu)計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2簡介背景計算機學(xué)院-數(shù)據(jù)庫中心SeaSon3NS2背景1989REALnetworksimulator 2019:DARPAVINTprojectatLBL,XeroxPARC,UCB,andUSC/ISIPresent:DARPASAMANprojectandNSFCONSERprojectCollaborationwithotherresearchersincludingCIRI計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2背景1989REALnetworksimula4NS2研究范圍支持網(wǎng)絡(luò)協(xié)議的研究和教育通信協(xié)議的設(shè)計,數(shù)據(jù)流的研究等不同協(xié)議的比較優(yōu)點與平臺無關(guān),有大量的協(xié)議、代碼以及模型可供使用,開源的,不同的協(xié)議很容易進(jìn)行比較。計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2研究范圍支持網(wǎng)絡(luò)協(xié)議的研究和教育計算機學(xué)院-數(shù)據(jù)庫中心5NS2目標(biāo)NS2不適合做的?大多數(shù)任務(wù)都是單節(jié)點完成的,比如交換機的性能分析等。計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2目標(biāo)NS2不適合做的?計算機學(xué)院-數(shù)據(jù)庫中心SeaSo6NS2功能有線網(wǎng)絡(luò)路由層DV,LS,PIM-SM傳輸層:TCPandUDP流量產(chǎn)生:web,ftp,telnet,cbr,stochastic隊列模型:drop-tail,RED,FQ,SFQQoS:IntServandDiffserv計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2功能有線網(wǎng)絡(luò)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon7NS2功能無線網(wǎng)絡(luò)網(wǎng)絡(luò)類型:MANET,SensorNetworks路由:AODV,DSR,DSDV,MobileIP以及HMIPv6等MAC:802.11,802.15.4,Smac等傳輸層、多種數(shù)據(jù)流模擬計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2功能無線網(wǎng)絡(luò)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon8NS2組件ns:網(wǎng)絡(luò)模擬器執(zhí)行tcl腳本,進(jìn)行模擬,并將所有的模擬結(jié)果以trace文件的個是輸出。nam:網(wǎng)絡(luò)AniMator將ns的結(jié)果可視化。模擬的流程tcl腳本ns-2Trace文件Nam文件namGawkgnuplot計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2組件ns:網(wǎng)絡(luò)模擬器tcl腳本ns-2Trace9NS2體系結(jié)構(gòu)面向?qū)ο蟮脑O(shè)計支持重用容易維護(hù)方便擴(kuò)展,如添加新協(xié)議分裂對象模型C++是高效的編譯執(zhí)行語言,功能模擬,性能較好Otcl解釋執(zhí)行的,進(jìn)行場景配置。不必重新編譯更靈活計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2體系結(jié)構(gòu)面向?qū)ο蟮脑O(shè)計計算機學(xué)院-數(shù)據(jù)庫中心SeaSo10NS2體系結(jié)構(gòu)NS2結(jié)合兩者的優(yōu)點C++otcl計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2體系結(jié)構(gòu)NS2結(jié)合兩者的優(yōu)點C++otcl計算機學(xué)院-11Tcl與C++對象綁定過程以tcp為例,當(dāng)你在tcl腳本中使用以下命令創(chuàng)建一個Tcp對象時settcp0[newAgent/TCP]首先創(chuàng)建tcl對象,即解釋對象procnew{classNameargs}{

seto[SplitObjectgetid]

#創(chuàng)建分裂對象 if[catch"$classNamecreate$o$args"msg]{ … } return$o}計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程以tcp為例,當(dāng)你在tcl腳本中使12Tcl與C++對象綁定過程然后通過Tcl對象的init()函數(shù)中創(chuàng)建對應(yīng)的shadow對象SplitObjectinstprocinitargs{ $selfnext if[catch"$selfcreate-shadow

$args"]{

error"__FAILED_SHADOW_OBJECT_""" }}計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程然后通過Tcl對象的init()函13Tcl與C++對象綁定過程Create-shadow怎樣找到tcl對象對應(yīng)的C++對象?答案就是TclClass類?。?!staticclassTcpClass:publicTclClass{public: TcpClass():TclClass("Agent/TCP"){} TclObject*create(int,constchar*const*){ return(newTcpAgent()); }}class_tcp;計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程Create-shadow怎樣找到14

NS2系統(tǒng)結(jié)構(gòu)

--離散事件模擬

把世界上的一切都看成事件維護(hù)一個基于發(fā)生時間排序的事件(events)隊列維護(hù)一個系統(tǒng)的時間[virtualtime]重復(fù)的執(zhí)行以下的過程:從對首取出一個事件,set[virtualtime]=event’stime處理這個事件如果在處理時間過程中產(chǎn)生新的event,插入queue每一個事件都有一個預(yù)定的執(zhí)行(虛擬的)時間,獨立于真實執(zhí)行時間。CPU執(zhí)行的快慢不影響結(jié)果。計算機學(xué)院-數(shù)據(jù)庫中心SeaSon

NS2系統(tǒng)結(jié)構(gòu)

--離散事件模擬

把世界上的15離散事件模擬示例時間事件A.1sSdecidestosendpkttoDSstartssendingpktdelayvaluetransmission0.005spropagation0.01sDSSDB.1.005sSfinishestransmittingpkttoDC.1.01sDbeginstorecvpktD.1.015sDrecvsentirepktanddeliverstoapplicationB.D.C.A.事件隊列計算機學(xué)院-數(shù)據(jù)庫中心SeaSon離散事件模擬示例時間事件A.1sSdecidestos16一個數(shù)據(jù)包怎樣從源節(jié)點到目的節(jié)點同一個節(jié)點內(nèi)各層協(xié)議之間傳數(shù)據(jù)?節(jié)點之間怎么傳?計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個數(shù)據(jù)包怎樣從源節(jié)點到目的節(jié)點同一個節(jié)點內(nèi)各層協(xié)議之間傳數(shù)17計算機學(xué)院-數(shù)據(jù)庫中心SeaSon計算機學(xué)院-數(shù)據(jù)庫中心SeaSon18

安裝安裝環(huán)境及方法安裝問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon 安裝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon19安裝(1)推薦直接安裝all-inone版本(最新all-inone-2.29)Linux(直接install就行了)Windows+Cygwin+Ns2windows安裝方法柯老師網(wǎng)站(不要看中文安裝說明,選英文的) 0/~smallko/ns2/ns2.htm計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(1)推薦直接安裝all-inone版本(最新all-i20安裝(2)windows安裝方法柯老師網(wǎng)站上Cygwin可以成功安裝的ns2版本有NS-2.26,NS-2.27,NS-2.28,ns-2.29注:NS-2.26需要PATCH過..才能安裝柯老師的安裝經(jīng)驗:不過安裝的過程還是可能會有一些問題..最確??梢园惭b成功的方法是:重新安裝WINDOWS..裝完馬上安裝CYGWIN+NS2,安裝後..在裝SERVICEPACK..或其他的軟件..這是我的經(jīng)驗計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(2)windows安裝方法計算機學(xué)院-數(shù)據(jù)庫中心Sea21安裝(3)NS仿真軟件-問題求助的地方

netforum/forum_topics.asp?FID=16&PN=1常見錯誤原因主要問題gcc版本重裝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(3)NS仿真軟件-問題求助的地方計算機學(xué)院-數(shù)據(jù)庫中22開始進(jìn)行摸擬一個簡單的無線網(wǎng)絡(luò)的例子(1)無線場景的產(chǎn)生利用NS模擬前搞清楚的問題添加新協(xié)議編譯NS2計算機學(xué)院-數(shù)據(jù)庫中心SeaSon開始進(jìn)行摸擬一個簡單的無線網(wǎng)絡(luò)的例子(1)計算機學(xué)院-數(shù)據(jù)庫23一個簡單的無線網(wǎng)絡(luò)的例子(1)

場景配置3個mobilenodes平面拓?fù)?70mX670madhoc路由協(xié)議DSDVRandomWaypointmobilitymodelTCPandCBRtraffic計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(1)

場景配置計算機學(xué)院-數(shù)據(jù)庫中24一個簡單的無線網(wǎng)絡(luò)的例子(2)setns_[newSimulator] ;createanssimulatorinstance#DefineGlobalVariablessettopo[newTopography] ;createatopologyand$topoload_flatgrid670670;defineitin670x670area計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(2)setns_[newS25一個簡單的無線網(wǎng)絡(luò)的例子(3)#Definestandardns/namtracesettracefd[open694demo.trw]$ns_

trace-all

$tracefd

setnamtrace[open694demo.namw]$ns_

namtrace-all-wireless

$namtrace670670 計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(3)#Definestandar26一個簡單的無線網(wǎng)絡(luò)的例子(4)#Create“God”setgod_[create-god3]God用來保存一個結(jié)點到另外一個結(jié)點直接的跳部數(shù).例如:$ns_at899.00“$god_setdist231”計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(4)#Create“God”s27一個簡單的無線網(wǎng)絡(luò)的例子(5)#Definehowamobilenodeshouldbecreated$ns_node-config

-adhocRouting

DSDV\ -llTypeLL\ -macTypeMac/802_11\ -ifqLen50\ -ifqTypeQueue/DropTail/PriQueue\ -antTypeAntenna/OmniAntenna\ -propTypePropagation/TwoRayGround\ -phyTypePhy/WirelessPhy\ -channelTypeChannel/WirelessChannel\ -topoInstance$topo -agentTraceON\ -routerTraceOFF\ -macTraceOFF計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(5)#Definehowam28一個簡單的無線網(wǎng)絡(luò)的例子(6)#Createamobilenodeandattachittothechannelsetnode[$ns_node]$noderandom-motion0 ;#disablerandommotionUse“forloop”tocreate3nodes:for{seti<0}{$i<3}{incri}{setnode_($i)[$ns_node]}計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(6)#Createamobil29一個簡單的無線網(wǎng)絡(luò)的例子(7)#Definetrafficmodelsourcetraffic-scenario-files#Definenodemovementmodelsourcemovement-scenario-files計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(7)#Definetraffic30一個簡單的無線網(wǎng)絡(luò)的例子(8)#Definenodeinitialpositioninnamfor{seti0}{$i<3}{incri}{ $ns_initial_node_position$node_($i)20}#Tellns/namthesimulationstoptime$ns_at200.00“$ns_halt”#Startyoursimulation$ns_run計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(8)#Definenodein31無線場景的產(chǎn)生(1)生成節(jié)點運動模型setdest-n<num_of_nodes>-ppausetime-s<maxspeed>-t<simtime>-x<maxx>-y<maxy>Source:Seens-2/indep-utils/cmu-scen-gen/setdest/網(wǎng)上還可以下載更多的模型,如組移動模型等計算機學(xué)院-數(shù)據(jù)庫中心SeaSon無線場景的產(chǎn)生(1)生成節(jié)點運動模型計算機學(xué)院-數(shù)據(jù)庫中心S32無線場景的產(chǎn)生(2)生成無線網(wǎng)絡(luò)數(shù)據(jù)流CBRtrafficnscbrgen.tcl[-typecbf|tcp][-nnnodes][-seedseed][-mcconnections][-raterate]Source:

ns-allinone-2.29\ns-2.29\indep-utils\cmu-scen-gen計算機學(xué)院-數(shù)據(jù)庫中心SeaSon無線場景的產(chǎn)生(2)生成無線網(wǎng)絡(luò)數(shù)據(jù)流計算機學(xué)院-數(shù)據(jù)庫中心33利用NS模擬前搞清楚的問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon利用NS模擬前搞清楚的問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon34NS2源代碼目錄simtk8.0otclTcltcl8.0ns-2nam-1tclextestlib......tclcodeexamplevalidationtestC++codetclcodecore計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2源代碼目錄simtk8.0otclTcltcl8.035添加協(xié)議(1)添加別人實現(xiàn)的協(xié)議為什么我安裝總是出錯????? 環(huán)境問題,OS,gcc版本,ns版本解決辦法 1.修改環(huán)境,裝相應(yīng)的os,gcc,ns22.移植到新的環(huán)境,怎么移?gdb調(diào)試,沒有別的辦法?。?!計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加協(xié)議(1)添加別人實現(xiàn)的協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心Sea36添加新協(xié)議(2)自己寫協(xié)議路由協(xié)議?應(yīng)用層協(xié)議?MAC協(xié)議? 最好的方法就是模仿已有的協(xié)議,代表協(xié)議AODV,MAC802.11,Ping添加路由協(xié)議,從Agent繼承添加應(yīng)用層協(xié)議,從Agent(更靈活)或者Application(有些不能實現(xiàn))計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(2)自己寫協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心SeaSon37添加新協(xié)議(3)示例:一個泛洪協(xié)議(Mflood)協(xié)議類型:路由層協(xié)議1.定義包頭

structhdr_mflood{ u_int32_t seq_;//根據(jù)需要定義變量,這個靈活決定….//包頭訪問的方法,你只需要復(fù)制下來就OK了staticintoffset_;//requiredbyPacketHeaderManagerinlinestaticint&offset(){returnoffset_;}inlinestatichdr_sptree*access(constPacket*p){return(hdr_sptree*)p->access(offset_);}};計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(3)示例:一個泛洪協(xié)議(Mflood)計算機學(xué)院38添加新協(xié)議(4)2.實現(xiàn)協(xié)議classMFlood:publicAgent{public:

MFlood();

voidrecv(Packet*p,Handler*);intcommand(int,constchar*const*);protected:

inlineintinitialized(){return1&&target_;} //發(fā)送函數(shù),其實就是調(diào)用目的節(jié)點的接受函數(shù)inlinevoidsend(Packet*p){target_->recv(p);}};計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(4)2.實現(xiàn)協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心SeaS39添加新協(xié)議(5)3關(guān)聯(lián)tcl對象與C++對象(模板)staticclassMFloodclass:publicTclClass{public:

MFloodclass():TclClass("Agent/MFlood"){} TclObject*create(intargc,constchar*const*argv){ assert(argc==5); return(newMFlood((nsaddr_t)atoi(argv[4]))); //PBOagrv[4]isindex_} }}class_rtProtoMFlood;計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(5)3關(guān)聯(lián)tcl對象與C++對象(模板)計算機40添加新協(xié)議(6)4關(guān)聯(lián)tcl對象與C++對象的包頭(模板)inthdr_mflood::offset_;staticclassMFloodHeaderClass:publicPacketHeaderClass{public:

MFloodHeaderClass():PacketHeaderClass("PacketHeader/MFlood", sizeof(hdr_mflood)){ bind_offset(&hdr_mflood::offset_); }}class_mfloodhdr;計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(6)4關(guān)聯(lián)tcl對象與C++對象的包頭(模板)41添加新協(xié)議(7)目前為止,所有的代碼工作都已經(jīng)完成了 生下的工作就是將這個協(xié)議編譯到NS2中。需要修改一下文件1.ns-packet.tcl(ns-allinone-2.29\ns-2.29\tcl\lib)2.packet.h(ns-allinone-2.29\ns-2.29\common)3ns-lib.tcl(ns-allinone-2.29\ns-2.29\tcl\lib)

對于我們這個應(yīng)用層協(xié)議不需要修改計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(7)目前為止,所有的代碼工作都已經(jīng)完成了計算機學(xué)42添加新協(xié)議(8)1.修改ns-packet.tcl(ns-2.29/tcl/lib)foreachprot{#addbyseason

MFlood……}目的:在NS啟動的時候加載我們的包頭。計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(8)1.修改ns-packet.tcl(ns-43添加新協(xié)議(9)2.修改packet.h(一共修改兩處ns-2.29/common)enumpacket_t{ //insertnewpackettypeshere //addbyseason

PT_MFLOOD,//Trace用到 PT_NTYPE//ThisMUSTbetheLASTone }classp_info{ public: p_info(){ //addbyseason

name_[PT_MFLOOD]=“MFlood”;//與前面對應(yīng) name_[PT_NTYPE]="undefined"; }目的:Trace中使用,協(xié)議構(gòu)造函數(shù)SpTreeAgent()初始化時使用計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(9)2.修改packet.h(一共修改兩處ns44添加新協(xié)議(10)如果是路由協(xié)議如(AODV)還需要修改ns-lib.tclSimulatorinstproccreate-wireless-nodeargs{MFlood{setragent[$selfcreate-mflood-agent$node]}…}Simulatorinstproccreate-mflood-agent{node}{setragent[newAgent/MFlood[$nodeid]] $nodesetragent_$ragent return$ragent}計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(10)如果是路由協(xié)議如(AODV)計算機學(xué)院-數(shù)45添加新協(xié)議(11)還有這段代碼(Mflood未使用)~ns-mobilenode.tcl #SpecialprocessingforAODV setaodvonly[stringfirst"AODV"[$agentinfoclass]] if{$aodvonly!=-1}{ $agentif-queue[$selfsetifq_(0)];#ifqbetweenLLandMAC }

計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(11)還有這段代碼(Mflood未使用)~ns-46添加新協(xié)議總結(jié)5c+2t+1m(521規(guī)則)5c-必須實現(xiàn)的五個C++模塊MFlood與MFloodclasshdr_mflood與MFloodHeaderClasspackt.h添加包頭類型2t-修改兩個tcl文件ns-lib.tcl與ns-packet.tcl有時候還會修改ns-defaut.tcl1m-修改Makefile,將新協(xié)議添加計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議總結(jié)5c+2t+1m(521規(guī)則)計算機學(xué)院-數(shù)據(jù)47添加新協(xié)議總結(jié)關(guān)于添加應(yīng)用協(xié)議如ping,跟路由協(xié)議類似,甚至跟簡單,如果從Agent繼承,除了不需要修改ns-lib.tcl之外其它類似。但是別忘了設(shè)置包頭的大小,不然你發(fā)出的所有數(shù)據(jù)包頭的大小都是0!?。?!PingAgent::PingAgent():Agent(PT_PING){bind("packetSize_",&size_);}修改Ns-defautl.tclAgent/PingsetpacketSize_64計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議總結(jié)關(guān)于添加應(yīng)用協(xié)議如ping,跟路由協(xié)議類似,甚48編譯NS2(1)前面的過程是將代碼添加到NS2里面,但尚未編譯,只有經(jīng)過編譯才能使用。一般我們將我們所有的C++代碼放在一個文件夾內(nèi),如mflood,然后放在ns-2.29/之下修改Makefile(無任何后綴的)添加如下紅色所示代碼,將mflood編譯進(jìn)NS2OBJ_CC=\#addbyseasonmflood/mflood.omflood/mflood-seqtable.o\計算機學(xué)院-數(shù)據(jù)庫中心SeaSon編譯NS2(1)前面的過程是將代碼添加到NS2里面,但尚未編49編譯NS2(2)從cygwin進(jìn)入ns-2.29目錄下執(zhí)行makeclean#刪除所有的*.o文件makedependmake#重新編譯ns如果沒有錯誤,則可以編寫場景測試什么時候要makeclean???計算機學(xué)院-數(shù)據(jù)庫中心SeaSon編譯NS2(2)從cygwin進(jìn)入ns-2.29目錄下計算機50編譯NS2(3)如果添加新協(xié)議,或者修改了多個協(xié)議公用的NS中頭文件,如packet.h我們都需要重新makeclean然后makedepend,make。計算機學(xué)院-數(shù)據(jù)庫中心SeaSon編譯NS2(3)如果添加新協(xié)議,或者修改了多個協(xié)議公用的NS51編譯NS2(4)修改了C++文件對于NS中已有的代碼修改 不需要修改makefile,只需要make添加新的模塊或協(xié)議 修改Makefile并重新MakecleanMakedependMake計算機學(xué)院-數(shù)據(jù)庫中心SeaSon編譯NS2(4)修改了C++文件計算機學(xué)院-數(shù)據(jù)庫中心Sea52編譯NS2(5)修改了Otcl文件修改NS中已有的代碼recompilesource添加新的代碼source修改Makefile(NS_TCL_LIB),tcl/ns-lib.tcl(source)andrecompile都只需要make即可計算機學(xué)院-數(shù)據(jù)庫中心SeaSon編譯NS2(5)修改了Otcl文件計算機學(xué)院-數(shù)據(jù)庫中心Se53調(diào)試NSTCL的調(diào)試Gdb的安裝調(diào)試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon調(diào)試NSTCL的調(diào)試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon54調(diào)試(1)Tcl調(diào)試個人覺得沒什么用途,如果你感興趣我的space有安裝方法Spaces.msn\wowseasonC++代碼的調(diào)試(segmentfault)調(diào)試工具gdb,另外自帶的insight可視化界面,本質(zhì)也是調(diào)用gdb下面介紹gdb的安裝調(diào)試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon調(diào)試(1)Tcl調(diào)試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon55調(diào)試(2)gdb安裝安裝gdb,以cygwin為例重新運行cygwin的setup文件,選擇界面中的keep(必須!?。》駝t會死的很慘的),然后找到gdb選擇安裝即可。重新編譯NS2,添加調(diào)試信息修改Makefile在下面位置添加-gCCOPT =-g進(jìn)入ns-2.29目錄下面執(zhí)行MakecleanMakedepend#執(zhí)行這個命令過程中如出錯,不用管!Make如果沒有錯誤,就安裝成功,V??!計算機學(xué)院-數(shù)據(jù)庫中心SeaSon調(diào)試(2)gdb安裝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon56調(diào)試(2)Gdb調(diào)試NS2以命令行為例進(jìn)入ns-2.29(%為命令提示符)%gdbnsgdb〉即進(jìn)入調(diào)試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon調(diào)試(2)Gdb調(diào)試NS2計算機學(xué)院-數(shù)據(jù)庫中心SeaSon57調(diào)試(3)調(diào)試常用命令bt列出運行棧中信息bsptree:linenum在sptree文件linenum行設(shè)置斷點,注意中間”:”不能丟c相當(dāng)于vc中continue,n相當(dāng)于vc中nextdisplayvar,顯示變量var的值其他的參看gdb文檔NS中調(diào)試技巧以及演示計算機學(xué)院-數(shù)據(jù)庫中心SeaSon調(diào)試(3)調(diào)試常用命令計算機學(xué)院-數(shù)據(jù)庫中心SeaSon58結(jié)果分析場景測試工具使用及結(jié)果分析其他計算機學(xué)院-數(shù)據(jù)庫中心SeaSon結(jié)果分析場景測試計算機學(xué)院-數(shù)據(jù)庫中心SeaSon59場景測試為了使模擬更接近真實網(wǎng)絡(luò),參數(shù)選擇,非常重要!可以參看相關(guān)論文簡單測試用兩三個節(jié)點測試一下首發(fā)數(shù)據(jù),根據(jù)trace文件分析。功能測試測試每一個功能,對于無線網(wǎng)絡(luò)的,要測試多跳,各種拓?fù)洹?利用trace分析結(jié)果計算機學(xué)院-數(shù)據(jù)庫中心SeaSon場景測試為了使模擬更接近真實網(wǎng)絡(luò),參數(shù)選擇,非常重要!可以參60參數(shù)選擇(802.11b)TheAntennaheightoftransmitterandreceiveris1.5m. ThepropagationmodelisTwoRayGroundmodel. Antenna/OmniAntennasetGt_ 1 //Transmitantennagain Antenna/OmniAntennasetGr_ 1 //Receiveantennagain Phy/WirelessPhysetL_1.0 //SystemLossFactor Phy/WirelessPhysetfreq_2.472e9 //channel-13.2.472GHz Phy/WirelessPhysetbandwidth_11Mb //DataRate Phy/WirelessPhysetPt_0.031622777 //TransmitPower Phy/WirelessPhysetCPThresh_10.0 //CollisionThreshold Phy/WirelessPhysetCSThresh_5.011872e-12 //CarrierSensePower Phy/WirelessPhysetRXThresh_5.82587e-09 //ReceivePowerThreshold;calculatedunder TwoRayGroundmodelbytoolsfromNS2. *Mac/802_11setdataRate_11Mb //RateforDataFrames *Mac/802_11setbasicRate_1Mb //RateforControlFrames 計算機學(xué)院-數(shù)據(jù)庫中心SeaSon參數(shù)選擇(802.11b)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon61常用工具以及結(jié)果分析看代碼推薦sourceinsight畫圖,gnuplot,xgraph 命令格式如下,示例演示%gnuplotdelay.plotWindows下還有origin(收費的)分析trace文件使用gawk命令格式 gawk–fdelay.awkoutput.tr計算機學(xué)院-數(shù)據(jù)庫中心SeaSon常用工具以及結(jié)果分析看代碼計算機學(xué)院-數(shù)據(jù)庫中心SeaSon62常用工具以及結(jié)果分析柯老師強烈推薦模擬wireless網(wǎng)絡(luò),可以用.tw/wordpress/?p=66生成無線網(wǎng)絡(luò)場景,免去寫tcl腳本的痛苦WIREDNETWORK,可以建議使用NSBENCH計算機學(xué)院-數(shù)據(jù)庫中心SeaSon常用工具以及結(jié)果分析柯老師強烈推薦計算機學(xué)院-數(shù)據(jù)庫中心Se63計算機學(xué)院-數(shù)據(jù)庫中心SeaSon計算機學(xué)院-數(shù)據(jù)庫中心SeaSon64常用工具以及結(jié)果分析網(wǎng)絡(luò)性能度量detailsonacadem/nanog/june2019/performance.html1.BandwidthutilizationTheaggregateofalltrafficcurrentlybeingconsumedonahoporpath.2.Packetspersecond3.RoundTripTimeTheelapsedtimefortransitofasignaloveraclosedcircuit.4.RTTvariance

/~dunigan/tcptour/javis/tcp_rttvar.html5.packetloss6.Reachability7.CircuitPerformance8.BandwidthUtilizationandPacketsPersecond cisco/en/US/tech/tk648/tk362/technologies_tech_note09186a008009496e.shtml計算機學(xué)院-數(shù)據(jù)庫中心SeaSon常用工具以及結(jié)果分析網(wǎng)絡(luò)性能度量計算機學(xué)院-數(shù)據(jù)庫中心Sea65常用工具以及結(jié)果分析必須了解各種協(xié)議的trace格式分析協(xié)議性能的gawk代碼柯老師的網(wǎng)站0/~smallko/ns2/tool.htmNSFAQQuestion14/~dchen02/FAQ.txt示例計算機學(xué)院-數(shù)據(jù)庫中心SeaSon常用工具以及結(jié)果分析必須了解各種協(xié)議的trace格式計算機學(xué)66使用Gawk分析結(jié)果Gawk簡介與NS相關(guān)的基本知識具體例子計算機學(xué)院-數(shù)據(jù)庫中心SeaSon使用Gawk分析結(jié)果Gawk簡介計算機學(xué)院-數(shù)據(jù)庫中心Sea67使用Gawk分析結(jié)果無線通信的trace格式s10.107722800_1_AGT22tcp43[021800][1:02:0302][130]00r10.110474850_2_AGT22tcp36[021800][1:02:0302][130]10計算機學(xué)院-數(shù)據(jù)庫中心SeaSon使用Gawk分析結(jié)果無線通信的trace格式計算機學(xué)院-數(shù)據(jù)68Gawk簡介解釋性的腳本語言變量以及數(shù)組不用聲明按行處理有pipe功能,可以將處理數(shù)據(jù)傳給shell計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk簡介解釋性的腳本語言計算機學(xué)院-數(shù)據(jù)庫中心SeaSo69Gawk相關(guān)語法s10.1_1_AGT22tcp43[021800][1:02:0302][130]00 (1).Gawk讀入trace中的一行$0$1$2$3$4$5$6$7…整行s10.1_1_AGT22(uid)tcp…注:列之間一般用空格區(qū)分計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk相關(guān)語法s10.1_1_AGT2270Gawk相關(guān)語法$0$1$2$3$4$5$6$7…整行s10.1_1_AGT22tcp…(2)執(zhí)行動作 Pattern1 {Actions1} Pattern2 {Actions2} …………… Pattern3 {Actions3} 其中pattern為條件語句(或正則表達(dá)式)如:if($1==“s”&&$4==“AGT”)Actions為動作,如:AgtNum++;計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk相關(guān)語法$0$1$2$3$4$5$6$7…整行s1071Gawk相關(guān)語法(3)IO操作

print、printf()、getline

(4)控制語句

if(...){...}else{…}、while(…){…}……計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk相關(guān)語法(3)IO操作計算機學(xué)院-數(shù)據(jù)庫中心S72Gawk工作流程Gawk反復(fù)執(zhí)行以下四個步驟:1.自動從trace文件中讀取一行。2.自動更新內(nèi)建參數(shù)的值($n)。3.逐行執(zhí)行程序中所有的Pattern{Actions}代碼。4.如果trace文件還有未讀取的行,則循環(huán)執(zhí)行上面步驟1~3。計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk工作流程Gawk反復(fù)執(zhí)行以下四個步驟:計算機學(xué)院-數(shù)73Gawk程序的框架BEGIN{AgtNum=0;}{ if($1=="s"&&$4=="AGT")AgtNum++;}END{printf("NumofAGTpkts:%d\n",AgtNum);}最后保存文agtnum.awk文件計算機學(xué)院-數(shù)據(jù)庫中心SeaSonGawk程序的框架BEGIN{計算機學(xué)院-數(shù)據(jù)庫中心Se74執(zhí)行的命令(演示)可以在cygwin或者xwin窗口下執(zhí)行命令格式$gawk–fagtnum.awkout.tr對于mflood例子,輸出結(jié)果SeaSonColorfulSeaSon~/ns-allinone-2.29/ns-2.29/test/ppt$gawk-fagtnum.awkmflood.trNumofAGTpkts:50計算機學(xué)院-數(shù)據(jù)庫中心SeaSon執(zhí)行的命令(演示)可以在cygwin或者xwin窗口下執(zhí)行計75一個分析協(xié)議的完整例子(推薦)PerformanceEvaluationofAdHocRoutingProtocolsusingns2simulations文章對adhocroutingprotocol進(jìn)行了比較,包括DSDV,AODV,DSR其中TORA因為測不出來..就沒進(jìn)行比較作者把如何比較的程式碼都附在上面...下載網(wǎng)址:/~gupta/Adhoc.doc計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個分析協(xié)議的完整例子(推薦)PerformanceEva76其他獲得節(jié)點的位置,速度信息staticNode*get_node_by_address(nsaddr_t);獲得節(jié)點能量,使節(jié)點進(jìn)入休眠模式跨層設(shè)計將真實數(shù)據(jù)導(dǎo)入NS2 ivs.cs.uni-magdeburg.de/EuK/forschung/projekte/nse/howtos/ns2uml_userguide.pdfTcl與C++之間相互調(diào)用(演示)Tcl中調(diào)用C++函數(shù)Command()C++中調(diào)用tcl命令charout[100];sprintf(out,"%ssetColor%d",name(),level);Tcl&tcl=Tcl::instance();tcl.eval(out);計算機學(xué)院-數(shù)據(jù)庫中心SeaSon其他獲得節(jié)點的位置,速度信息計算機學(xué)院-數(shù)據(jù)庫中心SeaSo77其他threshold計算通信半徑使用前先complierthreshold

$cdns-2.29/indep-utils/propagation/

$g++-lmthreshold-othreshold示例$threshold-mTwoRayGround250

distance=250

propagationmodel:TwoRayGround

計算機學(xué)院-數(shù)據(jù)庫中心SeaSon其他threshold計算通信半徑計算機學(xué)院-數(shù)據(jù)庫中心S78聯(lián)系我Email:yuhui.wu163MSN:yuhui.wuhotmaiQQ:67483698NS仿真軟件-seasonnetforum/計算機學(xué)院-數(shù)據(jù)庫中心SeaSon聯(lián)系我Email:yuhui.wu163計算機學(xué)院-數(shù)據(jù)庫79參考文獻(xiàn)柯老師的網(wǎng)站0/~smallko/ns2/ns2.htm《NS與網(wǎng)絡(luò)模擬》ns-2Tutorial/~bhuangIntroductiontoComputerNetworksNetworksimulator2(ns-2)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon參考文獻(xiàn)柯老師的網(wǎng)站計算機學(xué)院-數(shù)據(jù)庫中心SeaSon80 OVER

謝謝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon OVER

謝謝計算機學(xué)院-數(shù)據(jù)庫中心S81敬請指導(dǎo)!計算機學(xué)院-數(shù)據(jù)庫中心SeaSon敬請指導(dǎo)!計算機學(xué)院-數(shù)據(jù)庫中心SeaSon82謝謝騎封篙尊慈榷灶琴村店矣墾桂乖新壓胚奠倘擅寞僥蝕麗鑒晰溶廷籮侶郎蟲林森-消化系統(tǒng)疾病的癥狀體征與檢查林森-消化系統(tǒng)疾病的癥狀體征與檢查謝謝騎封篙尊慈榷灶琴村店矣墾桂乖新壓胚奠倘擅寞僥蝕麗鑒晰溶廷83NS2入門與提高柯志亨SeaSon哈爾濱工業(yè)大學(xué)2019-5-28計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2入門與提高柯志亨SeaSon計算機84目錄NS2簡介安裝模擬流程添加新協(xié)議調(diào)試以及結(jié)果分析計算機學(xué)院-數(shù)據(jù)庫中心SeaSon目錄NS2簡介計算機學(xué)院-數(shù)據(jù)庫中心SeaSon85NS2簡介背景NS2目標(biāo)NS2功能NS2組件NS2體系結(jié)構(gòu)計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2簡介背景計算機學(xué)院-數(shù)據(jù)庫中心SeaSon86NS2背景1989REALnetworksimulator 2019:DARPAVINTprojectatLBL,XeroxPARC,UCB,andUSC/ISIPresent:DARPASAMANprojectandNSFCONSERprojectCollaborationwithotherresearchersincludingCIRI計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2背景1989REALnetworksimula87NS2研究范圍支持網(wǎng)絡(luò)協(xié)議的研究和教育通信協(xié)議的設(shè)計,數(shù)據(jù)流的研究等不同協(xié)議的比較優(yōu)點與平臺無關(guān),有大量的協(xié)議、代碼以及模型可供使用,開源的,不同的協(xié)議很容易進(jìn)行比較。計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2研究范圍支持網(wǎng)絡(luò)協(xié)議的研究和教育計算機學(xué)院-數(shù)據(jù)庫中心88NS2目標(biāo)NS2不適合做的?大多數(shù)任務(wù)都是單節(jié)點完成的,比如交換機的性能分析等。計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2目標(biāo)NS2不適合做的?計算機學(xué)院-數(shù)據(jù)庫中心SeaSo89NS2功能有線網(wǎng)絡(luò)路由層DV,LS,PIM-SM傳輸層:TCPandUDP流量產(chǎn)生:web,ftp,telnet,cbr,stochastic隊列模型:drop-tail,RED,FQ,SFQQoS:IntServandDiffserv計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2功能有線網(wǎng)絡(luò)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon90NS2功能無線網(wǎng)絡(luò)網(wǎng)絡(luò)類型:MANET,SensorNetworks路由:AODV,DSR,DSDV,MobileIP以及HMIPv6等MAC:802.11,802.15.4,Smac等傳輸層、多種數(shù)據(jù)流模擬計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2功能無線網(wǎng)絡(luò)計算機學(xué)院-數(shù)據(jù)庫中心SeaSon91NS2組件ns:網(wǎng)絡(luò)模擬器執(zhí)行tcl腳本,進(jìn)行模擬,并將所有的模擬結(jié)果以trace文件的個是輸出。nam:網(wǎng)絡(luò)AniMator將ns的結(jié)果可視化。模擬的流程tcl腳本ns-2Trace文件Nam文件namGawkgnuplot計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2組件ns:網(wǎng)絡(luò)模擬器tcl腳本ns-2Trace92NS2體系結(jié)構(gòu)面向?qū)ο蟮脑O(shè)計支持重用容易維護(hù)方便擴(kuò)展,如添加新協(xié)議分裂對象模型C++是高效的編譯執(zhí)行語言,功能模擬,性能較好Otcl解釋執(zhí)行的,進(jìn)行場景配置。不必重新編譯更靈活計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2體系結(jié)構(gòu)面向?qū)ο蟮脑O(shè)計計算機學(xué)院-數(shù)據(jù)庫中心SeaSo93NS2體系結(jié)構(gòu)NS2結(jié)合兩者的優(yōu)點C++otcl計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2體系結(jié)構(gòu)NS2結(jié)合兩者的優(yōu)點C++otcl計算機學(xué)院-94Tcl與C++對象綁定過程以tcp為例,當(dāng)你在tcl腳本中使用以下命令創(chuàng)建一個Tcp對象時settcp0[newAgent/TCP]首先創(chuàng)建tcl對象,即解釋對象procnew{classNameargs}{

seto[SplitObjectgetid]

#創(chuàng)建分裂對象 if[catch"$classNamecreate$o$args"msg]{ … } return$o}計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程以tcp為例,當(dāng)你在tcl腳本中使95Tcl與C++對象綁定過程然后通過Tcl對象的init()函數(shù)中創(chuàng)建對應(yīng)的shadow對象SplitObjectinstprocinitargs{ $selfnext if[catch"$selfcreate-shadow

$args"]{

error"__FAILED_SHADOW_OBJECT_""" }}計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程然后通過Tcl對象的init()函96Tcl與C++對象綁定過程Create-shadow怎樣找到tcl對象對應(yīng)的C++對象?答案就是TclClass類?。?!staticclassTcpClass:publicTclClass{public: TcpClass():TclClass("Agent/TCP"){} TclObject*create(int,constchar*const*){ return(newTcpAgent()); }}class_tcp;計算機學(xué)院-數(shù)據(jù)庫中心SeaSonTcl與C++對象綁定過程Create-shadow怎樣找到97

NS2系統(tǒng)結(jié)構(gòu)

--離散事件模擬

把世界上的一切都看成事件維護(hù)一個基于發(fā)生時間排序的事件(events)隊列維護(hù)一個系統(tǒng)的時間[virtualtime]重復(fù)的執(zhí)行以下的過程:從對首取出一個事件,set[virtualtime]=event’stime處理這個事件如果在處理時間過程中產(chǎn)生新的event,插入queue每一個事件都有一個預(yù)定的執(zhí)行(虛擬的)時間,獨立于真實執(zhí)行時間。CPU執(zhí)行的快慢不影響結(jié)果。計算機學(xué)院-數(shù)據(jù)庫中心SeaSon

NS2系統(tǒng)結(jié)構(gòu)

--離散事件模擬

把世界上的98離散事件模擬示例時間事件A.1sSdecidestosendpkttoDSstartssendingpktdelayvaluetransmission0.005spropagation0.01sDSSDB.1.005sSfinishestransmittingpkttoDC.1.01sDbeginstorecvpktD.1.015sDrecvsentirepktanddeliverstoapplicationB.D.C.A.事件隊列計算機學(xué)院-數(shù)據(jù)庫中心SeaSon離散事件模擬示例時間事件A.1sSdecidestos99一個數(shù)據(jù)包怎樣從源節(jié)點到目的節(jié)點同一個節(jié)點內(nèi)各層協(xié)議之間傳數(shù)據(jù)?節(jié)點之間怎么傳?計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個數(shù)據(jù)包怎樣從源節(jié)點到目的節(jié)點同一個節(jié)點內(nèi)各層協(xié)議之間傳數(shù)100計算機學(xué)院-數(shù)據(jù)庫中心SeaSon計算機學(xué)院-數(shù)據(jù)庫中心SeaSon101

安裝安裝環(huán)境及方法安裝問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon 安裝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon102安裝(1)推薦直接安裝all-inone版本(最新all-inone-2.29)Linux(直接install就行了)Windows+Cygwin+Ns2windows安裝方法柯老師網(wǎng)站(不要看中文安裝說明,選英文的) 0/~smallko/ns2/ns2.htm計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(1)推薦直接安裝all-inone版本(最新all-i103安裝(2)windows安裝方法柯老師網(wǎng)站上Cygwin可以成功安裝的ns2版本有NS-2.26,NS-2.27,NS-2.28,ns-2.29注:NS-2.26需要PATCH過..才能安裝柯老師的安裝經(jīng)驗:不過安裝的過程還是可能會有一些問題..最確保可以安裝成功的方法是:重新安裝WINDOWS..裝完馬上安裝CYGWIN+NS2,安裝後..在裝SERVICEPACK..或其他的軟件..這是我的經(jīng)驗計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(2)windows安裝方法計算機學(xué)院-數(shù)據(jù)庫中心Sea104安裝(3)NS仿真軟件-問題求助的地方

netforum/forum_topics.asp?FID=16&PN=1常見錯誤原因主要問題gcc版本重裝計算機學(xué)院-數(shù)據(jù)庫中心SeaSon安裝(3)NS仿真軟件-問題求助的地方計算機學(xué)院-數(shù)據(jù)庫中105開始進(jìn)行摸擬一個簡單的無線網(wǎng)絡(luò)的例子(1)無線場景的產(chǎn)生利用NS模擬前搞清楚的問題添加新協(xié)議編譯NS2計算機學(xué)院-數(shù)據(jù)庫中心SeaSon開始進(jìn)行摸擬一個簡單的無線網(wǎng)絡(luò)的例子(1)計算機學(xué)院-數(shù)據(jù)庫106一個簡單的無線網(wǎng)絡(luò)的例子(1)

場景配置3個mobilenodes平面拓?fù)?70mX670madhoc路由協(xié)議DSDVRandomWaypointmobilitymodelTCPandCBRtraffic計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(1)

場景配置計算機學(xué)院-數(shù)據(jù)庫中107一個簡單的無線網(wǎng)絡(luò)的例子(2)setns_[newSimulator] ;createanssimulatorinstance#DefineGlobalVariablessettopo[newTopography] ;createatopologyand$topoload_flatgrid670670;defineitin670x670area計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(2)setns_[newS108一個簡單的無線網(wǎng)絡(luò)的例子(3)#Definestandardns/namtracesettracefd[open694demo.trw]$ns_

trace-all

$tracefd

setnamtrace[open694demo.namw]$ns_

namtrace-all-wireless

$namtrace670670 計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(3)#Definestandar109一個簡單的無線網(wǎng)絡(luò)的例子(4)#Create“God”setgod_[create-god3]God用來保存一個結(jié)點到另外一個結(jié)點直接的跳部數(shù).例如:$ns_at899.00“$god_setdist231”計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(4)#Create“God”s110一個簡單的無線網(wǎng)絡(luò)的例子(5)#Definehowamobilenodeshouldbecreated$ns_node-config

-adhocRouting

DSDV\ -llTypeLL\ -macTypeMac/802_11\ -ifqLen50\ -ifqTypeQueue/DropTail/PriQueue\ -antTypeAntenna/OmniAntenna\ -propTypePropagation/TwoRayGround\ -phyTypePhy/WirelessPhy\ -channelTypeChannel/WirelessChannel\ -topoInstance$topo -agentTraceON\ -routerTraceOFF\ -macTraceOFF計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(5)#Definehowam111一個簡單的無線網(wǎng)絡(luò)的例子(6)#Createamobilenodeandattachittothechannelsetnode[$ns_node]$noderandom-motion0 ;#disablerandommotionUse“forloop”tocreate3nodes:for{seti<0}{$i<3}{incri}{setnode_($i)[$ns_node]}計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(6)#Createamobil112一個簡單的無線網(wǎng)絡(luò)的例子(7)#Definetrafficmodelsourcetraffic-scenario-files#Definenodemovementmodelsourcemovement-scenario-files計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(7)#Definetraffic113一個簡單的無線網(wǎng)絡(luò)的例子(8)#Definenodeinitialpositioninnamfor{seti0}{$i<3}{incri}{ $ns_initial_node_position$node_($i)20}#Tellns/namthesimulationstoptime$ns_at200.00“$ns_halt”#Startyoursimulation$ns_run計算機學(xué)院-數(shù)據(jù)庫中心SeaSon一個簡單的無線網(wǎng)絡(luò)的例子(8)#Definenodein114無線場景的產(chǎn)生(1)生成節(jié)點運動模型setdest-n<num_of_nodes>-ppausetime-s<maxspeed>-t<simtime>-x<maxx>-y<maxy>Source:Seens-2/indep-utils/cmu-scen-gen/setdest/網(wǎng)上還可以下載更多的模型,如組移動模型等計算機學(xué)院-數(shù)據(jù)庫中心SeaSon無線場景的產(chǎn)生(1)生成節(jié)點運動模型計算機學(xué)院-數(shù)據(jù)庫中心S115無線場景的產(chǎn)生(2)生成無線網(wǎng)絡(luò)數(shù)據(jù)流CBRtrafficnscbrgen.tcl[-typecbf|tcp][-nnnodes][-seedseed][-mcconnections][-raterate]Source:

ns-allinone-2.29\ns-2.29\indep-utils\cmu-scen-gen計算機學(xué)院-數(shù)據(jù)庫中心SeaSon無線場景的產(chǎn)生(2)生成無線網(wǎng)絡(luò)數(shù)據(jù)流計算機學(xué)院-數(shù)據(jù)庫中心116利用NS模擬前搞清楚的問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon利用NS模擬前搞清楚的問題計算機學(xué)院-數(shù)據(jù)庫中心SeaSon117NS2源代碼目錄simtk8.0otclTcltcl8.0ns-2nam-1tclextestlib......tclcodeexamplevalidationtestC++codetclcodecore計算機學(xué)院-數(shù)據(jù)庫中心SeaSonNS2源代碼目錄simtk8.0otclTcltcl8.0118添加協(xié)議(1)添加別人實現(xiàn)的協(xié)議為什么我安裝總是出錯????? 環(huán)境問題,OS,gcc版本,ns版本解決辦法 1.修改環(huán)境,裝相應(yīng)的os,gcc,ns22.移植到新的環(huán)境,怎么移?gdb調(diào)試,沒有別的辦法?。?!計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加協(xié)議(1)添加別人實現(xiàn)的協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心Sea119添加新協(xié)議(2)自己寫協(xié)議路由協(xié)議?應(yīng)用層協(xié)議?MAC協(xié)議? 最好的方法就是模仿已有的協(xié)議,代表協(xié)議AODV,MAC802.11,Ping添加路由協(xié)議,從Agent繼承添加應(yīng)用層協(xié)議,從Agent(更靈活)或者Application(有些不能實現(xiàn))計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(2)自己寫協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心SeaSon120添加新協(xié)議(3)示例:一個泛洪協(xié)議(Mflood)協(xié)議類型:路由層協(xié)議1.定義包頭

structhdr_mflood{ u_int32_t seq_;//根據(jù)需要定義變量,這個靈活決定….//包頭訪問的方法,你只需要復(fù)制下來就OK了staticintoffset_;//requiredbyPacketHeaderManagerinlinestaticint&offset(){returnoffset_;}inlinestatichdr_sptree*access(constPacket*p){return(hdr_sptree*)p->access(offset_);}};計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(3)示例:一個泛洪協(xié)議(Mflood)計算機學(xué)院121添加新協(xié)議(4)2.實現(xiàn)協(xié)議classMFlood:publicAgent{public:

MFlood();

voidrecv(Packet*p,Handler*);intcommand(int,constchar*const*);protected:

inlineintinitialized(){return1&&target_;} //發(fā)送函數(shù),其實就是調(diào)用目的節(jié)點的接受函數(shù)inlinevoidsend(Packet*p){target_->recv(p);}};計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(4)2.實現(xiàn)協(xié)議計算機學(xué)院-數(shù)據(jù)庫中心SeaS122添加新協(xié)議(5)3關(guān)聯(lián)tcl對象與C++對象(模板)staticclassMFloodclass:publicTclClass{public:

MFloodclass():TclClass("Agent/MFlood"){} TclObject*create(intargc,constchar*const*argv){ assert(argc==5); return(newMFlood((nsaddr_t)atoi(argv[4]))); //PBOagrv[4]isindex_} }}class_rtProtoMFlood;計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(5)3關(guān)聯(lián)tcl對象與C++對象(模板)計算機123添加新協(xié)議(6)4關(guān)聯(lián)tcl對象與C++對象的包頭(模板)inthdr_mflood::offset_;staticclassMFloodHeaderClass:publicPacketHeaderClass{public:

MFloodHeaderClass():PacketHeaderClass("PacketHeader/MFlood", sizeof(hdr_mflood)){ bind_offset(&hdr_mflood::offset_); }}class_mfloodhdr;計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新協(xié)議(6)4關(guān)聯(lián)tcl對象與C++對象的包頭(模板)124添加新協(xié)議(7)目前為止,所有的代碼工作都已經(jīng)完成了 生下的工作就是將這個協(xié)議編譯到NS2中。需要修改一下文件1.ns-packet.tcl(ns-allinone-2.29\ns-2.29\tcl\lib)2.packet.h(ns-allinone-2.29\ns-2.29\common)3ns-lib.tcl(ns-allinone-2.29\ns-2.29\tcl\lib)

對于我們這個應(yīng)用層協(xié)議不需要修改計算機學(xué)院-數(shù)據(jù)庫中心SeaSon添加新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論