NS2入門與提高.ppt_第1頁
NS2入門與提高.ppt_第2頁
NS2入門與提高.ppt_第3頁
NS2入門與提高.ppt_第4頁
NS2入門與提高.ppt_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計算機學院-數(shù)據庫中心,SeaSon,NS2入門與提高,柯志亨 SeaSon 哈爾濱工業(yè)大學 2006-5-28,SeaSon,計算機學院-數(shù)據庫中心,目錄,NS2 簡介 安裝 模擬流程 添加新協(xié)議 調試以及結果分析,SeaSon,計算機學院-數(shù)據庫中心,NS2 簡介,背景 NS2目標 NS2功能 NS2 組件 NS2體系結構,SeaSon,計算機學院-數(shù)據庫中心,NS2 背景,1989 REAL network simulator 1995: DARPA VINT project at LBL,Xerox PARC, UCB, and USC/ISI Present: DARPA SAMAN

2、 project and NSF CONSER project Collaboration with other researchers including CIRI,SeaSon,計算機學院-數(shù)據庫中心,NS2研究范圍,支持網絡協(xié)議的研究和教育 通信協(xié)議的設計,數(shù)據流的研究等 不同協(xié)議的比較 優(yōu)點 與平臺無關,有大量的協(xié)議、代碼以及模型可供使用,開源的,不同的協(xié)議很容易進行比較。,SeaSon,計算機學院-數(shù)據庫中心,NS2目標,NS2不適合做的? 大多數(shù)任務都是單節(jié)點完成的,比如交換機的性能分析等。,SeaSon,計算機學院-數(shù)據庫中心,NS2功能,有線網絡 路由層 DV, LS, PIM

3、-SM 傳輸層: TCP and UDP 流量產生:web, ftp, telnet, cbr, stochastic 隊列模型:drop-tail, RED, FQ, SFQ QoS: IntServ and Diffserv,SeaSon,計算機學院-數(shù)據庫中心,NS2功能,無線網絡 網絡類型:MANET, Sensor Networks 路由:AODV, DSR, DSDV,Mobile IP以及HMIPv6等 MAC: 802.11, 802.15.4,Smac等 傳輸層、多種數(shù)據流模擬,SeaSon,計算機學院-數(shù)據庫中心,NS2 組件,ns: 網絡模擬器 執(zhí)行tcl腳本,進行模擬,

4、并將所有的模擬結果以trace文件的個是輸出。 nam: 網絡 AniMator 將ns的結果可視化。 模擬的流程,tcl 腳本,ns-2,Trace文件 Nam文件,nam,Gawk gnuplot,SeaSon,計算機學院-數(shù)據庫中心,NS2體系結構,面向對象的設計 支持重用 容易維護 方便擴展,如添加新協(xié)議 分裂對象模型 C+是高效的編譯執(zhí)行語言,功能模擬,性能較好 Otcl 解釋執(zhí)行的,進行場景配置。不必重新編譯更靈活,SeaSon,計算機學院-數(shù)據庫中心,NS2體系結構,NS2結合兩者的優(yōu)點,C+,otcl,SeaSon,計算機學院-數(shù)據庫中心,Tcl與C+對象綁定過程,以tcp為例

5、,當你在tcl腳本中使用以下命令創(chuàng)建一個Tcp對象時 set tcp0 new Agent/TCP 首先創(chuàng)建tcl對象,即解釋對象 proc new className args set o SplitObject getid # 創(chuàng)建分裂對象 if catch $className create $o $args msg return $o ,SeaSon,計算機學院-數(shù)據庫中心,Tcl與C+對象綁定過程,然后通過Tcl對象的init()函數(shù)中創(chuàng)建對應的shadow對象 SplitObject instproc init args $self next if catch $self crea

6、te-shadow $args error _FAILED_SHADOW_OBJECT_ ,SeaSon,計算機學院-數(shù)據庫中心,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,計算機學院-數(shù)據庫中

