matteonerini / 5g-network-slicing-for-wifi-networks

5G Network Slicing for Wi-Fi Networks
GNU General Public License v3.0
52 stars 22 forks source link
5g network-simulator network-slicing ns-3 wi-fi wifi wifi-network

5G Network Slicing for Wi-Fi Networks

This code package is related to the paper:

M. Nerini and D. Palma, "5G Network Slicing for Wi-Fi Networks," 2021 IFIP/IEEE International Symposium on Integrated Network Management (IM), 2021.

If you use this code or any modified part of it, please cite our paper. An extended version of the paper is also available here.

Introduction

This project aims to provide a framework to develop and evaluate network slicing techniques for Wi-Fi networks. We provide a customizable Wi-Fi indoor scenario, realized with the ns-3 network simulator (version ns-3.30), in which several mobile Stations (STAs) are connected to an Access Point (AP) placed in the centre of a room. In general, the STAs have distinct performance requirements, and are grouped in different networks slices (e.g. eMBB, mMTC and URLLC).

On top of this scenario, we facilitate the implementation and the testing of radio resources allocation algorithms to realize network slicing in the radio access segment of Wi-Fi networks. In particular, three steps need to be followed:

Description

This repository contains Python codes which call the relative ns-3 C++ scripts, simulating the considered Wi-Fi scenario with different seeds and different initializations, if required.

To validate your own original network slicing algorithm through simulations you will need to use the files run_wifi.py and wifi.cc properly configured. Detailed instructions about it are provided in the Section Usage.

Instead, you can reproduce the results presented in the paper "5G Network Slicing for Wi-Fi Networks" with the additional files. More precisely:

Furthermore, the csv folder contains the outputs of the simulations generated by wifi_1ch.cc, wifi_static.cc and wifi_dynamic.cc, in form of .csv files. In order to parse and plot relevant information from them, three Python scripts are available:

Usage

In this section, you can find detailed instructions on how to use our framework to validate your network slicing algorithms through simulations in ns-3. First of all, execute the following steps to be able to use our codes:

Alternatively, you can download only the specific files you want to use and paste them in the scratch directory. Everything is now ready.

To launch a Python script, for example run_wifi.py, open a terminal in the scratch directory and type:

python ./run_wifi.py

Please, note that all the Python scripts contained in this repository are written in Python 2.7. Thus, you will need this version to run them.

Configuration of the run_wifi.py Script

Before to launch run_wifi.py, make sure to properly set all the available options, including the ns3_script variable. Once launched, run_wifi.py will call the ns-3 script indicated by ns3_script, and will create a .csv file in which the output of the simulations will be registered.

Configuration of the wifi.cc Script

The idea behind our framework is to create three wireless channels, one for each of the three network slices. Each channel is fully characterized by the following properties: the channel bandwidth, the channel number (given by the center frequency as in the ns-3 documentation), the Guard Interval (GI), the Modulation and Coding Scheme (MCS) index and the transmission power. Thus, your algorithm should output suitable values for these properties. To integrate a slicing technique, two functions in the wifi.cc script must be modified: