NS-3 based Named Data Networking (NDN) simulator
ndnSIM: NDN, CCN, CCNx, content centric networks
Overall ndnSIM documentation


The ndnSIM is NS-3 module that implements Named Data Networking (NDN) communication model, the clean slate Internet design. ndnSIM is specially optimized for simulation purposes and has a cleaner and more extensible internal structure comparing to the existing NDN implementation (NDNx).

Following the NDN architecture, ndnSIM is implemented as a new network-layer protocol model, which can run on top of any available link-layer protocol model (point-to-point, CSMA, wireless, etc.).


It will also be possible to run ndnSIM on top of network-layer (IPv4, IPv6) and transport-layer (TCP, UDP) protocols. However, it is not yet implemented and patches are welcome.

The simulator is implemented in a modular fashion, using separate C++ classes to model behavior of each network-layer entity in NDN: pending Interest table (PIT), forwarding information base (FIB), content store, network and application interfaces, Interest forwarding strategies, etc. This modular structure allows any component to be easily modified or replaced with no or minimal impact on other components. 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.

The current wire format for the Interest and Data packets used by ndnSIM is defined in ndnSIM packet format. ndnSIM also has an option to be compatible to wire format used by NDNx implementation (NDNx binary XML encoding). However currently, this option is deprecated, but can be reintroduced in the future as an optional wire format.

More documentation

Overall structure of ndnSIM is described in our technical report.

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.

Please submit bug reports and feature requests on ndnISM Redmine, or tell us about the error on our mailing list .

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, NetDeviceFace, forwarding AppFace), strategies (ForwardingStrategy, Flooding, SmartFlooding, BestRoute), etc.
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 (ConsumerCbr, ConsumerWindow, ConsumerBatches). See doxygen documentation or source code for details
helper/ a number of useful helpers
examples/ contain several example scenarios
utils/ helper classes, including implementation of generalized data structures
plugins/ a number of plugins that may be helpful to run simulation 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.

Table Of Contents

Previous topic


Next topic

Getting Started

This Page