Release 2.0

Overview

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

-   ndnSIM no longer re-implements basic NDN primitives and directly
    uses implementation 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). The
    current code is based on a22a2172611b1cb93b2e2f53d9d5da122b384f3e
    commit of NFD repository.

Note RIB Manager is not yet available in ndnSIM.

-   Packet format changed to the NDN packet format.

-   Code style changes to conform to ndn-cxx Code Style and Coding
    Guidelines This change also includes renaming of the header and
    source files: *.h -> *.hpp, *.cc -> *.cpp

-   ndnSIM now uses C++11.

New Features

-   Integration with NFD codebase:
-   A realistic behavior is added to the simulations.
-   Forwarding plane extensions can be used in both ndnSIM simulations
    and real NFD deployment.
-   Per namespace forwarding strategies for different namespaces (one
    strategy per namespace).
-   New examples:
-   ndn-load-balancer
-   ndn-grid-multiple-strategies
-   ndn-different-strategy-per-prefix
-   Basic examples using python bindings: ndn-simple.py and ndn-grid.py
-   Use of the the full-featured NDN packet format.
-   Full-featured support for Interest selectors.
-   Full-featured crypto operations can be simulated (disabled by
    default).
-   FibHelper to manage FIB entries.
-   StrategyChoiceHelper to manage per-namespace forwarding strategy
    selection.

Changes

-   HopCount tracing now includes only one way network-level hop count
    (e.g., the number of physical links traversed by a packet).
    Previously, this tracing was round-trip and included applications
    hops.
