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.).
Note
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.
Overall structure of ndnSIM is described in our technical report.
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 .
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.