NS2網(wǎng)絡(luò)仿真實驗_第1頁
NS2網(wǎng)絡(luò)仿真實驗_第2頁
NS2網(wǎng)絡(luò)仿真實驗_第3頁
NS2網(wǎng)絡(luò)仿真實驗_第4頁
NS2網(wǎng)絡(luò)仿真實驗_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、移動自組織網(wǎng)絡(luò)實驗報告NS2網(wǎng)絡(luò)仿真實驗何云瑞13120073電信研1301班1實驗?zāi)康暮鸵?學(xué)會NS2的安裝過程,并熟悉NS2的環(huán)境; 2觀察并解釋NAM動畫,分析Trace文檔。3學(xué)會用awk和gnuplot分析吞吐量、封包延遲、抖動率和封包丟失率。2實驗環(huán)境先在PC上安裝VMware虛擬機,再在虛擬機上安裝Ubuntu系統(tǒng),最后再Ubuntu系統(tǒng)上安裝NS2軟件,本次實驗采用的是NS-2.34版本。3基本概念3.1 NS2簡介NS2是一款開放源代碼的網(wǎng)絡(luò)模擬軟件,最初由UC Berkeley開發(fā)。它是一種面向?qū)ο蟮木W(wǎng)絡(luò)模擬器,它本質(zhì)上是一個離散事件模擬器,其本身有一個模擬時鐘,所有的模

2、擬都由離散事件驅(qū)動。其采用了分裂對象模型的開發(fā)機制,采用C+和OTcl兩種語言進行開發(fā)。它們之間采用TclCL進行自動連接和映射??紤]效率和操作便利等因素,NS2將數(shù)據(jù)通道和控制通道的實現(xiàn)相分離。為了減少封包和事件的處理時間,事件調(diào)度器和數(shù)據(jù)通道上的基本網(wǎng)絡(luò)組件對象都使用C+編寫,這些對象通過TclCL映射對OTcl解釋器可見。 目前,NS2可以用于模擬各種不同的通信網(wǎng)絡(luò),它功能強大,模塊豐富,已經(jīng)實現(xiàn)的主要模塊有:網(wǎng)絡(luò)傳輸協(xié)議,如TCP和UDP;業(yè)務(wù)源流量產(chǎn)生器,如FTP、Telnet、CBR、Web和VBR;路由隊列管理機制,如Droptail、RED和CBQ;路由算法;以及無線網(wǎng)絡(luò)WLA

3、N、移動IP和衛(wèi)星通信網(wǎng)絡(luò)等模塊。也為進行局域網(wǎng)的模擬實現(xiàn)了多播協(xié)議以及一些MAC子層協(xié)議。3.2 NS2的功能模塊NS2仿真器封裝了許多功能模塊,最基本的是節(jié)點、鏈路、代理、數(shù)據(jù)包格式等,下面對各個模塊進行簡單的介紹:(1)事件調(diào)度器:目前NS2提供了四種具有不同數(shù)據(jù)結(jié)構(gòu)的調(diào)度器,分別是鏈表、堆、日歷表和實時調(diào)度器。 (2)節(jié)點(node):是由TclObject對象組成的復(fù)合組件,在NS2中可以表示端節(jié)點和路由器。 (3)鏈路(link):由多個組件復(fù)合而成,用來連接網(wǎng)絡(luò)節(jié)點。所有的鏈路都是以隊列的形式來管理封包的到達、離開和丟棄。 (4)代理(agent):負責(zé)網(wǎng)絡(luò)層封包的產(chǎn)生和接收,也

4、可以用在各個層次的協(xié)議實現(xiàn)中。每個agent連接到一個網(wǎng)絡(luò)節(jié)點上,由該節(jié)點給它分配一個端口號。 (5)封包(packet):由頭部和數(shù)據(jù)兩部封包成。一般情況下,packet只有頭部、沒有數(shù)據(jù)部分。(6)應(yīng)用層(Application):流量產(chǎn)生器(Traffic generators)創(chuàng)建了各種不同的概率模型來模擬產(chǎn)生實際網(wǎng)絡(luò)中的業(yè)務(wù)流,它建立在UDP代理之上;應(yīng)用模擬器(Simulated application)產(chǎn)生建立在TCP代理之上的業(yè)務(wù)流。 (7)數(shù)據(jù)記錄:Trace,功能是能夠詳細記錄模擬過程,同時,用戶也可以根據(jù)自己的需要記錄模擬過程中的任何一個細節(jié),模擬結(jié)束后會產(chǎn)生out.tr

