Site Overlay

在Ubuntu 20.04上安装NS3.38和NS3-gym

参考这篇博客,似乎NS3-gym已经进行了一些更新,NS3.36及以上的版本也可以正常编译运行NS3-gym并使用可视化了。

TL;DR

wget -O /tmp/ns3.38.sh "https://ns3.minaduki.dev/ns3.38.sh" && chmod +x /tmp/ns3.38.sh && /tmp/ns3.38.sh

安装依赖

NS3相关

sudo apt install gcc g++ python gcc g++ python3 python3-dev mercurial python3-setuptools git qt5-default gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gdb valgrind uncrustify doxygen graphviz imagemagick texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk python3-sphinx dia gsl-bin libgslcblas0 libgsl-dev flex bison libfl-dev tcpdump sqlite sqlite3 libsqlite3-dev libxml2 libxml2-dev cmake libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake libgtk2.0-0 libgtk2.0-dev vtun lxc libboost-all-dev libboost-filesystem-dev pkg-config sqlite3 cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake python3-pip

似乎新的NS3版本依赖于cppyy,可视化需要安装kiwi,因此:

pip3 install cppyy kiwi

NS3-gym相关

sudo apt install libzmq5 libzmq3-dev libprotobuf-dev protobuf-compiler

下载NS3.38

使用3.38版本是因为之前的测试结果,本来想使用3.36版本,但是在编译的时候似乎找不到protobuf的头文件,参考了这个issue因此使用了3.38版本。

cd ~
wget https://www.nsnam.org/releases/ns-allinone-3.38.tar.bz2
tar -jxvf ns-allinone-3.38.tar.bz2

编译测试NS3

cd ns-allinone-3.38
cd ns-3.38
./ns3 configure --enable-python-bindings --enable-test --enable-examples
./ns3

运行测试

./test.py -c core

运行可视化

./ns3 run third --vis

在此基础上安装ns3-gym

准备源码

mkdir -p ~/ns-allinone-3.38/ns-3.38/contrib
cd ~/ns-allinone-3.38/ns-3.38/contrib
git clone https://github.com/tkn-tub/ns3-gym.git ./opengym
cd opengym/
git checkout app-ns-3.36+

编译

cd ~/ns-allinone-3.38/ns-3.38
./ns3 configure --enable-python-bindings --enable-test --enable-examples
./ns3 build

安装python module

cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/
pip3 install --user ./model/ns3gym

运行测试

测试一:

cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/examples/opengym/
./simple_test.py

测试二:

# Terminal 1
cd ~/ns-allinone-3.38/ns-3.38
./ns3 run "opengym"
# Terminal 2
cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/examples/opengym/
./test.py --start=0

参考:https://github.com/tkn-tub/ns3-gym/tree/app

复制这些就行

编译

sudo apt install -y gcc g++ python gcc g++ python3 python3-dev mercurial python3-setuptools git qt5-default gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gdb valgrind uncrustify doxygen graphviz imagemagick texlive texlive-extra-utils texlive-latex-extra texlive-font-utils texlive-lang-portuguese dvipng latexmk python3-sphinx dia gsl-bin libgslcblas0 libgsl-dev flex bison libfl-dev tcpdump sqlite sqlite3 libsqlite3-dev libxml2 libxml2-dev cmake libc6-dev libc6-dev-i386 libclang-dev llvm-dev automake libgtk2.0-0 libgtk2.0-dev vtun lxc libboost-all-dev libboost-filesystem-dev pkg-config sqlite3 cmake libc6-dev libc6-dev-i386 libclang-6.0-dev llvm-6.0-dev automake python3-pip

sudo apt install -y libzmq5 libzmq3-dev libprotobuf-dev protobuf-compiler

pip3 install cppyy kiwi

cd ~
wget https://www.nsnam.org/releases/ns-allinone-3.38.tar.bz2
tar -jxvf ns-allinone-3.38.tar.bz2

mkdir -p ~/ns-allinone-3.38/ns-3.38/contrib
cd ~/ns-allinone-3.38/ns-3.38/contrib
git clone https://github.com/tkn-tub/ns3-gym.git ./opengym
cd opengym/
git checkout app-ns-3.36+

cd ~/ns-allinone-3.38/ns-3.38
./ns3 configure --enable-python-bindings --enable-test --enable-examples
./ns3 build

cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/
pip3 install --user ./model/ns3gym

测试

cd ~/ns-allinone-3.38/ns-3.38/
./test.py -c core
./ns3 run third --vis
cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/examples/opengym/
./simple_test.py
# Terminal 1
cd ~/ns-allinone-3.38/ns-3.38
./ns3 run "opengym"

# Terminal 2
cd ~/ns-allinone-3.38/ns-3.38/contrib/opengym/examples/opengym/
./test.py --start=0

2 thoughts on “在Ubuntu 20.04上安装NS3.38和NS3-gym

  1. ./ns3 run third –vis
    NS_ASSERT failed, cond=”uid != 0″, msg=”Assert in TypeId::LookupByName: ns3::VisualSimulatorImpl not found”, file=/home/fe1/ns-allinone-3.38/ns-3.38/src/core/model/type-id.cc, line=843
    NS_FATAL, terminating
    terminate called without an active exception
    Command ‘build/examples/tutorial/ns3.38-third-default –SimulatorImplementationType=ns3::VisualSimulatorImpl’ died with .

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据