diff --git a/docs/beginners-guide.rst b/docs/beginners-guide.rst
new file mode 100644
index 0000000..ddbf4e6
--- /dev/null
+++ b/docs/beginners-guide.rst
@@ -0,0 +1,857 @@
+==========================================================
+A beginners guide to installing and testing NLSR on Fedora
+==========================================================
+
+:Authors:  David Arjona-Villicaña, Octavio Renteria-Vidales, Ashlesh Gawande
+:Date:     November, 2018
+:Abstract: This is an easy to follow guide on how to install and test the NLSR routing protocol for NDN using two Fedora 28 machines. The commands and the paths used in this guide have been tested only in Fedora, although a similar procedure should be used for other linux systems. Specifically, the testing section (§ `5 <#test>`__) is platform independent. Therefore users who have NLSR already installed may skip to this section. Since neither NDN, NLSR nor Fedora are static software developments, it is expected that some commands and features in this guide will change over time. However, this guide is as accurate as it could be at the time it was published.
+
+.. role:: raw-latex(raw)
+   :format: latex
+
+
+.. _intro:
+
+1. Introduction
+===============
+
+The following instructions are based on the information provided at the
+Named Data Networking project web page [NDNmain]_.
+Before installing NLSR it is necessary to install different libraries
+and programs: ndn-cxx, NFD and ChronoSync. This document describes the
+necessary steps to correctly install these programs (§ `2 <#ndncxx>`__,
+`3 <#nfd>`__ and `4 <#nlsr>`__) and a brief guide on how to configure
+and test NLSR using a simple two-node network (§ `5 <#test>`__).
+
+Many of the commands in this guide need to be executed as *root*.
+Starting from Fedora 28, there is no need to set a root user
+[Kolman2018]_. However it is possible to define it,
+using the following command:
+
+::
+
+      $ sudo -i
+
+And then using the *passwd* command to set up a password. After setting
+up the root user, it is possible to become root by employing the
+following command and providing the root password when prompted:
+
+::
+
+      $ su -
+
+Fedora employs the *dnf* command to install and verify installed
+packages. The following commands may become useful during the
+installation process and should be executed as root:
+
+-  To verify that all installed packages are up to date
+
+   ::
+
+       $ dnf update
+
+-  To verify if a package is already installed in the system
+
+   ::
+
+       $ dnf list --installed <package-name>
+
+-  To search for information about a package or family of packages (not
+   necessarily installed in the system).
+
+   ::
+
+       $ dnf info <package-name>
+
+-  To install a package in the system.
+
+   ::
+
+       $ dnf install <package-name>
+
+It is also a good installation practice to download and install all the
+NDN programs in a common directory. Therefore, it is recommended to
+create a directory at the home directory where all the following
+programs may get installed. The name of this directory is not important.
+However, the following are provided as suggestions: project, NDNproject,
+NDNprograms. Each of the programs in the following sections should be
+downloaded to their own directory using the *git* command, and then
+compiled in this directory.
+
+.. _ndncxx:
+
+2. Installing ndn-cxx
+=====================
+
+2.1 Before installing ndn-cxx
+-----------------------------
+
+An updated list of the packages and programs that need to be installed
+before installing ndn-cxx, is provided at [NDN-cxx]_.
+This list is also reproduced bellow with the commands to verify that all
+the packages have been installed in the system. The following commands
+should be run as root:
+
+#. gcc and gcc-c++
+
+   ::
+
+       $ dnf list --installed gcc
+       $ dnf list --installed gcc-c++
+
+#. Python version 2.6 or later
+
+   ::
+
+       $ python -V
+
+#. libsqlite3
+
+   ::
+
+       $ dnf list --installed sqlite
+       $ dnf list --installed sqlite-devel
+
+#. openssl version 1.0.1 or later
+
+   ::
+
+       $ openssl version
+       $ dnf list --installed openssl-devel
+
+#. pkgconf that replaces pkg-config
+
+   ::
+
+       $ dnf list --installed pkgconf*
+
+#. boost libraries version 1.54 or later
+
+   ::
+
+       $ dnf list --installed boost
+       $ dnf list --installed boost-devel
+
+#. doxygen
+
+   ::
+
+       $ dnf list --installed doxygen
+
+#. graphviz
+
+   ::
+
+       $ dnf list --installed graphviz
+
+#. python2-sphinx that replaces python-sphinx
+
+   ::
+
+       $ dnf list --installed python2-sphinx
+
+#. After verifying that the python-sphinx package has been installed, it
+   is necessary to run the following two commands:
+
+   ::
+
+       $ pip-3 install sphinxcontrib-doxylink
+       $ pip install sphinxcontrib-googleanalytics
+
+   Note: When the two previous commands are run before correctly
+   installing python-sphinx, the following error message is produced
+   when trying to install this latter package: “Error unpacking rpm
+   package python2-urllib3-1.22-3.fc27.noarch”. To fix this problem, it
+   is necessary to run the following commands before installing
+   python-sphinx again:
+
+   ::
+
+       $ dnf remove python2-sphinx
+       $ pip uninstall sphinxcontrib-googleanalytics
+       $ pip-3 uninstall sphinxcontrib-doxylink
+       $ pip uninstall urllib3
+
+#. dpkg-architecture
+
+   ::
+
+       $ dnf list --installed dpkg
+       $ dnf list --installed dpkg-dev
+
+#. git and valgrind, which is used when installing NFD (§
+   `3 <#nfd>`__).
+
+   ::
+
+       $ dnf list --installed valgrind
+       $ dnf list --installed valgrind-devel
+       $ dnf list --installed git
+
+2.2 Downloading and installing ndn-cxx
+--------------------------------------
+
+The *git* command allows to download the ndn-cxx library in its own
+folder, also called *ndn-cxx*. Therefore it is recommended to execute
+this command at the directory created at § `1 <#intro>`__:
+
+::
+
+      $ git clone --depth 1 https://github.com/named-data/ndn-cxx.git
+
+Move to the ndn-cxx directory:
+
+::
+
+      $ cd ndn-cxx
+
+Use the following command to verify that everything is ready to compile.
+If an error message displays, it is necessary to fix it before
+continuing:
+
+::
+
+      $ ./waf configure --with-examples
+
+Compile the ndn-cxx library and install the compiled files at the
+system’s directories:
+
+::
+
+      $ ./waf
+      $ sudo ./waf install
+
+2.3 Configuring ndn-cxx
+-----------------------
+
+The commands in this subsection need to be run as root. First, it is
+necessary to create file *local.conf*, which contains a line with the
+location for the ndn-cxx library:
+
+::
+
+      $ echo /usr/local/lib64 >> /etc/ld.so.conf.d/local.conf
+
+The following command configures the libraries:
+
+::
+
+      $ ldconfig -v | grep ndn
+
+This command should display a line similar to the following:
+
+::
+
+         libndn-cxx.so.0.6.1 -> libndn-cxx.so.0.6.1
+
+Configure the NDN path:
+
+::
+
+      $ echo export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig >>
+      /etc/profile.d/ndn.sh
+
+After this command has been executed, it is necessary to apply the
+changes by either logging out and back in, and then running the
+following command:
+
+::
+
+      $ printenv | grep PKG
+
+Or by executing the following command:
+
+::
+
+      $ ./etc/profile.d/ndn.sh
+
+For more information and examples about how to compile and configure
+this library, users should read the ndn-cxx guide at
+[NDN-cxx]_.
+
+.. _nfd:
+
+3. Installing NFD
+=================
+
+3.1 Before installing NFD
+-------------------------
+
+An updated list of the packages and programs that need to be installed
+before NFD is provided at [NDNNFD]_. Before installing
+NFD it is necessary to verify that the following packages are installed:
+
+#. libpcap libraries
+
+   ::
+
+       $ dnf list --installed libpcap
+       $ dnf list --installed libpcap-devel
+
+3.2 Downloading and installing NFD
+----------------------------------
+
+This library is downloaded and installed in a folder called *NFD*, which
+should be created at the directory defined at § `1 <#intro>`__. The
+following commands need to be run as a regular user:
+
+::
+
+      $ git clone --depth 1 https://github.com/named-data/NFD.git
+      $ cd NFD
+      $ ./waf configure
+
+If the previous command prints an error message saying that waf cannot
+find WebSocket, it is necessary to follow the instructions provided by
+this same output, which tells the user to execute either of the
+following two set of commands:
+
+::
+
+      $ git submodule init && git submodule update
+
+Or:
+
+::
+
+      $ mkdir websocketpp
+      $ curl -L https://github.com/zaphoyd/websocketpp/archive/0.7.0.tar.gz
+        > websocket.tar.gz
+      $ tar zxf websocket.tar.gz -C websocketpp/ --strip 1
+
+After executing either of these instructions, complete the configuration
+by running *./waf configure* again. Then complete the installation by
+means of the following commands:
+
+::
+
+      $ ./waf
+      $ sudo ./waf install
+
+3.3 Configuring NFD
+-------------------
+
+Create a configuration file by running the following command as root:
+
+::
+
+      $ cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
+
+After the configuration file has been created, NFD’s behavior may be
+changed by modifying this file. Once the configuration file has been
+created, it is recommended to start NFD by using the following command:
+
+::
+
+      $ nfd-start
+
+This command does not properly allow to employ the command window to
+enter new commands; however it displays the NFD logs. Therefore, it is
+recommended to open a new command window. This second window may be used
+to verify NDF’s status and then stop NFD by using the following
+commands:
+
+::
+
+      $ nfd-status
+      $ nfd-stop
+
+.. _nlsr:
+
+4. Installing NLSR
+==================
+
+4.1 Installing ChronoSync
+-------------------------
+
+Before installing NLSR, it is necessary to first download and install
+ChronoSync, which is a library that allows NLSR routers to verify that
+their routing information coincides. More information about ChronoSync
+may be found at [Chronosync]_. This library may be
+installed by running the following commands as a regular user and at the
+directory defined at § `1 <#intro>`__:
+
+::
+
+      $ git clone --depth 1 https://github.com/named-data/ChronoSync.git
+      $ cd ChronoSync
+      $ ./waf configure
+      $ ./waf
+      $ sudo ./waf install
+
+The following command needs to be used again to configure the libraries:
+
+::
+
+      $ sudo ldconfig -v | grep ndn
+
+This command should display a line similar to the following:
+
+::
+
+         libChronoSync.so.0.5.0 -> libChronoSync.so.0.5.0
+
+4.2 Downloading and installing NLSR
+-----------------------------------
+
+NLSR is downloaded and installed in a folder called *NLSR* which should
+be created at the directory defined at § `1 <#intro>`__. The following
+commands need to be run as a regular user:
+
+::
+
+      $ git clone --depth 1 https://github.com/named-data/NLSR.git
+      $ cd NLSR
+      $ ./waf configure
+      $ ./waf
+      $ sudo ./waf install
+
+4.3 Configuring NLSR
+--------------------
+
+Create and configure the following directory by running the following
+commands as root:
+
+::
+
+      $ mkdir /var/lib/nlsr
+      $ chmod 777 /var/lib/nlsr
+
+.. _test:
+
+5. Configuring and Testing NLSR
+===============================
+
+To test NLSR, the first step is to configure the keys and certificates
+that implement a secure communication between the routers. Then it is
+necessary to verify that the computers in the test network are
+connected, that NFD is running and the faces between the computers are
+configured. Finally, the NLSR configuration file has to be edited before
+running NLSR. The following subsections are provided as a guide to
+define and configure a simple computer network between two computers:
+router1 and router2.
+
+.. _security:
+
+5.1 Setting up the security
+---------------------------
+
+Configuring security in an NDN network requires to generate, exchange
+and install, keys and certificates between the root, site, operator and
+router computers that form the network
+[NLSRsecconf]_, [NLSRdevguide]_, although in practice, it
+is possible to keep more than one of these entities in a single machine.
+The following example and *Figure 1* show how to configure security
+for a single router, called Router X. In this example, the root, site,
+operator and Router X are in different computers:
+
+.. figure:: security_comp.png
+   :alt: Security configuration example for Router X.
+   :width: 19cm
+   :align: center
+
+   Fig. 1. Security configuration example for Router X.
+
+
+#. At the root server, generate the root key:
+
+   ::
+
+       $ ndnsec-key-gen /ndn/ > root.key
+
+#. Generate the certificate for the root key at the root server:
+
+   ::
+
+       $ ndnsec-cert-dump -i /ndn/ > root.cert
+
+#. Install the root certificate at the root server:
+
+   ::
+
+       $ ndnsec-cert-install -f root.cert
+
+#. At the site server, generate the site key:
+
+   ::
+
+       $ ndnsec-key-gen /ndn/edu/uaslp > site.key
+
+#. Copy the site key to the root server and generate the certificate for
+   the site server:
+
+   ::
+
+       $ ndnsec-cert-gen -s /ndn/ site.key > site.cert
+
+#. Copy the site certificate to the site server and install it:
+
+   ::
+
+       $ ndnsec-cert-install -f site.cert
+
+#. At the operator server, generate the operator key:
+
+   ::
+
+       $ ndnsec-key-gen /ndn/edu/uaslp/%C1.Operator/op > op.key
+
+#. Copy the operator key to the site server and generate the certificate
+   for the operator server:
+
+   ::
+
+       $ ndnsec-cert-gen -s /ndn/edu/uaslp op.key > op.cert
+
+#. Copy the operator certificate to the operator server and install it:
+
+   ::
+
+       $ ndnsec-cert-install -f op.cert
+
+#. At the router, generate the router key:
+
+   ::
+
+       $ ndnsec-key-gen /ndn/edu/uaslp/%C1.Router/routerX > routerX.key
+
+#. Copy the router key to the operator server and generate the
+   certificate for the router:
+
+   ::
+
+       $ ndnsec-cert-gen -s /ndn/edu/uaslp/%C1.Operator/op routerX.key >
+         routerX.cert
+
+#. Copy the router certificate to the router and install it:
+
+   ::
+
+       $ ndnsec-cert-install -f routerX.cert
+
+In the previous steps, the *%C1.Router* and *%C1.Operator* labels are
+NDN keywords and should not be changed. These labels will be also used
+by the configuration file (§ `5.4 <#configfile>`__)
+
+The following command may be used to verify that the certificates have
+been installed in a computer:
+
+::
+
+      $ ndnsec-list
+
+This guide recommends that one machine functions as the root, site,
+operator and router1, while a different computer only functions as
+router2. *Figure 2* shows this
+configuration. For router1, the twelve steps described before need to be
+executed except for exchanging files between computers. For the router2,
+only steps 10 to 12 are needed to generate this router’s certificate.
+
+Additionally, the following command may be used to print a list and a
+brief description of all the *ndnsec* commands:
+
+::
+
+      $ man ndnsec
+
+
+.. figure:: netwk1.png
+   :alt: Example network.
+   :width: 19cm
+   :align: center
+
+   Fig. 2. Example network.
+
+
+5.2 Configuring the network
+---------------------------
+
+The first step is to configure the physical network. If two computers
+are going to get connected using a single Ethernet cable, it is
+necessary to verify that this cable is a crossover. The other option is
+to employ a switch between two computers that are then connected using
+two regular Ethernet cables.
+
+After the physical network has been assembled, it is necessary to
+configure the network addresses and cards for all the computers in the
+network. It is important to remember that computers that are connected
+to each other should use the same subnetwork address. It is possible to
+verify the network configuration in a Linux computer by means of the *ip
+addr* command
+
+Once the physical network and network cards have been configured, it is
+necessary to verify that the computers can communicate with each other.
+The simplest way to do this is by using the *ping* command:
+
+::
+
+      $ ping <remote-ip-address>
+
+5.3 Starting and configuring NFD
+--------------------------------
+
+To start and configure NFD it is necessary to open two terminal windows.
+The first one will be used to start NFD by means of the *nfd-start*
+command. This terminal will also display the logs that NFD generates. By
+default, NFD only generates informational logs (INFO). However, it is
+possible to obtain different levels of verbosity for these logs. These
+levels can be set before NFD starts by editing the
+*/usr/local/etc/ndn/nfd.conf* file. Open this file using a regular text
+editor, read the information provided about logging and then modify the
+*default-level* variable at the *log* section according to the
+instructions provided in the file. Additional information about NFD
+configuration may be found at [NDNNFDusage]_.
+
+The second terminal will be used to monitor the NFD status:
+
+::
+
+      $ nfd-status
+
+Employ the following command to configure each face that a computer uses
+to connect to a neighboring computer:
+
+::
+
+      $ nfdc face create udp4://<remote-ip-address>
+
+The face id may be displayed by running either *nfd-status* or:
+
+::
+
+      $ nfdc face list
+
+The status of the face may be verified by using the following command:
+
+::
+
+      $ nfdc face show id <face-id>
+
+After finishing NLSR testing, it is necessary to destroy the face before
+stopping NFD. This operation is described at § `5.6 <#turn_off>`__. For
+the two computer network provided as an example (*Figure 2*), it is necessary that both
+machines run NFD and that each one configures a face that connects to
+the other machine.
+
+.. _configfile:
+
+5.4 Setting up the configuration file
+-------------------------------------
+
+Instructions on how to use the configuration file are already provided
+at the NLSR’s Router Configuration page [NLSRrtrconf]_.
+Read the information in this page to understand NLSR router
+configuration. The following text describes the instructions that have
+been modified at the default nlsr.conf file for router1:
+
+::
+
+    ; AT general SECTION:
+    {
+      network /ndn/                    ; name of the network
+      site /edu/uaslp                  ; name of the site
+      router /%C1.Router/router1       ; name of the router: router1
+    }
+
+    ;AT neighbors SECTION:
+    neighbors
+    {
+      neighbor
+      {
+        name /ndn/edu/uaslp/%C1.Router/router2   ; Neighbor router: router2
+        face-uri  udp://140.220.80.124           ; face to the neighbor
+        link-cost 30                             ; cost of the link
+      }
+    }
+
+    ; AT advertising SECTION:
+    advertising
+    {
+      prefix /ndn/edu/uaslp/office/bldg1         ; Advertising destinations
+      prefix /ndn/edu/uaslp/office/bldg2         ; for router1
+    }
+
+    ; AT security SECTION:
+    security
+    {
+      validator
+      {
+        ...
+        trust-anchor
+        {
+          type file
+          file-name "root.cert"        ; root certificate file
+        }
+      }
+
+      prefix-update-validator
+      {
+        ...
+        trust-anchor
+        {
+          type file
+          file-name "site.cert"        ; site certificate file
+        }
+      }
+
+      cert-to-publish "root.cert"      ; root certificate file
+
+      cert-to-publish "site.cert"      ; site certificate file
+
+      cert-to-publish "op.cert"        ; operator certificate file
+
+      cert-to-publish "router1.cert"   ; router1 certificate file
+    }
+
+The following text shows the modified instructions for router2:
+
+::
+
+    ; AT general SECTION:
+    {
+      network /ndn/                    ; name of the network
+      site /edu/uaslp                  ; name of the site
+      router /%C1.Router/router2       ; name of the router: router2
+    }
+
+    ;AT neighbors SECTION:
+    neighbors
+    {
+      neighbor
+      {
+        name /ndn/edu/uaslp/%C1.Router/router1   ; Neighbor router: router1
+        face-uri  udp://140.220.80.121           ; face to the neighbor
+        link-cost 30                             ; cost of the link
+      }
+    }
+
+    ; AT advertising SECTION:
+    advertising
+    {
+      prefix /ndn/edu/uaslp/labs/networks        ; Advertising destinations
+      prefix /ndn/edu/uaslp/labs/hardware        ; for router2
+    }
+
+    ; AT security SECTION:
+    security
+    {
+      validator
+      {
+        ...
+        trust-anchor
+        {
+          type file
+          file-name "root.cert"        ; root certificate file
+        }                              ; this file needs to be copied to
+      }                                ; router2
+
+      prefix-update-validator
+      {
+        ...
+        trust-anchor
+        {
+          type file
+          file-name "site.cert"        ; site certificate file
+        }                              ; this file needs to be copied to
+      }                                ; router2
+
+      ...
+      cert-to-publish "router2.cert"   ; router2 certificate file
+    }
+
+Notice that files *root.cert* and *site.cert*, which were generated at
+router1, need to be copied to router2. Also notice that the *%C1.Router*
+and *%C1.Operator* keywords employed at § `5.1 <#security>`__ are also
+referenced by these configuration files.
+
+.. _starting_nlsr:
+
+5.5 Starting NLSR
+-----------------
+
+It is recommended to open a third command terminal and run NLSR in this
+window. After the NLSR configuration file has been edited and saved as
+*nlsr.conf*, it is possible to start NLSR by running either of the
+following two commands:
+
+::
+
+      $ nlsr
+      $ nlsr -f <configuration-file>
+
+However, to verify what is NLSR doing, it becomes necessary to employ
+NLSR’s logging facility [NLSRstarting]_. A brief
+description on how to use NDN’s logging facility may be displayed by
+entering the *man ndn-log* command. This guide recommends using one of
+the following two instructions to start NLSR:
+
+::
+
+      $ export NDN_LOG=nlsr.*=TRACE && nlsr
+      $ export NDN_LOG=nlsr.*=TRACE && nlsr -f <configuration-file>  
+
+The second terminal window may be used to run *nfd-status* again and it
+should be possible to verify that the status has changed, specially at
+the FIB and RIB sections of the generated report.
+
+.. _turn_off:
+
+5.6 Turning everything off
+--------------------------
+
+In order to stop NLSR and NFD, the following sequence of events is
+recommended:
+
+#. Stop NLSR by pressing the Ctrl+C keys at the third terminal window.
+
+#. Destroy the face to the remote computers using either of the
+   following two commands at the second terminal window:
+
+   ::
+
+       $ nfdc face destroy <face-id>
+       $ nfdc face destroy udp4://<remote-ip-address>
+
+#. Stop NFD by entering the following command at the second terminal
+   window:
+
+   ::
+
+       $ nfd-stop
+
+#. The crossover Ethernet cable may be unplugged and the computers’
+   network configuration restored to its original settings.
+
+5.7 Where to go from here
+-------------------------
+
+Users interested in building and configuring larger networks may want to
+take a look at the NDN Ansible repository
+[NDNAnsible]_. This repository uses Ansible, which is a
+configuration management tool, to manage the official NDN testbed
+deployment [NDNTestbed]_.
+
+
+.. [NDNmain] *Named Data Networking*, http://named-data.net/, March 2018.
+
+.. [Kolman2018] M. Kolman. *Anaconda improvements in Fedora 28*, Fedora Magazine, June 2018.
+
+.. [NDN-cxx] *Getting started with ndn-cxx*, http://named-data.net/doc/ndn-cxx/current/INSTALL.html, April 2018.
+
+.. [NDNNFD] *Getting started with NFD*, http://named-data.net/doc/NFD/current/INSTALL.html, April 2018.
+
+.. [NDNNFDusage] *NFD usage*, http://named-data.net/doc/NFD/current/manpages/nfd.html, May 2018.
+
+.. [Chronosync] Z. Zhu and A. Afanasyev. *Let’s ChronoSync: Decentralized dataset state synchronization in Named Data Networking*, in IEEE ICNP, October 2013.
+
+.. [NLSRsecconf] *NLSR Security Configuration*, http://named-data.net/doc/NLSR/current/SECURITY-CONFIG.html June 2018.
+
+.. [NLSRdevguide] V. Lehman, M. Chowdhury, N. Gordon, A. Gawande. *NLSR Developer’s Guide*, University of Memphis, November 2017.
+
+.. [NLSRrtrconf] *NLSR Router Configuration*, http://named-data.net/doc/NLSR/current/ROUTER-CONFIG.html, April 2018.
+
+.. [NLSRstarting] *Getting Started with NLSR*, http://named-data.net/doc/NLSR/current/GETTING-STARTED.html, May 2018.
+
+.. [NDNAnsible] *NDN Ansible repository*, https://github.com/WU-ARL/NDN_Ansible, October 2018.
+
+.. [NDNTestbed] *NDN Testbed*, https://named-data.net/ndn-testbed/, October 2018.
