LoginSignup
5
2

More than 5 years have passed since last update.

ndnSIMドキュメント ~環境構築編~

Last updated at Posted at 2017-04-21

1. このドキュメントについて

ndnSIM公式ドキュメントはここにあります。
ほとんどは公式ドキュメントで事は済むのですが、インストール、シミュレーションの実行辺りの説明が少し不親切なので、備忘録がてらメモしました。
また、ndnSIMの日本語の公式ドキュメントは存在しないので、ndnSIMを使いたいという皆さんのために少しでも役立てば、と考えて書きました。

2. シミュレーション環境について

現在のところ、LinuxもしくはmacOSしかサポートしてないようです。
公式ドキュメントではLinuxはUbuntuしかサポートしていないようなことを言っていますが、CentOSでもきちんと動きました。
ndnSIMはns-3のNDNモジュールなので、ns-3が動作する環境なら(ほぼ)どこでも動作すると思います。

今回のドキュメントは筆者の都合上、CentOSでndnSIMを動かすことを仮定して話を進めていきます。
その他の環境で動かそうを考えている方はコマンドを適宜読み替えてください(^^)

3. ndnSIMのインストール&セットアップ手順

公式ドキュメントのGetting Startedを参考に進めていきます。

3-1. 依存ライブラリ(特にbzip2とBoost)のインストール

ndnSIMはBoostを使用します。
ただ、Boostのバージョンは1.54以上でないといけないので、最新のBoostライブラリを取ってきてマシンにインストールします。
ですが、Linuxの場合はbzip2を解凍するライブラリが無いため、まずbzip2のライブラリをインストールすることから始めます。
ターミナルで以下のコマンドを打ち込んでbzip2ライブラリをインストールします。

wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar zxf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
sudo make PREFIX=/usr/local CFLAGS="-fPIC -O2 -g" install

次にBoostライブラリをインストールします。

wget http://downloads.sourceforge.net/project/boost/boost/1.64.0/boost_1_64_0.tar.bz2
tar jxf boost_1_64_0.tar.bz2
cd boost_1_64_0
./bootstrap.sh
sudo ./b2 --prefix=/usr/local install

Sudo権限を持っていない環境の場合はbzip2やBoostをインストールする先のPrefixを少々変更する必要があります。
詳しくは公式ドキュメントに委ねます。

その他の依存ライブラリは次のコマンドでインストールします。
(2017/05/14追記:epel-releaseをインストールします。cryptopp-develをインストールするためです。)

sudo yum install epel-release
sudo yum install gcc-g++ git sqlite-devel cryptopp-devel openssl-devel

オプショナルですが、ndnSIMでビジュアライザを動かしたい方はpythonの諸々のライブラリをインストール必要があります。
おしゃれなシミュレーションをしたい場合はぜひご利用ください(^^)

sudo yum install pygoocanvas python-kiwi graphviz-python
sudo yum install graphviz-devel
sudo yum install python-pip
sudo easy_install pygraphviz

(補足:上のコマンドだと「ファイルは存在しません」と怒られる場合があるので、適宜他のコマンドで同じことを実行してみてください…)

3-2. ndnSIMのダウンロード

次に今回の目的のndnSIMをマシンにダウンロードします。
ndnSIMのコードを置きたいディレクトリに移動し、以下のコマンドを打ち込んでください。

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

3-3. ndnSIMの実行

ndnSIMを動かす前に、まずndnSIMのコンフィグをしてからマシンにndnSIMのライブラリをインストールする必要があります。
ndnSIMは基本的にwafと呼ばれるソフトウェアを利用してコンフィグ、ビルド、そしてインストールをします。
以下のコマンドを叩きます。

cd ns-3
./waf configure --boost-includes=/usr/local/include --boost-libs=/usr/local/lib --enable-examples -d debug && ./waf && sudo ./waf install
sudo ldconfig

これでndnSIMを動かす環境は整いました。
まずシミュレーション例を動かしてみましょう。

./waf --run=ndn-simple

2017/05/14追記:上記のコマンドでシミュレーションが動かない場合は以下のように実行してください。

PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/include ./waf --run=ndn-simple

動いたら環境設定成功です!おめでとうございます!
動かなかったら地獄のデバック作業の始まりです。
その他の例はここにあるので遊んでみるといいと思います。

3-1.でpythonのライブラリを入れた方は以下のようにコマンドを実行することでビジュアライザとともにシミュレーションを動かすことができます。

./waf --run=ndn-simple --vis

3-4. scenario templateの利用

ndnSIM直下のns-3のファイルをいじって個々のシミュレーションファイルを作成することは推奨されていません
そのため、ndnSIMではscenarioと呼ばれる別ディレクトリを用意してそこに独自のシミュレーションファイルを入れます。
ここでは予め用意されているscenario templateをダウンロードし、そしてscenario templateを用いてシミュレーションする方法を記載します。
(実はここが一番面倒くさかった…。)

まずは以下のコマンドを実行してscenario templateをダウンロードしてください。

cd ..
git clone https://github.com/named-data-ndnSIM/scenario-template.git my-simulations
cd my-simulations

次に3-3.で行ったのと同じようにコンフィグします。

PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/include ./waf configure --debug

最後にシミュレーションの実行します。ここでは仮にsimulationというシミュレーションファイルを作成したとします。

PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/include ./waf --run=simulation

4. シミュレーションファイルの作成

ndnSIMは強力なAPIドキュメンテーションサイトを持っています。
このサイトを閲覧することでシミュレータ内で何が起こっているかが大体わかります。

シミュレーションファイル自体はmy-scenario/scenariosフォルダ内に置き、シミュレータ自体に何か手を加えたい場合はそのファイルをmy-scenario/extensionsフォルダ内に置き、シミュレーションします。

具体的なシミュレーションファイルの作成方法は別記事にまとめようと思います。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2