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