顯示具有 NS2 標籤的文章。 顯示所有文章
顯示具有 NS2 標籤的文章。 顯示所有文章

2010年4月27日 星期二

NS2中新增Agent

撰寫ns2模擬器的時候,常會需要自行撰寫 agent 來驗證自己的系統是否能達成預期的功效

但是要在ns2中使用本身沒有提供的 agent 是需要在ns2中作些修改才能使用的

因此第一步就是在ns2中新增一個 agent.

Step 1.
把自訂的 agent 的資料夾放入「ns2 資料夾」中,名稱自訂(ZoneAgent)
「ns2資料夾」就等於下面這一串
ex. /home/program/ns-allinone-2.34/ns-2.34

就放在這個資料夾中
Step 2.
修改「ns2 資料夾」中的 Makefile.in
於 OBJ_CC= 該處加上 ZoneAgent/ZoneAgent.o

Step 3.
修改「ns2 資料夾」中 /common/packet.h 加上新的封包型態

ns2.32 之前
      在 enum packet_t 加上 PT_HybridZone
      ps.PT_NTYPE 需放置最後面

      class p_info 的 public:p_info(){}內加上
      name_[PT_HybridZone]="PT_HybridZone";
      ps.PT_NTYPE 需放置最後面

ns2.32 之後
      static packet_t PT_NTYPE 前加上
      static const packet_t PT_HybridZone=??
??是一個尚未用過得數字
但是請注意,這組數字一定要比 PT_NTYPE 的數字還小

      在class p_info 的 public:static void initName(){}內
name_[PT_NTYPE]= “undefined”; 前加上
name_[PT_HybridZone]=”ZoneAgent”;

Step 4.
開始編譯
case 1. (有改 Makefile.in 或 xx.h 時)
自「ns2 資料夾」中執行 ↓
./configure; make clean; make depend; make

case 2 (只有改 source code 亦即 xx.cc 時)
在「ns2 資料夾」中執行 make

以上資料參考至: sokoyo's 隨手記

2009年4月1日 星期三

NS2之出師不利

就在剛剛....發生了件蠢事  orz

在Ubuntu上灌好NS2正想拿來好好調戲一番沒想到是我被它戲弄了 == +

網路上很多教學都說:在終端機下鍵入ns看看提示符號有沒有變成百分比就知道有沒有成功了

所以我就很傻很天真的認為執行任何NS2相關檔案就是在這個模式下執行....

於是乎...我弄了個測試檔案exe1.tcl放到NS2的資料夾之中,接著馬上鍵入"ns"進入ns2的模式...

輸入ns exe1.tcl
馬上出現錯誤訊息: error when calling class OldSim: exe1.tcl

囧rz  這什麼鬼!說好得結果呢?

我不死心...想說 : 是不是搬錯地方了...於是把檔案就搬進ns2中的ns-2.33之中

為何選那裡?因為那裡有ns執行檔....我當時想:會不會那就是原因...

很可惜...我又錯了

就這樣一試再試,屢試不爽的情況下   我終於想到應該要拜一下Google大神保平安了...

很信運...一個來自對岸的網友也有過同樣的狀況

解決的方法很簡單:直接在終端機模式下鍵入:ns exe1.tcl

很好....總算給我我想要得結果了  orz

前前後後花了一個小時....有時候真的覺得我蠢成這樣怎麼活到現在的 orz

大夥可別步入我的後塵丫...

2009年3月30日 星期一

在Linux上安裝NS2

OS以Ubuntu8.04 、 NS2版本為ns2-allinone-2.33為例
最近開始有學習NS2的需要,便綜合網路上眾多好手的範例加上一點自己的話寫成以下的安裝說明文件,以備未來查看。

首先需要安裝的套件是:
# sudo apt-get install build-essential autoconf automake libxmu-dev
到網路上抓下ns2-allinone-2.33.tar.gz:
# wget http://nchc.dl.sourceforge.net/sourceforge/nsnam/ns-allinone-2.33.tar.gz
把檔案移到自己喜歡的目錄去(這邊移到root下的usr/local):
# mv ns-allinone-2.33.tar.gz /usr/local
解壓縮順便改短一點的名稱:
# cd /usr/local
# sudo tar -xvzf ns-allinone-2.33.tar.gz
# mv ns-allinone-2.33 ns2
安裝ns2:
# cd ns2
# ./install
安裝完會出現說明訊息要求我們設定好Path,編輯.bashrc即可:
# vim ~/.bashrc
更改設定值(注意有出現"/usr/local/ns2"的路徑要改成自己的安裝路徑)
# LD_LIBRARY_PATH
OTCL_LIB=/usr/local/ns2/otcl-1.13,
NS2_LIB=/usr/local/ns2/lib
X11_LIB=/usr/X11R6/lib
USR_LOCAL_LIB=/usr/local/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$OTCL_LIB:$NS2_LIB:$X11_LIB:$USR_LOCAL_LIB:

# TCL_LIBRARY
TCL_LIB=/usr/local/ns2/tcl8.4.18/library
USR_LIB=/usr/lib
export TCL_LIBRARY=$TCL_LIB:$USR_LIB
# PATH
XGRAPH=/usr/local/ns2/bin:/usr/local/ns2/tcl8.4.18/unix:/usr/local/ns2/tk8.4.18/unix
NS=/usr/local/ns2/ns-2.33/
NAM=/usr/local/ns2/nam-1.13/
PATH=$PATH:$XGRAPH:$NS:$NAM
存檔完後,執行下列指令讓bashrc修改生效
# source ~/.bashrc
最後,直接在命令列輸入「ns」,如果看到提示符號從「$」變為「%」,就代表ns2安裝成功了
,在%下輸入「exit」就可以跳出ns2。
如果還是不放心,可以進入NS2目錄下的ns-2.33(我的路徑為/usr/local/ns2/ns-2.33)
,執行「./validate」,讓其驗證,如果最後出現「validate overall report: all tests passed」就表示沒問題

最後....把已經無用的tar.gz壓縮檔刪除
# sudo rm -i ns-allinone-2.33.tar.gz
以上!