docs: Documentation update
Change-Id: I6f916eb822a59e980e8fb1134886c3431755119c
diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index eb001fa..c152ad4 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -7,47 +7,69 @@
.. sidebar:: ndnSIM components
- .. image:: _static/ndnsim-components.*
+ .. image:: _static/ndnSIM-structure.*
:width: 100%
-The ndnSIM is NS-3 module that implements Named Data Networking (NDN) communication model, the clean slate Internet design. ndnSIM is specially optimized for simulation purposes and has a cleaner and more extensible internal structure comparing to the existing NDN implementation (NDNx).
+ndnSIM 2.0 is a new release of `NS-3 based Named Data Networking (NDN) simulator
+<http://ndnsim.net/1.0/>`_ that went through extensive refactoring and rewriting. The key
+new features of the new version:
-Following the NDN architecture, ndnSIM is implemented as a new network-layer protocol model, which can run on top of any available link-layer protocol model (point-to-point, CSMA, wireless, etc.).
+- ndnSIM no longer re-implements basic NDN primitives and directly uses implementation
+ from `ndn-cxx library (NDN C++ library with eXperimental eXtensions)
+ <http://named-data.net/doc/ndn-cxx/>`_.
+- All NDN forwarding and management is implemented directly using source code of `Named
+ Data Networking Forwarding Daemon (NFD) <http://named-data.net/doc/NFD/>`_
+- Packet format changed to `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
.. note::
- It will also be possible to run ndnSIM on top of network-layer (IPv4, IPv6) and transport-layer (TCP, UDP) protocols.
- However, it is not yet implemented and patches are welcome.
+ Please note that ndnSIM 2.0 has major refactoring and simulation scenario written for
+ previous releases most likely would need to be changed to run on ndnSIM 2.0 platform.
-.. This flexibility allows ndnSIM to simulate scenarios of various homogeneous and heterogeneous networks (e.g., NDN-only, NDN-over-IP, etc.).
+Such integration with ndn-cxx and NFD ensures that the simulations are maximally realistic
+and can be reproduced in real environments with virtually no changes to the source code.
+In addition to that, any experiments with NDN forwarding (e.g., custom forwarding
+strategies) inside ndnSIM can be directly used within the real NFD implementation.
-The simulator is implemented in a modular fashion, using separate C++ classes to model behavior of each network-layer entity in NDN: :ndnsim:`pending Interest table (PIT) <Pit>`, :ndnsim:`forwarding information base (FIB) <Fib>`, :ndnsim:`content store <ContentStore>`, :ndnsim:`network <NetDeviceFace>` and :ndnsim:`application <AppFace>` interfaces, :ndnsim:`Interest forwarding strategies <ForwardingStrategy>`, etc.
-This modular structure allows any component to be easily modified or replaced with no or minimal impact on other components.
-In addition, the simulator provides an extensive collection of interfaces and helpers to perform detailed tracing behavior of every component, as well as NDN traffic flow.
+Specifically, the simulator directly uses NFD implementations of :nfd:`pending Interest
+table (PIT) <nfd::Pit>`, :nfd:`forwarding information base (FIB) <nfd::Fib>`, and
+:nfd:`content store <nfd::Cs>` data structures. In addition to that, ndnSIM allows
+experimentation with :ndnSIM:`ndnSIM-specific content store <ndn::ContentStore>` along
+with its cache replacement policies ported from the previous version of ndnSIM.
-The current wire format for the Interest and Data packets used by ndnSIM is defined in :ref:`ndnSIM packet format`.
-ndnSIM also has an option to be compatible to wire format used by `NDNx implementation <http://named-data.net/>`_ (NDNx binary XML encoding). However currently, this option is deprecated, but can be reintroduced in the future as an optional wire format.
+ndnSIM is implemented as a new network-layer protocol model and can run on top of any
+available link-layer protocol model (point-to-point, CSMA, wireless, etc.).
+In addition, the simulator provides an extensive collection of interfaces and helpers to
+perform detailed tracing behavior of every component, as well as NDN traffic flow.
+
More documentation
------------------
-Overall structure of ndnSIM is described in our `technical report <http://lasr.cs.ucla.edu/afanasyev/data/files/Afanasyev/ndnSIM-TR.pdf>`_.
+Overall structure of ndnSIM is described in our `technical report
+<http://lasr.cs.ucla.edu/afanasyev/data/files/Afanasyev/ndnSIM-TR.pdf>`_.
`ndnSIM API documentation <doxygen/index.html>`_
-Also, you can `join our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in discussions about ndnSIM implementation and simulations in general.
-Do not forget to check mailling list `archives <http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_.
+Also, you can `join our mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ to see and participate in
+discussions about ndnSIM implementation and simulations in general. Do not forget to
+check mailling list `archives <http://www.lists.cs.ucla.edu/pipermail/ndnsim/>`_.
Support
-------
-The code of ndnSIM is in active development. Bug reports (issues) as well as new feature implementation are always welcome.
+The code of ndnSIM is in active development. Bug reports (issues) as well as new feature
+implementation are always welcome.
-To file a bug report, please use `GitHub Issues <https://github.com/NDN-Routing/ndnSIM/issues>`_.
+To file a bug report, please use `NDN Redmine
+<http://redmine.named-data.net/projects/ndnsim>`_.
To create new feature, please fork the code and submit Pull Request on GitHub.
-And of course, `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_ is the best way to communicate with and get support from ndnSIM team and other users of ndnSIM.
+And of course, `our mailing list <http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim>`_
+is the best way to communicate with and get support from ndnSIM team and other users of
+ndnSIM.
A very short guide to the code
------------------------------
@@ -58,36 +80,50 @@
| Folder | Description |
+=================+=====================================================================+
| ``model/`` | implementation of NDN base: :ndnsim:`L3Protocol`, faces |
-| | (:ndnsim:`Face`, :ndnsim:`NetDeviceFace`, forwarding |
+| | (:ndnsim:`Face`, :ndnsim:`NetDeviceFace`, |
| | :ndnsim:`AppFace`), |
-| | strategies (:ndnsim:`ForwardingStrategy`, |
-| | :ndnsim:`Flooding`, :ndnsim:`SmartFlooding`, :ndnsim:`BestRoute`), |
| | etc. |
+-----------------+---------------------------------------------------------------------+
+| ``NFD/`` | contains the `NFD`_ source code with few modifications to make it |
+| | compatible with the simulator |
++-----------------+---------------------------------------------------------------------+
| ``apps/`` | applications (in NS-3 sense) that can be installed on the nodes. |
| | Right now we have one producer (:ndnsim:`Producer`) and a |
-| | collection of consumer (:ndnsim:`ConsumerCbr`, |
-| | :ndnsim:`ConsumerWindow`, |
-| | :ndnsim:`ConsumerBatches`). See doxygen documentation or |
+| | collection of consumer applications (:ndnsim:`ConsumerCbr`, |
+| | :ndnsim:`ConsumerWindow`, :ndnsim:`ConsumerBatches`, |
+| | :ndnsim:`ConsumerZipfMandelbrot`). See doxygen documentation or |
| | source code for details |
+-----------------+---------------------------------------------------------------------+
+| ``utils/`` | helper classes, including implementation of generalized data |
+| | structures, topology readers and tracers |
++-----------------+---------------------------------------------------------------------+
| ``helper/`` | a number of :doc:`useful helpers <helpers>` |
+-----------------+---------------------------------------------------------------------+
| ``examples/`` | contain :doc:`several example scenarios <examples>` |
+-----------------+---------------------------------------------------------------------+
-| ``utils/`` | helper classes, including implementation of generalized data |
-| | structures |
-+-----------------+---------------------------------------------------------------------+
-| ``plugins/`` | a number of plugins that may be helpful to run simulation scenarios |
-+-----------------+---------------------------------------------------------------------+
+
+.. _NFD: http://named-data.net/doc/NFD/
Logging
-------
-Almost every component in ndnSIM exports logging interface, so in debug compilation it is possible to track many internal details.
-For example, logging of :ndnsim:`Face` and :ndnsim:`Consumer` shows everything what happens in :ndnsim:`Face` and :ndnsim:`Consumer` classes::
+Almost every component in ndnSIM exports logging interface, so in debug compilation it is
+possible to track many internal details. For example, logging of :ndnsim:`Face` and
+:ndnsim:`Consumer` shows everything what happens in :ndnsim:`Face` and :ndnsim:`Consumer`
+classes::
NS_LOG=ndn.Face:ndn.Consumer ./waf --run=ndn-simple
-Refer to the source code and NS-3 documentation to see what logging interfaces are available and about details how enable one or more logging interfaces.
+Refer to the source code and NS-3 documentation to see what logging interfaces are
+available and about details how enable one or more logging interfaces.
+.. note::
+
+ Please remember that logging is enabled **only** in debug mode. When simulator is
+ compiled in optimized mode (``./waf configure -d optimized``), logging will be
+ completely disabled as it significantly slows down execution.
+
+.. note::
+
+ A list of log components available in the current version of NS-3 and ndnSIM is listed
+ `in this page <doxygen/LogComponentList.html>`_.