- Packet format changed to [NDN Packet Specification](http://named-data.net/doc/ndn-tlv/)
- ndnSIM uses implementation of basic NDN primitives from [ndn-cxx library (NDN C++ library with eXperimental eXtensions)](http://named-data.net/doc/ndn-cxx/)
- All NDN forwarding and management is implemented directly using source code of [Named Data Networking Forwarding Daemon (NFD)](http://named-data.net/doc/NFD/)
- Allows [simulation of real applications](http://ndnsim.net/2.1/guide-to-simulate-real-apps.html) written against ndn-cxx library
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:
- Packet format changed to the NDN packet format
- ndnSIM uses implementation of basic NDN primitives from ndn-cxx library (NDN C++ library with eXperimental eXtensions)
- All NDN forwarding and management is implemented directly using source code of Named Data Networking Forwarding Daemon (NFD)
- It is possible to simulation some real applications written against ndn-cxx library
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.
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)
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
||implementation of NDN base: L3Protocol, faces (Face, NetDeviceTransport, AppLinkService), etc.|
||submodule of NDN Forwarding Daemon (NFD) source code with few modifications to make it compatible with the simulator|
||submodule of ndn-cxx library source code with few modifications to make it compatible with the simulator|
||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|
||helper classes, including implementation of generalized data structures, topology readers and tracers|
||a number of useful helpers|
||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.