blob: babf221587c7ec54058276bcf0ce901e44d1257f [file] [log] [blame]
Alexander Afanasyevab933c62015-01-14 00:50:31 -05001ndnSIM Release Notes
2====================
3
4This file contains ndnSIM release notes.
5
6All of the ndnSIM documentation is accessible from the `ndnSIM website <http://ndnsim.net>`__.
7
Spyridon Mastorakis5897c962015-08-31 15:37:18 -07008Release 2.1 (Changes since release 2.0)
9---------------------------------------
10
11Release date: September 4, 2015
12
13Overview
14~~~~~~~~
15
16- Integration with ndn-cxx and NFD codebases has been refactored to include ndn-cxx and
17 NFD repositories as git submodules within ndnSIM repository (:issue:`3138`).
18
19 This refactoring simplifies upgrading ndn-cxx and NFD to new versions and prevents old
20 simulation code to break because of API changes in newer versions of ndn-cxx library.
21
22 .. note::
23 In order to retrieve the marked versions of ndn-cxx and NFD, use ``--recursive``
24 option to the git clone command or run ``git submodule update --init`` after clone,
25 pull, or merge.
26
27- The official home for ndnSIM codebase has been moved to `GitHub named-data-ndnSIM
28 organization <https://github.com/named-data-ndnSIM>`__ (:issue:`3123`):
29
30 * `ndnSIM codebase <https://github.com/named-data-ndnSIM/ndnSIM>`__
31 * `Modified version of ndn-cxx <https://github.com/named-data-ndnSIM/ndn-cxx>`__
32 * `Modified version of NFD <https://github.com/named-data-ndnSIM/NFD>`__
33 * `Modified version of NS-3 <https://github.com/named-data-ndnSIM/ns-3-dev>`__
34 * `Modified version of python bindings generator <https://github.com/named-data-ndnSIM/pybindgen>`__
35
36- Modified version of NS-3 was updated to (rebased on top of) version 2.23-dev, with
37 ndnSIM codebase adjusted to reflect API changes (:issue:`3122`)
38
39- NFD and ndn-cxx has been upgraded to version 0.3.4 (:issue:`3125`)
40
41New features
42~~~~~~~~~~~~
43
44- ndnSIM-specific version of :ndnsim:`ndn::Face` (:issue:`2370`)
45
46 The updated version of :ndnsim:`ndn::Face` specially designed to allow writing
47 simulation applications in the same way as real applications. It is also possible to
48 directly use codebase of the existing applications to drive simulations, provided that
49 the codebase meets or can be adjusted to meet the requirements listed in
50 :doc:`guide-to-simulate-real-apps`.
51
52- Full support for NFD'S RIB manager (:issue:`2370`)
53
54 .. note::
55 RIB manager support is currently available only for applications based on ndn-cxx.
56 :ndnsim:`FibHelper::AddRoute` and :ndnsim:`FibHelper::RemoveRoute` used by
57 :ndnsim:`ndn::Producer` and :ndnsim:`ndn::GlobalRoutingHelper` are currently
58 interacting directly with NFD's FIB manager. This issue will be resolved in the next
59 release of ndnSIM (:issue:`3121`)
60
61- Tutorial and example on how to speed up simulations with MPI module of NS-3:
62 `<http://ndnsim.net/2.0/parallel-simulations.html>`__
63
64- Two new helpers to simplify writing basic simulation scenarios:
65
66 - :ndnsim:`ScenarioHelper` leverages C++11 constructs to write scenarios. Example:
67
68 .. code-block:: c++
69
70 ScenarioHelper helper;
71 helper.createTopology({
72 {"1", "2"},
73 {"2", "3"}
74 });
75
76 helper.addRoutes({
77 {"1", "2", "/prefix", 1},
78 {"2", "3", "/prefix", 1}
79 });
80
81 helper.addApps({
82 {"1", "ns3::ndn::ConsumerCbr",
83 {{"Prefix", "/prefix"}, {"Frequency", "1"}},
84 "0s", "100s"},
85 {"3", "ns3::ndn::Producer",
86 {{"Prefix", "/prefix"}, {"PayloadSize", "1024"}},
87 "0s", "100s"}
88 });
89
90
91 - :ndnsim:`FactoryCallbackApp` simplifies creation of basic apps without creating a
92 separate class that is derived from ``ns3::Applications``. Example:
93
94 .. code-block:: c++
95
96 class SomeApp
97 {
98 public:
99 SomeApp(size_t initParameter);
100 ...
101 };
102
103 FactoryCallbackApp::Install(node, [] () -> shared_ptr<void> {
104 return make_shared<SomeApp>(42);
105 })
106 .Start(Seconds(1.01));
107
108Improvements and bug fixes
109~~~~~~~~~~~~~~~~~~~~~~~~~~
110
111- Updates of ndnSIM documentation
112
113 * Updated the structure for the `ndnSIM website index page <http://ndnsim.net>`__
114 * Updated installation instructions to reflect refactoring and relocation of ndnSIM codebase
115 * API documentation (doxygen) improvements
116 * Updated list of ndnSIM research papers
117
118- The NDN stack can now be updated to handle any simulation topology changes after
119 its initial installation on a node (:issue:`2717`)
120
121- Application ID that appears in :ndnsim:`ndn::AppDelayTracer` output is now ID of the
122 application on the node, not ID of the application face that was used previously.
123
124- FibHelper has been extended to support route removals (:issue:`2358`)
125
126- ndnSIM codebase now partially covered with unit-tests (:issue:`2369`, :issue:`3059`,
127 :issue:`2783`)
128
129- Bugfixes:
130
131 * In :ndnsim:`ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes` that caused crash in
132 some cases (:issue:`2535`)
133
134 * In FailLink and Uplink methods of :ndnsim:`ndn::LinkControlHelper` class that affected
135 more links than requested (:issue:`2783`)
136
137 * With hop count of data packets retrieved from the Contest Store of NFD (:issue:`2764`)
138
139 * In :ndnsim:`ndn::Producer` application that caused a wrong dummy signature to be added
140 to the constructed data packets (:issue:`2927`)
141
142
143
144********************************************************************************
145
146
147
148Release 2.0 (Changes since release 1.0)
149---------------------------------------
150
151Release date: January 13, 2015
Alexander Afanasyevab933c62015-01-14 00:50:31 -0500152
153Overview
154~~~~~~~~
155
156ndnSIM 2.0 is a new release of NS-3 based Named Data Networking (NDN) simulator that went through
157extensive refactoring and rewriting. The key new features of the new version:
158
159- ndnSIM no longer re-implements basic NDN primitives and directly uses implementation from
160 `ndn-cxx library (NDN C++ library with eXperimental
161 eXtensions) <http://named-data.net/doc/ndn-cxx/>`__.
162
163- All NDN forwarding and management is implemented directly using source code of `Named Data
164 Networking Forwarding Daemon (NFD) <http://named-data.net/doc/NFD/>`__. The current code is based
165 on ``a22a2172611b1cb93b2e2f53d9d5da122b384f3e`` commit of `NFD
166 repository <https://github.com/named-data/NFD/tree/a22a2172611b1cb93b2e2f53d9d5da122b384f3e>`__.
167
168Note RIB Manager is not yet available in ndnSIM.
169
170- Packet format changed to the `NDN packet format <http://named-data.net/doc/ndn-tlv/>`__.
171
172- Code style changes to conform to `ndn-cxx Code Style and Coding
173 Guidelines <http://named-data.net/doc/ndn-cxx/current/code-style.html>`__ This change also
174 includes renaming of the header and source files: ``*.h`` -> ``*.hpp``, ``*.cc`` -> ``*.cpp``
175
176- ndnSIM now uses C++11.
177
178New Features
179~~~~~~~~~~~~
180
Spyridon Mastorakis5897c962015-08-31 15:37:18 -0700181- Integration with NFD codebase.
Alexander Afanasyevab933c62015-01-14 00:50:31 -0500182- A realistic behavior is added to the simulations.
183- Forwarding plane extensions can be used in both ndnSIM simulations and real NFD deployment.
184- Per namespace forwarding strategies for different namespaces (one strategy per namespace).
185- New examples:
186- ``ndn-load-balancer``
187- ``ndn-grid-multiple-strategies``
188- ``ndn-different-strategy-per-prefix``
189- Basic examples using python bindings: ``ndn-simple.py`` and ``ndn-grid.py``
190- Use of the the full-featured NDN packet format.
191- Full-featured support for Interest selectors.
192- Full-featured crypto operations can be simulated (disabled by default).
193- FibHelper to manage FIB entries.
194- StrategyChoiceHelper to manage per-namespace forwarding strategy selection.
195
196Changes
197~~~~~~~
198
199- HopCount tracing now includes only one way network-level hop count (e.g., the number of physical
200 links traversed by a packet). Previously, this tracing was round-trip and included applications
201 hops.
202- Python bindings have changed and, due to limitations of pybindgen, currently cover a smaller
203 subset of C++ code (`Task #2341 <http://redmine.named-data.net/issues/2341>`__).
204- LinkControlHelper now uses ErrorRate to simulate link failure/recovery. Previously it was relying
205 on Up/Down flag on NDN level.
206- The Face abstraction of NFD is now used.
207
208Bug fixes
209~~~~~~~~~
210
211- Fix processing files with customized LossRate or Queue model in AnnotatedTopologyReader `Bug
212 #2354 <http://redmine.named-data.net/issues/2354>`__.
213
214Removals
215~~~~~~~~
216
217- PyNDN emulation
218- (temporarily) ApiFace. Will be replaced with emulation of ndn-cxx ``ndn::Face`` in future
219 releases (`Issue #2370 <http://redmine.named-data.net/issues/2370>`__).
220- (temporarily) UdpFace, TcpFace (`Issue #2371 <http://redmine.named-data.net/issues/2371>`__).
221- Limits, LimitsWindow, LimitsRate.
222- PIT, FIB with "replacement" policies.
223- Old deprecated packet formats.