NS3 & NS2 (network simulator) 資工碩一 407226295 陳彥銘
UBUNTU 16.04 安裝 確保擁有至少25GB的可用存儲空間,或5GB的最小安裝空間。 使用 光碟 或者 USB 安裝 Ubuntu
選擇安裝Ubuntu
Ubuntu 常用指令 sudo apt-get install -軟體名 安裝軟體命令 ls -列出當前目錄文件(不包括隱含文件) cd .. -回當前目錄的上一級目錄 mkdir XX -目錄名 創建一個名稱為xx的目錄 mv -路經/文件 /經/文件 移動相對路經下的文件到絕對路經下 tar -c 創建包 –x 釋放包 -v 顯示命令過程 –z 代表壓縮包 tar –cvf benet.tar /home/benet 把/home/benet目錄打包 tar –zcvf benet.tar.gz /mnt 把目錄打包並壓縮 tar –zxvf benet.tar.gz 壓縮包的文件解壓恢復 tar –jxvf benet.tar.bz2 解壓縮
NS2 NS2是由C++和OTcl作為開發語言 NS2是一個OTcl的腳本直譯器,把使用者所寫好的腳本進行解讀後,產生出模擬的 結果,進而對結果進行分析 透過NAM工具程式把模擬的過程視覺化呈現出來
Why two language? (Tcl & C++) • C++: Detailed protocol simulations require systems programming language – byte manipulation, packet processing, algorithm implementation – Run time speed is important – Turn around time (run simulation, find bug, fix bug, recompile, re-run) is slower • Tcl: Simulation of slightly varying parameters or configurations – quickly exploring a number of scenarios – iteration time (change the model and re -run) is more important
Install ns2 Step1.在任何更新之前最好都先做這一個動作,讓軟體資料保持在最新的狀況之下。 sudo apt-get update Step2.下載ns2 allinonce到家目錄 ns-allinone-2.35 Step3. 解壓縮下載下來的檔案 tar xvfz ns-allinone-2.33.tar.gz
Install ns2 Step4. 執行以下兩行在去檢查套件 Step5.修改 ls.h 的文件 apt-get install tcl8.5-dev tk8.5-dev sudo apt-get install build-essential autoconf automake libxmu-dev Step5.修改 ls.h 的文件 sudo gedit ns-2.35/linkstate/ls.h 將 void eraseAll() { erase(baseMap::begin(), baseMap::end()); } 改為: void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); }
Install ns2 Step6.在命令行裏進入你下載的文件,比如我的是/ns/ns-allinone-2.35 然後輸入./install
Install ns2 Step7.安裝成功後會提醒你設置環境變量,根據命令行的提示設置好環境變量。 然後重啟。 輸入:sudo gedit ./bashrc 在文件尾加入: export PATH="$PATH:/home/用戶名/ns/bin:/home/用戶名/ns/tcl8.5.10/unix:/home/用戶名 /ns/tk8.5.10/unix" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/用戶名/ns/otcl-1.14:/home/用 戶名/ns/lib" export TCL_LIBRARY="$TCL_LIBRARY:/home/用戶名/ns/tcl8.5.10/library"
Install ns2 Step 8. 最後測試看看是否安裝成功,輸入指令 ns 成功會顯示 %
Install nam Nam is a Tcl/TK based animation tool for viewing network simulation traces and real world packet traces. It supports topology layout, packet level animation, and various data inspection tools. NAM=>模擬結果視覺化 sudo apt-get install nam
NSG(Network Scenario Generator )
NSG(Network Scenario Generator ) NSG是ㄧ個專門為NS2所設計的劇本產生器,目前最近版本為NSG2,除了原本支援的無線網路之外, 還有支援有線網路 以下列出NSG2主要的功能及支援ns2的物件種類 1.產生有線/無線網路的劇本 2.支援的Node種類︰WirelessNode/WiredNode 3.支援WirelessNode的移動設定 4.支援的Link種類︰Duplex-link及Simplex-link 5.Agent支援(TCP、TCP/Tahoe、TCP/Reno、TCP/Newreno、TCP/Vegas、 TCPSink、UDP及NULL) 6.支援的應用種類:CBR及FTP 7.支援的Routing protocol種類︰DSDV、DSR、AODV及TORA 8.支援的Queue種類︰DropTail、RED、FQ、DRR、SFQ及CBQ 9.802.11參數設定(NSG提供一組802.11b的預設參數)
NSG(Network Scenario Generator ) 由於在執行NSG2之前必須先確定電腦中存有Java Runtime Environment/Java SE Development Kit
Ubuntu java安裝指令 1. 安裝指令 1. sudo add-apt-repository ppa:webupd8team/java 2. sudo apt-get update 3. sudo apt-get install oracle-java7-installer 2. 看看是否安裝成功 java –version
Ns2-OTcl (Object Tcl) OTcl = Tcl + OO C++ implements the code that executed frequently OTcl configures the system
OTCL(Tool Command Language) 在NS2扮演的角色為描述腳本 描述網路環境和參數設定 *命令句語法 指令 變數 參數
變數宣告及使用 set $ 範例: 結果: 2:3:97 set month2 set day 3 set year 97 set date “ $month : $day:$year ” puts $date 結果: 2:3:97
表示式 Tcl包含許多種類的表示式,如數學表示式、關係表示式等。 通常這些表示式會使用“expr”這個指令去判斷表示式的真假或者去求得表示式的 值 範例1: set value [expr 0==1] put $value 結果: 0 說明:使用了expr去判斷0是否等於1,結果是假,所以把0存到value這個變數中。
表示式 範例2: set value [expr 2+1] put $value 結果: 3
指令替換 如同變數替換一樣,指令替換可以把”原tcl 腳本執行結果”取代”原tcl 腳本”。 範例: puts "I am [expr 10 * 2] years old, and my I.Q. is [expr 100 - 25]“ 結果: I am 20 years old, and my I.Q. is 75 說明: []可以用來達成指令替換,所以在執行此行tcl script時,會先去執行[expr 10*2]和[expr 100-25]並把結果20和75取代原本tcl script中[expr 10*2]和[expr 100- 25]的位置,最後在使用puts把此字串秀出來。
程序 讓使用者自定程序 proc name params body name為程序的名稱 params是參數列表 body則是程序的主體
程序 範例: proc PROCNAME {arg1 arg2} { } 常見錯誤: body wrong # args: should be "proc name args body"
C++ TcpAgent::TcpAgent() { bind(“window_”, &wnd_); } Otcl $tcp set window_ 200
Hello World - Batch mode simple.tcl: set ns [new Simulator] $ns at 1 “puts \“Hello World!\”” $ns at 1.5 “exit” $ns run [Lin]$ ns simple.tcl Hello World! [lin]$
Basic tcl proc test {} { set a 43 #a = 43 set b 27 #b = 27 set c [expr $a + $b] ; #c = a + b set d [expr [expr $a - $b] * $c] #d = (a – b) * c for {set k 0} {$k < 10} {incr k} { #for (k=0; k<10;k++) puts “k = $k” }
Basic Otcl set a [new mom] $a set age_ 45 set b [new kid] Class mom mom instproc greet {} { $self instvar age_ puts “ $age_ years old mom: How are you doing?” } Class kid -superclass mom kid instproc greet {} { $self instvar age_ puts “$age_ years old kid: What’s up, dude?” set a [new mom] $a set age_ 45 set b [new kid] $b set age_ 15 $a greet $b greet
Creating simulator instance set ns [new Simulator] -通常為NS-2第一個指令。 Turning on a tracefile Open file for NS tracing set f [open out.tr w] $ns trace-all $f 參考網址 : https://www.isi.edu/nsnam/ns/doc/node296.html
Commands $ns_ simplex-link node1 node2 bw delay qtype $ns simplex-link $node_(h1) $node_(r1) 10Mb 2ms DropTail $ns_ simplex-link-op n1 n2 args The attributes may be the orientation, color, label, or queue-position.
The Network Topology
無線網路模擬
無線網路模擬
無線網路模擬