面向純小白的Ubuntu下 ndnSIM 2.2 安裝教程

主要翻譯自官網教程, 補充了一點自己的理解。

某些部分有點羅嗦,專供和曾經的我一樣小白的同學參考。
教程中涉及一些簡單的 linux、git指令,如果不懂就隨便用哪個搜索引擎查一下吧,很容易的!給我留言也行。

可執行平臺

ndnSIM2.x 可在以下平臺成功編譯和使用:
? Ubuntu Linux 14.04 (32- and 64-bit platform)
? Ubuntu Linux 16.04 (32- and 64-bit platform)
? OS X 10.9
? OS X 10.10
? OS X 10.11

包的依賴

安裝 ndnSIM前,需要先安裝一些其他東西。
1. 核心依賴(必需的)
? python >= 2.6
? libsqlite3
? libcrypto++
? pkg-config
? Boost libraries >= 1.53

Ubuntu Linux 下, 在 Terminal 里輸入以下命令再敲回車即可:

sudo apt-get install build-essential libsqlite3-dev libcrypto++-dev libboost-all-dev

sudo 是用 root 權限執行的意思,執行時會要求你輸密碼,輸入的時候什么都不會顯示的哦,并不是出錯了,敲完就回車吧。
2. 對 NS-3 Python 綁定的依賴(可選的)
需要執行:

sudo apt-get install python-dev python-pygraphviz python-kiwi
sudo apt-get install python-pygoocanvas python-gnome2
sudo apt-get install python-rsvg ipython

據說 python 綁定不太穩定,可以不要。但 visualizer這個可視化模塊是需要綁定 python 的,個人還蠻喜歡這個模塊的,可以直觀地看到整個網絡(效果見下圖),不然一上來就看日志其實有點懵,暫時還沒遇到不穩定的情況。


PyViz

ndnSIM資源下載

安裝完依賴的東西后,就下載 ndnSIM資源吧。在 Terminal 里進入一個你喜歡的目錄(文件夾)執行以下指令即可。如果用指令下載很慢,也可以進入指令里的連接在github 的頁面下載,但別選錯分支、漏掉子模塊、放錯文件夾啦。

  1. 新建并進入目錄 ndnSIM2.2
mkdir ndnSIM2.2
cd ndnSIM2.2

ndnSIM2.2這個目錄名可以換成你喜歡的。(順便說一下,各種文件、目錄名最好都別含中文,我雖然沒試過ndnSIM會不會出錯,但在裝其他軟件的時候涉及中文目錄出過錯。要是哪位同學測試了煩請告訴我結果。)

  1. 下載 NS-3 源碼
git clone https://github.com/named-data-ndnSIM/ns-3-dev.git ns-3

我們用的 ndnSIM是 ns-3下的一個模塊,所以要先下載 NS-3-3。ndnSIM用的是包含一些有用補丁的NS-3分支 (注意,不是NS-3的master分支,而是ndnSIM-v2分支喲)。

  1. 下載pybindgen源碼
git clone https://github.com/named-data-ndnSIM/pybindgen.git pybindgen

這是定制的 python 綁定生成庫,如果不需要 NS-3的 python 綁定或 visualizer模塊,可以不要。

  1. 下載 ndnSIM 模塊源碼
git clone --recursive https://github.com/named-data-ndnSIM/ndnSIM.git ns-3/src/ndnSIM

如果clone ndnSIM時沒有加 recurisive 參數,則子模塊 ndn-cxx 和 NDF 沒有下載,則需要再敲:

git submodule update --init

如果這倆子模塊有更新,也敲這句。

編譯

打開 ns-3所在目錄,用 waf 編譯(waf是ns-3選用的一個厲害的開源編譯系統,比 make簡潔,感興趣的可以看看 http://code.google.com/p/waf):

cd <ns-3-folder>
./waf configure --enable-examples
./waf

如果不用 python綁定,或者報了和 python 有關的庫,那么就禁用它吧,還能快點:

cd <ns-3-folder>
./waf configure --disable-python --enable-examples
./waf

本質上,ndnSIM是 ns-3的一個模塊,所以只編譯ns-3即可。

./waf configure 執行完成后會顯示configuration 成功,雖然在這行字后面可能還有一堆紅紅的信息說你缺這個那個的,但是確實已經成功了!缺的那些雖然扎眼但是咱不需要。

./waf 執行后會顯示已安裝和未安裝的模塊,某些模塊沒有也沒關系。如果之后添加了新文件,再重新編譯就行。

如果failed……后面會顯示編譯日志的位置,但是太長啦!就看看 failed 前面的信息里,哪些文件 not found 了,看起來和上文提到的依賴包很像的,就再裝一下吧。

visualizer模塊安裝失敗我也遇到過,如果有顯示:

pybindgen (found ''), (need '0.17.0.post45+ng4806e4f')

則執行sudo apt-get install python-setuptools,再編譯就行。

另外,敲 ./waf --help可以了解更多 configuration 的可選參數。

仿真

1. 示例

如果編譯的時候用上了 --enable-examples,那就能直接跑src/ndnSIM/examples 路徑下的例子了,用./waf --run=<文件名>即可,如:

./waf --run=ndn-simple 

這一句的意思是運行了 ndn-simple.cpp 文件(就是腳本,定義了網絡結構、策略、參數等,稱為scenario)等于號似乎可以不要。

又如:

./waf --run=ndn-grid

又如:

NS_LOG=ndn.Producer:ndn.Consumer ./waf --run=<scenario name>

這一句啟用了日志(logging)模塊,只在 NS-3以 debug mode(-d debug) 編譯的情況下生效。
又如:

./waf --run=<scenario name> --vis 

這一句調用了可視化模塊

更多例子參見官網 http://ndnsim.net/2.2/examples.html

日志等幫助調試的功能,會增加 overhead。所以測數據時,得把 ns-3以優化模式編譯:

./waf configure -d optimized
2. 真實的實驗

仿真場景(腳本)可以直接寫在ns-3下的scratch/ 或src/ndnSIM/examples文件夾內(這兩個里有重名怎么辦?似乎 scratch 里的都是.cc,src/ndnSIM/examples里的是.cpp)。但更推薦的是寫在和 ns-3、ndnSIM都不相關的倉庫(repository)里。
例如:http://github.com/cawka/ndnSIM-scenario-template:

mkdir ndnSIM
cd ndnSIM

git clone https://github.com/named-data-ndnSIM/ns-3-dev.git ns-3
git clone https://github.com/named-data-ndnSIM/pybindgen.git pybindgen
git clone --recursive https://github.com/named-data-ndnSIM/ndnSIM.git ns-3/src/ndnSIM  /*如果已經下載過 ndn 資源就不用重復這三行了*/

# Build and install NS-3 and ndnSIM
cd ns-3
./waf configure -d optimized
./waf
sudo ./waf install

cd ..  /*跳轉到 ns-3外面*/
git clone https://github.com/named-data-ndnSIM/scenario-template.git scenario
cd scenario
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
./waf configure
./waf --run <scenario>

這個例子只是提供了在 ns-3外寫腳本的一個路徑配置和安排(腳本在哪里,數據存哪里,圖片存哪里,等),可以不管……
弄懂怎么寫腳本、改源碼之后再優化。

還有一些小的坑,也不是人人都會遇到,先不寫啦

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,702評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,615評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,606評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,044評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,826評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,227評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,307評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,447評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,992評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,807評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,001評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,550評論 5 361
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,243評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,667評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,930評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,709評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,996評論 2 374

推薦閱讀更多精彩內容