This is an ns-3 3GPP NR module for the simulation of NR non-standalone cellular networks. Ns-3 is used as a base, on top of which we will add our module as plug-in (with limitations that will be discussed below).
We try to keep in sync with the latest advancements in ns-3-dev. By the version 1.0, we have upstreamed all our patches to ns-3-dev, making our module independent from the ns-3 version used.
To download a working copy of the ns-3-dev repository with the latest changes, you can do the following:
$ git clone [email protected]:nsnam/ns-3-dev.git # If you have an account in gitlab.com
$ cd ns-3-dev
Provide your username and password when asked. If you don't have an account
on gitlab.com, you can use https://gitlab.com/nsnam/ns-3-dev.git
as the
repository address.
Before v1.0, the NR module needed a custom ns-3-dev version. For those of you that are upgrading from v0.4 to v1.0, the steps to switch to the official ns-3 repository are the following (without recreating the repo configuration):
$ git remote add nsnam [email protected]:nsnam/ns-3-dev.git
$ git checkout master
$ git pull nsnam master
Anyway, we will make sure that the master of our custom ns-3-dev will stay up-to-date with respect to the official ns-3-dev.
In case you are already using the git mirror of ns-3-dev, hosted at GitHub or
GitLab, you are already ready to go (please make sure to be up-to-date with
git pull
in the master branch!).
To test the installation, after following one of the previous point, you can do a simple configuration and compile test (more options for that later):
$ ./waf configure --enable-examples --enable-tests
$ ./waf
A success for both previous commands indicates an overall success.
As a precondition to the following steps, you must have a working local git repository of ns-3-dev. If that is the case, then, your local git repo is ready to include our nr module (only for authorized users):
$ cd contrib
$ git clone [email protected]:cttc-lena/nr.git
$ cd ..
Please note that the contrib/nr directory will be listed as "Untracked files" every
time you do a git status
command. Ignore it, as the directory lives as an
independent module. As a result, we have now two parallel repository, but one
lives inside the other.
Let's configure the project:
$ ./waf configure --enable-examples --enable-tests
If the NR module is recognized correctly, you should see "nr" in the list of built modules. If that is not the case, then most probably the previous point failed. Otherwise, you could compile it:
$ ./waf
If that command returns successfully, Welcome to the NR world !
We assume that your work lives in a separate branch, and that the 'master' branch of the NR repository is left untouched as the first time you downloaded it. If it is not the case, then please move all your work in a separate branch.
A vanilla 'master' branch can be updated by simply running:
$ cd ns-3-dev/contrib/nr # or src/nr if the module lives under src/
$ git checkout master
$ git pull
At each release, we will incorporate into the master branch all the work that is meant to be released.
We maintain two sources of documentation: a user manual, and the Doxygen API documentation. The user manual describes the models and their assumptions; as we developed the module while the standard was not fully available, some parts are not modeling precisely the bits and the procedures indicated by the standard. However, we tried to abstract them accurately. In the Doxygen API documentation, you will find details about design and user usage of any class of the module, as well as description and images for the examples and the tests.
To build the user manual, please do:
$ cd doc
$ make latexpdf
And you fill find the PDF user manual in the directory build/latex. Please note
that you may have to install some requirements to build the documentation; you
can find the list of packages for any Ubuntu-based distribution in the file
.gitlab-ci.yml
.
To build the doxygen documentation, please do:
$ python3 doc/m.css/doxygen/dox2html5.py doc/doxygen-mcss.conf --debug
And then you will find the doxygen documentation inside doc/doc/html/
.
Please note that you may need to initialize the m.css submodule, and
to install some packages like python3.
To see the features, please go to the official webpage.
An updated list of published papers that are based on the outcome of this module is available here.
The Mobile Networks group in CTTC is a group of 10 highly skilled researchers, with expertise in the area of mobile and computer networks, ML/AI based network management, SDN/NFV, energy management, performance evaluation. Our work on performance evaluation started with the design and development of the LTE module of ns-3.
We are on the web.
In alphabetical order:
- Zoraze Ali
- Biljana Bojovic
- Lorenza Giupponi
- Katerina Koutlia
- Sandra Lagen
- Natale Patriciello
Inspired by [mmWave module by NYU/UniPD] (https://github.com/nyuwireless-unipd/ns3-mmwave)
This software is licensed under the terms of the GNU GPLv2, as like as ns-3. See the LICENSE file for more details.