5、文件;Monitor,NS2中有兩種監(jiān)測,隊列監(jiān)測(Queue Monitoring)和流量監(jiān)測(Per-Flow Monitoring)。(8)動畫演示Nam,是基于Tcl/Tk的動畫演示工具,用來把模擬的過程用可視化的方式呈現(xiàn)出來,模擬結(jié)束后會產(chǎn)生out.man文件。(9)數(shù)據(jù)分析:gawk。awk是一種程序語言。它具有一般程序語言常見的功能。由于awk語言具有使用直譯器(Interpreter)不需先行編譯;變量無型別之分(Typeless),可使用文字當(dāng)數(shù)組的注標(biāo)(Associative Array)等特色,所以使用awk撰寫程序比起使用其它語言更簡潔便利且節(jié)省時間。awk還具有一些內(nèi)

6、建功能,使得awk擅于處理具資料列(Record),字段(Field)型態(tài)的資料。此外,awk內(nèi)建有pipe的功能,可將處理中的資料傳送給外部的Shell命令加以處理,再將Shell命令處理后的資料傳回awk程序,這個特點也使得awk程序很容易使用系統(tǒng)資源。而gawk是GNU所開發(fā)的awk,最初在1986年完成,之后不斷改進和更新,gawk包含awk的所有功能。3.3 Trace文件的格式(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11)(12)EventTimeFrom nodeTo nodePkt typePkt sizeFlagsFidSrc addrDst addr

7、Seq numPkt id(1)Event發(fā)生的事件類型。 + 表示封包進入鏈路隊列(Enqueue) - 表示封包離開鏈路隊列(Dequeue) r 表示目的隊列接受(receive)事件 d 表示隊列丟棄(drop)封包事件(2)time表示事件發(fā)生的時間(3)From node表示封包發(fā)送節(jié)點的id(4)From node表示封包傳送目的節(jié)點的id(5)Pkt type表示封包類型(6)Pkt size表示封包的大小(7)Flags表示標(biāo)志項(8)Fid為Flow id的簡寫,流標(biāo)識符(9)Src addr表示源地址,格式為:node.port。node為封包發(fā)送節(jié)點的id,port代表

8、發(fā)送封包節(jié)點的端口號。(10)Dst addr表示目的地址,格式為:node.port。node為封包接收節(jié)點的id,port代表接收封包節(jié)點的端口號。(11)Seq num封包的序列號(12)Pkt id封包的唯一標(biāo)識符,表示封包的id。3.4 CBR和FTP簡介CBR:Constant Bit Rate,固定傳輸速率。這是一個用來形容通信服務(wù)質(zhì)量(Quality of Service,QoS)的術(shù)語。和該詞相對應(yīng)的詞是可變碼率或可變比特率(Variable Bit Rate,縮寫VBR)。當(dāng)形容編解碼器的時候,CBR編碼指的是編碼器的輸出碼率(或者解碼器的輸入碼率)應(yīng)該是固定制(常數(shù))。當(dāng)

9、在一個帶寬受限的信道中進行多媒體通信的時候CBR是非常有用的,因為這時候受限的是最高碼率,CBR可以更好的易用這樣的信道。但是CBR不適合進行存儲,因為CBR將導(dǎo)致沒有足夠的碼率對復(fù)雜的內(nèi)容部分進行編碼(從而導(dǎo)致質(zhì)量下降),同時在簡單的內(nèi)容部分會浪費一些碼率。FTP:File Transfer Protocol,文件傳輸協(xié)議,中文簡稱為“文傳協(xié)議”,用于Internet上的控制文件的雙向傳輸。同時,它也是一個應(yīng)用程序(Application)。用戶可以通過它把自己的PC與世界各地所有運行FTP的服務(wù)器相連,訪問服務(wù)器上的大量程序和信息。FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算

10、機上運行著FTP服務(wù)器程序)查看遠程計算機有哪些文件,然后把文件從遠程計算機上復(fù)制到本地計算機,或把本地計算機的文件送到遠程計算機去。3.5 其他概念(1)丟包率:是一個比率,表示在單位時間內(nèi)未收到的數(shù)據(jù)封包數(shù)與發(fā)送的數(shù)據(jù)封包數(shù)的比率,由于信號衰減、網(wǎng)絡(luò)質(zhì)量等諸多因素的影響,可能產(chǎn)生數(shù)據(jù)封包的丟失。(2)端到端時延:是由各種因素引起的,包括打包和解包時延,以及網(wǎng)絡(luò)傳送時延,本文中主要討論的是網(wǎng)絡(luò)傳輸時延。(3)吞吐量:單位時間內(nèi)某個節(jié)點發(fā)送和接受的數(shù)據(jù)量,單位一般為b/s。(4)抖動率:網(wǎng)絡(luò)延遲的變化量,它是由同一應(yīng)用的任意兩個相鄰數(shù)據(jù)包在傳輸路由中經(jīng)過網(wǎng)絡(luò)延遲而產(chǎn)生的,由相鄰數(shù)據(jù)包延遲時間差

