Skip to main content

Installation Guide: NS3 Gym (Reinforcement Learning) on Ubuntu

If you're diving into reinforcement learning (RL) simulations using NS-3 and OpenGym, this step-by-step guide is exactly what you need. In this tutorial, we will walk you through the installation process of NS3-Gym (also known as OpenGym) with NS-3.40 on Ubuntu 24.04.

Whether you're a researcher, student, or developer working on AI-driven network simulation, this guide will help you get started with minimal errors.

Complete installation is available in the following Video



✅ System Requirements

  • Operating System: Ubuntu 24.04 LTS

  • Network Simulator: ns-allinone-3.40


🛠️ Step 1: Install All Required Dependencies

Open your terminal and execute the following commands one by one:

$ sudo apt update
$ sudo apt install g++ python3 cmake ninja-build git gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 tcpdump wireshark sqlite3 libsqlite3-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools openmpi-bin openmpi-common openmpi-doc libopenmpi-dev doxygen graphviz imagemagick python3-sphinx dia imagemagick texlive dvipng latexmk texlive-extra-utils texlive-latex-extra texlive-font-utils libeigen3-dev gsl-bin libgsl-dev libgslcblas0 libxml2 libxml2-dev libgtk-3-dev lxc-utils lxc-templates vtun uml-utilities ebtables bridge-utils libxml2 libxml2-dev libboost-all-dev ccache python3-full python3-pip $ sudo apt install libzmq5 libzmq3-dev libprotobuf-dev protobuf-compiler pkg-config

These packages are essential to build and run NS3 with OpenGym support.


📦 Step 2: Download and Build NS3 (ns-allinone-3.40)

Download the NS3 source from the official site:

🔗 Download ns-allinone-3.40.tar.bz2

After downloading, move it to your home directory and extract it:

Right-click > Extract Here

Then in your terminal:

$ cd ns-allinone-3.40/ $ ./build.py --enable-examples --enable-tests

This step may take a while, depending on your system. Wait until the build completes.


🤖 Step 3: Clone and Integrate ns3-gym (OpenGym)

In a new terminal, run:

$ cd ns-allinone-3.40/ns-3.40/contrib $ git clone https://github.com/tkn-tub/ns3-gym.git ./opengym $ cd opengym $ git checkout app-ns-3.36+ $ cd ../../ $ ./ns3 configure --enable-examples $ ./ns3 build

If the build finishes without errors, congratulations! You’re ready to start running RL simulations.


🧪 Step 4: Install ns3gym (Python3 Module)

$ cd ns-allinone-3.40/ns-3.40/contrib/opengym $ sudo apt install python3-full $ python3 -m venv ns3gym-venv $ source ./ns3gym-venv/bin/activate $ pip3 install ./model/ns3gym

You’re now ready to run sample reinforcement learning scripts!


🧬 Run Example Scripts

Run a quick test to verify the setup:

$ cd examples/opengym $ ./simple_test.py

Or, run the NS3 simulation and Gym agent in two separate terminals.

Terminal 1:

$ cd ns-allinone-3.40/ns-3.40 $ ./ns3 run "opengym"

Terminal 2:

$ cd ns-allinone-3.40/ns-3.40/contrib/opengym/examples/opengym/ $ ./test.py --start=0

📡 Bonus: RL for TCP Congestion Control

🎥 Watch the demo here (Members only)


Unlock advanced NS3 simulations using reinforcement learning in network protocols.


🙌 Wrap-Up

With this setup, you can now begin developing and testing AI-powered networking solutions using NS3-Gym on Ubuntu 24.04. If you found this guide helpful:

Like,
Subscribe, and
Join for more advanced NS3 + RL content!

Stay tuned for upcoming tutorials on deep reinforcement learning, custom environments, and more!


Keywords for SEO: NS3-Gym installation Ubuntu 24.04, NS3.40 Reinforcement Learning, OpenGym setup, install ns3-gym, network simulator 3 gym, AI in networking simulations, RL in NS3, ns3 opengym configuration, Python gym NS3 integration.

Comments

Popular posts from this blog

Installing ns3 in Ubuntu 22.04 | Complete Instructions

In this post, we are going to see how to install ns-3.36.1 in Ubuntu 22.04. You can follow the video for complete details Tools used in this simulation: NS3 version ns-3.36.1  OS Used: Ubuntu 22.04 LTS Installation of NS3 (ns-3.36.1) There are some changes in the ns3 installation procedure and the dependencies. So open a terminal and issue the following commands Step 1:  Prerequisites $ sudo apt update In the following packages, all the required dependencies are taken care and you can install all these packages for the complete use of ns3. $ sudo apt install g++ python3 python3-dev pkg-config sqlite3 cmake python3-setuptools git qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools gir1.2-goocanvas-2.0 python3-gi python3-gi-cairo python3-pygraphviz gir1.2-gtk-3.0 ipython3 openmpi-bin openmpi-common openmpi-doc libopenmpi-dev autoconf cvs bzr unrar gsl-bin libgsl-dev libgslcblas0 wireshark tcpdump sqlite sqlite3 libsqlite3-dev  libxml2 libxml2-dev libc6-dev libc6-dev-i386 libc...

Installation of NS2 in Ubuntu 22.04 | NS2 Tutorial 2

NS-2.35 installation in Ubuntu 22.04 This post shows how to install ns-2.35 in Ubuntu 22.04 Operating System Since ns-2.35 is too old, it needs the following packages gcc-4.8 g++-4.8 gawk and some more libraries Follow the video for more instructions So, here are the steps to install this software: To download and extract the ns2 software Download the software from the following link http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.35/ns-allinone-2.35.tar.gz/download Extract it to home folder and in my case its /home/pradeepkumar (I recommend to install it under your home folder) $ tar zxvf ns-allinone-2.35.tar.gz or Right click over the file and click extract here and select the home folder. $ sudo apt update $ sudo apt install build-essential autoconf automake libxmu-dev gawk To install gcc-4.8 and g++-4.8 $ sudo gedit /etc/apt/sources.list make an entry in the above file deb http://in.archive.ubuntu.com/ubuntu/ bionic main universe $ sudo apt update Since, it...

Installation of NS2 (ns-2.35) in Ubuntu 20.04

Installation of NS2 (ns-2.35) in Ubuntu 20.04 LTS Step 1: Install the basic libraries like      $] sudo apt install build-essential autoconf automake libxmu-dev Step 2: install gcc-4.8 and g++-4.8 open the file using sudo mode $] sudo nano /etc/apt/sources.list Include the following line deb http://in.archive.ubuntu.com/ubuntu bionic main universe $] sudo apt update $] sudo apt install gcc-4.8 g++-4.8 Step 3:  Unzip the ns2 packages to home folder $] tar zxvf ns-allinone-2.35.tar.gz $] cd ns-allinone-2.35/ns-2.35 Modify the following make files. ~ns-2.35/Makefile.in Change @CC@ to gcc-4.8 change @CXX@ to g++-4.8 ~nam-1.15/Makefile.in ~xgraph-12.2/Makefile.in ~otcl-1.14/Makefile.in Change in all places  @CC@ to gcc-4.8 @CPP@ or @CXX@ to g++-4.8 open the file: ~ns-2.35/linkstate/ls.h Change at the Line no 137  void eraseAll() { erase(baseMap::begin(), baseMap::end()); } to This void eraseAll() { this->erase(baseMap::begin(), baseMap::end()); } All changes ...