https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&user=Robert&feedformat=atomNsnam - User contributions [en]2024-03-28T10:54:23ZUser contributionsMediaWiki 1.24.1https://www.nsnam.org/mediawiki/index.php?title=Current_Development&diff=6426Current Development2012-01-24T23:18:55Z<p>Robert: fixes dead link</p>
<hr />
<div>{{TOC}}<br />
<br />
On this page, we will try to maintain pointers to current ns-3 development work, and post some suggested project ideas. If you are interested in collaborating on one of these projects, please do not hesitate to contact the individuals identified.<br />
<br />
Much of the current activity is centered around the next release, which is ns-3.14 due in April 2012. The release page should list code that is under active review for merging: [[Ns-3.14 | ns-3.14 release page]]<br />
<br />
If you are new to ns-3 and want to contribute, please read these guidelines: [http://www.nsnam.org/developers/contributing-code/ Contributing to ns-3] and review the information on this page below. Please visit our [[Suggested_Projects]] page.<br />
<br />
'''Note:''' ns-3 developers sometimes hang out on IRC at #ns-3 at irc.freenode.net. <br />
<br />
We conduct many of our reviews at http://codereview.appspot.com. <br />
<br />
= Related projects =<br />
<br />
There are several projects under development that are integrating external libraries or frameworks with ns-3.<br />
<br />
== NSF Frameworks for ns-3 project ==<br />
<br />
A multi-year project funded by NSF to improve usability of ns-3. Please see [[NSF_Frameworks]] page.<br />
<br />
== PhySim-Wifi ==<br />
<br />
[http://dsn.tm.uni-karlsruhe.de/english/ns3-physim.php PhySim-Wifi] is a detailed and accurate implementation of the OFDM-based IEEE 802.11 standard, with higher fidelity at the physical layer than found in ns-3.<br />
<br />
== ns-3-Wireless-Planning ==<br />
<br />
[http://code.google.com/p/ns3-wireless-planning/wiki/Tutorial ns-3-Wireless-Planning] integrates two powerful applications: Radio Mobile (radio-systems simulator) and ns-3.<br />
<br />
== Synchronized emulation (Slicetime) ==<br />
<br />
The goal of the [http://www.comsys.rwth-aachen.de/projects/slicetime/ Slicetime] Project is to enable large-scale network emulation features by synchronizing the execution of a network simulator with virtual machines hosting arbitrary networking software. <br />
<br />
== the LTE-EPC Network Simulator (LENA) project ==<br />
<br />
A team of developers at CTTC (Nicola Baldo, Marco Miozzo, Manuel Requena, Jaume Nin) has [http://mailman.isi.edu/pipermail/ns-developers/2011-March/008734.html announced] the LENA (LTE/EPC Network simulAtor) project to be working in collaboration with Ubiquisys on an enhanced LTE module for ns-3.<br />
<br />
Links:<br />
* [http://www.ubiquisys.com/femtocell-media-press-releases-id-203.htm official press release from Ubiquisys' website]<br />
* [http://iptechwiki.cttc.es/LTE-EPC_Network_Simulator_%28LENA%29 Wiki]<br />
* [http://www.cttc.es/en/projects/private/project/lena.jsp official project page at CTTC]<br />
<br />
= Development for main trunk of ns-3 =<br />
<br />
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.<br />
<br />
== ns-3 core ==<br />
<br />
=== Multi-threaded simulation implementation for multicore ===<br />
<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2009-July/006197.html<br />
* ''code location'': http://code.nsnam.org/guillaume/ns-3-multithreading/<br />
* ''status'': ns-3.11 merge?<br />
<br />
=== Linux namespaces and ns-3 ===<br />
<br />
* ''summary'': Tom Goff has contributed code and documentation about how to use ns-3 with Linux namespaces.<br />
* ''code location'': See the below wiki page.<br />
* ''background'': http://www.nsnam.org/wiki/index.php/HOWTO_use_Linux_namespaces_with_ns-3<br />
* ''status'': Working on integration of this capability with the [http://cs.itd.nrl.navy.mil/work/core/index.php CORE network emulator]. Some form of this will likely be merged with ns-3 and CORE in the future. <br />
<br />
== Device and channel models ==<br />
<br />
=== Miscellaneous wifi enhancements ===<br />
<br />
* ''code location'': http://codereview.appspot.com/65051<br />
* ''reviewer(s)'': Mathieu Lacage<br />
* ''status'': Some of these pieces made it into ns-3.5-- others are pending<br />
* ''background'': http://groups.google.com/group/ns-3-reviews/browse_thread/thread/f0b36d7373421a7d#<br />
<br />
=== Patch to pause and resume an interface ===<br />
<br />
* ''code location'': http://codereview.appspot.com/62054<br />
* ''reviewer(s)'': TBD<br />
* ''status'':<br />
<br />
=== 802.11 model extensions ===<br />
<br />
There are several efforts ongoing to extend the ns-3 Wifi model.<br />
<br />
==== Harmonization with ns-2 802.11 Ext models ====<br />
* ''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:<br />
** Equalizing PHY models including capture effects, user-definable coding rates (e.g. 5.9 GHz from 802.11p)<br />
** EDCA QoS extensions of 802.11e<br />
* Already finished features:<br />
** Nakagami/Rayleigh propagation loss model<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-November/004936.html<br />
* ''code location'': http://idlebox.net/2008/ns-3-wifi/code/ns-3-wifiex/<br />
* ''status'': under current active development. Time frame till this is completed: 4-5 month.<br />
<br />
==== 802.11n ====<br />
<br />
* ''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:<br />
** Frame Aggregation<br />
** Block ACK<br />
** HCF (EDCA and support for HCCA)<br />
** TXOP<br />
** HT terminal (also with protection modes)<br />
** MIMO<br />
Also interested to verify the 11n terminal throughput when are associated terminal of a/b/g standards.<br />
* Already finished features (in ns-3.5):<br />
** HCF, TXOP, Frame Aggregation<br />
* Merged for ns-3.8:<br />
** Block ACK<br />
* ''code location'': <s>http://code.nsnam.org/mirko/ns-3-80211n</s> Repository has been removed.<br />
* ''status'': Frame aggregation and block ack merged already; Tommaso Pecorella announced his lab's next steps [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008303.html here]. Current development is on hold.<br />
<br />
=== Wireless Interference (Jamming) Model ===<br />
<br />
* ''summary'': [http://www.ee.washington.edu/research/nsl/faculty/radha/ 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.<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_wireless_jamming_model<br />
* ''code location'': http://codereview.appspot.com/1055041/show<br />
* ''status'': Public review.<br />
<br />
=== Vehicular Ad Hoc Networks (VANET) ===<br />
<br />
* ''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.<br />
* ''code location'': None publicly posted at this time.<br />
<br />
=== ns-3, 802.15.4 + 6LoWPAN ===<br />
<br />
Tommaso Pecorella announced his plans [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008304.html here]<br />
<br />
Current status is:<br />
* RPL implementation (storing, multicast): almost finished, will be posted for public discussion soon.<br />
** RPL is based on [http://tools.ietf.org/wg/roll/ draft-ietf-roll-rpl-19]<br />
** metrics implemented are of0 and minrank-hysteresis-of<br />
* 6LoWPAN implementation: a development repository is [http://code.nsnam.org/tpecorella/ns-3-6LoWPAN/ here]<br />
* 802.15.4 will rely on the lr-wpan module (currently being implemented by Boeing).<br />
<br />
Boeing is working on lr-wpan (IEEE 802.15.4-2006) support; details [[lr-wpan | here]].<br />
<br />
=== LTE ===<br />
<br />
In addition to the LENA project above, several developers expressed their interest in enhancing the LTE code initially developed within the GSoC 2010:<br />
<br />
* Leo Razoumov [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008467.html announced] possible interest in the following contributions:<br />
** MIMO<br />
** PHY model abstractions<br />
** scheduling models<br />
** mobility and traffic models <br />
* Giuseppe Piro and his group (DEE, Politecnico di Bari) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008469.html announced] the intent to continue with the development of the LTE module, focusing mainly on the following MAC layer aspects:<br />
** RRM<br />
** scheduling<br />
** AMC<br />
* Marco Mezzavilla and his group (DEI, University of Padova) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008483.html announced] interest in working on the following, and have posted a repository in February 2011 [http://mailman.isi.edu/pipermail/ns-developers/2011-February/008653.html details here]:<br />
** MAC layer<br />
** mobility<br />
** traffic modelization<br />
** MIMO<br />
* Sandra Frei [http://mailman.isi.edu/pipermail/ns-developers/2011-July/009195.html announced] that a group is working on Evolved Packet System (EPS) support<br />
** GTPv1-U (for the user plane)<br />
** GTPv2-C (for the control plane)<br />
** Diameter: Supported use cases: default- and dedicated bearer establishment<br />
** NAS (ESM, EMM) A combined initial attach with a default bearer establishment. Dedicated bearer establishment<br />
** X2AP HO without SGW relocation. Endmarker messages are not supported<br />
** PMIPv6: PBU/PBA, LMA, MAG<br />
<br />
== Link layer ==<br />
<br />
=== 802.21 media independent handover ===<br />
<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_MIH_implementation<br />
* ''code location'': http://code.nsnam.org/salumu/ns-3-mih/<br />
* ''status'': Dormant-- no merge plans announced.<br />
<br />
== MPLS ==<br />
<br />
* ''Submitted by'': Andrey Churin<br />
* ''code location'': http://code.google.com/p/ns-3-shop/<br />
* ''reviewer(s)'': None<br />
* ''status'': Project has moved to Google hosting. <br />
<br />
== Network layer ==<br />
<br />
=== IPv6 for ns-3 ===<br />
<br />
Note: the below is stale information but is kept in case it is useful for future developers. The below ns-3-ipv6-2nd is not on the current roadmap for merge to ns-3-dev. There are two groups working on implementing transport for IPv6 (see bug 1045). <br />
<br />
* ''summary'': Ipv6 support for ns-3<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-June/004283.html<br />
* ''code location'': hg clone https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd/<br />
* ''status'': ns-3.3 contains the first merge (Ipv6Address) of this code. ns-3.7 and ns-3.8 will continue to add features. Here is a tentative roadmap: http://mailman.isi.edu/pipermail/ns-developers/2009-July/006211.html<br />
<br />
=== API and functionality for marking TOS bytes in packets ===<br />
<br />
* ''Submitted by:'' Antti Makela<br />
* ''code location:'' http://www.nsnam.org/bugzilla/show_bug.cgi?id=897<br />
* ''reviewer(s):'' None<br />
* ''status:'' Need to consider whether this fits into the Linux netfilter support that is planned<br />
<br />
=== DSR routing ===<br />
<br />
* ''Submitted by:'' Yufei Cheng<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
=== DSDV routing ===<br />
<br />
* ''Submitted by:'' Hemanth Narra<br />
* ''code location:'' http://codereview.appspot.com/1668042/show<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
== Transport layer ==<br />
<br />
=== TCP Vegas ===<br />
<br />
* ''Submitted by:'' Juan Pablo Poujade<br />
* ''code location:'' http://mailman.isi.edu/pipermail/ns-developers/2010-February/007419.html<br />
* ''reviewers:'' none officially<br />
* ''status:'' Waiting for guidance on how TCP congestion control variants will be implemented in general<br />
<br />
=== Multipath TCP ===<br />
<br />
NS-3 module for [http://datatracker.ietf.org/wg/mptcp/charter/ MPTCP] (Multipath TCP). The current release is compatible with 3.8 version of NS-3.<br />
A check of the compatibility with the latest version is needed.<br />
<br />
* ''Submitted by:'' Bachir CHIHANI<br />
* ''code location:'' http://code.google.com/p/mptcp-ns3/<br />
<br />
== Application layer ==<br />
<br />
=== Chord/DHash DHT ===<br />
<br />
* ''Submitted by'': Harjot Gill<br />
* ''code location:'' http://codereview.appspot.com/180107/show<br />
* ''reviewers:'' Mathieu Lacage, Tom Henderson<br />
* ''background:'' http://mailman.isi.edu/pipermail/ns-developers/2009-December/007222.html<br />
* ''status:'' Dormant for a while<br />
<br />
=== Synchronous posix/sockets API ===<br />
<br />
* ''summary'': An ns-3 "process" environment<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003912.html<br />
* ''code location'': http://code.nsnam.org/mathieu/ns-3-simu<br />
* ''status'': still in development<br />
<br />
=== real-world application integration ===<br />
<br />
* ''summary'': port of quagga routing to ns-3<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Real_World_Application_Integration<br />
* ''code location'': http://code.nsnam.org/lj/quagga-porting/<br />
* ''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.<br />
<br />
=== ns-3-simu sockopt patches ===<br />
<br />
* ''code location'': Four patches listed in http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
* ''reviewer(s)'': TBD<br />
* ''status'': review requested on June 22<br />
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
<br />
=== Pastry ===<br />
<br />
* ''Summary:'' An implementation of [http://www.freepastry.org/ Pastry] within ns-3. Including some experimental key-based routing API.<br />
* ''Developers:'' Robert Nitsch and Dominic Scheurer ([https://www.tu-darmstadt.de/ Technische Universität Darmstadt]).<br />
* ''Code location:'' https://bitbucket.org/r_nitsch/ns-3-pastry/ (old repository: <nowiki>https://bitbucket.org/r_nitsch/libpastry/</nowiki>)<br />
* ''Doxygen documentation:'' http://libpastry.robertnitsch.de<br />
* ''Status:''<br />
** 2012-01-22: Re-integrated the code into ns-3 source tree (ns-3.13).<br />
** Mostly finished.<br />
** Node arrival process needs some tweaking.<br />
** Review needed. (We're going to request one as soon as we're ready.)<br />
<br />
== Visualization ==<br />
<br />
Jeremy Norman and the iNSpect team have posted some plans for a visualization library for ns-3:<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-March/003777.html<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-November/004914.html<br />
<br />
George Riley has made a [[NetAnim | prototype animator]] for PointToPoint links.<br />
<br />
Joe Kopena is working on what he calls a "decorator" http://code.nsnam.org/tjkopena/<br />
<br />
Hagen Paul Pfeifer is working on a MANET visualizer http://nv.dev.jauu.net/<br />
<br />
=== Graphical simulation builder ===<br />
<br />
Pierre Weiss and Sebastien Vincent have written an [[Ns3Generator| ns-3 scenario generator]] in Qt. <br />
* http://mailman.isi.edu/pipermail/ns-developers/2010-May/007998.html<br />
* Mercurial download: http://svnet.u-strasbg.fr/hg/ns-3-generator/<br />
<br />
=== NetExplorer ===<br />
<br />
[http://code.google.com/p/ns-3-shop/wiki/NetExplorer | NetExplorer] is Gnome/Gtk network animation tool for NS-3. <br />
<br />
== Miscellaneous == <br />
<br />
=== L2 Ethernet switch module ===<br />
<br />
* ''ns-developers post'': http://groups.google.com/group/ns-3-users/browse_thread/thread/0091ac611dde1928#<br />
* ''status'': No code yet, starting development.<br />
<br />
=== Parallel simulations (2008) ===<br />
<br />
* ''summary'': ns-3 extensions for parallelization<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Parallel_Simulations<br />
* ''code location'': http://code.nsnam.org/pfeifer/ns-3-para/<br />
* ''status'': dormant since 2008 Google Summer of Code<br />
<br />
=== Delay Box for ns-3 ===<br />
<br />
Matt Crinklaw is working on a port of ns-2 DelayBox to ns-3.<br />
* ''summary'': http://www.isi.edu/nsnam/ns/doc/node247.html (from ns-2 documentation)<br />
* ''code location'': http://freehg.org/u/mlaw<br />
* ''status'': No status update recently. Dormant.<br />
<br />
=== Simulation Configuration and State Detection ===<br />
<br />
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.<br />
<br />
[[SimulationConfiguration | Simulation Configuration]]<br />
<br />
= Build system and project infrastructure =<br />
<br />
== Modular build and package management ==<br />
<br />
This issue is being tracked (requirements and wish list) on [[App_Store_Technical_Requirements | this page]]<br />
<br />
== State of Doxygen ==<br />
<br />
Need to bring Doxygen into compliance (no errors, no warnings for missing documentation).<br />
<br />
== Buildbots ==<br />
<br />
* investigate hooking code coverage (lcov) into the report<br />
* investigate how the whole buildbot farm may be made available to a maintainer to test out a non-ns-3-dev repo. <br />
<br />
== Code contribution guidance ==<br />
<br />
Tom took action item to simplify and clarify the project code contribution guidelines (for people wishing to contribute new code to ns-3).<br />
<br />
== Samples directory ==<br />
<br />
Consider cleanup and move of samples/ directory to examples/?<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
== Website ==<br />
<br />
Status: INRIA is organizing some updates to the website.</div>Roberthttps://www.nsnam.org/mediawiki/index.php?title=Contributed_Code&diff=6425Contributed Code2012-01-24T23:18:11Z<p>Robert: fixes dead link</p>
<hr />
<div>{{TOC}}<br />
There are several ways to contribute code to ns-3:<br />
# [http://www.nsnam.org/developers/contributing-code/ Contribute to the main tree]<br />
# Send contributed code to one of the maintainers, for archiving on the project website (and listing here)<br />
# Maintain or archive your code at your own site and add a link here<br />
<br />
== Contributed code under review for the main tree ==<br />
<br />
The preferred place for contributed code to end up is in our main tree. See section 2 of the<br />
[[Current_Development]] page and [[ns-3.12 | current release page]] for a listing of all code that is under review for the main tree.<br />
<br />
== Contributed code in src/contrib ==<br />
<br />
Please note that the src/contrib/ directory in ns-3 is a place for experimental code or code that the maintainers have not yet committed to accepting into the main tree. Some ns-3 code (such as statistics code) started out by living in the src/contrib/ directory while it was being evaluated. This is an alternate target for contributing your code.<br />
<br />
== Contributed code not maintained by the project ==<br />
<br />
Not all code will end up being merged-- some is being maintained by third party sites or maintainers. This section can be used to list this other code. Note also that if you want the ns-3 project to maintain a tarball of your scripts or models for long-term archiving, we can list it here.<br />
<br />
{| border=1 cellspacing=0 cellpadding=3<br />
<br />
|+ Contributions<br />
! Contribution !! Contributor !! Status !! Link <br />
|-<br />
! Synchronized Network Emulation<br />
| RWTH Aachen || ns-3.7 version || [http://www.comsys.rwth-aachen.de/projects/slicetime/ project website] <br />
|-<br />
! NEMO/MIP simulator<br />
| Hajime Tazaki || announced [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008455.html here] || [http://code.nsnam.org/thehajime/ns-3-dce-quagga-umip/ code repository] <br />
|-<br />
! Content Addressable Networks DHT<br />
| Vijay K. Gurbani et al || announced [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008460.html here] || [https://open-innovation.alcatel-lucent.com/svn/ns-3-can code repository] <br />
|-<br />
! Pastry DHT Port<br />
| Charilaos Papadopoulos || early beta || [http://graphics.cs.aueb.gr/users/papado Personal Website] <br />
|-<br />
! Access point address manager<br />
| Francesco Malandrino || [http://www.nsnam.org/bugzilla/show_bug.cgi?id=471 details] || [http://www.nsnam.org/contributed/ap-address-manager.tar.bz2 Download ap-address-manager.cc/h] <br />
|-<br />
! Linux namespaces and ns-3<br />
| Tom Goff || demo code || [http://www.nsnam.org/wiki/index.php/HOWTO_use_Linux_namespaces_with_ns-3 wiki page] <br />
|}<br />
<br />
== Archived repositories ==<br />
<br />
These ns-3 repositories may be of interest to future users; many of them are prototypes that were never merged to the main tree and have been abandoned.<br />
<br />
* [http://www.nsnam.org/contributed/ns-3-swig.tar.bz2 SWIG bindings for ns-3 (Craig Dowell)]<br />
* [http://www.nsnam.org/contributed/ns-3-nam.tar.bz2 nam (ns-2 network animator) for ns-3 (Mathieu Lacage)]<br />
* [http://www.nsnam.org/contributed/ns-3-yans.tar.bz2 yans port to ns-3 (Mathieu Lacage)]<br />
* [http://www.nsnam.org/contributed/ns-3-netlink.tar.bz2 ns-3 netlink sockets (Liu Jian)]<br />
* [http://www.nsnam.org/contributed/quagga-porting.tar.bz2 quagga porting (Liu Jian)]<br />
* [http://www.nsnam.org/contributed/ns-3-para.tar.bz2 ns-3 parallelized branch (Hagen Paul Pfeifer)]<br />
* [http://www.nsnam.org/contributed/ns-3-para-mpi.tar.bz2 MPI infrastructure (Hagen Paul Pfeifer)]<br />
* [http://www.nsnam.org/contributed/ns-3-worker.tar.bz2 worker parallelization (Hagen Paul Pfeifer)]<br />
* [http://www.nsnam.org/contributed/ns-3-dev-http.tar.bz2 toy http model (Raj Bhattacharjea)]<br />
* [http://www.nsnam.org/contributed/ns-3-wifi-scanning.tar.bz2 experimental wifi scanning (Gustavo Carneiro)]</div>Roberthttps://www.nsnam.org/mediawiki/index.php?title=Installation&diff=6424Installation2012-01-24T22:53:11Z<p>Robert: fixes dead links</p>
<hr />
<div>{{TOC}}<br />
<br />
This is a detailed installation guide for ns-3. Basic installation instructions can be found in the [http://www.nsnam.org/docs/release/tutorial/html/index.html ns-3 tutorial] (see [http://www.nsnam.org/docs/release/tutorial/html/getting-started.html Getting Started chapter]).<br />
<br />
== Supported platforms ==<br />
<br />
ns-3 is primarily developed on GNU/Linux platforms, and the minimal requirements to run basic simulations are a gcc installation of gcc-3.4/g++-3.4 or greater, and python 2.4 or greater. <br />
<br />
ns-3 is supported on the following primary platforms:<br />
<br />
# Linux x86 gcc versions 4.1 through 4.6 and, 3.4.6.<br />
# Linux x86_64 gcc versions 4.6 through 4.1 and 3.4.6<br />
# MacOS X ppc and x86 (gcc 4.0.x and 4.2.x)<br />
# [http://www.cygwin.com Cygwin] gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized).<br />
<br />
By supported, we mean that the project tries to support most or all of the build options on these platforms unless there is a good reason to exclude the option; and at least the debug build will compile. If you intend to do serious work using ns-3, and are forced by circumstances to use a Windows platform, consider virtualization of a popular Linux platform. This may be more time-consuming than installing a minimal Cygwin, for example, but you end up with a fully functional Linux system and ns-3 distribution. Some quick performance comparisons between Cygwin and VirtualBoxed Fedora 11 indicate that examples can actually run faster under VirtualBox.<br />
<br />
<br />
ns-3 may also run on currently unsupported platforms. For example, an alternative Windows platform is MinGW. There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not "officially" suppported. This means that bugs filed against MinGW will be addressed as time permits. Additionally, the Eclipse IDE is used by some developers, but the project does not actively support this environment.<br />
<br />
Additional maintainers are invited to make more platforms, compilers and environments supported.<br />
<br />
=== Windows ===<br />
<br />
There are three basic options for Windows support:<br />
<br />
# We provide HOWTO documents describing the process for installing Linux support and getting ns-3 running using two popular virtualization products: VirtualBox ([[HOWTO use VirtualBox to run simulations on Windows machines]]) and VMware ([[HOWTO use VMware to set up virtual networks (Windows)]]).<br />
# There is an experimental project, Ns3 on Windows, using Visual Studio 2010 [http://www.nsnam.org/wiki/index.php/Ns3_on_windows here]<br />
# [http://www.cygwin.com Cygwin] has been supported in the past: gcc 3.4.4 (debug only), gcc 4.3.2 (debug and optimized).<br />
<br />
An alternative Windows platform is MinGW. There are maintainers who attempt to keep a subset of ns-3 running on MinGW, but it is not "officially" suppported. This means that bugs filed against MinGW will be addressed as time permits.<br />
<br />
Cygwin can sometimes be problematic due to the way it actually does its emulation, and sometimes interactions with other Windows software can cause problems. If you do use Cygwin or MinGW; and use Logitech products, we will save you quite a bit of heartburn right off the bat and encourage you to take a look at the [http://oldwiki.mingw.org/index.php/FAQ MinGW FAQ].<br />
<br />
Search for "Logitech" and read the FAQ entry, "why does make often crash creating a sh.exe.stackdump file when I try to compile my source code." Believe it or not, the ``Logitech Process Monitor`` insinuates itself into every DLL in the system when it is running. It can cause your Cygwin or MinGW DLLs to die in mysterious ways and often prevents debuggers from running. Beware of Logitech software when using Cygwin.<br />
<br />
=== Eclipse ===<br />
<br />
The [http://www.eclipse.org Eclipse IDE] is not an officially supported platform, but some developers use it and have compiled a [https://www.nsnam.org/wiki/index.php/HOWTO_configure_eclipse_with_ns-3 HOWTO].<br />
<br />
=== ns-3 options ===<br />
<br />
There are a few options that are not enabled by default and are not available on all platforms. At the end of the configuration process (explained below), the status of these options are shown as detected by a '''waf''' script:<br />
<br />
<pre><br />
---- Summary of optional NS-3 features:<br />
Threading Primitives : enabled<br />
Real Time Simulator : enabled<br />
Emulated Net Device : enabled<br />
Tap Bridge : enabled<br />
GtkConfigStore : enabled<br />
XmlIo : enabled<br />
SQlite stats data output : enabled<br />
Network Simulation Cradle : enabled<br />
Python Bindings : enabled<br />
Python API Scanning Support : not enabled (Missing 'pygccxml' Python module)<br />
MPI Support : not enabled (option --enable-mpi not selected)<br />
Use sudo to set suid bit : not enabled (option --enable-sudo not selected)<br />
Build examples and samples : enabled<br />
Static build : not enabled (option --enable-static not selected)<br />
GNU Scientific Library (GSL) : enabled<br />
</pre><br />
<br />
Generally if the platform is missing some requirement for an option it is marked as "not enabled." Note that "disabled by user request" will be shown when the user explicitly disables a feature (such as "--disable-python"); and if a feature defaults to disabled this will also be noted (e.g., option --enable-sudo not selected).<br />
<br />
The table below is meant to help sort out the different features and on which platforms they are supported. This table reflects the status as of ns-3.9 and may have changed since then:<br />
<br />
{| border=1 cellspacing=0 cellpadding=3<br />
<br />
|+ Option status<br />
! Option !! Linux gcc-4.x,gcc-3.4.x !! OS X !! Cygwin<br />
|-<br />
! Optimized build <br />
| || || X <sup>1</sup><br />
|-<br />
! Python bindings<br />
| || || X <sup>2</sup><br />
|-<br />
! Threading<br />
| || ||<br />
|-<br />
! Real-time simulator<br />
| || X || X<br />
|-<br />
! Emulated Net Device<br />
| || X || X<br />
|-<br />
! Tap Bridge<br />
| || X || X<br />
|-<br />
! Network simulation cradle<br />
| note<sup>3</sup> || X || X<br />
|-<br />
! Static builds<br />
| || || <br />
<br />
|}<br />
<br />
''Key:'' '''( )'''(empty space) = supported; '''X''' = not supported; '''?''' = unknown; '''dev''' = support in ns-3-dev (next release)<br />
<br />
''Notes:''<br />
# Works with gcc4<br />
# Cygwin limitation explained [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings#Cygwin_limitation here]<br />
# NSC works best with gcc-3.4 or gcc-4.2 or greater series. Try to avoid gcc-4.0 and gcc-4.1 series; some build problems have been found with these versions of compilers.<br />
<br />
== Prerequisites ==<br />
<br />
The core of ns-3 requires a gcc/g++ installation of 3.4 or greater, and python 2.4 or greater. As mentioned above, different options require additional support. This is a list of packages (for Debian/Ubuntu systems) that are needed to support different ns-3 options. Note that other distributions (e.g., Fedora, FreeBSD) may have different package names or capitalization (e.g. ImageMagik). Installation should be similar for Red Hat/Fedora based systems, with "yum" replacing "apt-get", but some differences exist, so below is a guide for both Ubuntu (should generally apply to Debian) and Fedora/RedHat-based systems:<br />
<br />
=== Ubuntu/Debian ===<br />
<br />
The following list of packages should be accurate for Ubuntu 9.10 release; other releases or other Debian-based systems may slightly vary.<br />
<br />
* '''minimal requirements for C++ (release):''' This is the minimal set of packages needed to run ns-3 from a released tarball.<br />
<br />
sudo apt-get install gcc g++ python<br />
<br />
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.<br />
<br />
sudo apt-get install gcc g++ python python-dev<br />
<br />
* Mercurial is needed to work with ns-3 development repositories.<br />
<br />
sudo apt-get install mercurial<br />
<br />
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar<br />
<br />
sudo apt-get install bzr<br />
<br />
* Debugging:<br />
<br />
sudo apt-get install gdb valgrind <br />
<br />
* GNU Scientific Library (GSL) support for more accurate WiFi error models<br />
<br />
sudo apt-get install gsl-bin libgsl0-dev libgsl0ldbl<br />
<br />
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:<br />
<br />
sudo apt-get install flex bison<br />
<br />
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:<br />
<br />
sudo apt-get install g++-3.4 gcc-3.4<br />
<br />
* To read pcap packet traces<br />
<br />
sudo apt-get install tcpdump<br />
<br />
* Database support for statistics framework<br />
<br />
sudo apt-get install sqlite sqlite3 libsqlite3-dev<br />
<br />
* Xml-based version of the config store (requires libxml2 >= version 2.7)<br />
<br />
sudo apt-get install libxml2 libxml2-dev<br />
<br />
* A GTK-based configuration system<br />
<br />
sudo apt-get install libgtk2.0-0 libgtk2.0-dev<br />
<br />
* To experiment with virtual machines and ns-3<br />
<br />
sudo apt-get install vtun lxc<br />
<br />
* Support for utils/check-style.py code style check program<br />
<br />
sudo apt-get install uncrustify<br />
<br />
* Doxygen and related inline documentation:<br />
<br />
sudo apt-get install doxygen graphviz imagemagick<br />
sudo apt-get install texlive texlive-pdf texlive-latex-extra texlive-generic-extra texlive-generic-recommended<br />
<br />
* The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:<br />
<br />
sudo apt-get install python-sphinx dia texlive texlive-pdf texlive-latex-extra texlive-extra-utils texlive-generic-recommended<br />
<br />
* Support for Gustavo Carneiro's ns-3-pyviz visualizer<br />
<br />
sudo apt-get install python-pygraphviz python-kiwi python-pygoocanvas libgoocanvas-dev<br />
<br />
* Support for openflow module (requires some boost libraries)<br />
<br />
sudo apt-get install libboost-signals-dev libboost-filesystem-dev<br />
<br />
=== Fedora/RedHat ===<br />
<br />
The following list of packages should be accurate for Fedora 12/CentOS 5.4 release; other releases may slightly vary. <br />
<br />
* '''minimal requirements for C++ (release):''' This is the minimal set of packages needed to run ns-3 from a released tarball.<br />
<br />
yum install gcc gcc-c++ python<br />
<br />
* '''Note:''' If you are using CentOS 5.4 or RHEL 5, you may want to also get and use the gcc44 packages; see the [[Troubleshooting]] page.<br />
<br />
<br />
* '''minimal requirements for Python (release):''' This is the minimal set of packages needed to work with Python bindings from a released tarball.<br />
<br />
yum install gcc gcc-c++ python python-devel<br />
<br />
* Mercurial is needed to work with ns-3 development repositories.<br />
You may want to install mercurial from rpmforge repository (instructions [http://www.trinitycore.org/forum/mercurial-centos-t3113.html here]) or EPEL.<br />
<br />
yum install mercurial<br />
<br />
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar. You may need EPEL repository for this.<br />
<br />
yum install bzr<br />
<br />
* An optional but recommended package (for improving some wireless model fidelity) is GNU scientific library:<br />
<br />
yum install gsl gsl-devel<br />
<br />
* A GTK-based configuration system<br />
<br />
yum install gtk2 gtk2-devel<br />
<br />
* Debugging:<br />
<br />
yum install gdb valgrind <br />
<br />
* Doxygen and related inline documentation:<br />
<br />
yum install doxygen graphviz ImageMagick<br />
<br />
* The ns-3 manual and tutorial are written in reStructuredText for Sphinx (doc/tutorial, doc/manual, doc/models), and figures typically in dia:<br />
<br />
yum install python-sphinx dia texlive texlive-latex<br />
<br />
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:<br />
<br />
yum install flex bison<br />
<br />
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:<br />
<br />
yum install compat-gcc-34<br />
<br />
* To read pcap packet traces<br />
<br />
yum install tcpdump<br />
<br />
* Database support for statistics framework<br />
<br />
yum install sqlite sqlite-devel<br />
<br />
* Xml-based version of the config store (requires libxml2 >= version 2.7)<br />
<br />
yum install libxml2 libxml2-devel<br />
<br />
* Support for utils/check-style.py style check program<br />
<br />
yum install uncrustify<br />
<br />
=== Gentoo ===<br />
<br />
The following list of packages should be accurate for Gentoo as of 04/22/2010; due to possible changes in USE-flags or package names the list may slightly vary.<br />
First of all, become root as usual.<br />
<br />
* '''minimal requirements for C++ or Python (release):''' This is the minimal set of packages needed to run ns-3 or to work with Python bindings from a released tarball.<br />
<br />
USE="threads -nocxx nptl" emerge -uavN gcc python<br />
<br />
* Mercurial is needed to work with ns-3 development repositories.<br />
<br />
emerge -av --noreplace mercurial<br />
<br />
* Running python bindings from the ns-3 development tree (ns-3-dev) requires bazaar<br />
<br />
USE="curl" emerge -uavN bzr<br />
<br />
* A GTK-based configuration system<br />
<br />
emerge -av --noreplace gtk+:2<br />
<br />
* Debugging:<br />
<br />
emerge -av --noreplace gdb valgrind <br />
<br />
* Doxygen and related inline documentation; also ns-3 manual and tutorial (written in Texinfo):<br />
<br />
USE="extra graphics png" emerge -uavN texlive<br />
USE="cairo graphviz latex png svg" emerge -uavN doxygen imagemagick dia<br />
<br />
* The Network Simulation Cradle (nsc) requires the flex lexical analyzer and bison parser generator:<br />
<br />
emerge -av --noreplace flex bison<br />
<br />
* Some basic mobility visualization tests require goocanvas:<br />
<br />
emerge -av --noreplace goocanvas<br />
<br />
* To install gcc-3.4 for some Network Simulation Cradle (nsc) stacks:<br />
<br />
USE="-nocxx nptl" emerge -uavN gcc:3.4<br />
<br />
* To read pcap packet traces<br />
<br />
emerge -av --noreplace tcpdump<br />
<br />
or you may prefer<br />
<br />
emerge -av --noreplace wireshark<br />
<br />
* Database support for statistics framework<br />
<br />
USE="threadsafe" emerge -uavN sqlite:3<br />
<br />
* Xml-based version of the config store (requires libxml2 >= version 2.7)<br />
<br />
emerge -av --noreplace libxml2<br />
<br />
* Support for Gustavo's ns-3-pyviz visualizer (following packages have no stable version as of day of writing, so ~arch for ACCEPT_KEYWORDS)<br />
<br />
ACCEPT_KEYWORDS="~x86" emerge -av --noreplace pygraphviz kiwi pygoocanvas<br />
<br />
* Support for utils/check-style.py style check program<br />
<br />
ACCEPT_KEYWORDS="~x86" emerge -av --noreplace uncrustify<br />
<br />
* To summarize all of above up (without not yet stable pygraphviz, kiwi, pygoocanvas, uncrustify):<br />
USE="cairo curl extra graphics graphviz latex -nocxx nptl png svg threads threadsafe" emerge -uavN bison bzr dia doxygen flex gcc gcc:3.4 goocanvas gtk+:2 imagemagick libxml2 mercurial python sqlite:3 tcpdump texlive valgrind wireshark<br />
<br />
=== Mac OS X (Snow Leopard) ===<br />
<br />
Please see [[HOWTO_get_ns-3_running_on_Mac_OS_X_(10.6.2_Intel)]] and follow steps 1 and 2 (prerequisites) and continue reading below if you want to work with a released version, and follow all steps if you want to work with a development version of ns-3.<br />
<br />
== Installation ==<br />
<br />
The ns-3 code is available in Mercurial repositories on the server http://code.nsnam.org (look for the latest release e.g., "ns-3.4"). You can download a tarball of the latest release at http://www.nsnam.org/releases or you can work with our repositories using Mercurial. We recommend using Mercurial unless there's a good reason not to (See the end of this section for instructions on how to get a tarball release).<br />
<br />
The simplest way to get started using Mercurial repositories is to use the '''ns-3-allinone''' environment. This is a set of scripts that manages the downloading and building of various subystems of ns-3 for you. We recommend that you begin your ns-3 adventures in this environment as it can really simplify your life at this point.<br />
<br />
=== Downloading ns-3 Using Mercurial ===<br />
One practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories. If you adopt that approach, you can get a copy of ns-3-allinone by typing the following into your Linux shell (assuming you have installed Mercurial):<br />
<br />
cd<br />
mkdir repos<br />
cd repos<br />
hg clone http://code.nsnam.org/ns-3-allinone<br />
<br />
As the hg (Mercurial) command executes, you should see something like the following displayed,<br />
<br />
destination directory: ns-3-allinone<br />
requesting all changes<br />
adding changesets<br />
adding manifests<br />
adding file changes<br />
added 26 changesets with 40 changes to 7 files<br />
7 files updated, 0 files merged, 0 files removed, 0 files unresolved<br />
<br />
After the clone command completes, you should have a directory called ns-3-allinone under your ~/repos directory, the contents of which should look something like the following:<br />
<br />
build.py* constants.py dist.py* download.py* README util.py<br />
<br />
Notice that you really just downloaded some Python scripts. The next step will be to use those scripts to download and build the ns-3 distribution of your choice.<br />
<br />
If you go to the following link: http://code.nsnam.org/ you will see a number of repositories. Many are the private repositories of the ns-3 development team. The repositories of interest to you will be prefixed with '''ns-3'''. Official releases of ns-3 will be numbered as ns-3.release.hotfix. For example, a second hotfix to a still hypothetical release nine of ns-3 would be numbered as ns-3.9.2 on this page.<br />
<br />
The current development snapshot (unreleased) of ns-3 may be found at http://code.nsnam.org/ns-3-dev/. The developers attempt to keep these repository in consistent, working states but they are in a development area with unreleased code present, so you may want to consider staying with an official release if you do not need newly-introduced features.<br />
<br />
Since the release numbers are going to be changing, we will stick with the more constant ns-3-dev here, but you can replace the string ''ns-3-dev'' with your choice of release (e.g., ns-3.4) in the text below. You can find the latest version of the code either by inspection of the repository list or by going to the ''Getting Started'' web page and looking for the latest release identifier.<br />
<br />
To download the most common options type the following into your shell (remember you can substitute the name of your chosen release number instead of ns-3-dev)<br />
<br />
./download.py -n ns-3-dev<br />
<br />
After download process completes, you should have several new directories under ~/repos/ns-3-allinone:<br />
<br />
build.py* constants.pyc download.py* nsc/ README util.pyc<br />
constants.py dist.py* ns-3-dev/ pybindgen/ util.py<br />
<br />
Go ahead and change into ns-3-dev under your ~/repos/ns-3-allinone directory. You should see something like the following there:<br />
<br />
AUTHORS examples/ RELEASE_NOTES utils/ wscript<br />
bindings/ LICENSE samples/ VERSION wutils.py<br />
CHANGES.html ns3/ scratch/ waf*<br />
doc/ README src/ waf.bat*<br />
<br />
You are now ready to build the ns-3 distribution.<br />
<br />
=== Downloading ns-3 Using a Tarball ===<br />
<br />
The process for downloading ns-3 via tarball is simpler than the Mercurial process since all of the pieces are pre-packaged for you. You just have to pick a release, download it and decompress it.<br />
<br />
As mentioned above, one practice is to create a directory called '''repos''' in one's home directory under which one can keep local Mercurial repositories. One could also keep a tarballs directory. If you adopt the tarballs directory approach, you can get a copy of a release by typing the following into your Linux shell (substitute the appropriate version numbers, of course):<br />
<br />
cd<br />
mkdir tarballs<br />
cd tarballs<br />
wget http://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2<br />
tar xjf ns-allinone-3.6.tar.bz2<br />
<br />
If you change into the directory '''ns-allinone-3.6''' you should see a number of files:<br />
<br />
build.py* dist.py* ns-3-dev/ pybindgen/ util.py<br />
constants.py download.py* nsc/ README<br />
<br />
You are now ready to build the ns-3 distribution.<br />
<br />
== Building ns-3 with ns-3-allinone ==<br />
<br />
The first time you build the ns-3 project you should build using the allinone environment. This will get the project configured for you<br />
in the most commonly useful way.<br />
<br />
Change into the directory you created in the download section above. If you downloaded using Mercurial you should have a directory called ns-3-allinone under your ~/repos directory. If you downloaded using a tarball you should have a directory called something like ns-3-allinone-3.4 under your ~/tarballs directory. Type the following:<br />
<br />
./build.py<br />
<br />
You will see lots of typical compiler output messages displayed as the build script builds the various pieces you downloaded. Eventually you should see the following magic words:<br />
<br />
Build finished successfully (00:02:37)<br />
Leaving directory `./ns-3-dev'<br />
<br />
Once the project has built you typically will not use ns-3-allinone scripts. You will now interact directly with Waf and we '''do it in the ns-3-dev directory and not in the ns-3-allinone directory'''.<br />
<br />
=== Configuration with Waf ===<br />
<br />
To see valid configure options, type ./waf --help. The most important option is -d <debug level>. Valid debug levels (which are listed in waf --help) are: "debug" or "optimized". It is also possible to change the flags used for compilation with (e.g.): <br />
<br />
CXXFLAGS="-O3" ./waf configure <br />
<br />
or, alternately, the gcc compiler<br />
<br />
CXX=g++-3.4 ./waf configure<br />
<br />
'''Note:''' Unlike some other build tools, to change the build target, the option must be supplied during the configure stage rather than<br />
the build stage (i.e., "./waf -d optimized" will not work; instead, do<br />
<br />
./waf -d optimized configure; ./waf <br />
<br />
The resulting binaries are placed in build/<debuglevel>/srcpath. For example, in a debug build you can find the executable for the first.cc example as build/debug/examples/first. You can debug the executable directly by:<br />
<br />
./waf --shell<br />
cd build/debug/examples<br />
gdb first<br />
<br />
Of course, you can run gdb in emacs, or use your favorite debugger such as ddd or insight just as easily. In an optimized build you can find the executable for the first.cc example as build/optimized/examples/first.<br />
<br />
In order to forcibly disable python bindings, you can provide the following option:<br />
<br />
./waf --disable-python configure<br />
<br />
In order to tell the build system to use the sudo program to set the suid bit if required, you can provide the following option:<br />
<br />
./waf --enable-sudo configure<br />
<br />
To start over a configuration from scratch, type:<br />
<br />
./waf distclean<br />
<br />
Or if you get stuck and all else fails:<br />
<br />
rm -rf build<br />
<br />
followed by changing back into ns-3-allinone and doing:<br />
<br />
./build.py<br />
<br />
will basically reset your build state.<br />
<br />
To see all waf options:<br />
<br />
./waf --help<br />
<br />
== Validating ==<br />
<br />
ns-3 has unit tests that can be run to verify the installation:<br />
<br />
./test.py<br />
<br />
which should produce output like:<br />
<pre><br />
PASS: TestSuite histogram<br />
PASS: TestSuite ns3-wifi-interference<br />
PASS: TestSuite ns3-tcp-cwnd<br />
PASS: TestSuite ns3-tcp-interoperability<br />
PASS: TestSuite sample<br />
...<br />
</pre><br />
<br />
== Using Python ==<br />
<br />
See [http://www.nsnam.org/wiki/index.php/NS-3_Python_Bindings this page].<br />
<br />
== Troubleshooting ==<br />
<br />
See [http://www.nsnam.org/wiki/index.php/Troubleshooting this page].<br />
<br />
----<br />
[[User:Craigdo|Craigdo]] 04:40, 5 November 2009 (UTC)</div>Roberthttps://www.nsnam.org/mediawiki/index.php?title=Current_Development&diff=6418Current Development2012-01-21T23:44:57Z<p>Robert: updated Pastry project information</p>
<hr />
<div>{{TOC}}<br />
<br />
On this page, we will try to maintain pointers to current ns-3 development work, and post some suggested project ideas. If you are interested in collaborating on one of these projects, please do not hesitate to contact the individuals identified.<br />
<br />
Much of the current activity is centered around the next release, which is ns-3.14 due in April 2012. The release page should list code that is under active review for merging: [[Ns-3.14 | ns-3.14 release page]]<br />
<br />
If you are new to ns-3 and want to contribute, please read these guidelines: [http://www.nsnam.org/contributing.html Contributing to ns-3] and review the information on this page below. Please visit our [[Suggested_Projects]] page.<br />
<br />
'''Note:''' ns-3 developers sometimes hang out on IRC at #ns-3 at irc.freenode.net. <br />
<br />
We conduct many of our reviews at http://codereview.appspot.com. <br />
<br />
= Related projects =<br />
<br />
There are several projects under development that are integrating external libraries or frameworks with ns-3.<br />
<br />
== NSF Frameworks for ns-3 project ==<br />
<br />
A multi-year project funded by NSF to improve usability of ns-3. Please see [[NSF_Frameworks]] page.<br />
<br />
== PhySim-Wifi ==<br />
<br />
[http://dsn.tm.uni-karlsruhe.de/english/ns3-physim.php PhySim-Wifi] is a detailed and accurate implementation of the OFDM-based IEEE 802.11 standard, with higher fidelity at the physical layer than found in ns-3.<br />
<br />
== ns-3-Wireless-Planning ==<br />
<br />
[http://code.google.com/p/ns3-wireless-planning/wiki/Tutorial ns-3-Wireless-Planning] integrates two powerful applications: Radio Mobile (radio-systems simulator) and ns-3.<br />
<br />
== Synchronized emulation (Slicetime) ==<br />
<br />
The goal of the [http://www.comsys.rwth-aachen.de/projects/slicetime/ Slicetime] Project is to enable large-scale network emulation features by synchronizing the execution of a network simulator with virtual machines hosting arbitrary networking software. <br />
<br />
== the LTE-EPC Network Simulator (LENA) project ==<br />
<br />
A team of developers at CTTC (Nicola Baldo, Marco Miozzo, Manuel Requena, Jaume Nin) has [http://mailman.isi.edu/pipermail/ns-developers/2011-March/008734.html announced] the LENA (LTE/EPC Network simulAtor) project to be working in collaboration with Ubiquisys on an enhanced LTE module for ns-3.<br />
<br />
Links:<br />
* [http://www.ubiquisys.com/femtocell-media-press-releases-id-203.htm official press release from Ubiquisys' website]<br />
* [http://iptechwiki.cttc.es/LTE-EPC_Network_Simulator_%28LENA%29 Wiki]<br />
* [http://www.cttc.es/en/projects/private/project/lena.jsp official project page at CTTC]<br />
<br />
= Development for main trunk of ns-3 =<br />
<br />
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.<br />
<br />
== ns-3 core ==<br />
<br />
=== Multi-threaded simulation implementation for multicore ===<br />
<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2009-July/006197.html<br />
* ''code location'': http://code.nsnam.org/guillaume/ns-3-multithreading/<br />
* ''status'': ns-3.11 merge?<br />
<br />
=== Linux namespaces and ns-3 ===<br />
<br />
* ''summary'': Tom Goff has contributed code and documentation about how to use ns-3 with Linux namespaces.<br />
* ''code location'': See the below wiki page.<br />
* ''background'': http://www.nsnam.org/wiki/index.php/HOWTO_use_Linux_namespaces_with_ns-3<br />
* ''status'': Working on integration of this capability with the [http://cs.itd.nrl.navy.mil/work/core/index.php CORE network emulator]. Some form of this will likely be merged with ns-3 and CORE in the future. <br />
<br />
== Device and channel models ==<br />
<br />
=== Miscellaneous wifi enhancements ===<br />
<br />
* ''code location'': http://codereview.appspot.com/65051<br />
* ''reviewer(s)'': Mathieu Lacage<br />
* ''status'': Some of these pieces made it into ns-3.5-- others are pending<br />
* ''background'': http://groups.google.com/group/ns-3-reviews/browse_thread/thread/f0b36d7373421a7d#<br />
<br />
=== Patch to pause and resume an interface ===<br />
<br />
* ''code location'': http://codereview.appspot.com/62054<br />
* ''reviewer(s)'': TBD<br />
* ''status'':<br />
<br />
=== 802.11 model extensions ===<br />
<br />
There are several efforts ongoing to extend the ns-3 Wifi model.<br />
<br />
==== Harmonization with ns-2 802.11 Ext models ====<br />
* ''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:<br />
** Equalizing PHY models including capture effects, user-definable coding rates (e.g. 5.9 GHz from 802.11p)<br />
** EDCA QoS extensions of 802.11e<br />
* Already finished features:<br />
** Nakagami/Rayleigh propagation loss model<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-November/004936.html<br />
* ''code location'': http://idlebox.net/2008/ns-3-wifi/code/ns-3-wifiex/<br />
* ''status'': under current active development. Time frame till this is completed: 4-5 month.<br />
<br />
==== 802.11n ====<br />
<br />
* ''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:<br />
** Frame Aggregation<br />
** Block ACK<br />
** HCF (EDCA and support for HCCA)<br />
** TXOP<br />
** HT terminal (also with protection modes)<br />
** MIMO<br />
Also interested to verify the 11n terminal throughput when are associated terminal of a/b/g standards.<br />
* Already finished features (in ns-3.5):<br />
** HCF, TXOP, Frame Aggregation<br />
* Merged for ns-3.8:<br />
** Block ACK<br />
* ''code location'': <s>http://code.nsnam.org/mirko/ns-3-80211n</s> Repository has been removed.<br />
* ''status'': Frame aggregation and block ack merged already; Tommaso Pecorella announced his lab's next steps [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008303.html here]<br />
<br />
=== Wireless Interference (Jamming) Model ===<br />
<br />
* ''summary'': [http://www.ee.washington.edu/research/nsl/faculty/radha/ 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.<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_wireless_jamming_model<br />
* ''code location'': http://codereview.appspot.com/1055041/show<br />
* ''status'': Public review.<br />
<br />
=== Vehicular Ad Hoc Networks (VANET) ===<br />
<br />
* ''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.<br />
* ''code location'': None publicly posted at this time.<br />
<br />
=== ns-3, 802.15.4 + 6LoWPAN ===<br />
<br />
Tommaso Pecorella announced his plans [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008304.html here]<br />
<br />
Current status is:<br />
* RPL implementation (storing, multicast): almost finished, will be posted for public discussion soon.<br />
** RPL is based on [http://tools.ietf.org/wg/roll/ draft-ietf-roll-rpl-18]<br />
** metrics implemented are of0 and minrank-hysteresis-of<br />
* 6LoWPAN implementation: estimated to be completed in march-april<br />
* 802.15.4: working on it, can't really say right now.<br />
<br />
Boeing is working on lr-wpan (IEEE 802.15.4-2006) support; details [[lr-wpan | here]].<br />
<br />
=== LTE ===<br />
<br />
In addition to the LENA project above, several developers expressed their interest in enhancing the LTE code initially developed within the GSoC 2010:<br />
<br />
* Leo Razoumov [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008467.html announced] possible interest in the following contributions:<br />
** MIMO<br />
** PHY model abstractions<br />
** scheduling models<br />
** mobility and traffic models <br />
* Giuseppe Piro and his group (DEE, Politecnico di Bari) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008469.html announced] the intent to continue with the development of the LTE module, focusing mainly on the following MAC layer aspects:<br />
** RRM<br />
** scheduling<br />
** AMC<br />
* Marco Mezzavilla and his group (DEI, University of Padova) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008483.html announced] interest in working on the following, and have posted a repository in February 2011 [http://mailman.isi.edu/pipermail/ns-developers/2011-February/008653.html details here]:<br />
** MAC layer<br />
** mobility<br />
** traffic modelization<br />
** MIMO<br />
* Sandra Frei [http://mailman.isi.edu/pipermail/ns-developers/2011-July/009195.html announced] that a group is working on Evolved Packet System (EPS) support<br />
** GTPv1-U (for the user plane)<br />
** GTPv2-C (for the control plane)<br />
** Diameter: Supported use cases: default- and dedicated bearer establishment<br />
** NAS (ESM, EMM) A combined initial attach with a default bearer establishment. Dedicated bearer establishment<br />
** X2AP HO without SGW relocation. Endmarker messages are not supported<br />
** PMIPv6: PBU/PBA, LMA, MAG<br />
<br />
== Link layer ==<br />
<br />
=== 802.21 media independent handover ===<br />
<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_MIH_implementation<br />
* ''code location'': http://code.nsnam.org/salumu/ns-3-mih/<br />
* ''status'': Dormant-- no merge plans announced.<br />
<br />
== MPLS ==<br />
<br />
* ''Submitted by'': Andrey Churin<br />
* ''code location'': http://code.google.com/p/ns-3-shop/<br />
* ''reviewer(s)'': None<br />
* ''status'': Project has moved to Google hosting. <br />
<br />
== Network layer ==<br />
<br />
=== IPv4 fragmentation ===<br />
<br />
there are two implementations being reviewed:<br />
* http://codereview.appspot.com/4440051/<br />
* http://mailman.isi.edu/pipermail/ns-developers/2011-April/008850.html<br />
<br />
=== IPv6 for ns-3 ===<br />
<br />
Note: the below is stale information but is kept in case it is useful for future developers. The below ns-3-ipv6-2nd is not on the current roadmap for merge to ns-3-dev. There are two groups working on implementing transport for IPv6 (see bug 1045). <br />
<br />
* ''summary'': Ipv6 support for ns-3<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-June/004283.html<br />
* ''code location'': hg clone https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd/<br />
* ''status'': ns-3.3 contains the first merge (Ipv6Address) of this code. ns-3.7 and ns-3.8 will continue to add features. Here is a tentative roadmap: http://mailman.isi.edu/pipermail/ns-developers/2009-July/006211.html<br />
<br />
=== API and functionality for marking TOS bytes in packets ===<br />
<br />
* ''Submitted by:'' Antti Makela<br />
* ''code location:'' http://www.nsnam.org/bugzilla/show_bug.cgi?id=897<br />
* ''reviewer(s):'' None<br />
* ''status:'' Need to consider whether this fits into the Linux netfilter support that is planned<br />
<br />
=== DSR routing ===<br />
<br />
* ''Submitted by:'' Yufei Cheng<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
=== DSDV routing ===<br />
<br />
* ''Submitted by:'' Hemanth Narra<br />
* ''code location:'' http://codereview.appspot.com/1668042/show<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
== Transport layer ==<br />
<br />
=== TCP Vegas ===<br />
<br />
* ''Submitted by:'' Juan Pablo Poujade<br />
* ''code location:'' http://mailman.isi.edu/pipermail/ns-developers/2010-February/007419.html<br />
* ''reviewers:'' none officially<br />
* ''status:'' Waiting for guidance on how TCP congestion control variants will be implemented in general<br />
<br />
=== Multipath TCP ===<br />
<br />
NS-3 module for [http://datatracker.ietf.org/wg/mptcp/charter/ MPTCP] (Multipath TCP). The current release is compatible with 3.8 version of NS-3.<br />
A check of the compatibility with the latest version is needed.<br />
<br />
* ''Submitted by:'' Bachir CHIHANI<br />
* ''code location:'' http://code.google.com/p/mptcp-ns3/<br />
<br />
== Application layer ==<br />
<br />
=== Chord/DHash DHT ===<br />
<br />
* ''Submitted by'': Harjot Gill<br />
* ''code location:'' http://codereview.appspot.com/180107/show<br />
* ''reviewers:'' Mathieu Lacage, Tom Henderson<br />
* ''background:'' http://mailman.isi.edu/pipermail/ns-developers/2009-December/007222.html<br />
* ''status:'' Dormant for a while<br />
<br />
=== Synchronous posix/sockets API ===<br />
<br />
* ''summary'': An ns-3 "process" environment<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003912.html<br />
* ''code location'': http://code.nsnam.org/mathieu/ns-3-simu<br />
* ''status'': still in development<br />
<br />
=== real-world application integration ===<br />
<br />
* ''summary'': port of quagga routing to ns-3<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Real_World_Application_Integration<br />
* ''code location'': http://code.nsnam.org/lj/quagga-porting/<br />
* ''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.<br />
<br />
=== ns-3-simu sockopt patches ===<br />
<br />
* ''code location'': Four patches listed in http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
* ''reviewer(s)'': TBD<br />
* ''status'': review requested on June 22<br />
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
<br />
=== Pastry ===<br />
<br />
* ''Summary:'' An implementation of [http://www.freepastry.org/ Pastry] within ns-3. Including some experimental key-based routing API.<br />
* ''Developers:'' Robert Nitsch and Dominic Scheurer ([https://www.tu-darmstadt.de/ Technische Universität Darmstadt]).<br />
* ''Code location:'' https://bitbucket.org/r_nitsch/ns-3-pastry/ (old repository: <nowiki>https://bitbucket.org/r_nitsch/libpastry/</nowiki>)<br />
* ''Doxygen documentation:'' http://libpastry.robertnitsch.de<br />
* ''Status:''<br />
** 2012-01-22: Re-integrated the code into ns-3 source tree (ns-3.13).<br />
** Mostly finished.<br />
** Node arrival process needs some tweaking.<br />
** Review needed. (We're going to request one as soon as we're ready.)<br />
<br />
== Visualization ==<br />
<br />
Jeremy Norman and the iNSpect team have posted some plans for a visualization library for ns-3:<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-March/003777.html<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-November/004914.html<br />
<br />
George Riley has made a [[NetAnim | prototype animator]] for PointToPoint links.<br />
<br />
Joe Kopena is working on what he calls a "decorator" http://code.nsnam.org/tjkopena/<br />
<br />
Hagen Paul Pfeifer is working on a MANET visualizer http://nv.dev.jauu.net/<br />
<br />
=== Graphical simulation builder ===<br />
<br />
Pierre Weiss and Sebastien Vincent have written an [[Ns3Generator| ns-3 scenario generator]] in Qt. <br />
* http://mailman.isi.edu/pipermail/ns-developers/2010-May/007998.html<br />
* Mercurial download: http://svnet.u-strasbg.fr/hg/ns-3-generator/<br />
<br />
=== NetExplorer ===<br />
<br />
[http://code.google.com/p/ns-3-shop/wiki/NetExplorer | NetExplorer] is Gnome/Gtk network animation tool for NS-3. <br />
<br />
== Miscellaneous == <br />
<br />
=== L2 Ethernet switch module ===<br />
<br />
* ''ns-developers post'': http://groups.google.com/group/ns-3-users/browse_thread/thread/0091ac611dde1928#<br />
* ''status'': No code yet, starting development.<br />
<br />
=== Parallel simulations (2008) ===<br />
<br />
* ''summary'': ns-3 extensions for parallelization<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Parallel_Simulations<br />
* ''code location'': http://code.nsnam.org/pfeifer/ns-3-para/<br />
* ''status'': dormant since 2008 Google Summer of Code<br />
<br />
=== Delay Box for ns-3 ===<br />
<br />
Matt Crinklaw is working on a port of ns-2 DelayBox to ns-3.<br />
* ''summary'': http://www.isi.edu/nsnam/ns/doc/node247.html (from ns-2 documentation)<br />
* ''code location'': http://freehg.org/u/mlaw<br />
* ''status'': No status update recently. Dormant.<br />
<br />
=== Simulation Configuration and State Detection ===<br />
<br />
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.<br />
<br />
[[SimulationConfiguration | Simulation Configuration]]<br />
<br />
= Build system and project infrastructure =<br />
<br />
== Modular build and package management ==<br />
<br />
This issue is being tracked (requirements and wish list) on [[App_Store_Technical_Requirements | this page]]<br />
<br />
== State of Doxygen ==<br />
<br />
Need to bring Doxygen into compliance (no errors, no warnings for missing documentation).<br />
<br />
== Buildbots ==<br />
<br />
* investigate hooking code coverage (lcov) into the report<br />
* investigate how the whole buildbot farm may be made available to a maintainer to test out a non-ns-3-dev repo. <br />
<br />
== Code contribution guidance ==<br />
<br />
Tom took action item to simplify and clarify the project code contribution guidelines (for people wishing to contribute new code to ns-3).<br />
<br />
== Samples directory ==<br />
<br />
Consider cleanup and move of samples/ directory to examples/?<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
== Website ==<br />
<br />
Status: INRIA is organizing some updates to the website.</div>Roberthttps://www.nsnam.org/mediawiki/index.php?title=Current_Development&diff=5618Current Development2011-04-29T14:59:56Z<p>Robert: /* Application layer */ added information about a Pastry project a friend and me have been working on for a while now</p>
<hr />
<div>{{TOC}}<br />
<br />
On this page, we will try to maintain pointers to current ns-3 development work, and post some suggested project ideas. If you are interested in collaborating on one of these projects, please do not hesitate to contact the individuals identified.<br />
<br />
Much of the current activity is centered around the next release, which is ns-3.11 due in April 2011. The release page should list code that is under active review for merging: [[Ns-3.11 | ns-3.11 release page]]<br />
<br />
If you are new to ns-3 and want to contribute, please read these guidelines: [http://www.nsnam.org/contributing.html Contributing to ns-3] and review the information on this page below. Please visit our [[Suggested_Projects]] page.<br />
<br />
'''Note:''' ns-3 developers sometimes hang out on IRC at #ns-3 at irc.freenode.net. <br />
<br />
We conduct many of our reviews at http://codereview.appspot.com. <br />
<br />
= Reviews requested for ns-3 merge =<br />
<br />
The [[Ns-3.11 | ns-3.11 release page]] has the most recent list of things under review for merge.<br />
<br />
= NSF Frameworks for ns-3 project =<br />
<br />
A multi-year project funded by NSF to improve usability of ns-3. Please see [[NSF_Frameworks]] page.<br />
<br />
= Publicly announced development projects =<br />
<br />
== ns-3 core ==<br />
<br />
=== Multi-threaded simulation implementation for multicore ===<br />
<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2009-July/006197.html<br />
* ''code location'': http://code.nsnam.org/guillaume/ns-3-multithreading/<br />
* ''status'': ns-3.11 merge?<br />
<br />
=== Synchronized emulation ===<br />
<br />
* ''code location'': http://www.comsys.rwth-aachen.de/projects/slicetime/<br />
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2010-November/008488.html<br />
* ''status'': announced in Nov. 2010<br />
<br />
=== Linux namespaces and ns-3 ===<br />
<br />
* ''summary'': Tom Goff has contributed code and documentation about how to use ns-3 with Linux namespaces.<br />
* ''code location'': See the below wiki page.<br />
* ''background'': http://www.nsnam.org/wiki/index.php/HOWTO_use_Linux_namespaces_with_ns-3<br />
* ''status'': Working on integration of this capability with the [http://cs.itd.nrl.navy.mil/work/core/index.php CORE network emulator]. Some form of this will likely be merged with ns-3 and CORE in the future. <br />
<br />
== Device and channel models ==<br />
<br />
=== Miscellaneous wifi enhancements ===<br />
<br />
* ''code location'': http://codereview.appspot.com/65051<br />
* ''reviewer(s)'': Mathieu Lacage<br />
* ''status'': Some of these pieces made it into ns-3.5-- others are pending<br />
* ''background'': http://groups.google.com/group/ns-3-reviews/browse_thread/thread/f0b36d7373421a7d#<br />
<br />
=== Patch to pause and resume an interface ===<br />
<br />
* ''code location'': http://codereview.appspot.com/62054<br />
* ''reviewer(s)'': TBD<br />
* ''status'':<br />
<br />
=== 802.11 model extensions ===<br />
<br />
There are several efforts ongoing to extend the ns-3 Wifi model.<br />
<br />
==== Harmonization with ns-2 802.11 Ext models ====<br />
* ''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:<br />
** Equalizing PHY models including capture effects, user-definable coding rates (e.g. 5.9 GHz from 802.11p)<br />
** EDCA QoS extensions of 802.11e<br />
* Already finished features:<br />
** Nakagami/Rayleigh propagation loss model<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-November/004936.html<br />
* ''code location'': http://idlebox.net/2008/ns-3-wifi/code/ns-3-wifiex/<br />
* ''status'': under current active development. Time frame till this is completed: 4-5 month.<br />
<br />
==== 802.11n ====<br />
<br />
* ''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:<br />
** Frame Aggregation<br />
** Block ACK<br />
** HCF (EDCA and support for HCCA)<br />
** TXOP<br />
** HT terminal (also with protection modes)<br />
** MIMO<br />
Also interested to verify the 11n terminal throughput when are associated terminal of a/b/g standards.<br />
* Already finished features (in ns-3.5):<br />
** HCF, TXOP, Frame Aggregation<br />
* Merged for ns-3.8:<br />
** Block ACK<br />
* ''code location'': http://code.nsnam.org/mirko/ns-3-80211n<br />
* ''status'': Frame aggregation and block ack merged already; Tommaso Pecorella announced his lab's next steps [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008303.html here]<br />
<br />
=== Wireless Interference (Jamming) Model ===<br />
<br />
* ''summary'': [http://www.ee.washington.edu/research/nsl/faculty/radha/ 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.<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_wireless_jamming_model<br />
* ''code location'': http://codereview.appspot.com/1055041/show<br />
* ''status'': Public review.<br />
<br />
=== Vehicular Ad Hoc Networks (VANET) ===<br />
<br />
* ''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.<br />
* ''code location'': None publicly posted at this time.<br />
<br />
=== ns-3, 802.15.4 + 6LoWPAN ===<br />
<br />
Tommaso Pecorella announced his plans [http://mailman.isi.edu/pipermail/ns-developers/2010-August/008304.html here]<br />
<br />
Current status is:<br />
* RPL implementation (storing, multicast): almost finished, will be posted for public discussion soon.<br />
** RPL is based on [http://tools.ietf.org/wg/roll/ draft-ietf-roll-rpl-18]<br />
** metrics implemented are of0 and minrank-hysteresis-of<br />
* 6LoWPAN implementation: estimated to be completed in march-april<br />
* 802.15.4: working on it, can't really say right now.<br />
<br />
=== LTE ===<br />
<br />
Several developers expressed their interest in enhancing the LTE code developed within the GSoC 2010:<br />
* Nicola Baldo and Marco Miozzo (CTTC) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008461.html announced] to be working on the following:<br />
** adding UL link adaptation<br />
** modeling inter-cell interference<br />
** reworking the RRM/scheduling API<br />
* Leo Razoumov [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008467.html announced] possible interest in the following contributions:<br />
** MIMO<br />
** PHY model abstractions<br />
** scheduling models<br />
** mobility and traffic models <br />
* Giuseppe Piro and his group (DEE, Politecnico di Bari) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008469.html announced] the intent to continue with the development of the LTE module, focusing mainly on the following MAC layer aspects:<br />
** RRM<br />
** scheduling<br />
** AMC<br />
* Marco Mezzavilla and his group (DEI, University of Padova) [http://mailman.isi.edu/pipermail/ns-developers/2010-November/008483.html announced] interest in working on the following:<br />
** MAC layer<br />
** mobility<br />
** traffic modelization<br />
** MIMO<br />
and have posted a repository in February 2011 [http://mailman.isi.edu/pipermail/ns-developers/2011-February/008653.html details here].<br />
<br />
== Link layer ==<br />
<br />
=== 802.21 media independent handover ===<br />
<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/NS-3_MIH_implementation<br />
* ''code location'': http://code.nsnam.org/salumu/ns-3-mih/<br />
* ''status'': Dormant-- no merge plans announced.<br />
<br />
== MPLS ==<br />
<br />
* ''Submitted by'': Andrey Churin<br />
* ''code location'': http://code.google.com/p/ns-3-shop/<br />
* ''reviewer(s)'': None<br />
* ''status'': Project has moved to Google hosting. <br />
<br />
== Network layer ==<br />
<br />
=== IPv4 fragmentation ===<br />
<br />
there are two implementations being reviewed:<br />
* http://codereview.appspot.com/4440051/<br />
* http://mailman.isi.edu/pipermail/ns-developers/2011-April/008850.html<br />
<br />
=== IPv6 for ns-3 ===<br />
<br />
Note: the below is stale information but is kept in case it is useful for future developers. The below ns-3-ipv6-2nd is not on the current roadmap for merge to ns-3-dev. There are two groups working on implementing transport for IPv6 (see bug 1045). <br />
<br />
* ''summary'': Ipv6 support for ns-3<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-June/004283.html<br />
* ''code location'': hg clone https://svnet.u-strasbg.fr/hg/ns-3-ipv6-2nd/<br />
* ''status'': ns-3.3 contains the first merge (Ipv6Address) of this code. ns-3.7 and ns-3.8 will continue to add features. Here is a tentative roadmap: http://mailman.isi.edu/pipermail/ns-developers/2009-July/006211.html<br />
<br />
=== API and functionality for marking TOS bytes in packets ===<br />
<br />
* ''Submitted by:'' Antti Makela<br />
* ''code location:'' http://www.nsnam.org/bugzilla/show_bug.cgi?id=897<br />
* ''reviewer(s):'' None<br />
* ''status:'' Need to consider whether this fits into the Linux netfilter support that is planned<br />
<br />
=== DSR routing ===<br />
<br />
* ''Submitted by:'' Yufei Cheng<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
=== DSDV routing ===<br />
<br />
* ''Submitted by:'' Hemanth Narra<br />
* ''code location:'' http://codereview.appspot.com/1668042/show<br />
* ''status:'' Announced here: http://mailman.isi.edu/pipermail/ns-developers/2010-December/008496.html<br />
<br />
== Transport layer ==<br />
<br />
=== TCP Vegas ===<br />
<br />
* ''Submitted by:'' Juan Pablo Poujade<br />
* ''code location:'' http://mailman.isi.edu/pipermail/ns-developers/2010-February/007419.html<br />
* ''reviewers:'' none officially<br />
* ''status:'' Waiting for guidance on how TCP congestion control variants will be implemented in general<br />
<br />
=== Multipath TCP ===<br />
<br />
NS-3 module for [http://datatracker.ietf.org/wg/mptcp/charter/ MPTCP] (Multipath TCP). The current release is compatible with 3.8 version of NS-3.<br />
A check of the compatibility with the latest version is needed.<br />
<br />
* ''Submitted by:'' Bachir CHIHANI<br />
* ''code location:'' http://code.google.com/p/mptcp-ns3/<br />
<br />
== Application layer ==<br />
<br />
=== Chord/DHash DHT ===<br />
<br />
* ''Submitted by'': Harjot Gill<br />
* ''code location:'' http://codereview.appspot.com/180107/show<br />
* ''reviewers:'' Mathieu Lacage, Tom Henderson<br />
* ''background:'' http://mailman.isi.edu/pipermail/ns-developers/2009-December/007222.html<br />
* ''status:'' Dormant for a while<br />
<br />
=== Synchronous posix/sockets API ===<br />
<br />
* ''summary'': An ns-3 "process" environment<br />
* ''ns-developers post'': http://mailman.isi.edu/pipermail/ns-developers/2008-April/003912.html<br />
* ''code location'': http://code.nsnam.org/mathieu/ns-3-simu<br />
* ''status'': still in development<br />
<br />
=== real-world application integration ===<br />
<br />
* ''summary'': port of quagga routing to ns-3<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Real_World_Application_Integration<br />
* ''code location'': http://code.nsnam.org/lj/quagga-porting/<br />
* ''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.<br />
<br />
=== ns-3-simu sockopt patches ===<br />
<br />
* ''code location'': Four patches listed in http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
* ''reviewer(s)'': TBD<br />
* ''status'': review requested on June 22<br />
* ''background'': http://mailman.isi.edu/pipermail/ns-developers/2009-June/006144.html<br />
<br />
=== Pastry ===<br />
<br />
* ''Summary:'' An implementation of [http://www.freepastry.org/ Pastry] within ns-3. Including some experimental key-based routing API.<br />
* ''Developers:'' Robert Nitsch and Dominic Scheurer ([https://www.tu-darmstadt.de/ Technische Universität Darmstadt]).<br />
* ''Code location:'' https://bitbucket.org/r_nitsch/libpastry/<br />
* ''Doxygen documentation:'' http://libpastry.robertnitsch.de<br />
* ''Status:''<br />
** Mostly finished.<br />
** Not using ns-3 coding style consistently yet (this will be the easiest issue to fix).<br />
** Node arrival process needs some tweaking.<br />
** Review needed. (We're going to request one as soon as we're ready.)<br />
<br />
== Visualization ==<br />
<br />
Jeremy Norman and the iNSpect team have posted some plans for a visualization library for ns-3:<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-March/003777.html<br />
* http://mailman.isi.edu/pipermail/ns-developers/2008-November/004914.html<br />
<br />
George Riley has made a [[NetAnim | prototype animator]] for PointToPoint links.<br />
<br />
Joe Kopena is working on what he calls a "decorator" http://code.nsnam.org/tjkopena/<br />
<br />
Hagen Paul Pfeifer is working on a MANET visualizer http://nv.dev.jauu.net/<br />
<br />
=== Graphical simulation builder ===<br />
<br />
Pierre Weiss and Sebastien Vincent have written an [[Ns3Generator| ns-3 scenario generator]] in Qt. <br />
* http://mailman.isi.edu/pipermail/ns-developers/2010-May/007998.html<br />
* Mercurial download: http://svnet.u-strasbg.fr/hg/ns-3-generator/<br />
<br />
=== NetExplorer ===<br />
<br />
[http://code.google.com/p/ns-3-shop/wiki/NetExplorer | NetExplorer] is Gnome/Gtk network animation tool for NS-3. <br />
<br />
== Miscellaneous == <br />
<br />
=== L2 Ethernet switch module ===<br />
<br />
* ''ns-developers post'': http://groups.google.com/group/ns-3-users/browse_thread/thread/0091ac611dde1928#<br />
* ''status'': No code yet, starting development.<br />
<br />
=== Parallel simulations (2008) ===<br />
<br />
* ''summary'': ns-3 extensions for parallelization<br />
* ''wiki page'': http://www.nsnam.org/wiki/index.php/Parallel_Simulations<br />
* ''code location'': http://code.nsnam.org/pfeifer/ns-3-para/<br />
* ''status'': dormant since 2008 Google Summer of Code<br />
<br />
=== Delay Box for ns-3 ===<br />
<br />
Matt Crinklaw is working on a port of ns-2 DelayBox to ns-3.<br />
* ''summary'': http://www.isi.edu/nsnam/ns/doc/node247.html (from ns-2 documentation)<br />
* ''code location'': http://freehg.org/u/mlaw<br />
* ''status'': No status update recently. Dormant.<br />
<br />
=== Simulation Configuration and State Detection ===<br />
<br />
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.<br />
<br />
[[SimulationConfiguration | Simulation Configuration]]<br />
<br />
= Build system and project infrastructure =<br />
<br />
== Modular build and package management ==<br />
<br />
This issue is being tracked (requirements and wish list) on [[App_Store_Technical_Requirements | this page]]<br />
<br />
== State of Doxygen ==<br />
<br />
Need to bring Doxygen into compliance (no errors, no warnings for missing documentation).<br />
<br />
== Buildbots ==<br />
<br />
* investigate hooking code coverage (lcov) into the report<br />
* investigate how the whole buildbot farm may be made available to a maintainer to test out a non-ns-3-dev repo. <br />
<br />
== Code contribution guidance ==<br />
<br />
Tom took action item to simplify and clarify the project code contribution guidelines (for people wishing to contribute new code to ns-3).<br />
<br />
== Samples directory ==<br />
<br />
Consider cleanup and move of samples/ directory to examples/?<br />
<br />
== Documentation ==<br />
<br />
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.<br />
<br />
== Website ==<br />
<br />
Status: INRIA is organizing some updates to the website.</div>Roberthttps://www.nsnam.org/mediawiki/index.php?title=Roadmap&diff=5615Roadmap2011-04-29T14:50:43Z<p>Robert: /* ns-3.11 */ fixed ns-3.11's release date (had not yet been updated)</p>
<hr />
<div>{{TOC}}<br />
<br />
This page summarizes the release roadmap for ns-3. A summary of current development activities can be found [[Current Development|here]].<br />
<br />
__FORCETOC__<br />
<br />
== Release schedule ==<br />
<br />
ns-3 makes regular date-driven (not feature driven) releases, roughly quarterly. ns-3 stable releases are sequentially numbered starting with minor version 1 (for example, ns-3.1 released June 30 2008 was followed by ns-3.2 released September 22, 2008).<br />
<br />
=== ns-3.11 ===<br />
<br />
ns-3.10 was released on January 5, 2011. ns-3.11 is scheduled for May 8, 2011. See the [[Ns-3.11]] release page.<br />
<br />
== Release process == <br />
<br />
ns-3 releases are based on date-driven schedules: rather than target a set of features for a specific version number, we aim instead for a release date and ship whatever is ready by that date. If a cool new feature misses that date, it is not a big deal because the next release is never too far away. The current interval between releases is about 3 months.<br />
<br />
An ns-3 release manager will manage each release. Following ns-3.X release, the release manager is selected for ns-3.X+1. Old ns-3.X release manager is typically responsible for any maintenance releases.<br />
<br />
There are three time windows between releases:<br />
# Open<br />
# Maintenance only (no new features)<br />
# Code freeze (P1 checkins)<br />
<br />
Depending on the proposed next release date, the release manager sets dates<br />
for milestones 2 and 3. The release manager has the authority to slip<br />
the milestone 2, 3, and final release dates.<br />
<br />
In "Open" phase, the release manager has a low profile. However, the release<br />
manager should be involved with scheduling and approving major merges,<br />
because he or she may want to manage the dependencies and do some testing<br />
in a particular order. In open phase, modules that are self contained<br />
(e.g. a new channel model for WiFi) don't really need much coordination<br />
with the release manager.<br />
<br />
(See below for "major merges").<br />
<br />
In "Maintenance" phase, no new features are to be added, but the maintainers<br />
may check in fixes to bugs. Maintainers may appeal to the release manager<br />
for adding new self-contained features, but it is release manager's call.<br />
<br />
In Code freeze phase, the release manager must approve (or apply) all changes<br />
to ns-3-dev outside of documentation. The release manager may also set<br />
a freeze date on documentation.<br />
<br />
Typically, the feature freeze is 4-6 weeks before the projected release<br />
date, and the code freeze is 2 weeks before the projected release date.<br />
<br />
The release manager is responsible for preparing and maintaining RELEASE_NOTES,<br />
changes.html, and release candidates, and for updating web pages and<br />
wikis concerning release-specific information (e.g., update the Installation<br />
wiki page if there is an issue discovered with a compiler).<br />
<br />
Detailed steps for doing the source code release are found in the [http://code.nsnam.org/ns-3-dev/file/1e8249c58fda/doc/release_steps.txt doc/release_steps.txt] file in the ns-3-dev repository.<br />
<br />
=== Major merges === <br />
<br />
Major merges are those that are not self contained within the scope of a<br />
single maintainer, those that change API, and those that have some issues<br />
with the build system or other dependencies.<br />
<br />
Past examples of major merges:<br />
* NSC<br />
* Bridge device and promiscuous mode<br />
* Attribute system<br />
* Python bindings<br />
<br />
If a proposed new feature (or refactoring) meets one of these criteria:<br />
# Does not work with all models or on all platforms<br />
# Changes existing APIs<br />
# Crosses maintainer boundaries<br />
<br />
then, the release manager will ask for code review by all maintainers and<br />
request a positive ack that the maintainer is comfortable with the<br />
proposed merge and believes that it will interact well with, or have<br />
no effect on, his or her component. This code review process will typically<br />
lead to questions and comments that need resolution.<br />
<br />
In the case where a new model does not work with the existing simulator,<br />
(not on all platforms, not with all existing models) then the model<br />
must receive an approval (exception) from the architecture board or project<br />
lead. Typically, they will either grant this exception or ask the model<br />
author to improve the support and come back later.<br />
<br />
The release manager can veto a major merge based on preliminary testing or<br />
concern about looming problems to finalize things for the release.<br />
<br />
Finally, it is good practice to coordinate among the active committers and release manager when you are doing a major merge, to avoid bad merge collisions.</div>Robert