




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
NS2語法及結果分析NS2語法namAwkXgraphGnuplotNS2語法模擬器和節(jié)點每進行一次模擬都需要建立一個Simulator類的實例來控制模擬的過程,Simulator類提供了一些實例過程來創(chuàng)建和管理節(jié)點,setns[newSimulator]這條語句功能:1、包格式初始化;2、產生一個事件調度計劃;3、選擇一個默認的地址格式節(jié)點(node)是網絡拓撲的重要組成部分。建立一個節(jié)點的基本方法是調用Simulator類的node過程: $nsnode例如:設置2個節(jié)點,可以表示為setns[newSimulator]
setn0[$nsnode]setn1[$nsnode]一個單播節(jié)點的基本結構如下圖所示,它主要包括兩個Tcl對象:地址分類器(addressclassifier)和端口分類器(portclassifier),它們分別用來判斷分組的目標地址以及分組的目標Agent。
代理(Agent)Agent代表了網絡層分組的起點和終點,并被用于實現如TCP和UDP等網絡協議。Agent類是由C++和Otcl共同實現的。Agent可以實現網絡層、運輸層等多個層次的協議,對于一些運輸層的協議(比如UDP),分組的大小和發(fā)送時間通常是由代表應用層的獨立的對象來控制的,這些控制是通過Agent為應用程序開放的應用程序接口(API)來進行的。對于低層使用的Agent(比如路由Agent),分組的大小和發(fā)送時間通常由Agent自己控制。對于一個TCP
Agent,常用的協議代理有:
Agent/TCP--------------“Tahoe”TCP發(fā)送端(任何損耗下cwnd=1)Agent/TCP/Reno-------“Reno”TCP發(fā)送端(快速修復)Agent/TCP/Sack1------SackTCP發(fā)送端
Application類在NS中,應用層程序構建在運輸層代理(transportagent)之上,它分為兩大類:流量發(fā)生器(trafficgenerator)和應用模擬器(simulatedapplication)。下圖說明了這兩類應用層程序與運輸層代理之間的關系:流量發(fā)生器一般用在UDP代理之上,應用模擬器一般用在TCP代理之上。Application/Traffic/ExponentialApplication/FTPAgent/UDPAgent/TCP/FullTcpAPIAPI應用程序與運輸層代理之間的關系在NS2中常用的application有:
Application/FTP-----------------------------提供TCP將發(fā)送的數據數量
Application/Traffic/CBR-------------------以持續(xù)的比特率產生包裹
Application/Traffic/Exponential-----------處于中斷周期時,不發(fā)送信息;工作周期時,以持續(xù)的比特率產生包裹。兩個周期的長度均按指數分布。Application/Traffic/Trace------------------通信量從一個trace文件中產生,并且包裹間的間隔和大小都事先被定義。除了這些application外,還可以利用類提供的方法來產生信息。例如,如果通過UDP發(fā)送數據,可以用語句
send(intnbytes)--------nbytes是應用程序給出的分組的長度創(chuàng)建一個利用UDP作為傳送協議的CBR信息源,并將其同節(jié)點n0綁定。
setudp0[newAgent/UDP]
$nsattach-agent$n0$udp0
setcbr0[newApplication/Traffic/CBR]
$cbr0attach-agent$udp0
$cbr0setpacket_size_1000
$udp0setpacket_size_1000
$cbr0setrate_1000000利用TCP作為傳送協議的FTP
application,并同節(jié)點n1綁定的方法相似:settcp1[newAgent/TCP]$nsattach-agent$n1$tcp1setftp1[newApplication/FTP]$ftp1attach-agent$tcp1$tcp1setpacket_size_1000舉例如果信息流中止處理,udp和tcp就必須和信息量sink相連接。分別用下面兩個類來表示:Agent/TCPSink-------------TCPsinkAgent/Null------------------UDPsink用下面語句表示同udp0連接并同n2綁定的UDPsink:
setnull[newAgent/Null]
$nsattach-agent$n2$null
$nsconnect$udp0$null
標準的TCPsink每接收一個包裹能夠獲得確認信息,并同n3綁定,tcp1連接:setsink[newAgent/Sink]$nsattach-agent$n3$sink$nsconnect$tcp1$sink
也可以用另外的方法創(chuàng)建一個標準的TCP,同n1、n3連接,ID為1:$nscreate-connectionTCP$n1TCPSink$n31鏈路鏈路(Link)是網絡拓撲的第二部分,是NS2復合網絡組件的另一個大類。創(chuàng)建簡單鏈路:
setns[newSimulator]
$nssimplex-link[node0][node1][bandwidth][delay][queue_type]
這個命令建立了一條從node0到node1的鏈路,改link的帶寬為bandwidth,延遲為delay,隊列類型為queue_type。雙向鏈路的創(chuàng)建也相似。例如:創(chuàng)建一條從n0到n2的鏈路,隊列類型為DropTail$nsduplex-link$n0$n215Mb10msDropTailTraceTrace的功能是詳細記錄模擬的過程,trace可以根據用戶的需要記錄模擬過程中的任何一個細節(jié)。例如下面語句:settrace_all[openall.datw]$nstrace-all$trace_all$nsflush-traceclose$trace_all首先,打開輸出文件,然后處理事件記錄在文件中。模擬的最后,trace緩存被充滿,文件關閉。下面是一個trace文件的例子:+1.8437502cbr210-------00.03.1225610-1.8437502cbr210-------00.03.1225610r1.8447121cbr210-------13.01.0195600d1.8456620ack40-------23.20.182602+1.8456602tcp1000-------20.13.2102611-1.8456602tcp1000-------20.13.2102611
r:接收(receive)+:入隊(enqueue)
d:丟失(drop)-:出隊(dequeue)模擬當模擬拓撲創(chuàng)建之后,所有的代理都要配置,例如模擬的開始和結束。模擬的開始和結束語句為:$nsat$simtime“finish”----------------------模擬結束
$nsrun------------------------------------------模擬開始結束過程:procfinish{}{globalnstrace_all$nsflush-traceclose$trace_allexit0}開始或者結束的時間:$nsat0.0“cbr0start”$nsat50.0“ftp1start”$nsat$simtime“cbr0stop”$nsat$simtime“ftp1stop”簡單的NS2例題創(chuàng)建一個如下圖拓撲結構,加入一個利用UDP作為傳送協議的CBR信息源,并將所有信息記錄到一個trace文件中。n0n2
n13Mbps1ms5Mbps15ms代碼如下:setns[newSimulator]#Enablingtracingofalleventsofthesimulationsetf[openex.namw]$nsnamtrace-all$fseta[openex.trw]$nstrace-all$a#Definingafinishprocedureprocfinish{}{globalnsfa$nsflush-traceclose$fclose$aexecnamex.nam&exit0}#Creationofthenodessetn0[$nsnode]setn1[$nsnode]setn2[$nsnode]$nscolor1Blue#Creationofthelinks$nsduplex-link$n0$n13Mb1msDropTail$nsduplex-link$n1$n21Mb15msDropTail#Creationofacbr-connectionusingUDPsetudp0[newAgent/UDP]$nsattach-agent$n0$udp0setcbr0[newApplication/Traffic/CBR]$cbr0attach-agent$udp0$cbr0setpacket_size_1000$udp0setpacket_size_1000$cbr0setrate_1000000$udp0setclass_0setnull0[newAgent/Null]$nsattach-agent$n2$null0$nsconnect$udp0$null0$udp0setfid_1#Schedulingtheevents$nsat0.1"$cbr0start"$nsat0.5"$cbr0stop"$nsat1.0"finish"$nsrun用NS執(zhí)行模擬后,顯示如下:(1)網絡原始圖(2)網絡運行仿真圖(節(jié)點1至節(jié)點2)(3)網絡運行仿真圖(節(jié)點0至節(jié)點1至節(jié)點2)結果分析End-to-EndDelay、Jitter、PacketLoss、和ThroughputNam、awk、xgragh、gnuplot等模擬拓撲Tcl腳本Example.tclNam結果Out.tr跟蹤文件格式+0.112cbr1000-------21.03.100-0.112cbr1000-------21.03.100+0.10812cbr1000-------21.03.111-0.10812cbr1000-------21.03.111r0.11412cbr1000-------21.03.100+0.11423cbr1000-------21.03.100-0.11423cbr1000-------21.03.100+0.11612cbr1000-------21.03.122-0.11612cbr1000-------21.03.122r0.12212cbr1000-------21.03.111+0.12223cbr1000-------21.03.111.................................................................awkawk是一種程序語言。它具有一般程序語言常見的功能。因awk語言具有某些特點,如:使用直譯器(Interpreter)不需先行編譯;變量無型別之分(Typeless),可使用文字當數組的注標(AssociativeArray)等特色。使用awk撰寫程序比起使用其它語言更簡潔便利且節(jié)省時間。awk還具有一些內建功能,使得awk擅于處理具數據列(Record),字段(Field)型態(tài)的數據;此外,awk內建有pipe的功能,可將處理中的數據傳送給外部的Shell命令加以處理,再將Shell命令處理后的數據傳回awk程序,這個特點也使得awk程序很容易使用系統資源。Awk如何使用資料列:awk從數據文件上讀取的基本單位,以tracefile為例,awk讀入的第一筆資料列為”+0.112cbr1000-------21.03.100”第二筆資料列為“-0.112cbr1000-------21.03.100”一般而言,一筆數據列相當于數據文件上的一行資料。字段(Field):為數據列上被分隔開的子字符串。以資料列”+0.112cbr1000-------21.03.100”為例,一二三四五六七八九十十一十二+0.112cbr1000-------21.03.100一般而言是以空格符來分隔相鄰的字段。當awk讀入數據列后,會把每個字段的值存入字段變量。字段變量意義$0為一字符串,其內容為目前awk所讀入的資料列.$1代表$0上第一個字段的數據.$2代表$0上第二欄個位的資料.…………程序主要節(jié)構: Pattern1 {Actions1} Pattern2 {Actions2} …………… Pattern3 {Actions3}一般常用”關系判斷式”來當成Pattern。例如:x>3用來判斷變量x是否大于3x==5用來判斷變量x是否等于5awk提供c語言常見的關系操作數,如:>、<、>=、<=、==、?。降鹊華ctions是由許多awk指令所構成,而awk的指令與c語言中的指令非常類似。IO指令:print、printf()、getline......流程控制指令
:if(...){...}else{…}、while(…){…}……在awk程序的流程為先判斷Pattern的結果,若為真True則執(zhí)行相對應的Actions,若為假False則不執(zhí)行相對的Actions。若是處理的過程中沒有Pattern,awk會無條件的去執(zhí)行Actions。
工作流程
執(zhí)行awk時,它會反復進行下列四步驟。1.自動從指定的數據文件中讀取一筆數據列。2.自動更新(Update)相關的內建變量之值。3.逐次執(zhí)行程序中所有的Pattern{Actions}指令。4.當執(zhí)行完程序中所有Pattern{Actions}時,若數據文件中還有未讀取的料,則反復執(zhí)行步驟1到步驟4。awk會自動重復進行上述的四個步驟,所以使用者不須在程序中寫這個循環(huán)。
End-to-EndDelay
把量測CBR封包端點到端點間延遲時間的awk程序,寫在文件measure-delay.awk
中執(zhí)行方法:($為shell的提示符號)$awk-fmeasure-delay.awkout.tr若是要把結果存到檔案,可使用導向的方式。(把結果存到cbr_delay檔案中)$awk-fmeasure-delay.awkout.tr>cbr_delay執(zhí)行結果:0.1000000.0387060.1080000.0387060.1160000.0387060.1240000.0387060.1320000.038706………xgraph
在Shell的提示符號后輸入startxwin.bat
xgraphcbr_delaygnuplot
gnuplot是一個命令導向的交談式繪圖程序(command-driveninteractivefunctionplottingprogram)。使用者輸入的每一項命令,可以逐步設定或修改繪圖環(huán)境。它以圖形表達數據或涵數,使我們可以藉由圖形做更進一步的分析。$gnuplot以cbr_delay為例,先簡單示范如何把圖給畫出來。畫圖的指令是plot,要畫的檔案cbr_delay
。gnuplot>plot“cbr_delay”修改環(huán)境變量坐標軸(Axis):繪圖參數在設定坐標軸方面的參數可分為變量名稱、標點、網格、顯示范圍、坐標軸顯示方式與顯示與否等六方面的設定。
功能繪圖參數名稱標點設定xtics,ydtics網格設定grid坐標顯示方式logscale顯示范圍設定autoscale,xrange,yrange坐標軸顯示與否xzeroaxis,yzeroaxisxtics是對X坐標軸上的標點做設定。如起始點、結束點、間隔或在軸上特定點放特定的名稱。其語法為:setxtics{{<start>,<incr>{,<end>}}| {({"<label>"}<pos>{,{"<label>"}<pos>}...)}}unsetxtics#不標示任何X軸上的標點。showxtics#顯示X軸標點的狀況。ytics與xtics相似,不同點是作用在y軸上gnuplot>plotsin(x)在x軸上的標點設定是以5為單位。若是覺得想要把標點距離設小一點,例如設為1,可以使用gnuplot>setxtics-10,1,10gnuplot>plotsin(x)網格設定在XY坐標平面上依刻度畫上方格子。gnuplot>setgridgnuplot>plotsin(x)若是想要把網格拿掉,只要在下unsetgrid即可
坐標顯示方式分為線性與對數兩種。一般為前者,若要改為對數方式,其語法為:setlogscale<axes><base>其中axes為X軸、Y軸、Z軸的任意組合。base預設為10。顯示范圍設定改變各軸的顯示范圍。autoscale參數設定后gnuplot自動調整顯示范圍。而xrange、yrange則是可以由使用者設定該軸的范圍。以xrange為例,其語法為:
setxrange[{<xmin>:<xmax>}]其中參數<xmin>與<xmax>代表X軸的起點與終點,可以是數字或數學式子。例:gnuplot>setxrange[0:10]gnuplot>plotsin(x)坐標軸顯示與否設定設定是否要畫出坐標軸,以X軸為例:setxzeroaxis#設定顯示X坐標軸unsetxzeroaxis#設定不顯示X坐標軸showxzeroaxis#檢查X坐標軸顯示與否gnuplot>setxzeroaxisgnuplot>plotsin(x)標示(Label)GNUPLOT除了繪出圖形外,尚可加入批注做為輔助說明。這批注包括文字與線條兩方面,其提供的設定有
功能繪圖參數名稱線條arrow文字批注key,label,title,xlabel,ylabel線條在圖上畫一線段可以選擇有無箭頭。其語法為setarrow{<tag>}{from<sx>,<sy>{,<sz>}}{to<ex>,<ey>{,<ez>}}{{no}head}unsetarrow{<tag>}#刪除一線條showarrow#顯示線條使用情況其中參數<tag>是給該條線條一個整數名稱,若不設定則為最小可用整數。此線條由坐標(sx,sy,sz)到(ex,ey,ez)(在2D中為(sx,sy)到(ex,ey))。參數nohead為畫沒有箭頭的線段,參數head或沒有nohead為畫有箭頭的線段。#畫一帶有箭頭的線條由原點到(1,2)。gnuplot>setarrowto1,2#畫一名為3的帶箭頭線條由(0.4,0.3)到(0.2,0.1)。gnuplot>setarrow3from0.4,0.3to0.2,0.1#刪除名為3的線條。gnuplot>unsetarrow3#刪除所有線條。guplot>unsetarrow文字批注分為設定標頭(title)和標示(label)。標頭(title):設定為在圖的正上方加上說明本圖的文字。其語法為:settitle{"<title-text>"}{<xoff>}{,<yoff>}showtitle其中設定參數<xoff>或<yoff>為微調標頭放置的地址。xlabel,ylabel的語法與title相同,其各自描述一坐標軸。標示(label)為在圖上任一位置加上文字說明,一般與線條一并使用。
setlabel{<tag>}{"<label_text>"}
{at<x>,<y>{,<z>}}{<justification>} unsetlabel{<tag>}#刪除一標示showlabel#顯示標示使用情況其中參數<tag>與"線條"(arrow)中<tag>意義相同,用以區(qū)別不同的
label。參數
<justification>是調整文字放置的位置,可以是
left,right或
center。
#將y=x放在坐標(1,2)之處。gnuplot>setlabel“y=x”at1,2 #將y=x^2放在坐標(2,3)之處,并命名為3。
gnuplot>setlabel3"y=x^2"at2,3right #將名為3的標示居中放置。
gnuplot>setlabel3center#刪除名為3的標示。gnuplot>unsetlabel3#刪除所有標示。gnuplot>unsellabel一般繪一圖形后,gnuplot會將函數名稱或圖形文件名稱置于右上角。key參數設定可改變名稱放置位置。其語法為: setkey setkey<x>,<y>{,<z>} #其中參數<x>,<y>,<z>設定名稱放置位置。
unsetkey #不顯示名稱
showkey #再度顯示名稱例gnuplot>settitle“cbr_delay”gnuplot>set
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030企業(yè)法律顧問服務市場競爭與律師事務所差異化策略報告
- 2025-2030企業(yè)健身房解決方案供應商市場競爭格局與突圍策略報告
- 2025-2030介入治療日間手術中心建設規(guī)范與成本效益評估研究報告
- 超市清明節(jié)活動策劃方案
- 2025-2030人工智能商業(yè)化應用場景拓展與商業(yè)模式創(chuàng)新研究報告
- 2025-2030親子互動類教育產品技術發(fā)展趨勢與投資價值評估
- 2025-2030互聯網醫(yī)藥電商處方流轉機制與監(jiān)管合規(guī)要點分析報告
- 2025-2030互聯網+背景下茶葉禮盒新零售模式探索與案例分析報告
- 2025-2030二胎政策下高端早教服務需求變化與供給模式創(chuàng)新
- 2025-2030乳品生產工藝節(jié)能改造技術經濟性分析
- 2025年華僑港澳臺生聯招考試高考地理試卷試題(含答案詳解)
- 一口氣看遍中國的地理之美中國地理介紹P
- 生豬屠宰獸醫(yī)衛(wèi)生檢疫人員考試題庫答案
- 鼓膜置管護理常規(guī)
- 施工現場實施信息化監(jiān)控和數據處理方案
- 《公路限速標志設計規(guī)范》(3381-02-2020)
- DB11T 1493-2017 城鎮(zhèn)道路雨水口技術規(guī)范
- 2024-2025學年七年級上學期期中考試道德與法治試題
- GB/T 44563-2024航空用鈦合金凸頭大底腳螺紋抽芯鉚釘
- 山東省濟寧市鄒城市第十中學2024-2025學年上學期八年級第一次月考數學試題
- 高中化學全套思維導圖(高清版)
評論
0/150
提交評論