blob: 99058726d7f3374a42b8d2df25e1de088b194a72 [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 Mastorakisb1592bc2016-12-07 14:34:30 -08008Release 2.3 (Changes since release 2.2)
9---------------------------------------
10
11Release date: December 12, 2016
12
13Overview
14~~~~~~~~
15
16- The submodules of NFD and ndn-cxx have been both upgraded to version 0.5
17 (:issue:`3875`).
18
19 Features of NFD:
20
21 * Adaptive SRTT-based Forwarding strategy has been added.
22 * Breaking change -- Configurable policy for admission of unsolicited data packets into the
23 content store have been introduced.
24 * Introduce mechanism to update properties (e.g., flags, persistency) of
25 an existing Face.
26 * Breaking change -- ForwarderStatus dataset can now be requested only
27 with /localhost/nfd/status/general interest.
28 * Breaking change -- Strategy API update. FIB entry is no longer supplied
29 to the Strategy::afterReceiveInterest method (i.e., FIB lookup is not
30 performed by the forwarding pipelines). When necessary, a strategy can
31 request FIB lookup using Strategy::lookupFib.
32 * Refactor implementation of RIB Manager to make it uniform with
33 other managers.
34
35 Features of ndn-cxx:
36
37 * New transformation API.
38 * Introduce Name::deepCopy to allow memory optimizations when working
39 with Name objects.
40 * New ndn::security::CommandInterestValidator class.
41 * New FaceUpdateCommand structure for NFD management protocols.
42 * Breaking change - Expose ControlResponse as part of
43 Controller::CommandFailCallback.
44 * Breaking change - Change security constants to corresponding strongly
45 typed enumerations.
46
47 .. note::
48 In order to retrieve the marked versions of ndn-cxx and NFD, use
49 ``--recursive`` option to the git clone command or run ``git
50 submodule update --init`` after clone, pull, or merge.
51
52- Replace NetDeviceFaceLinkService with NetDeviceTransport to add
53 full support of NDNLPv2 and, thus, network-layer NACK handling to
54 ndnSIM (:issue:`3871`).
55
56 ndnSIM now uses an implementation of nfd::face::Transport that enables the
57 full support of NDNLPv2 and the handling of network-layer NACKs generated
58 by NFD. NACKs can reach the ndnSIM applications.
59
60 .. note::
61 NACK handling by ndnSIM came at the cost of losing the NS3 related
62 packet tags. The hopCount tag is now implemented as a tag of a packet
63 directly at the NDNLPv2 layer.
64
65New features
66~~~~~~~~~~~~
67
68- Enable NACK tracing by the network layer tracers (:issue:`3872`).
69
70- NetworkRegionTable helper was added to allow the configuration
71 of the simulated nodes' NetworkRegionTable (:issue:`3806`).
72
73Improvements and bug fixes
74~~~~~~~~~~~~~~~~~~~~~~~~~~
75
76- Internal refactoring to use the ndnSIM-specific transport implementation
77 (ndn::L3Protocol, ndn::StackHelper, ndn::LinkControlHelper,
78 ndn::GlobalRoutingHelper, ndn::Consumer, ndn::Producer).
79
80- Updates of the ndnSIM documentation (:issue:`3876`)
81
82 * Added explanation about the support of NDNLPv2 and its implications.
83
spirosmastorakisc09bb402016-10-28 19:16:58 -070084Release 2.2 (Changes since release 2.1)
85---------------------------------------
86
87Release date: November 11, 2016
88
89Overview
90~~~~~~~~
91
92- The submodules of NFD and ndn-cxx have been both upgraded to version 0.4.1
93 (:issue:`3560`).
94
95 Features of NFD:
96
97 * Face system is refactored.
98 * Data Retrieval using full names is fixed.
99 * Allow setting CS capacity to 0.
100 * LinkService provides an "adaptation" layer to
101 translate between NDN packets and data blocks communicated through Transport.
102 * Face provides combines Transport and LinkServices, providing high-level
103 interface to work with Interest/Data/Nack packets inside NFD.
104 * Networking NACK in pipelines and best-route strategy.
105 * Refactored implementation of NFD management.
106 * Interest forwarding processes Link included in interest packets.
107
108 Features of ndn-cxx:
109
110 * LocalControlHeader for special signaling between application and NFD has
111 been replaced with NDNLPv2 signaling.
112 * NDNLPv2 Network NACK support in Face abstraction.
113 * New API in Face class to remove all pending Interests.
114
115 .. note::
116 In order to retrieve the marked versions of ndn-cxx and NFD, use
117 ``--recursive`` option to the git clone command or run ``git
118 submodule update --init`` after clone, pull, or merge.
119
120- Replace NetDeviceFace with NetDeviceFaceLinkService and AppFace with
121 AppFaceModel to match NFD's v0.4+ Face model (:issue:`3560`).
122
123 ndnSIM (for now) intentionally uses LinkService instead of Transport for
124 optimization purposes and in order to preserve ns3::Packet Tags. This
125 may be fixed in the future when there is a different mechanism to
126 propagate ns3 Tags.
127
128 .. note::
Spyridon Mastorakisb1592bc2016-12-07 14:34:30 -0800129 This version of ndnSIM does not include support for NDNLPv2 and, thus, cannot
spirosmastorakisc09bb402016-10-28 19:16:58 -0700130 yet be used to simulate network-level NACKs across the simulated nodes.
131 This will be addressed in the next release of ndnSIM.
132
133- ndnSIM no longer officially support Ubuntu Linux 12.04, as it now requires
134 a more modern compiler version and dependent libraries.
135
136New features
137~~~~~~~~~~~~
138
139- The NetDevice address is now represented as a LocalUri instance for
140 NetDevice-based Faces (:issue:`2665`).
141
142- Enable configurability of NFD's managers (:issue:`3328`).
143
144 The managers of NFD can be enabled/disabled as specified in a simulation
145 scenario.
146
147Improvements and bug fixes
148~~~~~~~~~~~~~~~~~~~~~~~~~~
149
150- Bugfix in RandomPolicy for the "old-style" ContentStore implementation.
151
152- Updates of the `ndnSIM 2 Technical Report <https://named-data.net/publications/techreports/ndn-0028-2-ndnsim-v2/>`__
153
154 Technical Report became up-to-date with the latest version of ndnSIM.
155 Please see report's change-log for more detailed information.
156
157- Updates of the ndnSIM documentation (:issue:`3835`)
158
159 * Updated out-dated statements about NFD's CS implementation (:issue:`3827`).
160 * Added explanation about the limited support of NDNLPv2 and its implications.
161 * Fixed description of the ConsumerBatches application.
162 * Added homebrew instructions for dependency installation on OS X.
163 * Added specification of ndn::CsTracer output format.
164
165********************************************************************************
166
Spyridon Mastorakis5897c962015-08-31 15:37:18 -0700167Release 2.1 (Changes since release 2.0)
168---------------------------------------
169
170Release date: September 4, 2015
171
172Overview
173~~~~~~~~
174
175- Integration with ndn-cxx and NFD codebases has been refactored to include ndn-cxx and
176 NFD repositories as git submodules within ndnSIM repository (:issue:`3138`).
177
178 This refactoring simplifies upgrading ndn-cxx and NFD to new versions and prevents old
179 simulation code to break because of API changes in newer versions of ndn-cxx library.
180
181 .. note::
182 In order to retrieve the marked versions of ndn-cxx and NFD, use ``--recursive``
183 option to the git clone command or run ``git submodule update --init`` after clone,
184 pull, or merge.
185
186- The official home for ndnSIM codebase has been moved to `GitHub named-data-ndnSIM
187 organization <https://github.com/named-data-ndnSIM>`__ (:issue:`3123`):
188
189 * `ndnSIM codebase <https://github.com/named-data-ndnSIM/ndnSIM>`__
190 * `Modified version of ndn-cxx <https://github.com/named-data-ndnSIM/ndn-cxx>`__
191 * `Modified version of NFD <https://github.com/named-data-ndnSIM/NFD>`__
192 * `Modified version of NS-3 <https://github.com/named-data-ndnSIM/ns-3-dev>`__
193 * `Modified version of python bindings generator <https://github.com/named-data-ndnSIM/pybindgen>`__
194
195- Modified version of NS-3 was updated to (rebased on top of) version 2.23-dev, with
196 ndnSIM codebase adjusted to reflect API changes (:issue:`3122`)
197
198- NFD and ndn-cxx has been upgraded to version 0.3.4 (:issue:`3125`)
spirosmastorakisc09bb402016-10-28 19:16:58 -0700199
Spyridon Mastorakis5897c962015-08-31 15:37:18 -0700200New features
201~~~~~~~~~~~~
202
203- ndnSIM-specific version of :ndnsim:`ndn::Face` (:issue:`2370`)
204
205 The updated version of :ndnsim:`ndn::Face` specially designed to allow writing
206 simulation applications in the same way as real applications. It is also possible to
207 directly use codebase of the existing applications to drive simulations, provided that
208 the codebase meets or can be adjusted to meet the requirements listed in
209 :doc:`guide-to-simulate-real-apps`.
210
211- Full support for NFD'S RIB manager (:issue:`2370`)
212
213 .. note::
214 RIB manager support is currently available only for applications based on ndn-cxx.
215 :ndnsim:`FibHelper::AddRoute` and :ndnsim:`FibHelper::RemoveRoute` used by
216 :ndnsim:`ndn::Producer` and :ndnsim:`ndn::GlobalRoutingHelper` are currently
217 interacting directly with NFD's FIB manager. This issue will be resolved in the next
218 release of ndnSIM (:issue:`3121`)
219
220- Tutorial and example on how to speed up simulations with MPI module of NS-3:
221 `<http://ndnsim.net/2.0/parallel-simulations.html>`__
222
223- Two new helpers to simplify writing basic simulation scenarios:
224
225 - :ndnsim:`ScenarioHelper` leverages C++11 constructs to write scenarios. Example:
226
227 .. code-block:: c++
228
229 ScenarioHelper helper;
230 helper.createTopology({
231 {"1", "2"},
232 {"2", "3"}
233 });
234
235 helper.addRoutes({
236 {"1", "2", "/prefix", 1},
237 {"2", "3", "/prefix", 1}
238 });
239
240 helper.addApps({
241 {"1", "ns3::ndn::ConsumerCbr",
242 {{"Prefix", "/prefix"}, {"Frequency", "1"}},
243 "0s", "100s"},
244 {"3", "ns3::ndn::Producer",
245 {{"Prefix", "/prefix"}, {"PayloadSize", "1024"}},
246 "0s", "100s"}
247 });
248
249
250 - :ndnsim:`FactoryCallbackApp` simplifies creation of basic apps without creating a
251 separate class that is derived from ``ns3::Applications``. Example:
252
253 .. code-block:: c++
254
255 class SomeApp
256 {
257 public:
258 SomeApp(size_t initParameter);
259 ...
260 };
261
262 FactoryCallbackApp::Install(node, [] () -> shared_ptr<void> {
263 return make_shared<SomeApp>(42);
264 })
265 .Start(Seconds(1.01));
266
267Improvements and bug fixes
268~~~~~~~~~~~~~~~~~~~~~~~~~~
269
270- Updates of ndnSIM documentation
271
272 * Updated the structure for the `ndnSIM website index page <http://ndnsim.net>`__
273 * Updated installation instructions to reflect refactoring and relocation of ndnSIM codebase
274 * API documentation (doxygen) improvements
275 * Updated list of ndnSIM research papers
276
277- The NDN stack can now be updated to handle any simulation topology changes after
278 its initial installation on a node (:issue:`2717`)
279
280- Application ID that appears in :ndnsim:`ndn::AppDelayTracer` output is now ID of the
281 application on the node, not ID of the application face that was used previously.
282
283- FibHelper has been extended to support route removals (:issue:`2358`)
284
285- ndnSIM codebase now partially covered with unit-tests (:issue:`2369`, :issue:`3059`,
286 :issue:`2783`)
287
288- Bugfixes:
289
290 * In :ndnsim:`ndn::GlobalRoutingHelper::CalculateAllPossibleRoutes` that caused crash in
291 some cases (:issue:`2535`)
292
293 * In FailLink and Uplink methods of :ndnsim:`ndn::LinkControlHelper` class that affected
294 more links than requested (:issue:`2783`)
295
296 * With hop count of data packets retrieved from the Contest Store of NFD (:issue:`2764`)
297
298 * In :ndnsim:`ndn::Producer` application that caused a wrong dummy signature to be added
299 to the constructed data packets (:issue:`2927`)
300
301
302
303********************************************************************************
304
305
306
307Release 2.0 (Changes since release 1.0)
308---------------------------------------
309
310Release date: January 13, 2015
Alexander Afanasyevab933c62015-01-14 00:50:31 -0500311
312Overview
313~~~~~~~~
314
315ndnSIM 2.0 is a new release of NS-3 based Named Data Networking (NDN) simulator that went through
316extensive refactoring and rewriting. The key new features of the new version:
317
318- ndnSIM no longer re-implements basic NDN primitives and directly uses implementation from
319 `ndn-cxx library (NDN C++ library with eXperimental
320 eXtensions) <http://named-data.net/doc/ndn-cxx/>`__.
321
322- All NDN forwarding and management is implemented directly using source code of `Named Data
323 Networking Forwarding Daemon (NFD) <http://named-data.net/doc/NFD/>`__. The current code is based
324 on ``a22a2172611b1cb93b2e2f53d9d5da122b384f3e`` commit of `NFD
325 repository <https://github.com/named-data/NFD/tree/a22a2172611b1cb93b2e2f53d9d5da122b384f3e>`__.
326
327Note RIB Manager is not yet available in ndnSIM.
328
329- Packet format changed to the `NDN packet format <http://named-data.net/doc/ndn-tlv/>`__.
330
331- Code style changes to conform to `ndn-cxx Code Style and Coding
332 Guidelines <http://named-data.net/doc/ndn-cxx/current/code-style.html>`__ This change also
333 includes renaming of the header and source files: ``*.h`` -> ``*.hpp``, ``*.cc`` -> ``*.cpp``
334
335- ndnSIM now uses C++11.
336
337New Features
338~~~~~~~~~~~~
339
Spyridon Mastorakis5897c962015-08-31 15:37:18 -0700340- Integration with NFD codebase.
Alexander Afanasyevab933c62015-01-14 00:50:31 -0500341- A realistic behavior is added to the simulations.
342- Forwarding plane extensions can be used in both ndnSIM simulations and real NFD deployment.
343- Per namespace forwarding strategies for different namespaces (one strategy per namespace).
344- New examples:
345- ``ndn-load-balancer``
346- ``ndn-grid-multiple-strategies``
347- ``ndn-different-strategy-per-prefix``
348- Basic examples using python bindings: ``ndn-simple.py`` and ``ndn-grid.py``
349- Use of the the full-featured NDN packet format.
350- Full-featured support for Interest selectors.
351- Full-featured crypto operations can be simulated (disabled by default).
352- FibHelper to manage FIB entries.
353- StrategyChoiceHelper to manage per-namespace forwarding strategy selection.
354
355Changes
356~~~~~~~
357
358- HopCount tracing now includes only one way network-level hop count (e.g., the number of physical
359 links traversed by a packet). Previously, this tracing was round-trip and included applications
360 hops.
361- Python bindings have changed and, due to limitations of pybindgen, currently cover a smaller
362 subset of C++ code (`Task #2341 <http://redmine.named-data.net/issues/2341>`__).
363- LinkControlHelper now uses ErrorRate to simulate link failure/recovery. Previously it was relying
364 on Up/Down flag on NDN level.
365- The Face abstraction of NFD is now used.
366
367Bug fixes
368~~~~~~~~~
369
370- Fix processing files with customized LossRate or Queue model in AnnotatedTopologyReader `Bug
371 #2354 <http://redmine.named-data.net/issues/2354>`__.
372
373Removals
374~~~~~~~~
375
376- PyNDN emulation
377- (temporarily) ApiFace. Will be replaced with emulation of ndn-cxx ``ndn::Face`` in future
378 releases (`Issue #2370 <http://redmine.named-data.net/issues/2370>`__).
379- (temporarily) UdpFace, TcpFace (`Issue #2371 <http://redmine.named-data.net/issues/2371>`__).
380- Limits, LimitsWindow, LimitsRate.
381- PIT, FIB with "replacement" policies.
382- Old deprecated packet formats.