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:


Please note that ndnSIM 2.0 has major refactoring and simulation scenario written for previous releases most likely would need to be changed to run on ndnSIM 2.0 platform.

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 pending Interest table (PIT), forwarding information base (FIB), and content store data structures. In addition to that, ndnSIM allows experimentation with ndnSIM-specific content store 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 technical reports:

  • 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)
  • A. Afanasyev, I. Moiseenko, and L. Zhang, “ndnSIM: NDN simulator for NS-3,” NDN, Technical Report NDN-0005, 2012 (PDF, BibTex)

ndnSIM API documentation

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.


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: L3Protocol, faces (Face, NetDeviceTransport, 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 (Producer) and a collection of consumer applications (ConsumerCbr, ConsumerWindow, ConsumerBatches, 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


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

NS_LOG=ndn.Face: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.


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.


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