docs: Update documentation for the release of ndnSIM 2.3

Change-Id: I3d23bcf29f4858049d1040a3e421e1c7151b3ee1
Refs: #3876
diff --git a/docs/Doxyfile b/docs/Doxyfile
index 0ffcccf..6bbb07f 100644
--- a/docs/Doxyfile
+++ b/docs/Doxyfile
@@ -1978,7 +1978,11 @@
                          NFD_LOG_INCLASS_TEMPLATE_SPECIALIZATION_DEFINE \
                          NFD_LOG_INCLASS_2TEMPLATE_SPECIALIZATION_DEFINE \
                          NDN_CXX_DECL_OVERRIDE=override \
-                         NDN_CXX_DECL_FINAL=final
+                         NDN_CXX_DECL_FINAL=final \
+                         FINAL_UNLESS_WITH_TESTS=final \
+                         NFD_LOG_INCLASS_DEFINE \
+                         NFD_REGISTER_UNSOLICITED_DATA_POLICY \
+                         NDN_LOG_INIT
 
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
diff --git a/docs/ns3_html_theme/ns3_doxy_header.html b/docs/ns3_html_theme/ns3_doxy_header.html
index a63e509..5f45f4f 100644
--- a/docs/ns3_html_theme/ns3_doxy_header.html
+++ b/docs/ns3_html_theme/ns3_doxy_header.html
@@ -33,7 +33,7 @@
   </td>
   <td id="projecttext">
    <div id="projectbrief">NS-3 based Named Data Networking (NDN) simulator</div>
-   <span id="projectnumber">ndnSIM 2.0: NDN, CCN, CCNx, content centric networks</span>
+   <span id="projectnumber">ndnSIM 2.3: NDN, CCN, CCNx, content centric networks</span>
   </td>
   <!--BEGIN DISABLE_INDEX-->
    <!--BEGIN SEARCHENGINE-->
diff --git a/docs/source/_static/ndnSIM-structure.pdf b/docs/source/_static/ndnSIM-structure.pdf
index c0829a2..9ddee01 100644
--- a/docs/source/_static/ndnSIM-structure.pdf
+++ b/docs/source/_static/ndnSIM-structure.pdf
Binary files differ
diff --git a/docs/source/_static/ndnSIM-structure.png b/docs/source/_static/ndnSIM-structure.png
index cf2c3f1..4bf8732 100644
--- a/docs/source/_static/ndnSIM-structure.png
+++ b/docs/source/_static/ndnSIM-structure.png
Binary files differ
diff --git a/docs/source/_templates/indexcontent.html b/docs/source/_templates/indexcontent.html
index 1595e5d..e83a04b 100644
--- a/docs/source/_templates/indexcontent.html
+++ b/docs/source/_templates/indexcontent.html
@@ -56,8 +56,9 @@
       <td width="50%" valign="top">
         <h2>ndnSIM Versions</h2>
         <div class="tile">
-          <p class="biglink"><a class="biglink" href="#">ndnSIM 2.2</a><br/>
+          <p class="biglink"><a class="biglink" href="#">ndnSIM 2.3</a><br/>
             <span class="linkdescr">latest version</span></p>
+          <p class="biglink"><a class="biglink" href="http://ndnsim.net/2.2/">ndnSIM 2.2</a><br/>
           <p class="biglink"><a class="biglink" href="http://ndnsim.net/2.1/">ndnSIM 2.1</a><br/>
           <p class="biglink"><a class="biglink" href="http://ndnsim.net/2.0/">ndnSIM 2.0</a><br/>
           <p class="biglink"><a class="biglink" href="http://ndnsim.net/1.0/">ndnSIM 1.0</a><br/>
@@ -73,10 +74,10 @@
           <p>If you are referring to ndnSIM in a published work, please cite the following papers, not just the ndnSIM website. Thank you!
           <ul>
             <li>
