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. 7456b70 model+utils: New implementation (realization) of PIT, implementing limiting based on Interest packet sizes, not the number of entries by Alexander Afanasyev · 11 years ago
  2. 565b50c model: Resolving bug/regression in ndn::NetDeviceFace that effectively prevented using ndnSIM with network devices other than PointToPointNetDevice in debug mode by Alexander Afanasyev · 11 years ago
  3. 25093a3 model: Extending all content store implementations with a "new" trace source, which allows tracking items additions to the content store container by Alexander Afanasyev · 11 years ago
  4. 32c0756 model: Renaming ndn::NameComponents to simply ndn::Name by Alexander Afanasyev · 11 years ago
  5. 91d7c7c apps: Fixing bug in ndn::ConsumerWindow---packet was not (re-)scheduled when NACK was received by Alexander Afanasyev · 11 years ago v0.2.2
  6. 3a3ce1a Fixing bugs related to NACKs implementation by Alexander Afanasyev · 11 years ago v0.2.1
  7. 41824bd model: An experimental support for LFU replacement policy (need further adjustments) by Alexander Afanasyev · 11 years ago
  8. 1a0fff6 apps+model+utils: Implementing Interest/Data hop counting using new PacketTag by Alexander Afanasyev · 11 years ago
  9. 6978611 model: Some compilers got confused with "typedef policy policy". Renaming the typedefed name to policy_base by Alexander Afanasyev · 12 years ago
  10. c3cc0b3 model: New content store variations: support for content freshness by Alexander Afanasyev · 12 years ago
  11. 8566f45 model: Adding "new" content store with ability to track lifetime of entries by Alexander Afanasyev · 12 years ago
  12. 991a0cc model: Generalizing content store implementation by Alexander Afanasyev · 12 years ago
  13. 6b0c88f model+helper: Adding new variable (realDelay) which is currently set by the global routing controller. by Alexander Afanasyev · 12 years ago
  14. adcccf4 model: Implementing two more events for forwarding strategy: DidAddFibEntry and WillRemoveFibEntry by Alexander Afanasyev · 12 years ago
  15. 67f4a4a model: small API change in ndn::ForwardingStrategy by Alexander Afanasyev · 12 years ago
  16. e095f0f docs: Restructuring docs and adding new section about customizing Content Store and PIT by Alexander Afanasyev · 12 years ago
  17. 11fdadd Correcting bug with content object serialization by Alexander Afanasyev · 12 years ago
  18. 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
  19. 5d79e68 model: Initial attempt to optimize Interest/Data encoding/decoding via a custom packet format by Alexander Afanasyev · 12 years ago
  20. 042b4a7 fw+doc: Renaming and extending limit extenstion by Alexander Afanasyev · 12 years ago
  21. db15acb fw: Slightly modifying events for Interest forwarding. by Alexander Afanasyev · 12 years ago
  22. ccd5bb4 limits: Reverting back renaming of SimpleLimits strategy by Alexander Afanasyev · 12 years ago
  23. 6f95e70 limits: one more update and small interface changes by Alexander Afanasyev · 12 years ago
  24. f5c0774 limits: Introducing modularity for Interest limits by Alexander Afanasyev · 12 years ago
  25. 0484e77 model.fw: Correcting a "slightly" broken NACKs, though still not sure if everything works as it should. by Alexander Afanasyev · 12 years ago
  26. 0fff1db model.fw: Template-based implementation of SimpleLimits strategy by Alexander Afanasyev · 12 years ago
  27. 6466fff fw: Adding a couple of new events. Adding more documentation for events. by Alexander Afanasyev · 12 years ago
  28. 9bab368 Additional cleaning. Repairing tests. by Alexander Afanasyev · 12 years ago
  29. 1cd79ae docs: Documentation update 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. ff22977 Add counter for interest and data packets (for performance evaluations) by Alexander Afanasyev · 12 years ago
  37. 0f83f90 Add option to enable/disable NACKs to notify about queue drops by Alexander Afanasyev · 12 years ago
  38. c771961 Checkpoint. Enabling nacks back, "reverting" count statistics on nacks by Alexander Afanasyev · 12 years ago
  39. b1ec249 Checkpoint. Basic support (and not real success) for interest limits by Alexander Afanasyev · 12 years ago
  40. aebf5cf L3Protocol::GetFace now returns face by index, not by ID as it was by Alexander Afanasyev · 12 years ago
  41. 187cba2 Checkpoint. Max bad/good ratio is 1:10. Unknown stats implies 50%. If by Alexander Afanasyev · 12 years ago
  42. c23a3e3 Now there is a semi success with nacks disabled and huge problem with nacks enabled by Alexander Afanasyev · 12 years ago
  43. 98c16e0 Checkpoint. Adding data structures to support weighted round robin by Alexander Afanasyev · 12 years ago
  44. 6f101fc Semi success with NACK enabled. Now need more NACK types and different processing by Alexander Afanasyev · 12 years ago
  45. ff03395 Semi-success with "fair" sharing without NACKs by Alexander Afanasyev · 12 years ago
  46. 08b7d9e More progress with buffers by Alexander Afanasyev · 12 years ago
  47. 0ffa716 One more checkpoint. Now the code seems to work in a basic scenario by Alexander Afanasyev · 12 years ago
  48. 91e1128 Another checkpoint by Alexander Afanasyev · 12 years ago
  49. 5db9217 Checkpoint. Some changes in forwarding strategy API by Alexander Afanasyev · 12 years ago
  50. 38ba9b2 Checkpoint #2 by Alexander Afanasyev · 12 years ago
  51. ed449cc Checkpoint by Alexander Afanasyev · 12 years ago
  52. ec1e395 Checkpoint by Alexander Afanasyev · 12 years ago
  53. 1a2df6a Small reorganization of utils/ folder contents by Alexander Afanasyev · 12 years ago
  54. 31cb469 One more big change: prototypes of most of the forwarding strategy functions has been changed by Alexander Afanasyev · 12 years ago
  55. ccbd834 (Re-)Implementing randomized Interest accept based on satisfaction ratio stats. by Alexander Afanasyev · 12 years ago
  56. 70426a0 Disabling FIB-entry-limit decrease. Implementing probabilistic interest by Alexander Afanasyev · 12 years ago
  57. 6a3bb13 ForwardingStrategy removes PIT if interest wasn't propagated. Updated by Alexander Afanasyev · 12 years ago
  58. 8067ff1 BUG: Default value of ns3 object system is created exactly once, not per CreateObject operation. by Alexander Afanasyev · 12 years ago
  59. ea9b3e6 Implementing base support for TCP-style window-based limiting on per-FIB-prefix and per-face granularity by Alexander Afanasyev · 12 years ago
  60. f986cde Removing support for LeakyBucket per-face limit by Alexander Afanasyev · 12 years ago
  61. 29c19b9 Content Store extension. Now it supports the same enumeration interface available for PIT and FIB by Alexander Afanasyev · 12 years ago
  62. b18ae02 Memory optimization (removing scheduled events instead of just cancelling them) by Alexander Afanasyev · 12 years ago
  63. c202fd9 Replacing boost::multi_index to std::set for OutgoingFaces in PIT entry by Alexander Afanasyev · 12 years ago
  64. f6807a5 Final updates and documentation fixes by Alexander Afanasyev · 12 years ago
  65. cf6dc92 Now everything compiles, but not everything is working yet by Alexander Afanasyev · 12 years ago
  66. 2b4c947 Another set of refactoring by Alexander Afanasyev · 12 years ago
  67. b8d14ad Documentation correction by Alexander Afanasyev · 12 years ago
  68. e77db79 Normalizing namespace usage (ndnSIM namespace is now always under ns3) by Alexander Afanasyev · 12 years ago
  69. 4aac557 First step of refactoring code (ccnx prefix => ndn prefix) by Alexander Afanasyev · 12 years ago
  70. 98d85e1 An extension for CcnxFace, allowing a non-persistent (randomized) limit checking procedure by Alexander Afanasyev · 12 years ago
  71. b1b7f5d Small corrections by Alexander Afanasyev · 12 years ago
  72. ad82e25 BUGS: Solving (apparently) two subtle bugs in new PIT and ContentStore implementations by Alexander Afanasyev · 12 years ago
  73. 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
  74. 0a0dc39 BUG: Solving the problem that was crashing the simulator by Alexander Afanasyev · 12 years ago
  75. d4c4f36 FwStats now does not track full prefixes. Instead, the last components by Alexander Afanasyev · 12 years ago
  76. 59dedfd New 'cut' method in CcnxNameComponents (similar to java API cut method) by Alexander Afanasyev · 12 years ago
  77. 33364b6 Implementing face clean up callback in forwarding strategy by Alexander Afanasyev · 12 years ago
  78. bd6f3f4 Small update of PIT. Now pit implementation is policy-templated. by Alexander Afanasyev · 12 years ago
  79. 1c0248b Adding more statistics collection (number of transmitted/received bytes by Alexander Afanasyev · 12 years ago
  80. 77495a9 FwStats: when PIT entry cannot be created (limit or unknown prefix), by Alexander Afanasyev · 12 years ago
  81. 3c5b6a7 Changed behavior: when a node receives an interest that cannot be by Alexander Afanasyev · 12 years ago
  82. e288d8b Small compilation-related bug in ccnx-forwarding-strategy.cc by Alexander Afanasyev · 12 years ago
  83. 39e0f34 BUG: WilLSatisfyPendingInterest method is now may be called with 0 as by Alexander Afanasyev · 12 years ago
  84. b310a9a Renaming methods so it works without errors with boost::bind (for some by Alexander Afanasyev · 12 years ago
  85. e55d1e3 More corrections. Now everything is ready for real tests by Alexander Afanasyev · 12 years ago
  86. f249a19 Finalizing implementation of almost all events for forwarding strategy. by Alexander Afanasyev · 12 years ago
  87. 786936a Small corrections and python bindings rescan by Alexander Afanasyev · 12 years ago
  88. 996b487 Serious refactoring. Making forwarding strategy really modular by Alexander Afanasyev · 12 years ago
  89. e3d126f Start of serious reorganization by Alexander Afanasyev · 12 years ago
  90. 0560eec Stats tree seems to work properly, including pruning of "empty" leaves by Alexander Afanasyev · 12 years ago
  91. 0845c09 Initial steps in stats tree building. Almost done, but something is fishy by Alexander Afanasyev · 12 years ago
  92. f1e013f Introducing a couple of real test cases. by Alexander Afanasyev · 12 years ago
  93. 413c7f1 Now everything suppose to work, but testing is necessary to determine how well it works. by Alexander Afanasyev · 12 years ago
  94. 36b4577 Checkpoint by Alexander Afanasyev · 12 years ago
  95. 30f60e3 Some progress on CcnxPit. Partially working by Alexander Afanasyev · 12 years ago
  96. 1aa4bbc Simplifying a FIB entry modification (now we can do it directly, without notifying the container) by Alexander Afanasyev · 12 years ago
  97. 11f7bb4 First step in reimplementing CcnxPit. Everything is broken as of right now by Alexander Afanasyev · 12 years ago
  98. 95a4fa3 Fighting off python bindings and repairing ccnx_fib visualizer plugin by Alexander Afanasyev · 12 years ago
  99. 1ba09b8 Small changes in in FIB re-implementations with tries, rescanned python bindings by Alexander Afanasyev · 12 years ago
  100. 44bb6ea New implementation of FIB seems to be working now by Alexander Afanasyev · 12 years ago