ns2是常用的網(wǎng)絡(luò)仿真軟件,目前最常用的版本是ns-2.34(發(fā)布于2009年)和ns-2.35(發(fā)布于2011年)。ns2編譯安裝過程較為繁瑣,尤其是需要手工解決一些因編譯環(huán)境變化而帶來的語法錯(cuò)誤,對(duì)新手很不友好。本文描述了編譯運(yùn)行ns-2.34和ns-2.35的全過程,并提供了解決編譯錯(cuò)誤的補(bǔ)丁。
系統(tǒng)環(huán)境
虛擬機(jī)系統(tǒng): Ubuntu server 17.10.1(全新安裝)
宿主機(jī)系統(tǒng):Windows 10
虛擬機(jī)管理器:VMWare Workstation
雖然ns-2.35為ns2的最新版,但是由于包括pFabric、PIAS、qJump在內(nèi)的相當(dāng)一部分研究工作仍是基于ns-2.34開發(fā)的,所以本文重點(diǎn)介紹ns-2.34的安裝過程。
安裝依賴項(xiàng)
虛擬機(jī)系統(tǒng)為全新安裝的,所以編譯ns2所需要的依賴項(xiàng)較多,包括:
- gcc
- g++
- make
- libxt-dev
- libx11-dev
- libxmu-dev
sudo apt-get install -y gcc g++ make libxt-dev libx11-dev libxmu-dev
安裝ns-2.34
下載
下載ns2.34:
wget https://jaist.dl.sourceforge.net/project/nsnam/allinone/ns-allinone-2.34/ns-allinone-2.34.tar.gz
解壓縮:
tar -xvf ns-allinone-2.34.tar.gz
cd ns-allinone-2.34
補(bǔ)丁
ns-2.34發(fā)布于2009年6月,現(xiàn)在由于編譯器版本不兼容等原因,直接編譯的話會(huì)報(bào)一些編譯錯(cuò)誤,因此需要打補(bǔ)丁。
wget https://raw.githubusercontent.com/zylan29/ns-expr/master/ns-allinone-2.34-bugfix.patch
patch -p1 < ns-allinone-2.34-bugfix.patch
編譯
第一次編譯時(shí)使用install腳本編譯ns-2.34的全部組件。
./install
安裝ns-2.35
下載
下載ns2.35:
wget https://jaist.dl.sourceforge.net/project/nsnam/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz
解壓縮:
tar -xvf ns-allinone-2.35.tar.gz
cd ns-allinone-2.35
補(bǔ)丁
ns-2.35發(fā)布于2011年11月,在新版本的編譯環(huán)境下同樣需要打補(bǔ)丁才能成功編譯。
wget https://raw.githubusercontent.com/zylan29/ns-expr/master/ns-allinone-2.35-bugfix.patch
patch -p1 < ns-allinone-2.35-bugfix.patch
編譯
編譯ns-2.35的全部組件
./install
運(yùn)行
運(yùn)行簡(jiǎn)單的ns2網(wǎng)絡(luò)仿真腳本
wget http://nile.wpi.edu/NS/Example/ns-simple.tcl
/path-to-ns2/ns-2.34/ns ns-simple.tcl
參考
- ns2項(xiàng)目網(wǎng)址:https://www.isi.edu/nsnam/ns/
- ns2項(xiàng)目新網(wǎng)址: http://nsnam.sourceforge.net/wiki/index.php/Main_Page
- ns-2.34 bug fix patch: https://github.com/camsas/qjump-ns2/blob/master/ns-allinone-2.34.ubuntu.patch
- 解決ns-2.34的"error: narrowing conversion of ‘194’ from ‘int’ to ‘char’ inside { }"問題
:https://stackoverflow.com/questions/43601538/ns-2-installation-error-narrowing-conversion-of-252-from-int-to-char - 解決ns-2.35 "ambiguous reference"問題:https://stackoverflow.com/questions/21129363/specifying-for-ambiguous-reference
- Simple Simulation Example: http://nile.wpi.edu/NS/simple_ns.html
- 推薦閱讀ns Tutorial:https://www.isi.edu/nsnam/ns/tutorial/nsindex.html