-              S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, &#8220;ndnSIM 2.0: A new version of the NDN simulator for NS-3,&#8221; NDN, Technical Report NDN-0028, Revision 2, 2016 (<a class="reference external" href="http://named-data.net/techreport/ndn-0028-2-ndnsim-v2.pdf">PDF</a>) (<a class="reference external" href="http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/399">BibTex</a>)
+              S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, &#8220;ndnSIM 2: An updated NDN simulator for NS-3,&#8221; NDN, Technical Report NDN-0028, Revision 2, 2016 (<a class="reference external" href="https://named-data.net/wp-content/uploads/2016/11/ndn-0028-2-ndnsim-v2.pdf">PDF</a>) (<a class="reference external" href="http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/399">BibTex</a>)
             </li>
             <li>
-            A. Afanasyev, I. Moiseenko, and L. Zhang, &#8220;ndnSIM: NDN simulator for NS-3,&#8221; NDN, Technical Report NDN-0005, 2012 (<a class="reference external" href="http://named-data.net/wp-content/uploads/TRndnsim.pdf">PDF</a>) (<a class="reference external" href="http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/367">BibTex</a>)
+            A. Afanasyev, I. Moiseenko, and L. Zhang, &#8220;ndnSIM: NDN simulator for NS-3,&#8221; NDN, Technical Report NDN-0005, 2012 (<a class="reference external" href="https://named-data.net/wp-content/uploads/TRndnsim.pdf">PDF</a>) (<a class="reference external" href="http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/367">BibTex</a>)
             </li>
           </ul>
         </div>
