docs: Documentation update for 0.1.0 release
Change-Id: I5d7c0f3b4242103d6ad4e864316fb50c3634f21b
diff --git a/docs/FAQ.rst b/docs/FAQ.rst
new file mode 100644
index 0000000..6004e85
--- /dev/null
+++ b/docs/FAQ.rst
@@ -0,0 +1,231 @@
+FAQ
+===
+
+How to change default paths?
+----------------------------
+
+Paths to where NFD is installed can be configured during ``./waf
+configure``:
+
+- Installation prefix (default ``/usr/local``):
+
+ ::
+
+ ./waf configure --prefix=/usr
+
+- Location of NFD configuration file (default: ``${prefix}/etc``):
+
+ ::
+
+ ./waf configure --prefix=/usr --sysconfdir=/etc
+
+- Location of manpages (default: ``${prefix}/share/man``)
+
+ ::
+
+ ./waf configure --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man
+
+How to run NFD on Raspberry Pi?
+-------------------------------
+
+To run NFD on the Raspberry Pi, you need to either enable IPv6 support
+in Raspberry Pi or disable IPv6 support in NFD.
+
+To enable IPv6 in Raspberry Pi:
+
+::
+
+ sudo modprobe ipv6
+
+To disable IPv6 in NFD, replace ``enable_v6 yes`` with ``enable_v6 no``
+in ``tcp`` and ``udp`` sections of ``/usr/local/etc/ndn/nfd.conf``:
+
+::
+
+ ...
+ tcp
+ {
+ listen yes
+ port 6363
+ enable_v4 yes
+ enable_v6 no
+ }
+
+ udp
+ {
+ port 6363
+ enable_v4 yes
+ enable_v6 no
+ idle_timeout 600
+ keep_alive_interval 25
+
+ mcast yes
+ mcast_port 56363
+ mcast_group 224.0.23.170
+ }
+ ...
+
+
+How to run NFD as non-root user?
+--------------------------------
+
+
+How to enable Ethernet Face Support?
+++++++++++++++++++++++++++++++++++++
+
+The ``ether`` configuration file section contains settings for Ethernet faces and
+channels. These settings will **NOT** work without root or setting the appropriate
+permissions:
+
+::
+
+ sudo setcap cap_net_raw,cap_net_admin=eip /full/path/nfd
+
+You may need to install a package to use setcap:
+
+**Ubuntu:**
+
+::
+
+ sudo apt-get install libcap2-bin
+
+**Mac OS X:**
+
+::
+
+ curl https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3373 -o ChmodBPF.tar.gz
+ tar zxvf ChmodBPF.tar.gz
+ open ChmodBPF/Install\ ChmodBPF.app
+
+or manually:
+
+::
+
+ sudo chgrp admin /dev/bpf*
+ sudo chmod g+rw /dev/bpf*
+
+How to enable UDP multicast support in multi-homed Linux machines
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+The UDP configuration file section contains settings for unicast and multicast UDP
+faces. If the Linux box is equipped with multiple network interfaces with multicast
+capabilities, the settings for multicast faces will **NOT** work without root
+or setting the appropriate permissions:
+
+::
+
+ sudo setcap cap_net_raw=eip /full/path/nfd
+
+.. _How to configure NFD security:
+
+How to configure NFD security?
+------------------------------
+
+.. note:: Sample configuration file of NFD allow any user to manage faces, FIB, RIB, and
+ StrategyChoice. The following description can be used to restrict certain operations
+ to certain users.
+
+ More extensive documentation about NFD's security and options to configure trust model
+ for NFD is currently in preparation.
+
+Many NFD management protocols require signed commands to be processed
+(e.g. FIB modification, Face creation/destructions, etc.). You will need
+an NDN certificate to use any application that issues signed commands.
+
+If you do not already have NDN certificate, you can generate one with
+the following commands:
+
+**Generate and install a self-signed identity certificate**:
+
+::
+
+ ndnsec-keygen /`whoami` | ndnsec-install-cert -
+
+Note that the argument to ndnsec-key will be the identity name of the
+new key (in this case, ``/your-username``). Identity names are
+hierarchical NDN names and may have multiple components (e.g.
+``/ndn/ucla/edu/alice``). You may create additional keys and identities
+as you see fit.
+
+**Dump the NDN certificate to a file**:
+
+The following commands assume that you have not modified ``PREFIX`` or
+``SYSCONFDIR`` If you have, please substitute ``/usr/local/etc`` for the
+appropriate value (the overriden ``SYSCONFDIR`` or ``PREFIX/etc`` if you
+changed ``PREFIX``).
+
+::
+
+ sudo mkdir -p /usr/local/etc/ndn/keys
+ ndnsec-cert-dump -i /`whoami` > default.ndncert
+ sudo mv default.ndncert /usr/local/etc/ndn/keys/default.ndncert
+
+.. _How to start using NDN MacPorts repository on OSX:
+
+How to start using NDN MacPorts repository on OSX?
+--------------------------------------------------
+
+OSX users have an opportunity to seamlessly install and run NFD and other related
+applications via `MacPorts <https://www.macports.org/>`_. If you are not using MacPorts
+yet, go to `MacPorts website <https://www.macports.org/install.php>`_ and download and
+install the MacPorts package.
+
+NFD and related ports are not part of the official MacPorts repository and in order to use
+it, you need to add NDN MacPorts repository to the local configuration. In particular,
+you will need to modify the list of source URLs for MacPorts. For example, if your
+MacPorts are installed in ``/opt/local``, add the following line
+`/opt/local/etc/macports/sources.conf` before or after the default port repository:
+
+::
+
+ rsync://macports.named-data.net/macports/
+
+After this step, you can use ``sudo port selfupdate`` to fetch updated port definitions.
+
+The following command will install NFD using MacPorts:
+
+::
+
+ sudo port install nfd
+
+.. note::
+ You have to have XCode installed on your machine. For latest versions of OSX (Lion or
+ Mountain Lion) you can install it from AppStore for free, for older versions you have to
+ go to developer.apple.com and download old version of XCode that is appropriate for your
+ system.
+
+
+One of the advantages of using MacPorts is that you can easily upgrade NFD and other
+packages to the most recent version available. The following commands will do this job:
+
+::
+
+ sudo port selfupdate
+ sudo port upgrade nfd
+
+.. _How to start using NDN PPA repository on Ubuntu Linux:
+
+How to start using NDN PPA repository on Ubuntu Linux?
+------------------------------------------------------
+
+NFD binaries and related tools for Ubuntu 12.04, 13.10, and 14.04 can be installed using
+PPA packages from named-data repository. First, you will need to add ``named-data/ppa``
+repository to binary package sources and update list of available packages:
+
+::
+
+ sudo add-apt-repository ppa:named-data/ppa
+
+ # if you do not have add-apt-repository command installed:
+ sudo apt-get install python-software-properties
+ sudo apt-get update
+
+After that, NFD can be easily installed in a standard way, i.e., either using ``apt-get`` as shown
+below or using any other package manager (e.g., Synaptic Package Manager):
+
+::
+
+ sudo apt-get install nfd
+
+For the list of available packages, refer to `NDN PPA repository
+<https://launchpad.net/~named-data/+archive/ppa>`_.
diff --git a/docs/INSTALL.rst b/docs/INSTALL.rst
index b5a442c..dd38f18 100644
--- a/docs/INSTALL.rst
+++ b/docs/INSTALL.rst
@@ -59,8 +59,8 @@
./waf
sudo ./waf install
-Refer to :ref:`NFD Configuration Tips` (``README.rst``) for more options that can be used
-during ``configure`` stage and how to properly configure and run NFD.
+Refer to ``./waf --help`` for more options that can be used during ``configure`` stage and
+how to properly configure and run NFD.
In some configurations, configuration step may require small modification. For example, on
OSX that uses macports (correct the path if macports was not installed in the default path
@@ -82,6 +82,22 @@
./waf
sudo ./waf install
+Debug symbols
++++++++++++++
+
+The default compiler flags enable debug symbols to be included in binaries. This
+potentially allows more meaningful debugging if NFD or other tools happen to crash.
+
+If it is undesirable, default flags can be easily overridden. The following example shows
+how to completely disable debug symbols and configure NFD to be installed into ``/usr``
+with configuration in ``/etc`` folder.
+
+::
+
+ CXXFLAGS="-O2" ./waf configure --prefix=/usr --sysconfdir=/etc
+ ./waf
+ sudo ./waf install
+
Building documentation
----------------------
diff --git a/docs/README.rst b/docs/README.rst
index 7788bb5..d35e397 100644
--- a/docs/README.rst
+++ b/docs/README.rst
@@ -1,124 +1,86 @@
-.. _NFD Configuration Tips:
+NFD Overview
+============
-NFD - Named Data Networking Forwarding Daemon
-=============================================
+.. toctree::
+ :maxdepth: 2
-Default Paths
--------------
+ RELEASE_NOTES
-This document uses ``SYSCONFDIR`` when referring to the default locations
-of various NFD configuration files. By default, ``SYSCONFDIR`` is set to
-``/usr/local/etc``. If you override ``PREFIX``, then ``SYSCONFDIR`` will
-default to ``PREFIX/etc``.
+NDN Forwarding Daemon (NFD) is a network forwarder that implements and evolves together
+with the Named Data Networking (NDN) `protocol
+<http://named-data.net/doc/ndn-tlv/>`__. After the initial release, NFD will become a core
+component of the `NDN Platform <http://named-data.net/codebase/platform/>`__ and will
+follow the same release cycle.
-You may override ``SYSCONFDIR`` and ``PREFIX`` by specifying their
-corresponding options during installation:
+NFD is developed by a community effort. Although the first release was mostly done by the
+members of `NSF-sponsored NDN project team
+<http://named-data.net/project/participants/>`__, it already contains significant
+contributions from people outside the project team (for more details, refer to `AUTHORS.md
+<https://github.com/named-data/NFD/blob/master/AUTHORS.md>`__). We strongly encourage
+participation from all interested parties, since broader community support is key for NDN
+to succeed as a new Internet architecture. Bug reports and feedback are highly
+appreciated and can be made through `Redmine site
+<http://redmine.named-data.net/projects/nfd>`__ and the `ndn-interest mailing list
+<http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest>`__.
-::
+The main design goal of NFD is to support diverse experimentation of NDN technology. The
+design emphasizes *modularity* and *extensibility* to allow easy experiments with new
+protocol features, algorithms, and applications. We have not fully optimized the code for
+performance. The intention is that performance optimizations are one type of experiments
+that developers can conduct by trying out different data structures and different
+algorithms; over time, better implementations may emerge within the same design framework.
- ./waf configure --prefix <path/for/prefix> --sysconfdir <some/other/path>
+NFD will keep evolving in three aspects: improvement of the modularity framework, keeping
+up with the NDN protocol spec, and addition of other new features. We hope to keep the
+modular framework stable and lean, allowing researchers to implement and experiment
+with various features, some of which may eventually work into the protocol spec.
-Refer to :ref:`NFD Installation Instructions` for more detailed instructions on how to compile
-and install NFD.
+The design and development of NFD benefited from our earlier experience with `CCNx
+<http://www.ccnx.org>`__ software package. However, NFD is not in any part derived from
+CCNx codebase and does not maintain compatibility with CCNx.
-Running and Configuring NFD
----------------------------
-NFD's runtime settings may be modified via configuration file. After
-installation, a working sample configuration is provided at
-``SYSCONFDIR/ndn/nfd.conf.sample``. At startup, NFD will attempt to read
-the default configuration file location: ``SYSCONFDIR/ndn/nfd.conf``.
+Major Modules of NFD
+--------------------
-You may also specify an alternative configuration file location by
-running NFD with:
+NFD has the following major modules:
-::
+- Core
+ Provides various common services shared between different NFD modules. These include
+ hash computation routines, DNS resolver, config file, face monitoring, and
+ several other modules.
- nfd --config </path/to/nfd.conf>
+- Faces
+ Implements the NDN face abstraction on top of different lower level transport
+ mechanisms.
-Once again, note that you may simply copy or rename the provided sample
-configuration and have an **almost** fully configured NFD. However, this
-NFD will be unable to add FIB entries or perform other typical operation
-tasks until you authorize an NDN certificate with the appropriate
-privileges.
+- Tables
+ Implements the Content Store (CS), the Pending Interest Table (PIT), the Forwarding
+ Information Base (FIB), and other data structures to support forwarding of NDN Data
+ and Interest packets.
-Installing an NDN Certificate for Command Authentication
---------------------------------------------------------
+- Forwarding
+ Implements basic packet processing pathways, which interact with Faces, Tables,
+ and Strategies.
-Many NFD management protocols require signed commands to be processed
-(e.g. FIB modification, Face creation/destructions, etc.). You will need
-an NDN certificate to use any application that issues signed commands.
+ + **Strategy Support**, a major part of the forwarding module
+ Implements a framework to support different forwarding strategies. It includes
+ StrategyChoice, Measurements, Strategies, and hooks in the forwarding pipelines. The
+ StrategyChoice records the choice of the strategy for a namespace, and Measurement
+ records are used by strategies to store past performance results for namespaces.
-If you do not already have NDN certificate, you can generate one with
-the following commands:
+- Management
+ Implements the `NFD Management Protocol
+ <http://redmine.named-data.net/projects/nfd/wiki/Management>`_, which allows
+ applications to configure NFD and set/query NFD's internal states. Protocol interaction
+ is done via NDN's Interest/Data exchange between applications and NFD.
-**Generate and install a self-signed identity certificate**:
-
-::
-
- ndnsec-keygen /`whoami` | ndnsec-install-cert -
-
-Note that the argument to ndnsec-key will be the identity name of the
-new key (in this case, ``/your-username``). Identity names are
-hierarchical NDN names and may have multiple components (e.g.
-``/ndn/ucla/edu/alice``). You may create additional keys and identities
-as you see fit.
-
-**Dump the NDN certificate to a file**:
-
-The following commands assume that you have not modified ``PREFIX`` or
-``SYSCONFDIR`` If you have, please substitute ``/usr/local/etc`` for the
-appropriate value (the overriden ``SYSCONFDIR`` or ``PREFIX/etc`` if you
-changed ``PREFIX``).
-
-::
-
- sudo mkdir -p /usr/local/etc/ndn/keys
- ndnsec-cert-dump -i /`whoami` > default.ndncert
- sudo mv default.ndncert /usr/local/etc/ndn/keys/default.ndncert
-
-Running NFD with Ethernet Face Support
---------------------------------------
-
-The ether configuration file section contains settings for Ethernet
-faces and channels. These settings will **NOT** work without root or
-setting the appropriate permissions:
-
-::
-
- sudo setcap cap_net_raw,cap_net_admin=eip /full/path/nfd
-
-You may need to install a package to use setcap:
-
-**Ubuntu:**
-
-::
-
- sudo apt-get install libcap2-bin
-
-**Mac OS X:**
-
-::
-
- curl https://bugs.wireshark.org/bugzilla/attachment.cgi?id=3373 -o ChmodBPF.tar.gz
- tar zxvf ChmodBPF.tar.gz
- open ChmodBPF/Install\ ChmodBPF.app
-
-or manually:
-
-::
-
- sudo chgrp admin /dev/bpf*
- sudo chmod g+rw /dev/bpf*
-
-UDP multicast support in multi-homed Linux machines
----------------------------------------------------
-
-The UDP configuration file section contains settings for unicast and multicast UDP
-faces. If the Linux box is equipped with multiple network interfaces with multicast
-capabilities, the settings for multicast faces will **NOT** work without root
-or setting the appropriate permissions:
-
-::
-
- sudo setcap cap_net_raw=eip /full/path/nfd
+- RIB Management
+ Manages the routing information base (RIB). The RIB may be updated by different parties
+ in different ways, including various routing protocols, application's prefix
+ registrations, and command-line manipulation by sysadmins. The RIB management module
+ processes all these requests to generate a consistent forwarding table, and then syncs
+ it up with the NFD's FIB, which contains only the minimal information needed for
+ forwarding decisions. Strictly speaking RIB management is part of the NFD management
+ module. However, due to its importance to the overall operations and its more complex
+ processing, we make it a separate module.
diff --git a/docs/RELEASE_NOTES.rst b/docs/RELEASE_NOTES.rst
index 1f3f282..92e2a0b 100644
--- a/docs/RELEASE_NOTES.rst
+++ b/docs/RELEASE_NOTES.rst
@@ -3,62 +3,17 @@
NFD v0.1.0 Release Notes
========================
-Major Modules of NFD
---------------------
-
-NFD has the following major modules:
-
-- Core
- Provides various common services shared between different NFD modules. These include
- hash computation routines, DNS resolver, config file, face monitoring, and
- several other modules.
-
-- Faces
- Implements the NDN face abstraction on top of different lower level transport
- mechanisms.
-
-- Tables
- Implements the Content Store (CS), the Pending Interest Table (PIT), the Forwarding
- Information Base (FIB), and other data structures to support forwarding of NDN Data
- and Interest packets.
-
-- Forwarding
- Implements basic packet processing pathways, which interact with Faces, Tables,
- and Strategies.
-
- + **Strategy Support**, a major part of the forwarding module
- Implements a framework to support different forwarding strategies. It includes
- StrategyChoice, Measurements, Strategies, and hooks in the forwarding pipelines. The
- StrategyChoice records the choice of the strategy for a namespace, and Measurement
- records are used by strategies to store past performance results for namespaces.
-
-- Management
- Implements the `NFD Management Protocol
- <http://redmine.named-data.net/projects/nfd/wiki/Management>`_, which allows
- applications to configure NFD and set/query NFD's internal states. Protocol interaction
- is done via NDN's Interest/Data exchange between applications and NFD.
-
-- RIB Management
- Manages the routing information base (RIB). The RIB may be updated by different parties
- in different ways, including various routing protocols, application's prefix
- registrations, and command-line manipulation by sysadmins. The RIB management module
- processes all these requests to generate a consistent forwarding table, and then syncs
- it up with the NFD's FIB, which contains only the minimal information needed for
- forwarding decisions. Strictly speaking RIB management is part of the NFD management
- module. However, due to its importance to the overall operations and its more complex
- processing, we make it a separate module.
-
Features in Version 0.1.0
-------------------------
This is an incomplete list of features that are implemented in NFD version 0.1.0.
-- Packet Format
+- **Packet Format**
+ `NDN-TLV <http://named-data.net/doc/ndn-tlv/>`_
+ LocalControlHeader, to allow apps to set outgoing face and learn incoming face.
-- Faces
+- **Faces**
+ Unix stream socket
+ UDP unicast
@@ -72,7 +27,7 @@
Refer to `Issue 1551 <http://redmine.named-data.net/issues/1511>`_ for more
detail and implementation progress.
-- Management
+- **Management**
+ Use of signed Interests as commands, with authentication and authorization.
+ Face management
@@ -81,20 +36,20 @@
+ NFD status publishing
+ Notification to authorized apps of internal events, including Face creation and destruction.
-- Tables and forwarding pipelines support most Interest/Data processing, including
+- **Tables and forwarding pipelines** support most Interest/Data processing, including
selectors.
-- RIB Management that runs as a separate process, ``nrd``. It supports basic prefix
+- **RIB Management** that runs as a separate process, ``nrd``. It supports basic prefix
registration by applications, but no flags yet.
-- Strategies
+- **Strategies**
+ ``broadcast``
+ ``best-route``
+ ``ncc``: based on ccnx 0.7 for experimentation
+ ``client-control``: authorized application can directly control Interest forwarding
-- Name-based scoping
+- **Name-based scoping**
+ ``/localhost``: communication only within localhost using "local" Faces
(UnixStreamFace, LocalTcpFace). NFD will strictly enforce this scope for Interests
@@ -102,9 +57,9 @@
+ ``/localhop``: one-hop communication (e.g., if at least one incoming or outgoing Face
in PIT entry is non-local, the Interest cannot be forwarded to any non-local Face)
-- Support configuration file, which is in the Boost INFO format.
+- **Support configuration file**, which is in the Boost INFO format.
-- Applications
+- **Applications**
+ Tools to discover hubs on NDN testbed.
+ peek/poke and traffic generators for testing and debugging.
@@ -124,7 +79,8 @@
Additional strategies, including self-learning that populates the FIB by observing
Interest and Data exchange.
-- Hop-by-hop Interest limit mechanism for congestion control.
+- Hop-by-hop Interest limit mechanism
+ For congestion control
- Face enhancements
Add fragmentation support for Ethernet face, may add support for new types such as
@@ -140,5 +96,4 @@
For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.
- Extensible name-based scoping
-
- + configurable organization-based scoping
+ Configurable organization-based scoping
diff --git a/docs/getting-started.rst b/docs/getting-started.rst
new file mode 100644
index 0000000..42e698a
--- /dev/null
+++ b/docs/getting-started.rst
@@ -0,0 +1,169 @@
+Getting Started with NFD
+========================
+
+A more recent version of this document may be available on `NFD Wiki
+<http://redmine.named-data.net/projects/nfd/wiki/Getting_Started>`_.
+
+.. toctree::
+ :maxdepth: 2
+
+ INSTALL
+
+Installing
+----------
+
+From source
+~~~~~~~~~~~
+
+To install NFD from source:
+
+- install ``ndn-cxx`` according to `ndn-cxx installation
+ instructions <http://named-data.net/doc/ndn-cxx/0.1.0/INSTALL.html>`__
+- install ``NFD`` according to :doc:`these
+ instructions <INSTALL>`
+
+If downloading code using git, don't forget to checkout the correct
+branch for both ``ndn-cxx`` and ``NFD``
+
+::
+
+ git clone https://github.com/named-data/ndn-cxx
+ cd ndn-cxx
+ git checkout ndn-cxx-0.1.0
+ ...
+ # continue with ndn-cxx installation instructions
+
+ git clone https://github.com/named-data/NFD
+ cd NFD
+ git checkout NFD-0.1.0
+ ...
+ # continue with NFD installation instructions
+
+From binaries
+~~~~~~~~~~~~~
+
+On OSX, NFD can be installed with MacPorts. Refer to :ref:`How to start using NDN
+MacPorts repository on OSX` FAQ question for more details.
+
+On Ubuntu 12.04, 13.10, or 14.04, NFD can be installed from NDN PPA repository. Refer to
+:ref:`How to start using NDN PPA repository on Ubuntu Linux` FAQ question.
+
+
+Initial configuration
+---------------------
+
+.. note::
+ If you have installed NFD from binary packages, the package manager has already
+ installed initial configuration and you can safely skip this section.
+
+General
+~~~~~~~
+
+After installing NFD from source, you need to create a proper config file. If default
+location for ``./waf configure`` was used, this can be accomplished by simply copying the
+sample configuration file:
+
+::
+
+ sudo cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf
+
+NFD Security
+~~~~~~~~~~~~
+
+NFD provides mechanisms to enable strict authorization for all management commands. In
+particular, one can authorize only specific public keys to create new Faces or change the
+forwarding strategy for specific namespaces. For more information about how to generate
+private/public key pair, generate self-signed certificate, and use this self-signed
+certificate to authorize NFD management commands refer to :ref:`How to configure NFD
+security` FAQ question.
+
+In the sample configuration file, all authorizations are disabled, effectively allowing
+anybody on the local machine to issue NFD management commands. **The sample file is
+intended only for demo purposes and MUST NOT be used in a production environment.**
+
+Running
+-------
+
+**You should not run ndnd or ndnd-tlv, otherwise NFD will not work
+correctly**
+
+Starting
+~~~~~~~~
+
+In order to use NFD, you need to start two separate daemons: ``nfd`` (the forwarder
+itself) and ``nrd`` (RIB manager that will manage all prefix registrations). The
+recommended way is to use `nfd-start` script:
+
+::
+
+ nfd-start
+
+On OS X it may ask for your keychain password or ask ``nfd/nrd wants to sign using key in
+your keychain.`` Enter your keychain password and click Always Allow.
+
+Later, you can stop NFD with ``nfd-stop`` or by simply killing the ``nfd`` process.
+
+
+
+Connecting to remote NFDs
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To create a UDP or TCP tunnel to remote NFD and create route toward it,
+use the following command in terminal:
+
+::
+
+ nfdc register /ndn udp://<other host>
+
+where ``<other host>`` is the name or IP address of the other host
+(e.g., ``udp://spurs.cs.ucla.edu``). This outputs:
+
+::
+
+ Successful in name registration: ControlParameters(Name: /ndn, FaceId: 10, Origin: 0, Cost: 0, Flags: 1, ExpirationPeriod: 3600000 milliseconds, )
+
+The ``/ndn`` means that NFD will forward all Interests that start with ``/ndn`` through
+the face to the other host. If you only want to forward Interests with a certain prefix,
+use it instead of ``/ndn``. This only forwards Interests to the other host, but there is
+no "back route" for the other host to forward Interests to you. For that, you must go to
+the other host and use ``nfdc`` to add the route.
+
+The "back route" can also be automatically configured with ``nfd-autoreg``. For more
+information refer to `nfd-autoreg manpage
+<http://named-data.net/doc/NFD/current/manpages/nfd-autoreg.html>`_.
+
+Playing with NFD
+----------------
+
+After you installed, configured, and started NFD, you can try to install
+and play with the following:
+
+Sample applications:
+
+- `Simple examples in ndn-cxx
+ library <http://named-data.net/doc/ndn-cxx/0.1.0/examples.html>`__.
+ If you have installed ndn-cxx from source, you already have compiled
+ these:
+
+ + examples/producer
+ + examples/consumer
+ + examples/consumer-with-timer
+
+ + tools/ndncatchunks3
+ + tools/ndnputchunks3
+
+- `Introductory examples of
+ NDN-CCL <http://redmine.named-data.net/projects/nfd/wiki/Getting_Started_-_Common_Client_Libraries#Install-the-Common-Client-Library>`__
+
+Real applications and libraries:
+
+ + `ndn-tlv-ping - Ping Application For
+ NDN <https://github.com/named-data/ndn-tlv-ping>`__
+ + `ndn-traffic-generator - Traffic Generator For
+ NDN <https://github.com/named-data/ndn-traffic-generator>`__
+ + `repo-ng - Next generation of NDN
+ repository <https://github.com/named-data/repo-ng>`__
+ + `ChronoChat - Multi-user NDN chat
+ application <https://github.com/named-data/ChronoChat>`__
+ + `ChronoSync - Sync library for multiuser realtime applications for
+ NDN <https://github.com/named-data/ChronoSync>`__
diff --git a/docs/index.rst b/docs/index.rst
index 0f76bcb..88f0b60 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -6,62 +6,30 @@
release, NFD will become a core component of the `NDN Platform
<http://named-data.net/codebase/platform/>`__ and will follow the same release cycle.
-NFD is developed by a community effort. Although the first release was mostly done by the
-members of `NSF-sponsored NDN project team
-<http://named-data.net/project/participants/>`__, it already contains significant
-contributions from people outside the project team (for more details, refer to `AUTHORS.md
-<https://github.com/named-data/NFD/blob/master/AUTHORS.md>`__). We strongly encourage
-participation from all interested parties, since broader community support is key for NDN
-to succeed as a new Internet architecture. Bug reports and feedback are highly
-appreciated and can be made through `Redmine site
-<http://redmine.named-data.net/projects/nfd>`__ and the `ndn-interest mailing list
-<http://www.lists.cs.ucla.edu/mailman/listinfo/ndn-interest>`__.
-
-The main design goal of NFD is to support diverse experimentation of NDN technology. The
-design emphasizes *modularity* and *extensibility* to allow easy experiments with new
-protocol features, algorithms, and applications. We have not fully optimized the code for
-performance. The intention is that performance optimizations are one type of experiments
-that developers can conduct by trying out different data structures and different
-algorithms; over time, better implementations may emerge within the same design framework.
-
-NFD will keep evolving in three aspects: improvement of the modularity framework, keeping
-up with the NDN protocol spec, and addition of other new features. We hope to keep the
-modular framework stable and lean, allowing researchers to implement and experiment
-with various features, some of which may eventually work into the protocol spec.
-
-The design and development of NFD benefited from our earlier experience with `CCNx
-<http://www.ccnx.org>`__ software package. However, NFD is not in any part derived from
-CCNx codebase and does not maintain compatibility with CCNx.
-
-Downloading
------------
-
-NFD code can be downloaded from `GitHub git repository <https://github.com/named-data/NFD>`_.
-
-Refer to :ref:`NFD Installation Instructions` for detailed guide on how to install NFD
-from source.
-
NFD Documentation
-----------------
.. toctree::
:hidden:
- :maxdepth: 2
+ :maxdepth: 3
- RELEASE_NOTES
- Installation Instruction <INSTALL>
- NFD Configuration Tips <README>
+ README
+ getting-started
+ FAQ
manpages
+..
+ INSTALL
+* :doc:`README`
-* :ref:`NFD v0.1.0 Release Notes`
+* :doc:`getting-started`
-* :ref:`NFD Installation Instructions`
+* :doc:`FAQ`
-* :ref:`NFD Configuration Tips`
+* :doc:`manpages`
-* :ref:`Manpages`
+**Additional documentation**
* `NFD Wiki <http://redmine.named-data.net/projects/nfd/wiki>`_
@@ -70,6 +38,14 @@
* `API documentation (doxygen) <doxygen/annotated.html>`_
+Downloading
+-----------
+
+* `Source code GitHub git repository <https://github.com/named-data/NFD>`_.
+
+* :ref:`MacPorts NDN repository <How to start using NDN MacPorts repository on OSX>`
+
+* :ref:`Ubuntu NDN PPA repository <How to start using NDN PPA repository on Ubuntu Linux>`
License
-------
diff --git a/docs/named_data_theme/static/named_data_style.css_t b/docs/named_data_theme/static/named_data_style.css_t
index c1f02f9..3edfb72 100644
--- a/docs/named_data_theme/static/named_data_style.css_t
+++ b/docs/named_data_theme/static/named_data_style.css_t
@@ -38,10 +38,10 @@
margin-bottom: 18px;
}
-h1 { font-weight: normal; font-size: 24px; }
-h2 { font-weight: normal; font-size: 18px; }
-h3 { font-weight: bold; font-size: 18px; }
-h4 { font-weight: normal; font-size: 18px; }
+h1 { font-weight: bold; font-size: 24px; }
+h2 { font-weight: bold; font-size: 18px; }
+h3 { font-weight: bold; font-size: 16px; }
+h4 { font-weight: bold; font-size: 14px; }
hr {
background-color: #c6c6c6;
diff --git a/wscript b/wscript
index 2ba2dda..4e8622b 100644
--- a/wscript
+++ b/wscript
@@ -237,6 +237,9 @@
VERSION=VERSION_BASE)
def version(ctx):
+ if getattr(Context.g_module, 'VERSION_BASE', None):
+ return
+
Context.g_module.VERSION_BASE = Context.g_module.VERSION
Context.g_module.VERSION_SPLIT = [v for v in VERSION_BASE.split('.')]