因工作需要,着手搭建ns+nam+GT-ITM環境,在網上看了一些文章,用了一天時間安裝調試,現在做一個小的總結,希望給做類似工作的人有一些借鑒。
目标:在Ubuntu16.04虛拟機上安裝ns2.35+nam+GT-ITM
步驟:
Step1-資源下載下傳
VMware:http://www.vmware.com/products/player/playerpro-evaluation.html
Ubuntu:http://cn.ubuntu.com/download/
ns-2.35內建包(包含nam和GT-ITM):https://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download
tcl/tk版本下載下傳:https://sourceforge.net/projects/tcl/files/Tcl/
Step2-準備NS安裝環境
首先在VMware中安裝Ubuntu16.04虛拟機,安裝完成後運作終端,輸入以下指令更新系統:
sudo apt-get update #更新源清單
sudo apt-get upgrade #更新已經安裝的包
sudo apt-get dist-upgrade #更新軟體,更新系統
然後安裝ns2暈行時需要的三個依賴包,指令如下:
sudo apt-get install build-essential
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcl and tk(執行此指令後注意檢視tcl和tk的版本号,我的是8.5.19)
sudo apt-get install libxmu-dev libxmu-headers #for nam
Step3-安裝NS
将下載下傳的ns-allinone-2.35.tar.gz壓縮包解壓到“/home/使用者名/”目錄下,可以用“tarxvfz ns-allinone-2.35.tar.gz”指令或者圖形化操作,然後進入檔案夾,檢視tcl和tk的檔案夾是否與之前安裝的版本一緻,如果不一緻之後安裝就會出現版本沖突錯誤。是以需要下載下傳與安裝相同的版本替換現有的檔案,例如我安裝的是8.5.19,而解壓出的是8.5.10,是以需要下載下傳tcl8.5.19和tk8.5.19替換tcl8.5.10和tk8.5.10檔案夾中的檔案。
更改ns-allinone-2.35/ns-2.35/linkstate目錄下的ls.h檔案,将其第137行中 {erase(baseMap::begin(), baseMap::end()); }修改為 { this->erase(baseMap::begin(),baseMap::end()); },然後儲存檔案。
在在終端中進入ns-allinone-2.35檔案夾,運作install安裝程式:
cd ns-allinone-2.35
./install
Step4-配置環境變量
在終端中進入使用者目錄“/home/使用者名”,運作gedit ~/.bashrc指令,打開.bashrc檔案,然後在文檔最後加入一下環境變量:
export NS_HOME=/home/使用者名/ns-allinone-2.35
exportPATH=$PATH:$NS_HOME/bin:$NS_HOME/tcl8.5.10/unix:$NS_HOME/tk8.5.10/unix
export LD_LIBRARY_PATH=$NS_HOME/otcl-1.14:$NS_HOME/lib
export TCL_LIBRARY=$NS_HOME/tcl8.5.10/library
其中的路徑根據自己的實際情況修改,修改完成後儲存檔案。
Step5-驗證NS
重新開機終端,輸入ns,出現%,說明ns2安裝成功,否則繼續在stp4中修改環境變量,此時請勿根據提示使用sudoapt-get install ns2指令安裝。
Step6-安裝nam并測試
終端進入nam目錄并運作指令,如下:
cd ns-allinone-2.35/nam-1.15
./configure –with-tcl-ver=8.5
make
make install
指令行輸入nam彈出nam console說明nam安裝成功。
最後運作一個小例子檢視安裝結果。指令如下:
cd ns-allinone-2.35/ns-2.35/tcl/ex/
ns simple.tcl
如ns和nam完全安裝正确,則彈出動畫示範框。
Step7-安裝GT-ITM并測試
在ns-allinone-2.35/gt-itm/sgb2ns/目錄中找到sgb2ns.c檔案,将其中105行“\t$nsduplex-link-of-interfaces $n(%d) $n(%d) $linkBW %dms DropTail\n”修改為“\t$nsduplex-link $n(%d) $n(%d) $linkBW %dms DropTail\n”。
然後在gt-itm/src和gt-itm/sgb2ns目錄下分别執行make指令,最後将/gt-itm/bin所在目錄添加到PATH環境變量中(同Step4),友善調用itm。
測試例子:
在/gt-itm/docs目錄中生成一個t1.txt檔案,檔案内容如下:
ts 1 47
30 0
120 3 1.0
420 3 0.6
在終端中調用這個檔案:
cd ns-allinone-2.35/gt-itm/bin
itm t100.txt
調用後生成一個t1.txt-0.gb檔案,在運作以下指令:
sgb2ns t1.txt-0.gb t1.tcl
這樣就生成了一個ns2格式的t1.tcl檔案,如需要檢視這個檔案,需再寫一個tcl的檔案,内容如下:
set ns [new Simulator]
set nf [open out.nam w]
$ns namtrace-all $nf
source t1.tcl
create-topology ns node 1.5Mb
$ns run
命名為nam_show.tcl,運作如下指令調用這個檔案:
ns nam_show.tcl
之後生成一個out.nam檔案,通過指令namout.nam,就能看到生成的拓撲圖了。