This code integrates modules from two repositories along with other improvements to expand the functionality of wireless interfaces. This work aims to serve as a framework for simulation of scenarios integrating SDN on vehicular adhoc networks (VANET).
This repository uses library ofsoftswitch13 as a submodule. Therefore, to clone the repository, use:
git clone --recurse-submodules https://github.com/ogbautista/ns3-mmwave-sdn-vanet.git
To compile the ofsoftswitch13 library, follow this steps:
cd src/ofswitch13/lib/ofsoftswitch13
./boot.sh
./configure --enable-ns3-lib
make
Note: It is known that there are issues with gcc version > 7. This procedure was performed successfully with gcc 7.5.0
Once everything gets compiled, the static library libns3ofswitch13.a
file will be available under the ofswitch13/lib/ofsoftswitch13/udatapath
directory.
This is based on the mmWave version 2.0 module for the simulation of 5G mmWave cellular networks. A description of this module can be found on IEEExplore (open access).
The mmWave module for ns-3 can be used to simulate 5G cellular networks at mmWave frequencies. This module builds on top of the LTE one, and version 2.0 includes features such as:
- Support of a wide range of channel models, including the latest 3GPP model for frequency spectrum above 6 GHz. Ray tracing and measured traces can also be modeled.
- Custom PHY and MAC classes, inspired to the PHY and MAC of 3GPP NR. They support dynamic TDD, and are parameterized and highly customizable in order to be flexible enough for testing different designs.
- Custom schedulers for the dynamic TDD format
- Carrier Aggregation at the MAC layer
- Enhancements to the RLC layer with re-segmentation of packets for retransmissions
- Dual Connectivity with LTE base stations, with fast secondary cell handover and channel tracking
- Simulation of core network elements (with also the MME as a real node)
This is the OFSwitch13 module, which enhances the ns-3 Network Simulator with OpenFlow 1.3 capabilities, allowing ns-3 users to simulate Software-Defined Networks (SDN). This module implements the interface for interconnecting the ns-3 simulator to the OpenFlow 1.3 Software Switch for ns-3 (ofsoftswitch13) library. It is the library that, in fact, provides the switch implementation, the library for converting to/from OpenFlow 1.3 wire format, and the dpctl tool for configuring the switch from the console.
Please, visit the OFSwitch13 project homepage for detailed information on the module design, documentation, and how to get started tutorials. The code API documentation for the latest release of this project is available here.
The Ns2MobilityHelper was expanded to allow 3D mobility traces. For more information click here.
The cellular mmWave software is licensed under the terms of the GNU GPLv2 license, as well as ns-3. See the LICENSE file for more details. The OFSwitch13 module is free software, released under the BSD license (BSD-like for code from the original Stanford switch), and is publicly available for research, development, and use.
This information can be found in the official ns-3 repository.
- An overview
- Building ns-3
- Running ns-3
- Getting access to the ns-3 documentation
- Working with the development version of ns-3
Note: Much more substantial information about ns-3 can be found at http://www.nsnam.org
ns-3 is a free open source project aiming to build a discrete-event network simulator targeted for simulation research and education. This is a collaborative project.
The process of contributing to the ns-3 project varies with the people involved, the amount of time they can invest and the type of model they want to work on, but the current process that the project tries to follow is described here: http://www.nsnam.org/developers/contributing-code/
This README excerpts some details from a more extensive tutorial that is maintained at: http://www.nsnam.org/documentation/latest/
The code for the framework and the default models provided by ns-3 is built as a set of libraries. User simulations are expected to be written as simple programs that make use of these ns-3 libraries.
To build the set of default libraries and the example programs included in this package, you need to use the tool 'waf'. Detailed information on how use waf is included in the file doc/build.txt
However, the real quick and dirty way to get started is to type the command ./waf configure followed by ./waf (If errors occurred during the build process, type the following command CXXFLAGS="-Wall" ./waf configure followed by ./waf) in the the directory which contains this README file. The files built will be copied in the build/ directory.
The current codebase is expected to build and run on the set of platforms listed in the RELEASE_NOTES file.
Other platforms may or may not work: we welcome patches to improve the portability of the code to these other platforms.
On recent Linux systems, once you have built ns-3 (with examples disabled), it should be easy to run the sample programs with the following command:
./waf --run name-of-program
The source for a feww example programs can be found in the scratch/ directory or in the examples/ directory of the respective module.
Once you have verified that your build of ns-3 works by running the simple-point-to-point example as outlined in 4) above, it is quite likely that you will want to get started on reading some ns-3 documentation.
All of that documentation should always be available from the ns-3 website: http://www.nsnam.org/documentation/.
This documentation includes:
-
a tutorial
-
a reference manual
-
models in the ns-3 model library
-
a wiki for user-contributed tips: http://www.nsnam.org/wiki/
-
API documentation generated using doxygen: this is a reference manual, most likely not very well suited as introductory text: http://www.nsnam.org/doxygen/index.html
If you want to download and use the development version of ns-3, you need to use the tool 'mercurial'. A quick and dirty cheat sheet is included in doc/mercurial.txt but reading through the mercurial tutorials included on the mercurial website is usually a good idea if you are not familiar with it.
If you have successfully installed mercurial, you can get a copy of the development version with the following command: "hg clone http://code.nsnam.org/ns-3-dev"