【Ubuntu】ns-3を使えるようにするまでの手順
はじめに
この記事は、Ubuntuでns-3を使えるようにするまでの手順を大まかにざっくりとまとめたものになります。
私の動作環境
- Ubuntu 24.04.2 LTS (64-bit)
ns-3のバージョン
ns-3ってなんやねん
ns-3はオープンソースの離散事象ネットワークシミュレータであり、GNU GPLv2ライセンスの下で無償で利用可能です。柔軟性が高く、ユーザーが独自のモジュールを追加することで、さまざまなネットワーク技術や新しいプロトコルのシミュレーションを行うことができます。これにより、実機での実験が困難な大規模ネットワークや、まだ実装されていない新技術の理論的検証を行うことができます。
公式のホームページを確認したい人は、以下のリンクから飛ぶことができます。
ns-3を導入する
必要なものをインストールする
まずは、以下のコマンドでシステムを最新の状態に更新します。
sudo apt update && sudo apt upgrade -y
次に、以下のコマンドを実行し、シミュレーションを行うにあたって必要なものをインストールします。
sudo apt install -y build-essential python3 python3-dev python3-pip libsqlite3-dev libgsl-dev libboost-all-dev libxml2-dev gdb valgrind tcpdump
ここで、sudo apt install python3
を実行すると、最新のPython3系バージョンがインストールされます。
私のPCにインストールされたPython3のバージョン
しかし、今回はns-3.35との動作実績や互換性の観点から3.9系のPythonを使用します。
そのため、以下の記事を参考にさせていただき、deadsnakesというPPA(個人パッケージアーカイブ)から3.9系のPythonを別途インストールしました。
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.9 python3.9-dev python3.9-distutils libpython3.9-dev
これで3.9系のPythonをインストールすることができました。
私のPCにインストールされたPython3.9のバージョン
ns-3を使用できるようにする
必要なものをインストールしたら、作業を行いたい場所に移動しましょう。
cd ~
移動したら、以下のコマンドで公式のホームページからns-3をダウンロードします。
wget https://www.nsnam.org/releases/ns-allinone-3.35.tar.bz2
ダウンロードしたら、ファイルを展開します。
tar xjf ns-allinone-3.35.tar.bz2
展開したら、ns-3.35のディレクトリまで移動します。
cd ns-allinone-3.35/ns-3.35
ここで、C++ソースコードに修正を加えます。ns-3のコード内部ではuint32_t
のような固定幅整数型が頻繁に使われており、これらは#include <cstdint>
というヘッダーファイルで定義されています。そのため、以下の3つのC++ソースコードにこのヘッダーファイルを追加記述します。
src/network/utils/bit-serializer.h
src/network/utils/bit-deserializer.h
src/wifi/model/block-ack-type.h
bit-serializer.h
の修正
好きなエディタでソースコードを編集しましょう。
nano src/network/utils/bit-serializer.h
#include <vector>
の下に#include <cstdint>
を追加します。
#include <vector>
#include <cstdint> // ← この行を追加
bit-deserializer.h
の修正
nano src/network/utils/bit-deserializer.h
#include <deque>
の下に#include <cstdint>
を追加します。
#include <deque>
#include <cstdint> // ← この行を追加
block-ack-type.h
の修正
nano src/wifi/model/block-ack-type.h
#include <vector>
の下に#include <cstdint>
を追加します。
#include <vector>
#include <cstdint> // ← この行を追加
修正したら、Python 3.9を指定して、configure
(ビルド設定)を実行します。
PYTHON=python3.9 ./waf configure
成功したら、以下のコマンドでwafスクリプトを実行します。wafスクリプトを実行することで、ns-3のソースコードをコンパイルし、実行可能なシミュレータを生成することができます。
./waf build
成功したら、ns-3に初めから付属しているサンプルを実行してみます。
./waf --run scratch-simulator
サンプルファイルの中身
#include "ns3/core-module.h"
using namespace ns3;
NS_LOG_COMPONENT_DEFINE ("ScratchSimulator");
int
main (int argc, char *argv[])
{
NS_LOG_UNCOND ("Scratch Simulator");
Simulator::Run ();
Simulator::Destroy ();
}
「Hello World」的なサンプルということですね。
正常に実行できている
これでUbuntuでns-3を使えるようになりました!
さいごに
ここまで記事を読んでくださり、ありがとうございました!
今回は、Ubuntuでns-3を利用できるようにする方法について紹介しました。
ns-3を利用することで、さまざまなネットワーク環境のシミュレーションを効果的に行うことができます。
私もまだまだ不慣れなので、地道に触りながら学んでいきたいです。
皆さんも素敵なハッピーns-3ライフを!!!🌸
Discussion