-   Python bindings have changed and, due to limitations of pybindgen,
    currently cover a smaller subset of C++ code (Task #2341).
-   LinkControlHelper now uses ErrorRate to simulate link
    failure/recovery. Previously it was relying on Up/Down flag on NDN
    level.
-   The Face abstraction of NFD is now used.

Bug fixes

-   Fix processing files with customized LossRate or Queue model in
    AnnotatedTopologyReader Bug #2354.

Removals

-   PyNDN emulation
-   (temporarily) ApiFace. Will be replaced with emulation of ndn-cxx
    ndn::Face in future releases (Issue #2370).
-   (temporarily) UdpFace, TcpFace (Issue #2371).
-   Limits, LimitsWindow, LimitsRate.
-   PIT, FIB with "replacement" policies.
-   Old deprecated packet formats.
  1. bd9c18e Solving a couple of bugs resulting from the packet format changes. Code compiles, but haven't fully tested yet by Alexander Afanasyev · 12 years ago
  2. 5d79e68 model: Initial attempt to optimize Interest/Data encoding/decoding via a custom packet format by Alexander Afanasyev · 12 years ago
  3. e1b2a2d apps: Correcting behavior of ndn::ConsumerWindow. by Alexander Afanasyev · 12 years ago
  4. 042b4a7 fw+doc: Renaming and extending limit extenstion by Alexander Afanasyev · 12 years ago
  5. a8f5d88 limits: Adding ability for GlobalRoutingController to set precise BDP prefix limits using knowledge of RTT for destination by Alexander Afanasyev · 12 years ago
  6. db15acb fw: Slightly modifying events for Interest forwarding. by Alexander Afanasyev · 12 years ago
  7. a0d9489 docs: README update by Alexander Afanasyev · 12 years ago
  8. 08ab572 limits: Adding support for callback that fired every time a new slot becomes available by Alexander Afanasyev · 12 years ago
  9. 697a36a plugin-mobility: Correcting implementation to work with the latest NS-3 version (3.15-dev) by Alexander Afanasyev · 12 years ago
  10. 669cafd Fixing "batches.h" header inclusions. by Alexander Afanasyev · 12 years ago
  11. ccd5bb4 limits: Reverting back renaming of SimpleLimits strategy by Alexander Afanasyev · 12 years ago
  12. 7e4235a limits: finalizing rate-based limits by Alexander Afanasyev · 12 years ago
  13. 6f95e70 limits: one more update and small interface changes by Alexander Afanasyev · 12 years ago
  14. f5c0774 limits: Introducing modularity for Interest limits by Alexander Afanasyev · 12 years ago
  15. 0484e77 model.fw: Correcting a "slightly" broken NACKs, though still not sure if everything works as it should. by Alexander Afanasyev · 12 years ago
  16. b5e54f9 plugins.topology: Adding basic error handling by Alexander Afanasyev · 12 years ago
  17. ef94e91 utils: Adding option to obtain the value of the current limit in ndn::Limits by Alexander Afanasyev · 12 years ago
  18. 0fff1db model.fw: Template-based implementation of SimpleLimits strategy by Alexander Afanasyev · 12 years ago
  19. 15b7114 docs: Small update of Doxygen by Alexander Afanasyev · 12 years ago
  20. a28ec56 utils: ndn::Limits now uses double for the internal limits parameter and invalid when (by default) it is set to a negative value by Alexander Afanasyev · 12 years ago
  21. 6466fff fw: Adding a couple of new events. Adding more documentation for events. by Alexander Afanasyev · 12 years ago
  22. a65ab32 build scripts: installing all ndnSIM header files under <ns3-include-path>/ndnSIM/ preserving folder hierarchy by Alexander Afanasyev · 12 years ago
  23. 9bab368 Additional cleaning. Repairing tests. by Alexander Afanasyev · 12 years ago
  24. 6dbacda docs: Adding a new example of how to use AnnotatedTopologyReader, as well as a new FAQ section with a couple of commonly asked questions. by Alexander Afanasyev · 12 years ago
  25. 7099ffb docs: Adding example of how to build ndnSIM using non-root-installed boost libraries by Alexander Afanasyev · 12 years ago
  26. e1aa9b9 When interest is satisfied from the local cache, the wrong order of by Alexander Afanasyev · 12 years ago
  27. f383047 Correcting wrong assert in ndn::App. Actually, making this assert to just print an error message instead. by Alexander Afanasyev · 12 years ago
  28. 1cd79ae docs: Documentation update by Alexander Afanasyev · 12 years ago
  29. cba7392 More unrelevant files by Alexander Afanasyev · 12 years ago
  30. ed3ffc8 Removing unrelevant stuff by Alexander Afanasyev · 12 years ago
  31. 8db3cba Correcting randomized model. Treat unknown stats as 100%, call parent by Alexander Afanasyev · 12 years ago
  32. 663d63f Small extension of InterestHeader API (cheat for python bindings) by Alexander Afanasyev · 12 years ago
  33. 048c4ad Remove bug causing unnecessary limit transmission by Alexander Afanasyev · 12 years ago
  34. 1e7bcaf Adding strategy with implementation of simple face-based limits by Alexander Afanasyev · 12 years ago
  35. caeade2 Separating dynamic limits into a separate forwarding strategy enhancement by Alexander Afanasyev · 12 years ago
  36. 3cdda24 doc: Adding more descriptions of how to compile ndnSIM by Alexander Afanasyev · 12 years ago
  37. ca5f6d1 Rescanned python binding by Alexander Afanasyev · 12 years ago
  38. cdd223c Suppressing warning in debug mode by Alexander Afanasyev · 12 years ago
  39. ff22977 Add counter for interest and data packets (for performance evaluations) by Alexander Afanasyev · 12 years ago
  40. 0f83f90 Add option to enable/disable NACKs to notify about queue drops by Alexander Afanasyev · 12 years ago
  41. c771961 Checkpoint. Enabling nacks back, "reverting" count statistics on nacks by Alexander Afanasyev · 12 years ago
  42. b1ec249 Checkpoint. Basic support (and not real success) for interest limits by Alexander Afanasyev · 12 years ago
  43. aebf5cf L3Protocol::GetFace now returns face by index, not by ID as it was by Alexander Afanasyev · 12 years ago
  44. 187cba2 Checkpoint. Max bad/good ratio is 1:10. Unknown stats implies 50%. If by Alexander Afanasyev · 12 years ago
  45. c23a3e3 Now there is a semi success with nacks disabled and huge problem with nacks enabled by Alexander Afanasyev · 12 years ago
  46. 98c16e0 Checkpoint. Adding data structures to support weighted round robin by Alexander Afanasyev · 12 years ago
  47. 6f101fc Semi success with NACK enabled. Now need more NACK types and different processing by Alexander Afanasyev · 12 years ago
  48. ff03395 Semi-success with "fair" sharing without NACKs by Alexander Afanasyev · 12 years ago
  49. 08b7d9e More progress with buffers by Alexander Afanasyev · 12 years ago
  50. 67ae4b6 Small update of documentation (changing ndnSIM website URL) by Alexander Afanasyev · 12 years ago
  51. 372cbab Base per-incoming queue limit on per-Face limit (instead of a precompiled value) by Alexander Afanasyev · 12 years ago
  52. 0ffa716 One more checkpoint. Now the code seems to work in a basic scenario by Alexander Afanasyev · 12 years ago
  53. 91e1128 Another checkpoint by Alexander Afanasyev · 12 years ago
  54. 5db9217 Checkpoint. Some changes in forwarding strategy API by Alexander Afanasyev · 12 years ago
  55. 38ba9b2 Checkpoint #2 by Alexander Afanasyev · 12 years ago
  56. ed449cc Checkpoint by Alexander Afanasyev · 12 years ago
  57. ec1e395 Checkpoint by Alexander Afanasyev · 12 years ago
  58. 048ae42 Draft PitQueue implementation using virtual time concept (good thing, but most likely not be used, at least initially) by Alexander Afanasyev · 12 years ago
  59. 1a2df6a Small reorganization of utils/ folder contents by Alexander Afanasyev · 12 years ago
  60. 31cb469 One more big change: prototypes of most of the forwarding strategy functions has been changed by Alexander Afanasyev · 12 years ago
  61. ccbd834 (Re-)Implementing randomized Interest accept based on satisfaction ratio stats. by Alexander Afanasyev · 12 years ago
  62. 92b5f83 Reverting back exponential averaging for LoadStats. Disabling two long-term time granularities (affects entry lifetime). by Alexander Afanasyev · 12 years ago
  63. 70426a0 Disabling FIB-entry-limit decrease. Implementing probabilistic interest by Alexander Afanasyev · 12 years ago
  64. 6a3bb13 ForwardingStrategy removes PIT if interest wasn't propagated. Updated by Alexander Afanasyev · 12 years ago
  65. 3476edf A slightly modified FwPerFibLimits test. Modified ConsumerBatches by Alexander Afanasyev · 12 years ago
  66. 8067ff1 BUG: Default value of ns3 object system is created exactly once, not per CreateObject operation. by Alexander Afanasyev · 12 years ago
  67. ea9b3e6 Implementing base support for TCP-style window-based limiting on per-FIB-prefix and per-face granularity by Alexander Afanasyev · 12 years ago
  68. f986cde Removing support for LeakyBucket per-face limit by Alexander Afanasyev · 12 years ago
  69. 29c19b9 Content Store extension. Now it supports the same enumeration interface available for PIT and FIB by Alexander Afanasyev · 12 years ago
  70. b18ae02 Memory optimization (removing scheduled events instead of just cancelling them) by Alexander Afanasyev · 12 years ago
  71. c202fd9 Replacing boost::multi_index to std::set for OutgoingFaces in PIT entry by Alexander Afanasyev · 12 years ago
  72. 92d5be1 Regression: RTO in Consumers was not exponentially increased by Alexander Afanasyev · 12 years ago
  73. 5b054aa Small documentation update by Alexander Afanasyev · 12 years ago
  74. 424d584 Fixes #6 unordered_set buckets are increased exponentially by Alexander Afanasyev · 12 years ago
  75. f6807a5 Final updates and documentation fixes by Alexander Afanasyev · 12 years ago
  76. cf6dc92 Now everything compiles, but not everything is working yet by Alexander Afanasyev · 12 years ago
  77. 2b4c947 Another set of refactoring by Alexander Afanasyev · 12 years ago
  78. b8d14ad Documentation correction by Alexander Afanasyev · 12 years ago
  79. e77db79 Normalizing namespace usage (ndnSIM namespace is now always under ns3) by Alexander Afanasyev · 12 years ago
  80. 5feb38b Rescanned bindings for the refactored code base by Alexander Afanasyev · 12 years ago
  81. 4aac557 First step of refactoring code (ccnx prefix => ndn prefix) by Alexander Afanasyev · 12 years ago
  82. 1f288e3 Merge remote-tracking branch 'git.irl/master' by Alexander Afanasyev · 12 years ago
  83. 1cb4aad Introducing some cheats in order to make code compilable with old (<1.47) version of boost libraries by Alexander Afanasyev · 12 years ago
  84. 98d85e1 An extension for CcnxFace, allowing a non-persistent (randomized) limit checking procedure by Alexander Afanasyev · 12 years ago
  85. b1b7f5d Small corrections by Alexander Afanasyev · 12 years ago
  86. ff6e369 Adding helper checks for required number of partitions in AnnotatedTopologyReader if MPI is enabled by Alexander Afanasyev · 12 years ago
  87. ad82e25 BUGS: Solving (apparently) two subtle bugs in new PIT and ContentStore implementations by Alexander Afanasyev · 12 years ago
  88. 8a53f76 More documentation update: new names for forwarding strategies by Alexander Afanasyev · 12 years ago
  89. 508269a Major update of documentation (ns-3 color scheme, NDN and IRL logos) by Alexander Afanasyev · 12 years ago
  90. 6b51b08 BUG: time index for PIT entry was using wrong data structure (set instead of multiset), which caused extremely unexpected behavior by Alexander Afanasyev · 12 years ago
  91. 0194543 Adding partitioning support to AnnotatedTopologyReader by Alexander Afanasyev · 12 years ago
  92. 89e02c4 Enable basic support for MPI in CcnxAppHelper by Alexander Afanasyev · 12 years ago
  93. 0a0dc39 BUG: Solving the problem that was crashing the simulator by Alexander Afanasyev · 12 years ago
  94. d4c4f36 FwStats now does not track full prefixes. Instead, the last components by Alexander Afanasyev · 12 years ago
  95. 59dedfd New 'cut' method in CcnxNameComponents (similar to java API cut method) by Alexander Afanasyev · 12 years ago
  96. 33364b6 Implementing face clean up callback in forwarding strategy by Alexander Afanasyev · 12 years ago
  97. bd6f3f4 Small update of PIT. Now pit implementation is policy-templated. by Alexander Afanasyev · 12 years ago
  98. 1c0248b Adding more statistics collection (number of transmitted/received bytes by Alexander Afanasyev · 12 years ago
  99. 77495a9 FwStats: when PIT entry cannot be created (limit or unknown prefix), by Alexander Afanasyev · 12 years ago
  100. 3c5b6a7 Changed behavior: when a node receives an interest that cannot be by Alexander Afanasyev · 12 years ago