美文网首页安装配置的坑
面向纯小白的Ubuntu下 ndnSIM 2.2 安装教程

面向纯小白的Ubuntu下 ndnSIM 2.2 安装教程

作者: 布丁芝麻糊糊 | 来源:发表于2016-12-16 18:12 被阅读1017次

    主要翻译自官网教程, 补充了一点自己的理解。

    某些部分有点罗嗦,专供和曾经的我一样小白的同学参考。
    教程中涉及一些简单的 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外写脚本的一个路径配置和安排(脚本在哪里,数据存哪里,图片存哪里,等),可以不管……
    弄懂怎么写脚本、改源码之后再优化。

    还有一些小的坑,也不是人人都会遇到,先不写啦

    相关文章

      网友评论

      • _Cristina_:py27-goocanvas安装不成功。。。Google了一下,有人有类似问题,但是没有人回答

      本文标题:面向纯小白的Ubuntu下 ndnSIM 2.2 安装教程

      本文链接:https://www.haomeiwen.com/subject/vqwnmttx.html