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這個資料夾

.

在linux fc5下裝ns 2.29

.

Efficient Simulation of Large-Scale P2P Networks Packet-level vs. Flow-level Simulations
這篇paper的作者Kolja Eger用ns2寫了bittorrent的simulation,並open source

所以想要用ns2寫p2p simulation的人,這個東西會是個不錯的參考

原本bittorrentsim是放在作者學校的網站上:
http://www.tuhh.de/et6/research/bittorrentsim/

然而,Kolja Eger畢業了,網站被移除了
經詢問,Eger把code改放到他的google site
https://sites.google.com/site/koljaeger/bittorrent-simulation-in-ns-2

然而,他的bittorent code是以patch file release的,並且是給ns-2.29用的

為此,我必需裝一個ns-2.29來安裝他的bittorrentsim

然而,安裝ns-2.29的過程不那麼順利
make時會有一堆error,據悉是gcc改版,規則變嚴格的原因
(這個我有印象,有次gcc更新後,本來可以make的code會make過不了)

我特地找個比較久的linux virtualbox image:Fedora Core 5
沒想這個distribution的gcc還蠻新的:gcc version 4.1.0 20060304 (Red Hat 4.1.0-3)
(其實我不確定是distribution本來的版本就這麼新,還是我以前有做過更新……)
所以make ns-2.29還是會有一堆error

要安裝ns-2.29時會出現一堆error,按照下列這個連結的方法就可以裝起ns-2.29
ns-2.29在Ubuntu8.04中的安装
基本上面文章的解法可行,按照他的方法,我把ns-2.29裝起來了

但是過程中會遇到另一個問題是文章中沒提到的,據說是bash 3.1.I的關係
error code如下:

checking system version (for dynamic loading)... ./configure: line 6017: syntax error near unexpected token `('


在ns-allinone-2.29的目錄下,複製下面這行:
for f in $(find -name configure); do sed "s/relid'/relid/" -i $f; done
貼上,執行,問題就解了
這個解法的原文出處:Compiling Network Simulator 2.29

到這裡,就裝好ns-2.29了
可以開始動手安裝bittorrentsim了


.

在linux fc5下裝VirtualBox guest addition

.

為什麼現在還要回頭使用linux fedora core 5呢?
……

因為,我要裝ns2 2.29
因為,BittorentSim的patch file是for ns2 2.29
而ns2 2.29在太新的gcc下……會裝不起來……

我有兩個選擇:
1.要嘛在新的gcc裝起ns2 2.29
2.要嘛就是在較舊的linux下裝ns2 2.29

solution 1我試過,但失敗了

所以我現在要試solution 2

但solution 2面臨到的第一個難題是:我要裝guest addtion
但fedora core系列都沒有linux kernal src header
而要安裝guest addition,就需要有linux kernal src header
否則就會遇到如下的錯誤:

Building the VirtualBox Guest Additions kernel modules [FAILED]
Your system does not seem to be set up to build kernel modules.


這個難題我很久以前就遇過了,因為即使是vmware的guest os,也是要裝vmware guest tool
不是只有vitualbox才有這問題


為什麼要裝guest addtion這個原因我就不解釋了,簡單的說,不裝guest addtion我用不下去

好,我們現在就來解問題:
怎裝linux kernal src header?

有人說:

yum install kernel-devel-$(uname -r)


以前這個指令是對的,但現在不work,因為fc5太舊了,官方不maintain了


好,那找其他的repository如何?
如新竹縣網的

http://apt.nc.hcc.edu.tw/web/yum_setup.htm


裝好了之後,yum update可以使用
但還是找不到linux kernal source hdr
錯誤如下:

Error: failure: Fedora/RPMS/kernel-devel-2.6.15-1.2054_FC5.i686.rpm from core: [Errno 256] No more mirrors to try.



好,到這裡線索已經出來了,我們至少知道fc5的kernel src hdr的rpm name為:kernel-devel-2.6.15-1.2054_FC5.i686.rpm

上網google一下kernel-devel-2.6.15-1.2054_FC5.i686.rpm,隨便捉一個下來
安裝:

rpm -ivh kernel-devel-2.6.15-1.2054_FC5.i686.rpm


然後再裝一次guest addition

./VBoxLinuxAdditionals-x86.run --target ~/vbox


恭喜,終於裝成功了,我有guest addtion 可以用了
有圖有真相



.