7、心,NS2系統(tǒng)結構 -離散事件模擬,把世界上的一切都看成事件 維護一個基于發(fā)生時間排序的 事件(events)隊列 維護一個系統(tǒng)的時間virtual time 重復的執(zhí)行以下的過程: 從對首取出一個事件, set virtual time=events time 處理這個事件 如果在處理時間過程中產生新的event,插入queue 每一個事件都有一個預定的執(zhí)行(虛擬的)時間,獨立于真實執(zhí)行時間。 CPU 執(zhí)行的快慢不影響結果。,SeaSon,計算機學院-數(shù)據庫中心,離散事件模擬示例,D,S,S,D,事件隊列,SeaSon,計算機學院-數(shù)據庫中心,一個數(shù)據包怎樣從源節(jié)點到目的節(jié)點,同一個節(jié)點內各

8、層協(xié)議之間傳數(shù)據? 節(jié)點之間怎么傳?,SeaSon,計算機學院-數(shù)據庫中心,SeaSon,計算機學院-數(shù)據庫中心,安裝 安裝環(huán)境及方法 安裝問題,SeaSon,計算機學院-數(shù)據庫中心,安裝(1),推薦直接安裝all-inone版本(最新all-inone-2.29) Linux(直接install就行了) Windows+Cygwin+Ns2 windows安裝方法 柯老師網站(不要看中文安裝說明,選英文的) 0/smallko/ns2/ns2.htm,SeaSon,計算機學院-數(shù)據庫中心,安裝(2),windows安裝方法 柯老師網站上Cygwin可以成功

9、安裝的ns2版本有NS-2.26, NS-2.27, NS-2.28, ns-2.29 注:NS-2.26需要PATCH過.才能安裝 柯老師的安裝經驗: 不過安裝的過程還是可能會有一些問題.最確保可以安裝成功的方法是:重新安裝WINDOWS.裝完馬上安裝CYGWIN + NS2,安裝後.在裝SERVICE PACK.或其他的軟件.這是我的經驗,SeaSon,計算機學院-數(shù)據庫中心,安裝(3),NS仿真軟件-問題求助的地方 常見錯誤原因 主要問題gcc版本 重裝,SeaSon,計算機學院-數(shù)據庫中心,開始進行摸擬,一個簡單的無線網絡的例子(1) 無線場景的產生 利用NS模擬前搞清楚的問題 添加新

10、協(xié)議 編譯NS2,SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(1),場景配置 3 個mobile nodes 平面拓撲 670mX670m ad hoc 路由協(xié)議 DSDV Random Waypoint mobility model TCP and CBR traffic,SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(2),set ns_ new Simulator ; create a ns simulator instance,#Define Global Variables,set topo new Topography ; create a to

