版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Network Simulator,助教:趙俊民,課程目的,學(xué)習(xí)和使用網(wǎng)絡(luò)模擬器NS,使大家對如何做網(wǎng)絡(luò)模擬有個(gè)基本認(rèn)識和了解如何使用NS來發(fā)現(xiàn)和研究網(wǎng)絡(luò)中的一些問題提高大家的編程能力和分析解決問題的能力,網(wǎng)絡(luò)研究的方法,分析(Analysis)構(gòu)建模型,數(shù)學(xué)分析如排隊(duì)論,圖論等實(shí)驗(yàn)網(wǎng)絡(luò)實(shí)驗(yàn)床(testbed)EmulationLab environment 模擬(Simulation)模擬工具,如NS,OpNet,
2、QualNet等,模擬能夠做什么?,對現(xiàn)有的協(xié)議或算法進(jìn)行研究,主要是它們的行為或性能進(jìn)行評價(jià)對新提出的協(xié)議或算法進(jìn)行測試對研究成果進(jìn)行對比評價(jià),找出各種的優(yōu)點(diǎn)和不足,模擬的優(yōu)點(diǎn)和缺點(diǎn),優(yōu)點(diǎn)非常靈活,易于配置,并且成本比較低(不需要買設(shè)備)可以研究大規(guī)模網(wǎng)絡(luò)容易獲得研究成果缺點(diǎn)會忽略掉真實(shí)網(wǎng)絡(luò)中一些重要細(xì)節(jié)對產(chǎn)生的結(jié)果要仔細(xì)驗(yàn)證,有可能不適合于真實(shí)環(huán)境,NS簡介,NS(Network Simulator)它是由LBNL
3、( Lawrence Berkeley National Laboratory ) 的網(wǎng)絡(luò)研究小組開發(fā)的模擬工具。NS具有可擴(kuò)展、易配置、可編程等特點(diǎn)。NS是面向?qū)ο蟮模x散事件驅(qū)動的網(wǎng)絡(luò)環(huán)境模擬器,開發(fā)于UC Berkeley,它可以模擬各種IP網(wǎng)絡(luò)環(huán)境。NS實(shí)現(xiàn)了對許多網(wǎng)絡(luò)協(xié)議的模擬,如TCP,UDP,和數(shù)據(jù)源發(fā)生器(traffic source)如FTP,WWW,Telnet,Web,CBR和VBR等。,NS簡介(續(xù)),NS
4、-2由C++和Otcl(加上面向?qū)ο筇匦缘腡CL腳本程序設(shè)計(jì)語言,開發(fā)于MIT)兩種程序設(shè)計(jì)語言實(shí)現(xiàn)。Ns前端運(yùn)行Otcl Otcl:運(yùn)行速度慢,容易修改 =>場景配置Ns 用C++實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議棧C++:運(yùn)行速度快,不容易更改 => 協(xié)議棧實(shí)現(xiàn),NS的學(xué)習(xí)方法,掌握原理。NS離散事件模擬機(jī)制和分裂對象模型需要重點(diǎn)理解。牢記節(jié)點(diǎn)結(jié)構(gòu)。節(jié)點(diǎn)(node)是網(wǎng)絡(luò)中最重要的組件,對有線和無線中節(jié)點(diǎn)結(jié)構(gòu)要非常清楚,明白數(shù)據(jù)
5、包是如何在節(jié)點(diǎn)中流動的。整體上把握NS。了解組件的基本功能,不要太注重細(xì)節(jié),當(dāng)需要時(shí)候再理解清楚。積極閱讀源代碼,采取的策略一般是整體到局部,從粗到細(xì)。NS-2中用到的TCL很簡單,不需要專門學(xué)習(xí),NS的安裝,Windows平臺Cygwin+Ns-2 Vmware虛擬機(jī)+linux+Ns-2Linux平臺注意:不同NS版本所能安裝的linux版本是不同的,要核查清楚。下面以版本2.31為例選擇安裝環(huán)境Fedora Co
6、re 5,NS的安裝(續(xù)),首先獲得NS安裝包,參考下載地址http://www.isi.edu/nsnam/dist/ns-allinone-2.31.tar.gz 或其他網(wǎng)址安裝文件# cd 要安裝的目錄#tar zxvf ns-allinone-2.31.tar.gz#cd ns-allinone-2.31# ./install配置環(huán)境變量 當(dāng)安裝完畢時(shí),會顯示讓你如何配置!,問題的解決,如果在安裝過程中遇到
7、問題,可以到http://www.isi.edu/nsnam/ns/ns-build.htmlNs mailing list: ns-users@isi.edu需要注意的是,在不同的系統(tǒng)下安裝出的問題會有所不同在www.google.com搜索,NS-2目錄結(jié)構(gòu),NS2層次結(jié)構(gòu),NS命令的使用,當(dāng)安裝完畢后,在任何路徑下,直接鍵入ns如果要運(yùn)行某個(gè)tcl程序(比如example.tcl,那么: ns example.tcl,T
8、cl與Tk編程環(huán)境概述,Tcl與Tk是安裝在Unix/Linux環(huán)境下的兩個(gè)包,它們一起構(gòu)成了一套開發(fā)系統(tǒng)應(yīng)用程序和圖形用戶界面接口(GUI)應(yīng)用程序的環(huán)境。Tcl的全稱是Tool Command Language。Tk是Tcl在X Window環(huán)境下的擴(kuò)展,它包含了Tcl的全部的C庫函數(shù),以及支持X Window的窗口、控件等C庫函數(shù),為用戶開發(fā)圖形用戶界面提供了方便。Tcl是解釋執(zhí)行的腳本語言。它的實(shí)現(xiàn)依賴于Tcl內(nèi)部的C函數(shù)
9、庫。添加新的C函數(shù)就可以擴(kuò)充Tcl的命令和功能,是擴(kuò)展性非常強(qiáng)的腳本程序設(shè)計(jì)語言。Tcl解釋器把用戶輸入的命令和程序語句進(jìn)行初步分析,然后調(diào)用C函數(shù)庫里的相應(yīng)函數(shù)來執(zhí)行,輸出結(jié)果。Tcl是無強(qiáng)制類型的腳本語言,一切變量,不論整型,浮點(diǎn)型等,都以字符串的形式存儲。,Tcl基礎(chǔ),先看一個(gè)最簡單的例子:hello world#Define a process named "helloworld"proc hello
10、world {} { puts "Hello world!!!"}# Call the process helloworldHelloworld,Tcl基礎(chǔ)(cont.),# Writing a procedure called "test"proc test {} { set a 43 set b 27 set c [expr $a + $b] set
11、 d [expr [expr $a - $b] * $c] for {set k 0} {$k < 10} {incr k} {…………}}# Calling the "test" procedure created abovetest,Tcl命令和語句的執(zhí)行過程,Tcl解釋器分為兩個(gè)主要模塊,Tcl的Parser和Tcl的executer。Tcl的Parser要執(zhí)行的主要功能是:把輸入的命令或
12、者語句切割成一個(gè)一個(gè)的字符串,并在一遍掃描的過程中進(jìn)行變量替換、命令結(jié)果替換和特殊字符替換。在切割過程中不對命令進(jìn)行任何語意理解。Tcl命令的基本構(gòu)成是:命令名+參數(shù)+參數(shù)+…………Tcl的executer的功能是:把Tcl的Parser處理過的命令或語句字符串向量進(jìn)行分析。由于字符串向量的第一個(gè)字符串元素是命令的名稱,那么executer匹配Tcl中C庫函數(shù)的函數(shù)名,當(dāng)匹配到的時(shí)候,把全部參數(shù)傳遞給匹配到的C函數(shù)來執(zhí)行命令,然后返
13、回結(jié)果。如果匹配不到則返回錯(cuò)誤。返回的結(jié)果都是字符串類型的,如果沒有實(shí)際意義的返回結(jié)果,則返回空的字符串。,OTcl —— Tcl的面向?qū)ο髷U(kuò)展,Otcl是Tcl的面向?qū)ο螅∣bject Oriented)的擴(kuò)展,在Otcl中加入了類的概念。對象是類的實(shí)例,它有自己的屬性(成員變量,InstVar)和自己的內(nèi)部操作(成員函數(shù),InstProc)。對象具有繼承、封裝、多態(tài)性和動態(tài)綁定等性質(zhì)。面向?qū)ο髾C(jī)制的加入使得原始的Tcl變得更
14、加強(qiáng)大,更加方便使用。雖然和C++中對象和類以及其他面向?qū)ο蟪绦蛟O(shè)計(jì)語言中的概念相同,但是具體實(shí)現(xiàn)和語法卻存在很大的差別。,OTcl —— Tcl的面向?qū)ο髷U(kuò)展,# Create a class call "mom" and # add a member function call "greet"Class mommom instproc greet {} { $self inst
15、var age_ puts "$age_ years old mom say: How are you doing?"}# Create a child class of "mom" called "kid" # and overide the member function "greet“Class kid -superclass mom,k
16、id instproc greet {} { $self instvar age_ puts "$age_ years old kid say: What's up, dude?"}# Create a mom and a kid object set each ageset a [new mom]$a set age_ 45set b [new kid]$b set ag
17、e_ 15# Calling member function "greet" of each object$a greet$b greet,學(xué)習(xí)TCL/OTCL參考資料,NS與網(wǎng)絡(luò)模擬—第三章http://netmedia.gist.ac.kr/~dulee/tclns.htmlftp://ftp.tns.lcs.mit.edu/pub/otcl/doc/tutorial.html,NS模擬的例子,一個(gè)簡單
18、的有線模擬場景一個(gè)簡單的無線模擬場景場景中由兩個(gè)節(jié)點(diǎn)組成,一個(gè)節(jié)點(diǎn)向另一個(gè)節(jié)點(diǎn)發(fā)送ftp數(shù)據(jù),有線模擬—場景示意圖,,n0,n1,sink,,,1.0,4.0,,5.0,sec,ftp,,1mb,20ms,一個(gè)簡單有線模擬腳本(1),#建立一個(gè)Simulator對象實(shí)例set ns [new Simulator]#打開一個(gè)out.tr的文件,用來記錄模擬過程的trace數(shù)據(jù)set tracefd [open out.tr w
19、]$ns trace-all $tracefd#打開一個(gè)out.nam文件,用來記錄nam的trace數(shù)據(jù)set nf [open out.nam w]$ns namtrace-all $nf,一個(gè)簡單有線模擬腳本(2),#建立一個(gè)名為finish的過程,關(guān)閉兩個(gè)trace文件,并執(zhí)行nam程序proc finish {} { global ns nf tracefd $ns flush
20、-trace close $nf close $tracefd exec nam out.nam & exit 0},一個(gè)簡單有線模擬腳本(3),#新建兩個(gè)node(節(jié)點(diǎn)),并賦給n0和n1set n0 [$ns node]set n1 [$ns node]#在n0和n1建立一條雙向的link(鏈路),該鏈路的帶寬為1Mb/s,延遲為10ms,隊(duì)列為Drop
21、Tail$ns duplex-link $n0 $n1 1Mb 10ms DropTail#新建一個(gè)Tcp代理,并綁定到n0上set tcp [new Agent/TCP]$tcp set class_ 2$ns attach-agent $n0 $tcp,一個(gè)簡單有線模擬腳本(4),#新建一個(gè)Tcpsink,并綁定到n1上set sink [new Agent/TCPSink]$ns attach-agent $n1 $
22、sink#把tcp和sink兩個(gè)agent連接起來$ns connect $tcp $sink#新建一個(gè)ftp業(yè)務(wù),并連接到tcp代理上set ftp [new Application/FTP]$ftp attach-agent $tcp$ftp set type_ FTP,一個(gè)簡單有線模擬腳本(5),#告知Simulator對象在1.0時(shí)啟動ftp$ns at 1.0 "$ftp start"$
23、ns at 4.0 "$ftp stop“#告知Simulator對象在5.0調(diào)用finish過程$ns at 5.0 “finish“#開始模擬$ns run,數(shù)據(jù)包通信圖,NS網(wǎng)絡(luò)組件模型,網(wǎng)絡(luò)組件:構(gòu)成網(wǎng)絡(luò)的基本功能單位,包括簡單網(wǎng)絡(luò)組件和復(fù)合網(wǎng)絡(luò)組件,一般可以從真實(shí)網(wǎng)絡(luò)中找到對應(yīng)體,如一個(gè)節(jié)點(diǎn)對象可以對應(yīng)一個(gè)主機(jī)或路由器,一個(gè)鏈路對象對應(yīng)兩個(gè)主機(jī)相連的媒介。所有的基本網(wǎng)絡(luò)組件可以劃分為2類,分類器(Class
24、ifier)和連接器(Connector)。它們都是NsObject的直接子類,也是所有基本網(wǎng)絡(luò)組建的父類。分類器(Classifier)的派生類組件對象包括地址分類器(AddrClassifier)和多播分類器(McastClassifier)等。連接器(Connector)的派生類組件對象包括隊(duì)列(Queue),延遲(Delay),各種代理(Agent),和追蹤對象類(Trace),分類器,分類器(classifier)是Ns-
25、2基本網(wǎng)絡(luò)組件的一個(gè)大類。它的基本派生類有地址分類器(AddrClassifier)和多播分類(McastClassifier)等。拓?fù)浣Y(jié)點(diǎn)(Node)是由一個(gè)結(jié)點(diǎn)入口對象和若干個(gè)分類器(Classifier)組成的一個(gè)復(fù)合對象。,單播節(jié)點(diǎn)(Node),有線Multicast節(jié)點(diǎn)結(jié)構(gòu),連接器(connector),連接器——Connector是Ns-2基本網(wǎng)絡(luò)組件中的另一個(gè)大類。它的基本派生類對象包括緩沖隊(duì)列(Queue)、延遲(De
26、lay)、各種產(chǎn)生和處理數(shù)據(jù)包的代理(Agent)和對象的跟蹤器(Trace)。拓?fù)浣Y(jié)點(diǎn)連接類(Link)是Ns-2中另一個(gè)主要的復(fù)合組件對象。一個(gè)結(jié)點(diǎn)和另一個(gè)結(jié)點(diǎn)之間的簡單連接(simplex-link)是單向的。一個(gè)最基本的簡單連接由一個(gè)連接入口、包緩沖隊(duì)列、延遲處理對象、廢棄處理對象和時(shí)間處理對象(TTL)組成。一個(gè)結(jié)點(diǎn)的輸出隊(duì)列,是通過和這個(gè)結(jié)點(diǎn)相連的Link中的緩沖隊(duì)列來實(shí)現(xiàn)的。,單向鏈路示意圖,拓?fù)浜唵芜B接——Link,
27、一個(gè)簡單的拓?fù)浣Y(jié)構(gòu)中的2個(gè)結(jié)點(diǎn)之間的連接是單向的。通過Simulator對象中的dublex-link成員函數(shù)可以在兩個(gè)結(jié)點(diǎn)之間的2條互相的單向簡單連接。一個(gè)結(jié)點(diǎn)或交換設(shè)備在一個(gè)輸出路徑上的輸出隊(duì)列,是由在該路徑上的簡單連接(simplex-link)中的數(shù)據(jù)緩沖隊(duì)列來實(shí)現(xiàn)的。在Link中從數(shù)據(jù)緩沖隊(duì)列(queue)中被彈出(dequeue)的包被傳遞到延遲處理對象(Delay)中進(jìn)行延遲的模擬。在Link中從數(shù)據(jù)緩沖隊(duì)列(qu
28、eue)中掉出(Dropped)的包,被送到廢棄處理對象(一個(gè)Null Agent)中被釋放。TTL對象計(jì)算包在Link中被處理時(shí)的相關(guān)的時(shí)間參數(shù)。,加入Trace和Monitor的連接對象,代理(Agent)類的種類和說明,代理網(wǎng)絡(luò)組件代表了在網(wǎng)絡(luò)層中數(shù)據(jù)包的產(chǎn)生地和運(yùn)輸源頭,同時(shí)也是各層網(wǎng)絡(luò)中各種協(xié)議的實(shí)現(xiàn)。Agent/TCPAgent/TCP/Reno Agent/UDPAgent/TcpsinkAgent/NULL
29、…,包(Packet)類的結(jié)構(gòu)和說明,在Ns-2中,一個(gè)“包”是由一個(gè)報(bào)頭(Header)堆棧(Stack)和一個(gè)可選擇的數(shù)據(jù)空間構(gòu)成。報(bào)頭的格式,在模擬器對象(Simulator)創(chuàng)建的過程中創(chuàng)建好,同時(shí),所有注冊過的報(bào)頭,比如一般的屬性說明、IP報(bào)頭,Tcp報(bào)頭,RTP報(bào)頭,都在包的報(bào)頭堆棧中存儲。通過不同報(bào)頭在包的報(bào)頭堆棧中的偏移量(Offset),網(wǎng)絡(luò)組件可以根據(jù)需要,來訪問包中的不同報(bào)頭。這就符合上面的機(jī)制,在報(bào)頭格式創(chuàng)建
30、的時(shí)候,無論這個(gè)注冊過的報(bào)頭是否需要,都被加到報(bào)頭堆棧中。通常,一個(gè)包只含有報(bào)頭堆棧部分,而沒有數(shù)據(jù)空間。這是因?yàn)?,在模擬的環(huán)境中,傳輸實(shí)際的數(shù)據(jù)是沒有意義的。,包(Packet)類的結(jié)構(gòu)和說明,應(yīng)用程序(application),應(yīng)用程序?qū)邮墙⒃趥鬏敶砩系膽?yīng)用程序的模擬。Ns-2中有兩種類型的“應(yīng)用程序”數(shù)據(jù)源發(fā)生器(Traffic Generator)Exponential On/OffPareto On/OffCB
31、R模擬的應(yīng)用程序(Simulated applications)Application/FTPApplication/Telnet,一個(gè)無線仿真的例子(1),Scenario2 mobile nodesmoving within 500m x 500m flat topologyusing DSDV ad hoc routing protocolRandom Waypoint mobility modelTCP traf
32、fic,一個(gè)無線模擬的例子(2),# Define Global Variables# create simulatorset ns [new Simulator] # create flat topology in 500m x 500m areaset topo [new Topography] $topo load_flatgrid 500 500# Define wireless ns trace# ns trac
33、eset tracefd [open out.tr w] $ns trace-all $tracefdset namtrace [open out.nam w] $ns_ namtrace-all-wireless $namtrace 500 500,一個(gè)無線模擬的例子(3),#Create godset god [create-god 2]$ns at 900.00 “$god setdist 1 2 1”#Creat
34、e wireless channelset thechan [new Channel/WirelessChannel,GOD (General Operations Director),Stores all-pairs Dijkstra shortest path lengthsAllows comparison of path length with optimalAutomatically generated, contain
35、ed in scenario fileset god [create-god ]$god set-dist ,一個(gè)無線模擬的例子(4),# Define how a mobile node is configured$ns node-config \-adhocRouting DSDV \-llType LL \-macType Mac/802_11 \-ifqLen 50 \-ifqType Queue/
36、DropTail/PriQueue \ -antType Antenna/OmniAntenna \,-propType Propagation/TwoRayGround \-phyType Phy/WirelessPhy \-channel $thechan \-topoInstance $topo-agentTrace ON \-routerTrace OFF \-macTrace O
37、FF \-movementTrace OFF,一個(gè)無線模擬的例子(4),#Use “for” loop to create 2 nodesfor {set i 0} {$i < 2} {incr i} {set node($i) [$ns node]# disable random motion$node($i) random-motion 0},一個(gè)無線模擬的例子(5),#Define node m
38、ovement model#Mobile Movement Generator$node_(0) set X_ 10.0$node_(0) set Y_ 400.0$node_(0) set Z_ 0.0$node_(0) setdest 400.0 10.0 1.0#Random movement$node_(0) start,一個(gè)無線模擬的例子(6),#Define traffic model(tcp)set tcp
39、1 [new Agent/TCP/Newreno]set sink1 [new Agent/TCPSink]$ns_ attach-agent $node_(0) $tcp1$ns_ attach-agent $node_(2) $sink1$ns_ connect $tcp1 $sink1$tcp1 set fid_ 1set ftp1 [new Application/FTP]$ftp1 attach-agent $t
40、cp1$ns_ at 10.0 "$ftp1 start",一個(gè)無線模擬的例子(7),# Tell nodes when the simulation endsfor {set i 0} {$i < 3 } {incr i} { $ns_ at 200.0 "$node_($i) reset" }#Tell ns/nam the simulation stop time $
41、ns_ at 200.0 “$ns_ nam-end-wireless 200.00”$ns_ at 200.00 “$ns_ halt”#Start your simulation $ns_ run,數(shù)據(jù)流,無線節(jié)點(diǎn)的結(jié)構(gòu),,Node,ARP,Propagation and antenna models,,MobileNode,LL,MAC,PHY,LL,CHANNEL,,,LL,MAC,PHY,,,,pr
42、otocolagent,routingagent,addrclassifier,portclassifier,255,IFQ,IFQ,,defaulttarget_,,,,,,Radio propagation/antenna models,Prop/ant,無線節(jié)點(diǎn)組件,分類器defaulttarget_ 指向路由代理對象255 is the port id assigned for rtagent_路由代理Ad h
43、oc routing protocol, e.g., AODV, DSDV, DSR; or directed diffusion,無線節(jié)點(diǎn)組件,Link LayerSame as LAN, but with a separate ARP moduleLooks up IP-to-MAC mappings using ARPARPResolves IP address to hardware (MAC) addressBroa
44、dcasts ARP queryInterface queue (IFQ)Gives priority to routing protocol packetsHas packet filtering (search and remove) capacity,無線節(jié)點(diǎn)組件,MAC802.11IEEE RTS/CTS/DATA/ACK for unicastSends DATA directly for broadcastNe
45、twork interface (PHY)Used by MobileNode to access channelStamps outgoing packets with meta-dataInterface with radio/antenna models,無線節(jié)點(diǎn)組件,Radio Propagation ModelFriss-space model: attenuation at near distanceTwo-ray
46、 ground reflection model: attenuation at far distanceShadowing model: probabilisticAntennaOmni-directional, unity-gain,無線Channel,Duplicate packets to all mobile nodes attached to the channel except the senderIt is th
47、e receiver’s responsibility to decide if it will accept the packetCollision is handled at individual receiverO(N2) computation!,NS腳本的寫法,Trace數(shù)據(jù)分析,在上面的兩個(gè)腳本中,定義了兩個(gè)輸出文件,一是out.tr,一是out.nam。下面介紹這兩種輸出文件的作用及其格式,以及如何從他們中得到所想要的
48、信息。,Nam文件,如何打開nam文件set nam_file_var [open out_nam_file w]$ns namtrace-all $file_var演示動畫命令 nam out_nam_file用來動畫演示整個(gè)模擬過程,如數(shù)據(jù)包的發(fā)送,包的的丟棄,Nam文件格式樣例,….V -t * -v 1.0a5 -a 0A -t * -n 1 -p 0 -o 0xffffffff -c 31 -a 1A -t
49、 * -h 1 -m 2147483647 -s 0c -t * -i 1 -n Bluen -t * -a 0 -s 0 -S UP -v circle -c black -i blackn -t * -a 1 -s 1 -S UP -v circle -c black -i blackn -t * -a 2 -s 2 -S UP -v circle -c black -i blackl -t * -s 0 -d 1 -S
50、UP -r 1700000 -D 0.02 -c black -o rightl -t * -s 2 -d 0 -S UP -r 2000000 -D 0.01 -c black -o rightq -t * -s 1 -d 0 -a 0.5q -t * -s 0 -d 1 -a 0.5+ -t 0.5 -s 2 -d 0 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 0 ------- nul
51、l}- -t 0.5 -s 2 -d 0 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 0 ------- null}h -t 0.5 -s 2 -d 0 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 -1 ------- null}r -t 0.51016 -s 2 -d 0 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 0 -
52、------ null}+ -t 0.51016 -s 0 -d 1 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 0 ------- null}- -t 0.51016 -s 0 -d 1 -p tcp -e 40 -c 1 -i 0 -a 1 -x {2.0 1.0 0 ------- null}h -t 0.51016 -s 0 -d 1 -p tcp -e 40 -c 1 -i 0 -a
53、1 -x {2.0 1.0 -1 ------- null},trace數(shù)據(jù)文件,用來記錄整個(gè)模擬過程中所發(fā)生的事件,每個(gè)包被發(fā)送,轉(zhuǎn)發(fā),接收的相關(guān)信息打開數(shù)據(jù)Trace文件 set data_file_var [open out_data_file w]$ns trace-all $data_file_var在分析一個(gè)trace文件前,一定要注意trace格式,無線和有線的生成的trace文件格式是不同的!,trace
54、文件格式示例,….+ 0.884 1 2 cbr 1000 ------- 2 1.0 3.1 98 98- 0.884 1 2 cbr 1000 ------- 2 1.0 3.1 98 98r 0.89 1 2 cbr 1000 ------- 2 1.0 3.1 97 97+ 0.89
55、 2 3 cbr 1000 ------- 2 1.0 3.1 97 97- 0.89 2 3 cbr 1000 ------- 2 1.0 3.1 97 97r 0.890706 2 3 cbr 1000 ------- 2 1.0 3.1 94 94+ 0.892 1 2 cbr 1000 -------
56、2 1.0 3.1 99 99- 0.892 1 2 cbr 1000 ------- 2 1.0 3.1 99 99r 0.898 1 2 cbr 1000 ------- 2 1.0 3.1 98 98+ 0.898 2 3 cbr 1000 ------- 2 1.0 3.1 98 98-
57、 0.898 2 3 cbr 1000 ------- 2 1.0 3.1 98 98r 0.898706 2 3 cbr 1000 ------- 2 1.0 3.1 95 95….,,1,2,3,4,5,6,7,8,9,10,11,12,有關(guān)trace格式的請參照,http://nsnam.isi.edu/nsnam/index.php/NS-2_Trace_Form
58、ats,分析trace數(shù)據(jù)的工具,數(shù)據(jù)處理使用Shell文本處理命令,如 cut, join, sed, grep等命令腳本語言:awk,perl,python等繪圖工具 gnuplot xgraph,從Trace中能夠得到什么?,端到端的吞吐率:指一個(gè)s/d的吞吐率端到端的延遲,指一個(gè)包從一個(gè)源發(fā)到目的地所需要的時(shí)間丟包率抖動,等等如何從trace中獲得這些值,網(wǎng)上有許多現(xiàn)成的腳本可以使用!,主要學(xué)習(xí)資料
59、,NS與網(wǎng)絡(luò)模擬NS by examplehttp://nile.wpi.edu/NS/ns_tutorial http://www.isi.edu/nsnam/ns/tutorial/中文論壇-百思論壇 http://www.baisi.net/forum-440-1.html,第二講,NS體系結(jié)構(gòu)(重點(diǎn)理解),分裂對象模型C++ implement the simulation modelImplement
60、 data pathper packet processing, core of nsfast to run, detailed, complete controlOTcl (Tcl script language with Object-oriented extensions developed at MIT ) Simulation scenario configurationsPeriodic or triggered
61、actionManipulating existing C++ objectsfast to write and change,為什么要用兩種編程語言來實(shí)現(xiàn)NS?,模擬器有兩方面的事情需要做一方面,具體協(xié)議的模擬和實(shí)現(xiàn):需要一種程序設(shè)計(jì)語言,它需要很有效率的處理字節(jié),報(bào)頭等信息,需要應(yīng)用合適的算法在大量的數(shù)據(jù)集合上進(jìn)行操作。為了實(shí)現(xiàn)這個(gè)任務(wù),程序內(nèi)部模塊的運(yùn)行速度是非常重要的,而運(yùn)行模擬環(huán)境的時(shí)間、尋找和修復(fù)bug的時(shí)間,重新編譯
62、和運(yùn)行的時(shí)間(run-around time)就顯得不是很重要了。另一方面,許多網(wǎng)絡(luò)中的研究工作都圍繞著網(wǎng)絡(luò)組件和環(huán)境的具體參數(shù)的設(shè)置和改變而進(jìn)行的,需要在短時(shí)間內(nèi)快速的開發(fā)和模擬出所需要的網(wǎng)絡(luò)環(huán)境,并且方便修改和發(fā)現(xiàn)、修復(fù)程序中的Bug。在這種任務(wù)中,run-around time就顯得很重要了,因?yàn)槟M環(huán)境的建立和參數(shù)信息的配置只需要運(yùn)行一次。,為什么是C++和OTCL來實(shí)現(xiàn)?,為了滿足以上兩種不同任務(wù)的需要,NS的設(shè)計(jì)實(shí)現(xiàn)使用了
63、兩種程序設(shè)計(jì)語言,C++和Otcl。C++程序模塊的運(yùn)行速度非???,是強(qiáng)制類型的程序設(shè)計(jì)語言(變量嚴(yán)格定義整型,浮點(diǎn)型和字符、字符串類型),容易實(shí)現(xiàn)精確的、復(fù)雜的算法,但是修改和發(fā)現(xiàn)、修正bug所花費(fèi)的時(shí)間要長一些。該特性正好用于解決第一個(gè)方面的問題。Otcl是腳本程序編寫語言,是無強(qiáng)制類型的,比較簡單,容易實(shí)現(xiàn)和修改,容易發(fā)現(xiàn)和修正bug,雖然它的運(yùn)行速度和C++的模塊相比要慢很多。該特性正好用于解決第二方面的問題。,什么時(shí)候用C
64、++,什么時(shí)候用Otcl?,下面情況用OTcl來實(shí)現(xiàn): 對模擬環(huán)境的配置、建立和在模擬中只運(yùn)行 一次的地方。如果可能,用Otcl腳本來隨意操作已經(jīng)存在的C++對象。下面情況用C++來實(shí)現(xiàn): 如果你需要在模擬中對每一或大量數(shù)據(jù)包進(jìn)行處理。如果你想修改已存在的C++對象的屬性和功能。注意并沒有嚴(yán)格的界限,NS的用戶視圖,NS-2的C++和Otcl類對應(yīng)示意圖,C++和Otcl類對應(yīng)關(guān)系,C++和Otcl類對應(yīng)關(guān)系(c
65、ont.),NS構(gòu)件(獨(dú)立的功能單位)通常由相互關(guān)聯(lián)的兩個(gè)類來實(shí)現(xiàn),一個(gè)由C++類實(shí)現(xiàn),一個(gè)由Otcl類實(shí)現(xiàn);TclCL把這兩張語言中的對象和變量聯(lián)系起來,充當(dāng)“glue”的角色。所有C++類(編譯類)都是從類TclObject一級級繼承出來的,而所有Otcl類(解釋類)都是從SplitObject一級級繼承出來的。 分裂對象模型中Otcl類稱為解釋類,把對應(yīng)的C++類稱為編譯類,這兩個(gè)類互為“影像類”;同樣地,稱Otcl對象為解釋
66、對象,稱C++對象為編譯對象,這兩個(gè)對象互為“影像對象”。,C++和Otcl類對應(yīng)關(guān)系(cont.),NS每當(dāng)實(shí)例化一個(gè)構(gòu)件時(shí),都會同時(shí)創(chuàng)建一個(gè)Otcl中的對象和一個(gè)對應(yīng)的C++對象,并且這兩個(gè)對象可以互操作。例如,在前面的例子中,通過 “new Agent/TCP” 創(chuàng)建了一個(gè)Otcl對象,也相應(yīng)地在C++中創(chuàng)建了一個(gè)tcp對象,NS-2的總體體系結(jié)構(gòu),NS-2的類體系結(jié)構(gòu)(部分),NS-2的類基礎(chǔ)框架,Tcl類:C++代碼與Tcl代
67、碼之間的接口TclObject類:所有編譯對象的基類TclClass類:定義了解釋類的類層次,并允許用戶實(shí)例化TclObject,與TclObject一一對應(yīng)TclCommand類:封裝了C++代碼和Tcl代碼相互調(diào)用命令的方法EmbeddedTcl類:封裝了裝載更高級別的內(nèi)置命令的方法InstVar類:訪問C++成員變量,如Otcl變量方法,Tcl類簡介及功能實(shí)現(xiàn),獲得Tcl解釋器的引用,來調(diào)用解釋器的功能。用來調(diào)用Otc
68、l命令函數(shù)傳遞/獲得Otcl命令運(yùn)行的結(jié)果報(bào)告錯(cuò)誤/退出模擬器的運(yùn)行在解釋器內(nèi)部的用來保存生成對象地址的哈西表獲得Tcl解釋器的句柄,來對解釋器進(jìn)行直接訪問。,用來調(diào)用Otcl命令函數(shù),可以在獲得了Tcl解釋器的引用之后,通過這個(gè)引用來調(diào)用Otcl中的控制臺命令。tcl.eval(char* s);執(zhí)行字符串s,并在tcl的結(jié)果變量中保存執(zhí)行結(jié)果。tcl.evalc(char* s);首先把s存儲進(jìn)tcl中的命令緩沖區(qū)中,然
69、后再執(zhí)行該s命令,并且在結(jié)果變量中返回結(jié)果。tcl.eval();執(zhí)行已經(jīng)存儲進(jìn)tcl命令緩沖區(qū)中的命令,并且在結(jié)果變量中返回結(jié)果。tcl.evalf(const char* s,…);該函數(shù)類似于c語言中的printf命令,可以進(jìn)行字符串的過濾,執(zhí)行同eval()。tcl.buffer()返回tcl中的命令緩沖區(qū)。,傳遞/獲得Otcl命令運(yùn)行的結(jié)果,當(dāng)Tcl解釋器執(zhí)行用戶指定的控制臺字符串命令之后,解釋器在自己內(nèi)部的結(jié)果字符串變
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ns1024g使用手冊
- 圍術(shù)期安全使用ns郭曲練
- 靜態(tài)平均功率Ns Ns.doc
- 寨卡病毒NS3、NS4A、NS5蛋白對小鼠神經(jīng)發(fā)育的影響.pdf
- ns腫瘤、感染
- NS.docx
- 電梯多媒體系統(tǒng)管理軟件使用手冊_ns
- NS.docx
- 本科ns影像學(xué)
- ns-v1700
- 【ns eyes】簡介目錄
- ns摸型的低密度極限
- 丙型肝炎病毒NS3結(jié)合蛋白和NS3反式激活新靶基因NS3TP6的研究.pdf
- 新型HCV NS3-NS4A蛋白酶抑制劑的設(shè)計(jì)與合成.pdf
- 基于NS的BGP協(xié)議仿真研究.pdf
- 基于NS的實(shí)時(shí)仿真平臺.pdf
- 基于NS的藍(lán)牙仿真工具的研究.pdf
- 基于ns-2的tcp的模擬研究
- ns并發(fā)靜脈血栓的診治策略
- 水稻條紋病毒NS2、NS3蛋白與寄主間的互作.pdf
評論
0/150
提交評論