Introduction

A new release of NS-3 based Named Data Networking (NDN) simulator went through a number of extensive refactoring and rewriting. The key new features of the new version:

Note

Please note that ndnSIM >= 2.0 has been through major refactoring and simulation scenario written for ndnSIM 1.0 most likely would need to be changed to run on ndnSIM >= 2.0 platforms.

Such integration with ndn-cxx and NFD ensures that the simulations are maximally realistic and can be reproduced in real environments with virtually no changes to the source code. In addition to that, any experiments with NDN forwarding (e.g., custom forwarding strategies) inside ndnSIM can be directly used within the real NFD implementation.

Specifically, the simulator directly uses NFD implementations of :nfd:`pending Interest table (PIT) <nfd::Pit>`, :nfd:`forwarding information base (FIB) <nfd::Fib>`, and :nfd:`content store <nfd::cs::Cs>` data structures. In addition to that, ndnSIM allows experimentation with :ndnSIM:`ndnSIM-specific content store <ndn::ContentStore>` along with its cache replacement policies ported from the previous version of ndnSIM.

ndnSIM is implemented as a new network-layer protocol model and can run on top of any available link-layer protocol model (point-to-point, CSMA, wireless, etc.). In addition, the simulator provides an extensive collection of interfaces and helpers to perform detailed tracing behavior of every component, as well as NDN traffic flow.

More documentation

Overall structure of ndnSIM is described in our paper and technical reports.

For ndnSIM >= 2.0:

  • S. Mastorakis, A. Afanasyev, and L. Zhang, “On the Evolution of ndnSIM: an Open-Source Simulator for NDN Experimentation,” ACM SIGCOMM Computer Communication Review (CCR), July 2017 (PDF, BibTex)
  • S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM 2: An updated NDN simulator for NS-3,” NDN, Technical Report NDN-0028, Revision 2, 2016 (PDF, BibTex)

For ndnSIM 1.0:

  • A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM: NDN simulator for NS-3,” NDN, Technical Report NDN-0005, 2012 (PDF)

ndnSIM API documentation

Presentations on ndnSIM:

  • S. Mastorakis, A. Afanasyev, and L. Zhang, “On the Evolution of ndnSIM: an Open-Source Ecosystem for NDN Experimentation”, NDN Community Meeting (NDNcomm), Memphis, TN, March 2017 (Slides)
  • A. Afanasyev and others, “Developing Simple Simulations with ndnSIM.” NDN Tutorial at ACM ICN 2016, Kyoto, Japan, Sep-2016 (Slides)
  • S. Mastorakis, “ndnSIM: Current Status & Latest Advancements”, 6th NDN Retreat, San Diego, CA, March 2016 (Slides)
  • A. Afanasyev, J. Burke, P. Crowley, S. DiBenedetto, V. Jacobson, J. Thompson, B. Zhang, and L. Zhang, “Named Data Networking. ndnSIM: a modular NDN simulator.” An Introduction to NDN and its Software Architecture Tutorial at 1st ACM Conference on Information-Centric Networking (ICN-2014), Sep-2014 (Slides)
  • A. Afanasyev, “Tutorial for students: ndnSIM.” AsiaFI 2013 Summer School, Aug-2013 (Slides)
  • A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM: a modular NDN simulator. Introduction and Tutorial.” 3rd NDN retreat, Oct-2012 (Slides)
  • A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM: a modular NDN simulator.” CCNxCon 2012, Sep-2012 (Slides)

Also, you can join our mailing list to see and participate in discussions about ndnSIM implementation and simulations in general. Do not forget to check mailling list archives.

Support

The code of ndnSIM is in active development. Bug reports (issues) as well as new feature implementation are always welcome.

To file a bug report, please use NDN Redmine.

To create new feature, please fork the code and submit Pull Request on GitHub.

And of course, our mailing list is the best way to communicate with and get support from ndnSIM team and other users of ndnSIM.

A very short guide to the code

All the NDN related code is in ns-3/src/ndnSIM

Folder Description
model/ implementation of NDN base: :ndnsim:`L3Protocol`, faces (:ndnsim:`Face`, :ndnsim:`NetDeviceTransport`, :ndnsim:`AppLinkService`), etc.
NFD/ submodule of NDN Forwarding Daemon (NFD) source code with few modifications to make it compatible with the simulator
ndn-cxx/ submodule of ndn-cxx library source code with few modifications to make it compatible with the simulator
apps/ applications (in NS-3 sense) that can be installed on the nodes. Right now we have one producer (:ndnsim:`Producer`) and a collection of consumer applications (:ndnsim:`ConsumerCbr`, :ndnsim:`ConsumerWindow`, :ndnsim:`ConsumerBatches`, :ndnsim:`ConsumerZipfMandelbrot`). See doxygen documentation or source code for details
utils/ helper classes, including implementation of generalized data structures, topology readers and tracers
helper/ a number of useful helpers
examples/ contain several example scenarios

Logging

Almost every component in ndnSIM exports logging interface, so in debug compilation it is possible to track many internal details. For example, logging of :ndnsim:`Face` and :ndnsim:`Consumer` shows everything what happens in :ndnsim:`Face` and :ndnsim:`Consumer` classes:

NS_LOG=ndn.Consumer ./waf --run=ndn-simple

Refer to the source code and NS-3 documentation to see what logging interfaces are available and about details how enable one or more logging interfaces.

Note

Please remember that logging is enabled only in debug mode. When simulator is compiled in optimized mode (./waf configure -d optimized), logging will be completely disabled as it significantly slows down execution.

Note

A list of log components available in the current version of NS-3 and ndnSIM is listed in this page.