diff --git a/docs/source/faq.rst b/docs/source/faq.rst
index 1f65e74..2e83470 100644
--- a/docs/source/faq.rst
+++ b/docs/source/faq.rst
@@ -18,7 +18,7 @@
     **The following instructions are for those who want to install latest version of boost libraries** :red:`and has root access`.
 
 The following commands would install the latest version of boost libraries (at the time of
-writing, version 1.59) ot ``/usr/local``, assuming you have a root access to your machine.  If
+writing, version 1.62) ot ``/usr/local``, assuming you have a root access to your machine.  If
 you don't have root access, please refer to section :ref:`Installing boost libraries to a
 non-privileged location`.
 
@@ -29,9 +29,9 @@
 .. code-block:: bash
    :linenos:
 
-    wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
-    tar jxf boost_1_59_0.tar.bz2
-    cd boost_1_59_0
+    wget http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2
+    tar jxf boost_1_62_0.tar.bz2
+    cd boost_1_62_0
     ./bootstrap.sh
     sudo ./b2 --prefix=/usr/local install
 
@@ -63,15 +63,15 @@
     going wrong.**
 
 Normally, to compile and install boost libraries in non-privileged mode, you would need to
-issue following commands (e.g., for boost version 1.59.0):
+issue following commands (e.g., for boost version 1.62.0):
 
 .. code-block:: bash
    :linenos:
 
     export BOOSTDIR=/home/non-privileged-user/boost
-    wget http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.bz2
-    tar jxf boost_1_59_0.tar.bz2
-    cd boost_1_59_0
+    wget http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2
+    tar jxf boost_1_62_0.tar.bz2
+    cd boost_1_62_0
     ./bootstrap.sh
     ./b2 --prefix=$BOOSTDIR install
 
@@ -138,10 +138,10 @@
 Something is wrong with your python bindings and python bindings dependencies.  Please follow
 the :ref:`requirements` section that lists what should be installed in order to run visualizer.
 
-.. _Problems with the gtk python module on OS X:
+.. _Problems with the gtk python module on macOS:
 
-Problems with the gtk python module on OS X
--------------------------------------------
+Problems with the gtk python module on macOS
+--------------------------------------------
 
 .. topic:: ./waf configure got stuck during the gtk module check
 
@@ -171,11 +171,8 @@
 
     How the current version of ndnSIM handles network-level NACKs?
 
-ndnSIM 2.2 does not include support for NDNLPv2 and, thus, cannot yet be
-used to simulate network-level NACKs across simulation nodes. This will be
-addressed in the next release of ndnSIM. The way to address that is to
-implement a Link Service specific to ndnSIM, which will come at the cost of
-losing the NS3 tags attached to the packets.
+ndnSIM 2.3 includes full support of NDNLPv2 and, thus, can be
+used to simulate network-level NACKs across simulation nodes.
 
 General questions
 -----------------
diff --git a/docs/source/getting-started.rst b/docs/source/getting-started.rst
index 802daa2..c193c0a 100644
--- a/docs/source/getting-started.rst
+++ b/docs/source/getting-started.rst
@@ -11,9 +11,9 @@
 
 - Ubuntu Linux 14.04 (32- and 64-bit platform)
 - Ubuntu Linux 16.04 (32- and 64-bit platform)
-- OS X 10.9
-- OS X 10.10
-- OS X 10.11
+- macOS 10.10
+- macOS 10.11
+- macOS 10.12
 
 .. _requirements:
 
@@ -26,7 +26,8 @@
 -  ``libsqlite3``
 -  ``libcrypto++``
 -  ``pkg-config``
--  Boost libraries >= 1.53
+-  ``openssl``
+-  Boost libraries >= 1.54
 
 .. role:: red
 
@@ -40,19 +41,19 @@
 Following are the detailed steps for each platform to install the compiler, all necessary
 development tools and libraries, and ndn-cxx prerequisites.
 
-- OS X
+- macOS
 
-  * OS X with MacPorts:
+  * macOS with MacPorts:
 
    .. code-block:: bash
 
-       sudo port install pkgconfig boost sqlite3 libcryptopp
+       sudo port install pkgconfig boost sqlite3 libcryptopp openssl
 
-  * OS X with HomeBrew:
+  * macOS with HomeBrew:
 
    .. code-block:: bash
 
-       brew install boost cryptopp pkg-config libxml2
+       brew install boost cryptopp pkg-config openssl libxml2
        brew link --force libxml2
 
 - Linux
@@ -61,16 +62,16 @@
 
    .. code-block:: bash
 
-       sudo apt-get install build-essential libsqlite3-dev libcrypto++-dev libboost-all-dev
+       sudo apt-get install build-essential libsqlite3-dev libcrypto++-dev libboost-all-dev libssl-dev git python-setuptools
 
   * Fedora Linux
 
    .. code-block:: bash
 
-       sudo yum install gcc-g++ git sqlite-devel cryptopp-devel boost-devel
+       sudo yum install gcc-g++ git sqlite-devel cryptopp-devel boost-devel openssl-devel
 
    .. note::
-      :red:`ndnSIM requires boost version at least 1.49.` Many linux distribution
+      :red:`ndnSIM requires boost version at least 1.54.` Many linux distribution
       (Fedora 16, 17 at the time of this writing) ship an old version of boost, making it
       impossible to compile ndnSIM out-of-the-box.  Please install the latest version, following
       :ref:`these simple instructions <Installing boost libraries>`.
@@ -81,39 +82,32 @@
 should be installed.  For example, in order to run `visualizer`_ module, the following
 should be installed:
 
-- OS X
+- macOS
 
-  * OS X with MacPorts:
+  * macOS with MacPorts:
 
     .. code-block:: bash
 
-        sudo port install  py27-pygraphviz py27-goocanvas
+        sudo port install  py27-pygraphviz py27-goocanvas py27-kiwi
 
-        # If you add NDN macports repository, as described in
-        # http://named-data.net/doc/NFD/current/INSTALL.html#install-nfd-using-the-ndn-macports-repository-on-os-x
-        # you will be able to install another useful python module
-        # sudo port install py27-kiwi
-
-  * OS X with HomeBrew
+  * macOS with HomeBrew
 
     Currently, there are many missing dependencies, so it is impossible to use visualizer module with HomeBrew.  Use MacPorts instead.
 
 - Linux
 
   * Ubuntu Linux
-  
+
     .. code-block:: bash
-    
-        sudo apt-get install python-dev python-pygraphviz python-kiwi
-        sudo apt-get install python-pygoocanvas python-gnome2
-        sudo apt-get install python-rsvg ipython
-  
+
+        sudo apt-get install python-dev python-pygraphviz python-kiwi python-pygoocanvas python-gnome2 python-rsvg ipython
+
   * Fedora Linux
-  
+
     .. code-block:: bash
-    
+
         sudo yum install pygoocanvas python-kiwi graphviz-python
-    
+
         # easy_install method, since pygraphviz is not (yet?) packaged into Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=740687)
         sudo yum install graphviz-devel
         sudo yum install python-pip
@@ -173,7 +167,7 @@
    ./waf configure --enable-examples
    ./waf
 
-On OS X (with MacPorts), you may need to modify the configure command to use MacPorts
+On macOS (with MacPorts), you may need to modify the configure command to use MacPorts
 version of python:
 
 .. code-block:: bash
@@ -184,8 +178,8 @@
    ./waf
 
 .. note::
-   On OS X configuration stage may get :ref:`stuck at detecting gtk module <Problems with
-   the gtk python module on OS X>`.  Make sure you have `XQuartz
+   On macOS configuration stage may get :ref:`stuck at detecting gtk module <Problems with
+   the gtk python module on macOS>`.  Make sure you have `XQuartz
    <http://xquartz.macosforge.org>`_ installed or disable python as described in the
    following instructions.
 
