面向纯小白的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阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容