On this page, we will try to summarize current ns-3 development work. If you are interested in collaborating on one of these projects, or reviewing work by others, please do not hesitate to contact the individuals identified.
There are a few other places to look for current activity on ns-3 development:
- the current release page will list code under consideration for merging, and bugs being worked. The next release, ns-3.19 release, is scheduled for December 2013.
- we should have entries for all of our known bugs in the Bugzilla bug tracker.
- Related projects list some active and past projects that are associated with ns-3.
- We maintain a suggested project ideas page for people interested in trying to start something new, or finish off some existing work.
- We conduct code review discussions on the Google Group 'ns-3-reviews'
- 1 How to get involved
- 2 Code reviews
- 3 Roadmap
- 4 Development for main trunk of ns-3
- 4.1 ns-3 core
- 4.2 Device and channel models
- 4.2.1 Optical network: WDM, PON and RoF
- 4.2.2 Miscellaneous wifi enhancements
- 4.2.3 Patch to pause and resume an interface
- 4.2.4 802.11 model extensions
- 4.2.5 Wireless Interference (Jamming) Model
- 4.2.6 Vehicular Ad Hoc Networks (VANET)
- 4.2.7 ns-3, 802.15.4 + 6LoWPAN
- 4.2.8 LTE
- 4.3 Link layer
- 4.4 MPLS
- 4.5 Network layer
- 4.6 Transport layer
- 4.7 Application layer
- 4.8 Visualization
- 4.9 Miscellaneous
- 5 Build system and project infrastructure
How to get involved
ns-3 always can use more time and assistance from contributors of all skill levels. One of the best ways to learn a tool is to try to get involved in its development processes, even if it is as simple as pointing out stale information or documentation on our web pages. Ideas on how to get started are on our project ideas page.
If you are new to ns-3 and want to contribute code, please read these guidelines: Contributing to ns-3 and review the information on this page below.
Note: ns-3 developers sometimes hang out on IRC at #ns-3 at irc.freenode.net.
Also, please check out the Current events page to learn of upcoming events for ns-3.
All new code (other than maintenance code committed directly by a module's maintainer) goes through a public code review. The process is described here. This page is devoted to listing code reviews that have been publicly announced.
- TCP Window Scale and Timestamps"
- Announce (Nov 11, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-November/011477.html
- Code review: https://codereview.appspot.com/24900043/
- PGBR routing protocol and extension of topology-read module
- Announce (Oct 21, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-October/011455.html
- Code review: https://codereview.appspot.com/15530043/
- UAN WOSS
- Announce (Oct 14, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-October/011446.html
- Code review: https://codereview.appspot.com/14677043/
- Wifi MPDU Aggregation
- Announce (October 8, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-August/011394.html
- Code review: https://codereview.appspot.com/14549044/
- Null message parallel scheduler
- Announce (Oct 1, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-October/011432.html
- Code review: https://codereview.appspot.com/14234043
- GSoC WAVE MAC Code reviews
- Announce (Sept 27, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-September/011429.html
- GSoC LTE Code reviews
- Announce (Sept 26, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-September/011427.html
- Epidemic routing
- Announce (Sept 24, 2013): http://mailman.isi.edu/pipermail/ns-developers/2013-September/011426.html
- Code review: https://codereview.appspot.com/13831049/
- Announce (was announced in ns-3.18 timeframe, and held back)
- Code review: https://codereview.appspot.com/10945044
- Time units
- Code review: https://codereview.appspot.com/14632043/
Older code reviews can be found here: http://www.nsnam.org/wiki/Ns-3.18#additional_new_feature_reviews
- Code review: https://codereview.appspot.com/4747046/
- Simple wireless
- Code review: https://codereview.appspot.com/1587041/show
In 2013-14, the project is focusing on the following initiatives:
- modular build system
- Already done: bake is now a build system for DCE, and is included in ns-allinone-3.18
- Remains to be done: use bake to make ns-3 libraries more modular (per the wiki page above)
- starting and stopping of objects
- Already done: Base class of ns3::Object has been patched, and Start/Stop has been deconflicted from object initialization
- To be done: Make our core objects (Nodes and NetDevices) and protocol models do reasonable things when "Start" and Stop" methods are called on them.
- merge of the Direct Code Execution framework
- Already done: DCE is part of ns-3; the current release as of October 2013 is DCE 1.1
- data collection and experiment control frameworks
- Already done: Initial capabilities of this module were merged to the ns-3.18 release.
- To be done: Add statistical processing, dump output to databases
Development for main trunk of ns-3
Some of these projects are active, some dormant, but all seem oriented towards merging with the main trunk of ns-3 if they can be finished off.
Multi-threaded simulation implementation for multicore
- ns-developers post: http://mailman.isi.edu/pipermail/ns-developers/2009-July/006197.html
- code location: http://code.nsnam.org/guillaume/ns-3-multithreading/
- status: ns-3.11 merge?
Linux namespaces and ns-3
- summary: Tom Goff has contributed code and documentation about how to use ns-3 with Linux namespaces.
- code location: See the below wiki page.
- background: HOWTO use Linux namespaces with ns-3
- status: A version of this was merged to the latest CORE network emulator release.
Device and channel models
Optical network: WDM, PON and RoF
Miscellaneous wifi enhancements
- code location: http://codereview.appspot.com/65051
- reviewer(s): Mathieu Lacage
- status: Some of these pieces made it into ns-3.5-- others are pending
- background: http://groups.google.com/group/ns-3-reviews/browse_thread/thread/f0b36d7373421a7d#
Patch to pause and resume an interface
- code location: http://codereview.appspot.com/62054
- reviewer(s): TBD
- status: reimplemented in a more general way, see Object Start Stop Specification
802.11 model extensions
There are several efforts ongoing to extend the ns-3 Wifi model.
Harmonization with ns-2 802.11 Ext models
- summary: ns-2.33 added a new 802.11 model with much more detailed channel modeling. An effort has been started to port over reusable components from that implementation to ns-3's wifi model, while reusing already implemented basic components. The goal is a harmonization of the 802.11 models of ns-2 and ns-3. Leading aim is to support research on vehicular networks. Planned near-term features:
- Equalizing PHY models including capture effects, user-definable coding rates (e.g. 5.9 GHz from 802.11p)
- EDCA QoS extensions of 802.11e
- Already finished features:
- Nakagami/Rayleigh propagation loss model
- ns-developers post: http://mailman.isi.edu/pipermail/ns-developers/2008-November/004936.html
- code location: http://idlebox.net/2008/ns-3-wifi/code/ns-3-wifiex/
- status: under current active development. Time frame till this is completed: 4-5 month.
- summary: University of Florence (LART lab) has begun work on an 802.11n model for ns3. The main goal is to simulate the frame aggregation feature. In the future, they aim to implement the High Throughput terminal behaviour with MIMO technology. They plan to add, to ns-3's 802.11 model, the following 802.11n features:
- Frame Aggregation
- Block ACK
- HCF (EDCA and support for HCCA)
- HT terminal (also with protection modes)
Also interested to verify the 11n terminal throughput when are associated terminal of a/b/g standards.
- Already finished features (in ns-3.5):
- HCF, TXOP, Frame Aggregation
- Merged for ns-3.8:
- Block ACK
- code location:
http://code.nsnam.org/mirko/ns-3-80211nRepository has been removed.
- status: Frame aggregation and block ack merged already; Tommaso Pecorella announced his lab's next steps here. Current development is on hold.
Wireless Interference (Jamming) Model
- summary: Network Security Lab (NSL), University of Washington, Seattle has begun work on a wireless interference (jamming) model for ns3. The goal is to to enable researchers to use ns3 to study jamming and its mitigation methods.
- wiki page: NS-3 wireless jamming model
- code location: http://codereview.appspot.com/1055041/show
- status: Public review.
Vehicular Ad Hoc Networks (VANET)
- summary: Michele Weigle's group is working on VANET and has posted a patch for review in the past, but has taken it off the table for ns-3 merge consideration until more work is done.
- code location: None publicly posted at this time.
ns-3, 802.15.4 + 6LoWPAN
Tommaso Pecorella announced his plans here
Current status is:
- RPL implementation (storing, multicast): 5th refactoring going on. Moving responsibility to ParentSet and MeasureCollectors for metrics other than HC.
- RPL is based on draft-ietf-roll-rpl-19
- Objective functions implemented are of0 and minrank-hysteresis-of
- 6LoWPAN has been merged in ns-3-dev and will be included in ns-3.19.
- 802.15.4 will rely on the lr-wpan module (currently being implemented by Boeing).
- A patch to the lr-wpan code to enable its use with 6LoWPAN (and the full IPv6 stack) has been created. The patch adds a number of functionalities to the module and will be either included in lr-wpan or provided as a separate patch.
A wiki page will be created before 3.19 release to explain in detail the current implemented functionalities, the models limitations, the work status and provide a guide to setup a simple simulation.
Boeing is working on lr-wpan (IEEE 802.15.4-2006) support; details here.
In addition to the LENA project above, several developers expressed their interest in enhancing the LTE code initially developed within the GSoC 2010:
- Leo Razoumov announced possible interest in the following contributions:
- PHY model abstractions
- scheduling models
- mobility and traffic models
- Giuseppe Piro and his group (DEE, Politecnico di Bari) announced the intent to continue with the development of the LTE module, focusing mainly on the following MAC layer aspects:
- Marco Mezzavilla and his group (DEI, University of Padova) announced interest in working on the following, and have posted a repository in February 2011 details here:
- MAC layer
- traffic modelization
- Sandra Frei announced that a group is working on Evolved Packet System (EPS) support
- GTPv1-U (for the user plane)
- GTPv2-C (for the control plane)
- Diameter: Supported use cases: default- and dedicated bearer establishment
- NAS (ESM, EMM) A combined initial attach with a default bearer establishment. Dedicated bearer establishment
- X2AP HO without SGW relocation. Endmarker messages are not supported
- PMIPv6: PBU/PBA, LMA, MAG
802.21 media independent handover
- wiki page: NS-3 MIH implementation
- code location: http://code.nsnam.org/salumu/ns-3-mih/
- status: Dormant-- no merge plans announced.
- Submitted by: Andrey Churin
- code location: http://code.google.com/p/ns-3-shop/
- reviewer(s): None
- status: Project has moved to Google hosting.
IPv6 for ns-3
IPv6 has been integrated into ns-3. Starting from ns-3.14 it will be possible to use TCP and UDP over IPv6. Any further development will be done directly on the main development tree.
Whoever is still using the old repositories previously linked in this section (i.e., https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd/) should upgrade to the main ns-3 codebase as soon as possible.
API and functionality for marking TOS bytes in packets
- Submitted by: Antti Makela
- code location: http://www.nsnam.org/bugzilla/show_bug.cgi?id=897
- reviewer(s): None
- status: Need to consider whether this fits into the Linux netfilter support that is planned
- Submitted by: Yufei Cheng
- status: Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html
- Submitted by: Hemanth Narra
- code location: http://codereview.appspot.com/1668042/show
- status: Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html
- Submitted by: Juan Pablo Poujade
- code location: http://mailman.isi.edu/pipermail/ns-developers/2010-February/007419.html
- reviewers: none officially
- status: Waiting for guidance on how TCP congestion control variants will be implemented in general
NS-3 module for MPTCP (Multipath TCP). The current release is compatible with 3.8 version of NS-3. A check of the compatibility with the latest version is needed.
- Submitted by: Bachir CHIHANI
- code location: http://code.google.com/p/mptcp-ns3/
Codel, fq_codel in ns-3
- Submitted by: Andrew Mcgregor
- Code location: http://codereview.appspot.com/6463048
- Mailing list post: http://mailman.isi.edu/pipermail/ns-developers/2012-August/010572.html
- Reviewers: Tom Henderson and Mathieu Lacage
- Submitted by: Harjot Gill
- code location: http://codereview.appspot.com/180107/show
- reviewers: Mathieu Lacage, Tom Henderson
- background: http://mailman.isi.edu/pipermail/ns-developers/2009-December/007222.html
- status: Dormant for a while
Synchronous posix/sockets API
- summary: An ns-3 "process" environment
- ns-developers post: http://mailman.isi.edu/pipermail/ns-developers/2008-April/003912.html
- code location: http://code.nsnam.org/mathieu/ns-3-simu
- status: still in development
real-world application integration
- summary: port of quagga routing to ns-3
- wiki page: Real World Application Integration
- code location: http://code.nsnam.org/lj/quagga-porting/
- status: Was developed by Liu Jian, Google Summer of Code. Portions of this code are planned for a future release (ns-3.8 or later) when ns-3-simu is merged.
ns-3-simu sockopt patches
- code location: Four patches listed in http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html
- reviewer(s): TBD
- status: review requested on June 22
- background: http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html
- Summary: An implementation of Pastry within ns-3. Including some experimental key-based routing API.
- Developers: Robert Nitsch and Dominic Scheurer (Technische Universität Darmstadt).
- Code location: https://bitbucket.org/r_nitsch/ns-3-pastry/ (old repository: https://bitbucket.org/r_nitsch/libpastry/)
- Doxygen documentation: http://libpastry.robertnitsch.de
- 2012-01-22: Re-integrated the code into ns-3 source tree (ns-3.13).
- Mostly finished.
- Node arrival process needs some tweaking.
- Review needed. (We're going to request one as soon as we're ready.)
Jeremy Norman and the iNSpect team have posted some plans for a visualization library for ns-3:
George Riley has made a prototype animator for PointToPoint links.
Joe Kopena is working on what he calls a "decorator" http://code.nsnam.org/tjkopena/
Hagen Paul Pfeifer is working on a MANET visualizer http://nv.dev.jauu.net/
Graphical simulation builder
Pierre Weiss and Sebastien Vincent have written an ns-3 scenario generator in Qt.
- Mercurial download: http://svnet.u-strasbg.fr/hg/ns-3-generator/
| NetExplorer is Gnome/Gtk network animation tool for NS-3.
L2 Ethernet switch module
- ns-developers post: http://groups.google.com/group/ns-3-users/browse_thread/thread/0091ac611dde1928#
- status: No code yet, starting development.
Parallel simulations (2008)
- summary: ns-3 extensions for parallelization
- wiki page: Parallel Simulations
- code location: http://code.nsnam.org/pfeifer/ns-3-para/
- status: dormant since 2008 Google Summer of Code
Delay Box for ns-3
Matt Crinklaw is working on a port of ns-2 DelayBox to ns-3.
- summary: http://www.isi.edu/nsnam/ns/doc/node247.html (from ns-2 documentation)
- code location: http://freehg.org/u/mlaw
- status: No status update recently. Dormant.
Simulation Configuration and State Detection
In order to configure simulations across multiple, probably virtualized, machines a large amount of configuration must be performed in order to construct the component systems. The oppportunity for human error to creep in during this process renders it essentially manually unworkable for all but the simplest topologies. Craig Dowell is thinking about how to address this problem.
Build system and project infrastructure
Modular build and package management
This issue is being tracked (requirements and wish list) on this page
State of Doxygen
Need to bring Doxygen into compliance (no errors, no warnings for missing documentation).
- investigate hooking code coverage (lcov) into the report
- investigate how the whole buildbot farm may be made available to a maintainer to test out a non-ns-3-dev repo.
Code contribution guidance
Tom took action item to simplify and clarify the project code contribution guidelines (for people wishing to contribute new code to ns-3).
Consider cleanup and move of samples/ directory to examples/?
Considering to refactor documentation to split the existing manual into a model library and a software core reference manual, to add a lighter-weight tutorial, and to add a "cookbook" of howtos for common ns-3 tasks.
Status: INRIA is organizing some updates to the website.