blob: 57d0d57cfe30046061997abe220fb3cc6c3ef781 [file] [log] [blame]
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.2.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.2.0
...
# continue with ndn-cxx installation instructions
git clone --recursive https://github.com/named-data/NFD
cd NFD
git checkout NFD-0.2.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.2.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>`__