@@ -211,37 +205,37 @@
   When NS-3 is configured with ``--with-examples`` flag, you can directly run all examples
   described in :doc:`examples section of this tutorial <examples>`.  For example, to run
   ``ndn-simple.cpp`` scenario, you can run the following command:
-  
+
   .. code-block:: bash
-  
+
       ./waf --run=ndn-simple
-  
+
   To run ``ndn-grid.cpp`` scenario:
-  
+
   .. code-block:: bash
-  
+
       ./waf --run=ndn-grid
-  
+
   To run the sample simulation scenarios with the logging module of NS-3 enabled (note that
   this will work only when NS-3 is compiled in debug mode):
-  
+
   .. code-block:: bash
-  
+
       NS_LOG=ndn.Producer:ndn.Consumer ./waf --run=<scenario name>
-  
+
   If you have compiled with python bindings, then you can try to run these simulations with
   visualizer:
-  
+
   .. code-block:: bash
-  
+
       ./waf --run=ndn-simple --vis
-  
+
   or:
-  
+
   .. code-block:: bash
-  
+
       ./waf --run=ndn-grid --vis
-  
+
   .. note::
      Do not forget to configure and compile NS-3 in optimized mode (``./waf configure -d
      optimized``) in order to run actual simulations.
@@ -249,37 +243,37 @@
 - Real experimentation
 
   Simulation scenarios can be written directly inside NS-3 in ``scratch/`` or ``src/ndnSIM/examples`` folder.
-  
+
   Alternative and a recommended way is to write simulation scenarios in a separate
   repository, not related to either NS-3 or ndnSIM.  For example, you can use the
   following template to write your extensions, simulation scenarios, and metric processing
   scripts: `<http://github.com/cawka/ndnSIM-scenario-template>`_:
-  
+
   .. code-block:: bash
-  
+
       mkdir ndnSIM
       cd ndnSIM
       git clone https://github.com/named-data-ndnSIM/ns-3-dev.git ns-3
       git clone https://github.com/named-data-ndnSIM/pybindgen.git pybindgen
       git clone --recursive https://github.com/named-data-ndnSIM/ndnSIM.git ns-3/src/ndnSIM
-  
+
       # Build and install NS-3 and ndnSIM
       cd ns-3
       ./waf configure -d optimized
       ./waf
-  
+
       sudo ./waf install
       cd ..
-  
+
       git clone https://github.com/named-data-ndnSIM/scenario-template.git scenario
       cd scenario
       export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
       export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
-  
+
       ./waf configure
-  
+
       ./waf --run <scenario>
-  
+
   For more detailed information, refer to `README file
   <https://github.com/cawka/ndnSIM-scenario-template/blob/master/README.md>`_.
 
diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index 27ca8df..20fc56f 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -48,7 +48,7 @@
 strategies) inside ndnSIM can be directly used within the real NFD implementation.
 
 Specifically, the simulator directly uses NFD implementations of :nfd:`pending Interest
-table (PIT) <nfd::Pit>`, :nfd:`forwarding information base (FIB) <nfd::Fib>`, and
+table (PIT) <nfd::pit::Pit>`, :nfd:`forwarding information base (FIB) <nfd::fib::Fib>`, and
 :nfd:`content store <nfd::cs::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.