11、pology and $topo load_flatgrid 670 670 ; define it in 670 x670 area,SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(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,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(4),#

12、Create “God”,set god_ create-god 3 God 用來保存一個結點到另外一個結點直接的跳部數(shù). 例如: $ns_ at 899.00 “$god_ setdist 2 3 1”,SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(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 -antTyp

13、e Antenna/OmniAntenna -propType Propagation/TwoRayGround -phyType Phy/WirelessPhy -channelType Channel/WirelessChannel -topoInstance $topo -agentTrace ON -routerTrace OFF -macTrace OFF,SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(6),#Create a mobile node and attach it to the channel,set node $ns_ node $node rand

14、om-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,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(7),SeaSon,計算機學院-數(shù)據庫中心,一個簡單的無線網絡的例子(8),SeaSon,計算機學院-數(shù)據庫中心,無線場景的產生(1),生成節(jié)點運動模型 setdest -n -p pausetime -s -t -x -y Source: See ns-2/indep-utils/cmu-sce

15、n-gen/setdest/ 網上還可以下載更多的模型,如組移動模型等,SeaSon,計算機學院-數(shù)據庫中心,無線場景的產生(2),生成無線網絡數(shù)據流 CBR traffic ns cbrgen.tcl -type cbf|tcp -nn nodes -seed seed -mc connections -rate rate Source: ns-allinone-2.29ns-2.29indep-utilscmu-scen-gen,SeaSon,計算機學院-數(shù)據庫中心,利用NS模擬前搞清楚的問題,SeaSon,計算機學院-數(shù)據庫中心,NS2 源代碼目錄,tcl code,example,va

16、lidation test,C+ code,tcl code core,SeaSon,計算機學院-數(shù)據庫中心,添加協(xié)議(1),添加別人實現(xiàn)的協(xié)議 為什么我安裝總是出錯? 環(huán)境問題,OS, gcc版本,ns版本 解決辦法 1. 修改環(huán)境,裝相應的os,gcc,ns2 2. 移植到新的環(huán)境,怎么移? gdb調試,沒有別的辦法!,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(2),自己寫協(xié)議 路由協(xié)議?應用層協(xié)議?MAC協(xié)議? 最好的方法就是模仿已有的協(xié)議,代表協(xié)議AODV, MAC802.11,Ping 添加路由協(xié)議,從Agent繼承 添加應用層協(xié)議,從Agent(更靈活)或者Applicat

17、ion(有些不能實現(xiàn)),SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(3),示例:一個泛洪協(xié)議(Mflood) 協(xié)議類型:路由層協(xié)議 1.定義包頭 struct hdr_mflood u_int32_tseq_; /根據需要定義變量,這個靈活決定 . / 包頭訪問的方法,你只需要復制下來就OK了 static int offset_; / required by PacketHeaderManager inline static int,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(4),2. 實現(xiàn)協(xié)議 class MFlood: public Agent public: MFlood

18、(); void recv(Packet *p, Handler *); int command(int, const char *const *); protected: inline int initialized() return 1 ,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(5),3 關聯(lián)tcl對象與C+對象(模板) static class MFloodclass : public TclClass public: MFloodclass() : TclClass(Agent/MFlood) TclObject* create(int argc, const char*co

19、nst* argv) assert(argc = 5); return (new MFlood(nsaddr_t) atoi(argv4);/ PBO agrv4 is index_ class_rtProtoMFlood;,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(6),4 關聯(lián)tcl對象與C+對象的包頭(模板) int hdr_mflood:offset_; static class MFloodHeaderClass : public PacketHeaderClass public: MFloodHeaderClass() : PacketHeaderClass(PacketH

20、eader/MFlood, sizeof(hdr_mflood) bind_offset(,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(7),目前為止,所有的代碼工作都已經完成了 生下的工作就是將這個協(xié)議編譯到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) 對于我們這個應用層協(xié)議不需要修改,SeaSon,計算機學院-數(shù)據庫中心,添加新

21、協(xié)議(8),1. 修改ns-packet.tcl(ns-2.29/tcl/lib) foreach prot # add by season MFlood 目的:在NS啟動的時候加載我們的包頭。,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(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

22、_info() /add by season name_PT_MFLOOD= “MFlood”;/與前面對應 name_PT_NTYPE= undefined; 目的:Trace中使用,協(xié)議構造函數(shù)SpTreeAgent()初始化時使用,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(10),如果是路由協(xié)議如(AODV) 還需要修改ns-lib.tcl Simulator instproc create-wireless-node args MFlood set ragent $self create-mflood-agent $node Simulator instproc create-

23、mflood-agent node set ragent new Agent/MFlood $node id $node set ragent_ $ragent return $ragent ,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議(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

24、between LL and MAC ,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議總結,5c+2t+1m(521規(guī)則) 5c-必須實現(xiàn)的五個C+模塊 MFlood與MFloodclass hdr_mflood與MFloodHeaderClass packt.h添加包頭類型 2t-修改兩個tcl文件 ns-lib.tcl與ns-packet.tcl 有時候還會修改ns-defaut.tcl 1m-修改Makefile,將新協(xié)議添加,SeaSon,計算機學院-數(shù)據庫中心,添加新協(xié)議總結,關于添加應用協(xié)議如ping,跟路由協(xié)議類似,甚至跟簡單,如果從Agent繼承,除了不需要修改ns-lib.

25、tcl之外其它類似。 但是別忘了設置包頭的大小,不然你發(fā)出的所有數(shù)據包頭的大小都是0! PingAgent:PingAgent() : Agent(PT_PING) bind(packetSize_, 修改Ns-defautl.tcl Agent/Ping set packetSize_ 64,SeaSon,計算機學院-數(shù)據庫中心,編譯NS2(1),前面的過程是將代碼添加到NS2里面,但尚未編譯,只有經過編譯才能使用。 一般我們將我們所有的C+代碼放在一個文件夾內,如mflood,然后放在ns-2.29/之下 修改Makefile(無任何后綴的) 添加如下紅色所示代碼,將mflood編譯進NS

26、2 OBJ_CC = # add by season mflood/mflood.o mflood/mflood-seqtable.o,SeaSon,計算機學院-數(shù)據庫中心,編譯NS2(2),從cygwin進入ns-2.29目錄下 執(zhí)行 make clean # 刪除所有的*.o文件 make depend make # 重新編譯ns 如果沒有錯誤,則可以編寫場景測試 什么時候要make clean?,SeaSon,計算機學院-數(shù)據庫中心,編譯NS2(3),如果添加新協(xié)議,或者修改了多個協(xié)議公用的NS中頭文件,如packet.h我們都需要重新make clean 然后make depend,

27、make。,SeaSon,計算機學院-數(shù)據庫中心,編譯NS2(4),修改了C+文件 對于NS中已有的代碼修改 不需要修改makefile,只需要 make 添加新的模塊或協(xié)議 修改Makefile并重新 Make clean Make depend Make,SeaSon,計算機學院-數(shù)據庫中心,編譯NS2(5),修改了Otcl文件 修改NS中已有的代碼 recompile source 添加新的代碼 source 修改 Makefile (NS_TCL_LIB), tcl/ns-lib.tcl (source) and recompile 都只需要make即可,SeaSon,計算機學院-數(shù)據

28、庫中心,調試NS,TCL的調試 Gdb的安裝調試,SeaSon,計算機學院-數(shù)據庫中心,調試(1),Tcl調試 個人覺得沒什么用途,如果你感興趣我的space有安裝方法 Swowseason C+代碼的調試(segment fault) 調試工具gdb,另外自帶的insight可視化界面,本質也是調用gdb 下面介紹gdb的安裝調試,SeaSon,計算機學院-數(shù)據庫中心,調試(2),gdb安裝 安裝gdb,以cygwin為例 重新運行cygwin的setup文件,選擇界面中的keep(必須!否則會死的很慘的),然后找到gdb選擇安裝即可。 重新編譯NS2,添加調試信息 修改Makefile在下

29、面位置添加-g CCOPT= -g 進入ns-2.29目錄下面執(zhí)行 Make clean Make depend # 執(zhí)行這個命令過程中如出錯,不用管! Make 如果沒有錯誤,就安裝成功,V!,SeaSon,計算機學院-數(shù)據庫中心,調試(2),Gdb調試NS2 以命令行為例 進入ns-2.29(%為命令提示符) % gdb ns gdb 即進入調試,SeaSon,計算機學院-數(shù)據庫中心,調試(3),調試常用命令 bt列出運行棧中信息 b sptree.cc:linenum 在sptree.cc文件linenum行設置斷點,注意中間”:”不能丟 c 相當于vc中continue, n 相當于v

30、c中next display var,顯示變量var的值 其他的參看gdb文檔 NS中調試技巧以及演示,SeaSon,計算機學院-數(shù)據庫中心,結果分析,場景測試 工具使用及結果分析 其他,SeaSon,計算機學院-數(shù)據庫中心,場景測試,為了使模擬更接近真實網絡,參數(shù)選擇,非常重要!可以參看相關論文 簡單測試 用兩三個節(jié)點測試一下首發(fā)數(shù)據,根據trace文件分析。 功能測試 測試每一個功能,對于無線網絡的,要測試多跳,各種拓撲。 利用trace分析結果,SeaSon,計算機學院-數(shù)據庫中心,參數(shù)選擇(802.11b),The Antenna height of transmitter and r

31、eceiver 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_

32、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

33、 from NS2. *Mac/802_11 set dataRate_ 11Mb /Rate for Data Frames *Mac/802_11 set basicRate_ 1Mb /Rate for Control Frames,SeaSon,計算機學院-數(shù)據庫中心,常用工具以及結果分析,看代碼 推薦sourceinsight 畫圖,gnuplot,xgraph 命令格式如下,示例演示 % gnuplot delay.plot Windows下還有origin(收費的) 分析trace文件 使用gawk 命令格式 gawk f delay.awk output.tr,SeaSon,計

34、算機學院-數(shù)據庫中心,常用工具以及結果分析,柯老師強烈推薦 模擬wireless網絡 ,可以用.tw/wordpress/?p=66 生成無線網絡場景,免去寫tcl腳本的痛苦 WIRED NETWORK,可以建議使用NSBENCH,SeaSon,計算機學院-數(shù)據庫中心,SeaSon,計算機學院-數(shù)據庫中心,常用工具以及結果分析,網絡性能度量 details on 1.Bandwidth utilization The aggregate of all traffic currently being consumed on a hop or pa

35、th. 2.Packets per second 3.Round Trip Time The elapsed time for transit of a signal over a closed circuit. 4.RTT variance /dunigan/tcptour/javis/tcp_rttvar.html 5.packet loss 6.Reachability 7.Circuit Performance 8.Bandwidth Utilization and Packets Per second ,SeaSon,計算機學院-數(shù)據庫中心,常

36、用工具以及結果分析,必須了解各種協(xié)議的trace格式 分析協(xié)議性能的gawk代碼 柯老師的網站 0/smallko/ns2/tool.htm NS FAQ Question 14 /dchen02/FAQ.txt 示例,SeaSon,計算機學院-數(shù)據庫中心,使用Gawk分析結果,Gawk簡介 與NS相關的基本知識 具體例子,SeaSon,計算機學院-數(shù)據庫中心,使用Gawk分析結果,無線通信的trace格式 s 10.107722800 _1_ AGT - 22 tcp 43 0 2 1 800 - 1:0 2:0 30 2

37、 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,計算機學院-數(shù)據庫中心,Gawk簡介,解釋性的腳本語言 變量以及數(shù)組不用聲明 按行處理 有pipe功能,可以將處理數(shù)據傳給shell,SeaSon,計算機學院-數(shù)據庫中心,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中的一行,注:列之間一般用空格區(qū)分,SeaSon,計算機學院-數(shù)據庫中心,Gawk相關

38、語法,(2)執(zhí)行動作 Pattern1 Actions1 Pattern2 Actions2 Pattern3 Actions3 其中pattern為條件語句(或正則表達式)如: if ($1 = “s” ,SeaSon,計算機學院-數(shù)據庫中心,Gawk相關語法,(3)IO操作 print 、 printf( ) 、getline . (4)控制語句 if ( .) . else 、 while() ,SeaSon,計算機學院-數(shù)據庫中心,Gawk工作流程,Gawk反復執(zhí)行以下四個步驟: 1. 自動從trace文件中讀取一行。 2. 自動更新內建參數(shù)的值($n)。 3. 逐行執(zhí)行程序中所有 的 Pattern Actions 代碼。 4. 如果trace文件還有未讀取的行,則循環(huán)執(zhí)行上面步驟13。,SeaSon,計算機學院-數(shù)據庫中心,Gawk程序的框架,BEG

溫馨提示

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

評論

0/150

提交評論