Skip to content

bupt-ipcr/RL4Net-TE

Repository files navigation

RL4Net: A Packet-Level Network Simulator for Reinforcement Learning Based Cognitive Routing

1. Introduction

1.1 Motivation

The RL4Net simulator is developed based on the OpenAI Gym and ns-3, which specializes in facilitating the training of reinforcement learning based algorithms for cognitive routing problems.

1.2 Architecture

The general architecture of the RL4Net is illustrated below:

drawing

RL4Net is composed of two functional blocks:

  • Environment: Environment is built on widely used ns3 network simulator ns3. We extend ns3 with six components:
    • Metric Extractor for computing quality metrics like delay and loss from ns3;
    • Computers for translating quality metrics to DRL state and reward;
    • Action Operator to get action commands from agent;
    • Action Executor for perform ns3 operations by actions;
    • ns3Env for transforming the ns3 object into DRL environment;
    • envInterface to translate between ns3 data and DRL factors.
  • Agent: Agent is container of a DRL-based cognitive routing algorithm. A agent can built on various deep learning frameworks like pyTorch and Tensorflow.

1.3 Folders

  • ./ns3-addon: Files to be copied into ns3 source file folder for extension. It includes:
    • ns3-src/action-executor: code for Action Executor
    • ns3-src/metric-extractor: code for Metric Extractor
    • rapidjson: an open source JSON parser and generator
    • ns3-scratch: several examples of experiments on RL4Net
  • ./ns3-env: File for ns3Env block. It cinludes:
    • env-interface: code for envInterface
    • ns3-python-connector: code for connecting python and ns3 c++
  • ./RL4Net-lib: Libaray files developed by us
  • ./TE-trainer: Files for traning agents
  • ./RLAgent: Files of agents

2. Installation

Attention: Switch to user root before installation is strongly recommended.

2.1 Download RL4Net

First of all, you should download RL4Net from Github:

git clone https://github.com/bupt-ipcr/RL4Net

by default, source code will be download into ./RL4Net folder.

2.2 Install dependent packages

To combine python and ns-3, RL4Net requires ZMQ and libprotoc. You can install as follow:

# to install protobuf-3.6 on ubuntu 16.04:
sudo add-apt-repository ppa:maarten-fonville/protobuf
sudo apt-get update
apt-get install libzmq5 libzmq5-dev
apt-get install libprotobuf-dev
apt-get install protobuf-compiler

Notice: libprotoc version is 3.6 if you download this way. The c++ file compiled will change at after version 3.7. Potential error will explain later.

2.3 Python requirements

Here we have requirements for python:

  • To use RL4Net-lib, you need python>=3.6 for f-string.

  • To test the project, module pytest is required you can install pytest by:

    pip install pytest -U
  • (Optional) create conda enviornment You can use conda help you to manage above by:

    conda create -n NAME python=VERSION

    which NAME means your environment name and valid VERSION for this project is 3.6 and 3.7.

  • (Required) Install pytorch and cuda using appropriate instructions
    You can checkout the install command in https://pytorch.org/
    It will help you manage pytorch and cuda.
    The recommended pytorch version is 1.4.0.

2.4 Install ns3

Since RL4Net is based on ns-3, you need to install ns-3 before use RL4Net.
The introcuction of ns-3 and how to install can be find at the official website of ns-3.
As a recommendation, you can:

  1. Install dependencies
    You can install ns-3 dependencies by following official guide.
  2. Use git to install ns-3-dev
    see: downloading-ns-3-using-git
    you can also install a specific version od ns-3, such as ns-3.30, but we prefer ns-3-dev.

Another possible guide is wiki of ns-3, see: wiki of installation

2.5 Install ns3 addon files

Now suppose you have successfuly installed ns-3-dev, you can start to install RL4Net.

As recommendation, deactivate your conda env before run setup script.
Conda may install libprotoc in your virtual environment with version >= 3.6, while your system libprotoc version is 3.6.
Thus when configure, protoc head file will read version >= 3.6 and when build, protoc head file will read libprotoc v3.6 and cause error.

python ns3_setup.py --wafdir=YOUR_WAFPATH

the YOUR_WAFPATH is correspond to the introduction of ns-3 installation, where you can execute ./waf build, typically ns-3-allinone/ns-3-dev. Remember to use absolute path.

The default value of wafdir is /ns-3-dev (notice it is subdir of '/'). As an alternative, you can copy the folder into /ns-3-dev, then run

python ns3_setup.py

2.6 Install pyns3

pyns3 is the python module that connect python and ns3. Use pip(or pip3) to install this module with your python env(maybe conda).

pip install ns3-env/ns3-python-connector

2.7 Install wjwgym

wjwgym is a lab that helps build reinforcement learning algorithms. See: Github
Install it with pip and your python env:

pip install RL4Net-lib/wjwgym-home

The lab need numpy, torch and tensorboard. You can pre-install them, especially pytorch, by which you can choose pip/conda.

2.8 Validate installation and run an test

The test file can help you check if you have every in place. You can run test by:

pytest

inside folder RL4Net, it will automatically detect test files.
You can also specify file like:

pytest test_installation.py

Contact

Jun Liu (liujun@bupt.edu.cn), Beijing University of Posts and Telecommunications, China

About

RL4Net Simulator - A simulator of reinforcement learning algorithm research for networking

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy