2010年9月9日 星期四

在ns-2.29下安裝並執行bittorrentsim

.

ns-2.29安裝後,開始安裝bittorrentsim

bittorrentsim的作者為Kolja Eger(點我連結網站

作者網頁寫得很簡單,其實沒有那麼清楚
我還是紀錄一下安裝和測試過程吧

作者網站上有三個檔案
bittorrent.patch
bt_flashcrowd_flow.tcl
bt_flashcrowd_star.tcl

bittorrent.patch是作者的bt的實作
而後兩個檔案(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)則是simulation的script file

請自行mapping到相對應的目錄
我的目錄是這樣
/root/ns-allinone-2.29/ns-2.29

安裝bittorentsim

將bittorrent.patch copy到ns-2.29後,在ns-allinone-2.29/ns-2.29下,依序執行:

patch p1 < bittorrent.patch
./confugrue
make clean
make


第一步驟執行後(上patch),會在ns-2.29下多出一個目錄:bittorrent
ns-2.29/bittorrent中的檔案就是作者bt的實作了
但要重新make ns才能將作者的實作的node加入ns中,讓simulation script file可以用

到這,bittorrensim就安裝進ns了,你可以寫simulation了
但是裝好我測試了一下……
本來不會有warning message的simulation script file在裝完bittorrentsim後,再執行同樣的simulation會跑出一堆warning……

warning: no class variable Node::AppRunning_

see tcl-object.tcl in tclcl for info about this warning.


anyway,只是warning而已,至少還是可以動的

20110104更新:
在將BTSim裝入NS229之後,之後跑任何script都會跳出"warning: no class variable Node::AppRunning_"這個warning,很煩
解法是在ns-default.tcl中加這一行:

Node set AppRunning -1

重編NS(這步我不確定要不要,我是習慣重編)
然後這warning就會消失囉


測試作者提供的兩個script file
測試過程中我遇到一些困難,在這我直接提解法,而為什麼會產生這些問題要等我trace code後才能回答了
在ns-2.29/bittorrent下再開一個folder:scripts
將兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)copy到該目錄(ns-2.29/bittorrent/ns-2.29/bittorrent/scripts)下

回到ns-2.29,也要copy兩個script file(bt_flashcrowd_flow.tcl和bt_flashcrowd_star.tcl)到這裡,執行

ns bt_flashcrowd_star.tcl 10 1 1000


第一個參數為peer數
第二個參數為random number generator
第三個參數為上傳頻寬(單位為kpbs)
所以上述的命令為:跑一個packet-level的simulation,10個peers,上傳頻寬為1000kbps

執行後,就會開始跑simulation,simulation的結果會在ns-2.29/bittorrent下再開新目錄,將結果寫入

以我的case,執行時會跑出下列這一行

bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923


這表示simulation完後,結果會被寫入
bittorrent/results_flash_packet_star_100MB_N_P_10_C_125000.0Bps_seed_1_1284040923這個資料夾

.

4 則留言:

Unknown 提到...

你好,我想請問可否將那三個檔案寄給我,我專題需要用到ns-2的bittorent模擬,可是他原本的官方網站連結好像失效了,我無法下載,我的信箱是ringtdblai@gmail.com

Unknown 提到...

您好:
我有照著你網站的步驟去執行,但是遇到了些問題想請教您,

1.我在我的目錄底下home\hong1023\ns-allinone-2.29\ns-2.29 執行bittorrent.patch,執行指令為patch p1 < bittorrent.patch ,但是並沒有產生一個bittorrent,而是產生了許多檔案如下:
bittorrent_app.h
bittorrent_app_flowlevel.cc
bittorrent_app_flowlevel.h
...
...


在cygwin的畫面產生以下的訊息:
patching file p1
patch attempted to create file p1, which already exists.
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file p1.rej
patching file bittorrent_app_flowlevel.cc
patching file bittorrent_app_flowlevel.h
patching file bittorrent_app.h
...
...
...
-----------------------------
File to patch:


因為我剛要試著用ns2跑p2p的模擬,對整個環境的建置還不熟,麻煩你幫我看看是什麼問題,謝謝。

抗剪強度Zero 提到...

鴻斌你好
我沒法幫到你,看起來是patch的過程出了問題,但我對patch這部份反而不熟

我的環境是在Ubuntu下裝ns-2.29,再裝BTSim,保證work

我沒有在Cygwin上裝過BTSim,過去在Cygwin上裝ns2讓我有太大的挫折,後來改用Virtual Machine,原生的Linux裝,反而問題很小

我會建議你用VitualBox裝個Ubuntu9,再裝ns2,再裝BTSim
相關步驟我的blog都有,保證work

抗剪強度Zero 提到...

是很快就跑完了
log有沒有資料我沒有印象了@@
他的code是work的

trace完該作者的code後,基本上要寫自己的P2P的ns2 simulation就沒問題了

我很有心得,不過這些心得要等到以後有空才能整理發表了