1 / 43

電腦網路實驗課程 NS2(Network Simulation,version 2)

電腦網路實驗課程 NS2(Network Simulation,version 2). Environment set up NS2 TCL Awk Simulation. NS2. (Network Simulation , version2). NS2 (Network Simulation , version2). 網路模擬的優點 模擬時間少、成本低 提供網路研究學者驗證自己提出的方法是否有效 NS2 由 UC Berkeley 所開發 由 C++ 和 OTcl 為開發語言. Install NS2.

base
Download Presentation

電腦網路實驗課程 NS2(Network Simulation,version 2)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 電腦網路實驗課程NS2(Network Simulation,version 2)

  2. Environment set up • NS2 • TCL • Awk • Simulation

  3. NS2 (NetworkSimulation,version2)

  4. NS2(NetworkSimulation,version2) • 網路模擬的優點 • 模擬時間少、成本低 • 提供網路研究學者驗證自己提出的方法是否有效 • NS2 • 由UCBerkeley所開發 • 由C++和OTcl為開發語言

  5. Install NS2 • 下載檔案(http://sourceforge.net/project/showfiles.php?group_id=149743&package_id=169689) • $sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev libxmu-dev libxmu-headers g++ libpcap-dev gnuplot(ubuntu需要安裝)

  6. 解壓縮檔案 $tarzxvfns-allinone-2.35.tar.gz • 把解壓後的資料夾移動到想要安裝的位置 $ sudo mv ns-allinone-2.35 /home/ns2 • $cdns-allinone-2.35 • $./install

  7. Complete message

  8. $vi~/.bashrc(增加自己家目錄的export) • exportPATH=$PATH:/home/ns2/ns-allinone-2.29/bin:/home/ns2/ns-allinone-2.29/tcl8.4.11/unix:/home/ns2/ns-allinone-2.29/tk8.4.11/unix • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /home/ns2/ns- allinone-2.29/otcl-1.11:/home/ns2/ns-allinone-2.29/lib • exportTCL_LIBRARY=/home/ns2/ns-allinone-2.29/tcl8.4.11/library

  9. Environment Testing • $ns • $cd ns-2.35 ./validate

  10. TCL (ToolCommandLanguage)

  11. TCL(ToolCommandLanguage) • 在NS2扮演的角色為描述腳本 • 描述網路環境和參數設定

  12. 變數宣告及使用Variable • set • $ • Example setmonth3 setday30 setdate“$month-$day” puts$date #nsdate.tcl #3-30

  13. expr • TCL包含很多種表示式,如數學表示式、關係表示 式…等,統常會用”expr”去判斷真假或求值 Example setvalue[expr2>=1] puts$value #nsexpr1.tcl #1

  14. setvalue[expr5+2] puts$value #nsexpr2.tcl #7

  15. 把執行的結果取代tclscript • Example puts“Iam[expr5+2]yearsold,andmyI.Q.is[expr55+20].” #nsexpr3.tcl #Iam7yearsold,andmyI.Q.is75. setmy_height6.0 puts“IfIwas2inchestaller,Iwouldbe[expr $my_height+(2.0/12.0)]feettall.” #nsexpr4.tcl #IfIwas2inchestaller,Iwouldbe6.166666666666667feettall.

  16. TCL也有提供控制程式運作流程的方法,包含 if-else,switch,while,for,foreach…等 • Example setpass69 if{$pass>=60}{ puts“Congratulationspass.” }else{ puts“Fail.” } #nscontrol1.tcl #Congratulationspass.

  17. setnum_class80 switch$num_class{ 100{puts“Perfect.”} 80{puts“Good.”} 60{puts“Bad.”} } #nscontrol2.tcl #Good for{seti0}{$i<10}{incri2}{ puts“Forloopnumber$i.” } # # # # # # nscontrol3.tcl Forloopnumber Forloopnumber Forloopnumber Forloopnumber Forloopnumber 0 2 4 6 8

  18. seti1 while{$i<10}{ puts“Whileloopnumber$i” incri2 } # # # # # # nscontrol4.tcl Whileloopnumber Whileloopnumber Whileloopnumber Whileloopnumber Whileloopnumber 1 3 5 7 9

  19. 讓使用者自定程序 • procname params body • name為程序的名稱 • params為參數列表 • body為程序主體 procname{params}{ body… }

  20. procsum_proc{ab}{ return[expr$a+$b] } setvalue12 setvalue8 Setsum[sum_proc$value1$value2] puts“sum_procvalue=$sum” #nsproc1.tcl #sum_procvalue=20 • Example

  21. Example for{seti0}{$i<0}{incri1}{ setmyarray($i)$i puts“myarray$ivalue=$myarray($i)” } #nsarrays1.tcl #myarray0value #myarray1value #myarray2value #myarray3value . . #myarray9value =0 =1 =2 =3 . . =9

  22. puts未指定輸出裝置,內定輸出裝置是螢幕;若有puts未指定輸出裝置,內定輸出裝置是螢幕;若有 指定輸出裝置為檔案,會把秀出來的內容寫入檔案 • Example setf[open“/tmp/myfile”“w”] for{seti0}{$i<0}{incri1}{ setmyarray($i)$i puts$f“myarray$ivalue=$myarray($i)” } close$f #nsoutput1.tcl

  23. awk

  24. 使用直譯器不須先行編譯 awk擅長處理如 ◦資料列   + 0.1 1 2 cbr 1000 ----- 2 1.0 3.1 0 0 一 + 二 0.1 三 1 四 2 五 cbr 六 1000 七 ----- 八 2 九 1.0 十 3.1 十一 0 十二 0 awk分析  欄位資料內容 為一字串,目前awk所讀入的資料列 代表$0資料列的第一個欄位資料 代表$0資料列的第二個欄位資料 欄位變數 $0 $1 $2

  25. Pattern1 Pattern2 . . Patternn {Actions1} {Actions2} . . {Actionsn} • 程式結構 • 一般常用關係判斷式來當成Pattern • >,<,>=,<=,==,&&,!=…等 • Actions為awk由語言所構成,awk語言與c語言很類似 • printf、if(…){…}else{…}、while(…){…}

  26. 工作流程 • 從指定的資料檔中讀取一筆資料列 • 更新相關變數之值 • 逐次執行程式中所有pattern{actions} • 反覆執行①-③,一直到資料讀取完畢,awk會自動執 行上述步驟,所以使用者不用在程式中寫這個迴圈 流程

  27. Event->r:receive,+:enqueue,-:dequeue,d:drop

  28. $awk–fxxx.awkout.tr

  29. Simulation

  30. 此模擬為TCP和UDP傳送封包的過程,並設有DropTail佇此模擬為TCP和UDP傳送封包的過程,並設有DropTail佇 列;先使用CBR封包傳送一段時間後再開始送FTP封包, 因FTP與CBR互搶頻寬,所以就會發生封包停在佇列的情 況,等有限的佇列滿的時候就會看到開始丟棄封包

  31. 傳輸節點S1、S2、路由器r、資料接收端d • s1→r • TCP • 2Mbps頻寬,10ms延遲時間 • Start1.0s,End4.0s • s2→r • UDP • 2Mbps頻寬,10ms延遲時間 • Start0.1s,End4.5s • r→d • 1.7mbps頻寬,20ms延遲時間 • Droptail佇列機制,最大佇列10個封包長度

  32. FTP s1 TCP sink 2Mbps,10ms d 1.7Mbps,20ms s2 r Null sec 2Mbps,10ms UDP cbr ftp cbr 0.1 1.0 4.04.5

  33. FTP s1,ID=0 TCP sink 2Mbps,10ms d,ID=2 1.7Mbps,20ms r,ID=1

  34. Summary: Generic Script Structure 1. Create Simulator object set ns [new Simulator] 2.[Turn on tracing] #nam trace, packet trace 3.Create topology # node,link(queue-size) # nam position 4.[Setup packet loss, link dynamics] 5.Create: protocol agents application and/or setup traffic sources 6.Post-processing procs #ex.finish() 7.Start simulation #simulation scenario

  35. #產生一個新的模擬物件 setns[newSimulator] #設定封包顏色給NAM用 $nscolor1Blue #開一個NAM紀錄檔 setnf[openout.namw] $nsnamtrace-all$nf #開一個模擬過程的紀錄檔,紀錄封包傳送過程 setnd[openout.trw] $nstrace-all$nd #定義一個結束的程序 procfinish{}{ globalnsnfnd $nsflush-trace close $nf close $nd execnamout.nam& exit0 }

  36. #設定傳輸節點,s1的id是0,r的id是1,d的id是2(id會按照所建順序依序產生)#設定傳輸節點,s1的id是0,r的id是1,d的id是2(id會按照所建順序依序產生) sets1[$nsnode] setr[$nsnode] setd[$nsnode] #設定各連線的傳輸頻寬、延遲時間、佇列機制 $nsduplex-link$s1$r2Mb10msDropTail $nsduplex-link$r$d1.7Mb20msDropTail #設定佇列大小 $nsqueue-limit$r$d10 #設定模擬畫面節點位置 $nsduplex-link-op$s1$rorientright-down $nsduplex-link-op$r$dorientright #設定來觀察r-d佇列的變化(NAM) $nsduplex-link-op$r$dqueuePos0.5

  37. #開始建立一個TCP的連線 settcp[newAgent/TCP] #設定節點的通訊協定 $nsattach-agent$s1$tcp #設定TCP的接收端,此TCPSinkagent收到tcp封包會回ack set sink [new Agent/TCPSink] $ns attach-agent $d $sink $ns connect$tcp $sink #設定此TCP連線為藍色(NAM) $tcp set fid_ 1 #建立一個FTP應用程式在TCP連線上 set ftp [new Application/FTP] #設定ftp為tcp協定 $ftp attach-agent $tcp $ftp set type_ FTP

  38. #開始建立一個UDP的連線 #設定此UDP連線為?色(NAM) #建立一個cbr應用程式在UDP連線上 #設定FTP和cbr傳送的起始時間和結束時間 $nsat1.0"$ftpstart" $nsat4.0"$ftpstop" #結束TCP的連線 $nsat4.5"$nsdetach-agent $s1$tcp" $nsat4.5"$nsdetach-agent $d$sink" #5秒後結束此模擬 $nsat5.0"finish" #開始執行模擬 $nsrun

  39. TCPSimulation TCP&UDPSimulation

  40. event time From To Packet Packet flags fid Src Dst Seq Packet node node type size addr addr num Id 欄位一:封包事件 欄位二:事件發生時間 欄位三、欄位四:fromnode到tonode 欄位五:封包型態 欄位六:封包大小 欄位七:旗標 欄位八:表示封包屬於的資料流 欄位九、欄位十:封包來源端和目的端 ◦x.y->x:節點編號,y:portnumber 欄位十一:封包序號 欄位十二:封包id          

  41. 1.安裝NS2,並且可執行任一範例 • 安裝及模擬的操作過程請以圖片及文字說明(word) • 2.實做TCP與UDP模擬實驗 • 將實做部分程式碼補上即可,並繳交完整程式碼及記錄檔 • 3.使用awk語言分析記錄檔 • 將實做部分程式碼貼上即可,並繳交完整程式碼

  42. DownloadNS2all-in-one • http://sourceforge.net/projects/nsnam/files/allinone/ • DownloadVirtualbox • http://www.virtualbox.org/wiki/Downloads • 柯志亨,計算機網路實驗以NS2模擬工具實做,學貫行銷,2005

More Related