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