11、除以數(shù)據(jù)包序號差得到。4實驗步驟4.1 NS2的安裝本文NS2的安裝參照博文:最終運行NS2自帶simple.tcl得到圖1,以示成功:圖1 NS2安裝成功4.2 Tcl腳本運行本實驗中編寫的腳本simulator.tcl見附錄一。實際模擬的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖2所示。包含4個node,各節(jié)點之間都是以全雙工的鏈路相連。n0和n2之間鏈路的帶寬為2Mbps,延遲為10ms,為DropTail隊列方式;n1和n2之間鏈路帶寬為2Mbps,延遲為10ms,也為DropTail隊列方式;n2和n3之間鏈路的帶寬為1.7Mbps,延遲為20ms,也為DropTail方式。n0處有一個FTP的TCP流量產(chǎn)生器

12、,n1處為CBR的UDP流量產(chǎn)生器,n3有一個接收TCP的sink和接收UDP的NULL。圖2 網(wǎng)絡(luò)結(jié)構(gòu)圖仿真結(jié)束后,會產(chǎn)生兩個檔案,一個是out.nam,這是給NAM用的,用來把仿真的過程用可視化的方式呈現(xiàn)出來,這可以讓我們很直觀的方式去了解封包傳送是如何從來源端送到接收端。另一個檔案是out.tr,這個檔案記錄了仿真過程中封包傳送中所有的事件,例如第一筆記錄是一個CBR的封包,長度為1000bytes,在時間0.1秒的時候,從n1傳送到n2。4.3 吞吐量、封包延遲、抖動率和封包丟失率4.3.1 封包延遲測量CBR封包端點到端點間延遲時間的程序?qū)懺趍easure-delay.awk中。me

13、asure-delay.awk的具體代碼查看附錄。在終端輸入如下命令:gawk -f measure-delay.awk out.tr > cbr_delay此指令將運行結(jié)果存儲到cbr_delay文件中,以便進行繪圖。接著輸入gnuplot,得到下圖接著按下圖輸入,為接下來要畫的時延圖做標(biāo)識:運行上圖最后一條指令后得到圖3:圖3 封包延遲隨時間的變化4.3.2 抖動率 抖動率就是延遲時間變化量delay variance,由于網(wǎng)絡(luò)的狀態(tài)隨時都在變化,有時候流量大,有時候流量小,當(dāng)流量大的時候,許多封包就必需在節(jié)點的隊列中等待被傳送,因此每個封包從傳送端到目的地端的時間不一定會相同,而這

14、個不同的差異就是所謂的Jitter。Jitter越大,則表示網(wǎng)絡(luò)越不穩(wěn)定。量測CBR flow抖動率的代碼寫在measure-jitter.awk內(nèi),具體見附錄。運行方法仿照4.3.1,可得下圖4:圖4 抖動率隨封包序列的變化4.3.3 封包丟失率 測量CBR封包丟失率的代碼寫在measure-drop.awk內(nèi),具體見附錄。運行awk -f measure-drop.awk out.tr > cbr_drop后,可在cbr_drop中找到如下信息:其中第一行表示CBR總共送出了550個封包,丟失了8個。第二行表示總的丟包率為0.014545。接下來的幾行中,第一列表示時間,第二列表示丟

15、包率。仿照上兩例,只不不過為了利用gnuplot,要把先把前兩行刪除。最終可得丟包率隨時間的變化如圖5所示:圖5 封包丟失率隨時間的變化4.3.4 吞吐量量測CBR吞吐量的代碼寫在measure-throughput.awk內(nèi),具體見附錄。圖6 吞吐量隨時間的變化5實驗結(jié)果分析從丟包率、時延、吞吐量和抖動率的變化圖中,可以看出當(dāng)丟包率增加時,端到端之間的時延也在增加,而吞吐量則下降,丟包率、時延和吞吐量在表示網(wǎng)絡(luò)性能的好壞時有一定的關(guān)系。在時延的變化圖中,在一剛開始的時候,由于只有CBR的封包,所以端到端時延都是固定的,但在1.0秒后,網(wǎng)絡(luò)多了FTP的封包,這使得CBR封包和FTP封包必須互相