@@ -62,8 +62,11 @@
 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 reports:
+
+- **S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM 2: An updated NDN simulator for NS-3," NDN, Technical Report NDN-0028, Revision 2, 2016** (`PDF <https://named-data.net/wp-content/uploads/2016/11/ndn-0028-2-ndnsim-v2.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/399>`__)
+
+- **A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM: NDN simulator for NS-3," NDN, Technical Report NDN-0005, 2012** (`PDF <https://named-data.net/wp-content/uploads/TRndnsim.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/367>`__)
 
 `ndnSIM API documentation <doxygen/index.html>`_
 
@@ -97,7 +100,7 @@
 | Folder          | Description                                                         |
 +=================+=====================================================================+
 | ``model/``      | implementation of NDN base: :ndnsim:`L3Protocol`, faces             |
-|                 | (:ndnsim:`Face`, :ndnsim:`NetDeviceLinkService`,                    |
+|                 | (:ndnsim:`Face`, :ndnsim:`NetDeviceTransport`,                      |
 |                 | :ndnsim:`AppLinkService`),                                          |
 |                 | etc.                                                                |
 +-----------------+---------------------------------------------------------------------+
diff --git a/docs/source/metric.rst b/docs/source/metric.rst
index 510cc3d..29b2973 100644
--- a/docs/source/metric.rst
+++ b/docs/source/metric.rst
@@ -44,6 +44,8 @@
     |                  | - ``OutInterests``  measurements of outgoing Interests              |
     |                  | - ``InData``  measurements of incoming Data                         |
     |                  | - ``OutData``  measurements of outgoing Data                        |
+    |                  | - ``InNacks``  measurements of outgoing NACKs                       |
+    |                  | - ``OutNacks``  measurements of outgoing NACKs                      |
     |                  | - ``SatisfiedInterests`` measurements of satisfied Interests        |
     |                  |   (totals for all faces)                                            |
     |                  | - ``TimedOutInterests`` measurements of timed out Interests         |
@@ -365,8 +367,8 @@
     | ``HopCount``    | the number of network hops that the retrieved Data packet traveled  |
     |                 | on the way back from producer application or cache.                 |
     |                 |                                                                     |
-    |                 | Note that semantics of ``HopCount`` field has changed compared to   |
-    |                 | ndnSIM 1.0.                                                         |
+    |                 | Note that the semantics of the ``HopCount`` field have changed      |
+    |                 | compared to ndnSIM 1.0.                                             |
     +-----------------+---------------------------------------------------------------------+
 
 .. _app delay trace helper example:
diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
index d74bdf0..05a5ace 100644
--- a/docs/source/tutorial.rst
+++ b/docs/source/tutorial.rst
@@ -21,7 +21,7 @@
     intro
     getting-started
     faq
-    examples   
+    examples
     helpers
     cs
     fw
@@ -43,8 +43,9 @@
 -------
 
 If you refer to ndnSIM in a published work, please cite the following papers, not just the ndnSIM website. Thank you!
-    **S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM 2.0: A new version of the NDN simulator for NS-3," NDN, Technical Report NDN-0028, 2015** (`PDF <http://named-data.net/techreport/ndn-0028-1-ndnsim-v2.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/399>`__)
 
-    **A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM: NDN simulator for NS-3," NDN, Technical Report NDN-0005, 2012** (`PDF <http://named-data.net/wp-content/uploads/TRndnsim.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/367>`__)
+- **S. Mastorakis, A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM 2: An updated NDN simulator for NS-3," NDN, Technical Report NDN-0028, Revision 2, 2016** (`PDF <https://named-data.net/wp-content/uploads/2016/11/ndn-0028-2-ndnsim-v2.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/399>`__)
+
+- **A. Afanasyev, I. Moiseenko, and L. Zhang, "ndnSIM: NDN simulator for NS-3," NDN, Technical Report NDN-0005, 2012** (`PDF <https://named-data.net/wp-content/uploads/TRndnsim.pdf>`__, `BibTex <http://lasr.cs.ucla.edu/afanasyev/bibwiki/bibtex/367>`__)
 
 .. * :ref:`search`