16、的搶奪網(wǎng)絡(luò)的資源,因此端到端時延變得不在固定,但等到FTP傳輸結(jié)束后,CBR封包的端到端時延又變成是固定值了。在抖動率的變化圖中,抖動率產(chǎn)生變化的原因同時延變化的原因相同,都是由于FTP封包的加入才使得端到端時延產(chǎn)生變化。6附錄6.1 網(wǎng)絡(luò)拓撲仿真腳本simulator.tcl:# 有線場景,四個節(jié)點,F(xiàn)TT+TCP用藍色表示,CBR+UDP用紅色表示set ns new Simulator#設(shè)置顏色$ns color 1 Blue$ns color 2 Redset tracefd open out.tr w$ns trace-all $tracefdset namtracefd open

17、out.nam w$ns namtrace-all $namtracefdproc finish global ns tracefd namtracefd$ns flush-traceclose $tracefd close $namtracefd exec nam out.nam &exit 0set n0 $ns nodeset n1 $ns nodeset n2 $ns nodeset n3 $ns node$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns d

18、uplex-link $n2 $n3 1.7Mb 20ms DropTail$ns queue-limit $n2 $n3 10#用于設(shè)置NAM顯示時,各節(jié)點的相對位置$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right$ns duplex-link-op $n2 $n3 queuePos 0.5set tcp new Agent/TCP$tcp set class_ 2$ns attach-age

19、nt $n0 $tcpset sink new Agent/TCPSink$ns attach-agent $n3 $sink$ns connect $tcp $sink$tcp set fid_ 1set ftp new Application/FTP$ftp attach-agent $tcp$ftp set type_ FTPset udp new Agent/UDP$ns attach-agent $n1 $udpset null new Agent/Null$ns attach-agent $n3 $null$ns connect $udp $null$udp set fid_ 2s

20、et cbr new Application/Traffic/CBR$cbr attach-agent $udp$cbr set type_ CBR$cbr set packet_size_ 1000$cbr set rate_ 1mb$cbr set random_ false $ns at 0.1 "$cbr start"$ns at 1.0 "$ftp start"$ns at 4.0 "$ftp stop"$ns at 4.5 "$cbr stop"#以下這一行可有可無$ns at 4.5 "$n

21、s detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"$ns at 5.0 "finish"puts "CBR packet size=$cbr set packet_size_"puts "CBR interval=$cbr set interval_"$ns run 6.2 丟包率awk處理腳本measure-drop.awk:BEGIN dropNum = 0;totalNum = 0i= 0 ;lossratei = 0;timeArri = 0;event = $

22、1;time = $2;fromNode = $3;toNode = $4;pktType = $5;pktSize = $6;flags = $7;fid = $8;srcAddr = $9;stAddr = $10;seqNum = $11;pktId = $12;if(fromNode=1 && toNode=2 && event = "+")totalNum+;timeArri=time;lossratei=(float)(dropNum/totalNum);i+;if(fid=2 && event = "d

23、")dropNum+;END printf("#number of packet sent:%d,lost:%dn", totalNum, dropNum);printf("#lost rate of packets:%fn", dropNum/totalNum);printf("%ft%fn", timeArrj, lossratej);6.3 處理時延的awk腳本measure-delay.awk:BEGIN #程序初始化,設(shè)定一變量以記錄目前最高處理封包的ID。highest_packet_id = 0;action

24、= $1;time = $2;node_1 = $3;node_2 = $4;type = $5;flow_id = $8;node_1_address = $9;node_2_address = $10;seq_no = $11;packet_id = $12;#記錄目前最高的packet IDif ( packet_id > highest_packet_id )highest_packet_id = packet_id;#記錄封包的傳送時間if ( start_timepacket_id = 0 )start_timepacket_id = time;#記錄CBR (flow_id

25、=2) 的接收時間if ( flow_id = 2 && action != "d" ) if ( action = "r" ) end_timepacket_id = time;else #把不是flow_id=2 的封包或者是flow_id=2 但此封包被drop 的時間設(shè)為-1end_timepacket_id = -1;END #當(dāng)資料列全部讀取完后,開始計算有效封包的端點到端點延遲時間for ( packet_id = 0; packet_id <= highest_packet_id; packet_id+ )start

26、 = start_timepacket_id;end = end_timepacket_id;packet_duration = end - start;#只把接收時間大于傳送時間的記錄列出來if ( start < end ) printf("%f %fn", start, packet_duration);6.4 吞吐量awk代碼measure-throughput.awk:BEGIN init=0;i=0;action = $1;time = $2;node_1 = $3;node_2 = $4;src = $5;pktsize = $6;flow_id = $8;node_1_address = $9;node_2_address = $10;seq_no = $11;packet_id = $12;if(action="r" && node_1=2 && node_2=3 && flow_id=2) pkt_byte_sumi+1=pkt_byte_sumi+ pktsize;if(init=0) start_time = tim

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論