Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 1 | Getting started with NFD |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 2 | ======================== |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 3 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 4 | Supported platforms |
| 5 | ------------------- |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 6 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 7 | NFD is built against a continuous integration system and has been tested on the |
| 8 | following platforms: |
| 9 | |
Davide Pesavento | c5e3e7a | 2023-03-07 21:25:27 -0500 | [diff] [blame] | 10 | - Ubuntu 20.04 (focal) |
| 11 | - Ubuntu 22.04 (jammy) |
Davide Pesavento | 4b7cffb | 2024-06-07 17:35:53 -0400 | [diff] [blame] | 12 | - Ubuntu 24.04 (noble) |
Davide Pesavento | c5e3e7a | 2023-03-07 21:25:27 -0500 | [diff] [blame] | 13 | - Debian 11 (bullseye) |
Davide Pesavento | 05bd6c2 | 2023-10-31 21:45:25 -0400 | [diff] [blame] | 14 | - Debian 12 (bookworm) |
Davide Pesavento | e541d1b | 2022-08-17 15:10:32 -0400 | [diff] [blame] | 15 | - CentOS Stream 9 |
Davide Pesavento | 914eb28 | 2024-12-10 15:33:26 -0500 | [diff] [blame^] | 16 | - macOS 12 / 13 / 14 / 15 |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 17 | |
Davide Pesavento | c5e3e7a | 2023-03-07 21:25:27 -0500 | [diff] [blame] | 18 | NFD should also work on the following platforms, although they are not officially |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 19 | supported: |
| 20 | |
Davide Pesavento | c5e3e7a | 2023-03-07 21:25:27 -0500 | [diff] [blame] | 21 | - Any other recent version of Ubuntu not listed above |
Davide Pesavento | 05bd6c2 | 2023-10-31 21:45:25 -0400 | [diff] [blame] | 22 | - Fedora >= 33 |
Davide Pesavento | e541d1b | 2022-08-17 15:10:32 -0400 | [diff] [blame] | 23 | - Alpine >= 3.12 |
Davide Pesavento | 05bd6c2 | 2023-10-31 21:45:25 -0400 | [diff] [blame] | 24 | - Any version of Raspberry Pi OS based on Debian 11 (bullseye) or later |
Davide Pesavento | 4b7cffb | 2024-06-07 17:35:53 -0400 | [diff] [blame] | 25 | - macOS >= 10.15 |
Davide Pesavento | 6d6f207 | 2022-09-12 23:08:34 -0400 | [diff] [blame] | 26 | - FreeBSD >= 12.2 |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 27 | |
| 28 | .. _Install NFD on Ubuntu Linux using the NDN PPA repository: |
| 29 | |
| 30 | Install NFD on Ubuntu Linux using the NDN PPA repository |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 31 | -------------------------------------------------------- |
| 32 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 33 | NFD binaries and related tools for supported versions of Ubuntu can be installed using |
| 34 | PPA packages from the **named-data** repository. First, you will need to add the |
| 35 | ``named-data/ppa`` repository to the binary package sources and update the list of |
| 36 | available packages. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 37 | |
Alexander Afanasyev | 84dd4ca | 2017-10-15 14:56:08 -0400 | [diff] [blame] | 38 | Preliminary steps if you have not used PPA packages before |
| 39 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 40 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 41 | To simplify adding new PPA repositories, Ubuntu provides the ``add-apt-repository`` tool, |
Davide Pesavento | cc7bee7 | 2016-04-22 02:21:13 +0200 | [diff] [blame] | 42 | which is not installed by default on some systems. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 43 | |
| 44 | :: |
| 45 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 46 | sudo apt install software-properties-common |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 47 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 48 | Adding the NDN PPA |
| 49 | ~~~~~~~~~~~~~~~~~~ |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 50 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 51 | After installing ``add-apt-repository``, run the following commands to add the `NDN PPA |
| 52 | repository`_:: |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 53 | |
| 54 | sudo add-apt-repository ppa:named-data/ppa |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 55 | sudo apt update |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 56 | |
| 57 | Installing NFD and other NDN packages |
| 58 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 59 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 60 | After you have added the `NDN PPA repository`_, NFD and other NDN packages can be easily |
| 61 | installed either using ``apt``, as shown below, or any other compatible package manager. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 62 | |
| 63 | :: |
| 64 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 65 | sudo apt install nfd |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 66 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 67 | For the list of available packages, refer to the `NDN PPA repository`_ page. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 68 | |
| 69 | .. _NDN PPA repository: https://launchpad.net/~named-data/+archive/ppa |
| 70 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 71 | Building from source |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 72 | -------------------- |
| 73 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 74 | Downloading from git |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 75 | ~~~~~~~~~~~~~~~~~~~~ |
| 76 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 77 | The first step is to obtain the source code for NFD and its main dependency, the |
| 78 | *ndn-cxx* library. If you do not want a development version of NFD, make sure you |
Davide Pesavento | 3bc8e19 | 2022-12-31 01:40:11 -0500 | [diff] [blame] | 79 | checkout the correct release tag (e.g., ``*-0.8.1``) from both repositories. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 80 | |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 81 | .. code-block:: sh |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 82 | |
| 83 | # Download ndn-cxx |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 84 | git clone https://github.com/named-data/ndn-cxx.git |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 85 | |
| 86 | # Download NFD |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 87 | git clone --recursive https://github.com/named-data/NFD.git |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 88 | |
Alexander Afanasyev | 84dd4ca | 2017-10-15 14:56:08 -0400 | [diff] [blame] | 89 | .. note:: |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 90 | While we strive to ensure that the latest version (git master branch) of NFD and ndn-cxx |
| 91 | always compiles and works properly, we cannot guarantee that there will be no issues. |
| 92 | If this is discovered to be the case, please use matching released versions (git tag or |
| 93 | tarball) of NFD and ndn-cxx instead. |
Alexander Afanasyev | 84dd4ca | 2017-10-15 14:56:08 -0400 | [diff] [blame] | 94 | |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 95 | Prerequisites |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 96 | ~~~~~~~~~~~~~ |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 97 | |
Davide Pesavento | bf4c131 | 2023-02-23 20:32:01 -0500 | [diff] [blame] | 98 | Install the `ndn-cxx library <https://docs.named-data.net/ndn-cxx/current/INSTALL.html>`__ |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 99 | and its prerequisites. |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 100 | |
Davide Pesavento | 914eb28 | 2024-12-10 15:33:26 -0500 | [diff] [blame^] | 101 | On Linux, NFD needs the following *optional* dependencies to enable additional features: |
Junxiao Shi | e5e1e25 | 2014-12-13 22:07:35 -0700 | [diff] [blame] | 102 | |
Davide Pesavento | e541d1b | 2022-08-17 15:10:32 -0400 | [diff] [blame] | 103 | - On **Debian** and **Ubuntu**: |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 104 | |
| 105 | .. code-block:: sh |
Junxiao Shi | e5e1e25 | 2014-12-13 22:07:35 -0700 | [diff] [blame] | 106 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 107 | sudo apt install libpcap-dev libsystemd-dev |
| 108 | |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 109 | - On **CentOS** and **Fedora**: |
| 110 | |
| 111 | .. code-block:: sh |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 112 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 113 | sudo dnf install libpcap-devel systemd-devel |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 114 | |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 115 | Build |
| 116 | ~~~~~ |
| 117 | |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 118 | The following commands can be used to build and install NFD from source: |
| 119 | |
| 120 | .. code-block:: sh |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 121 | |
Davide Pesavento | 2150da8 | 2022-07-08 18:18:51 -0400 | [diff] [blame] | 122 | ./waf configure |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 123 | ./waf |
| 124 | sudo ./waf install |
| 125 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 126 | If you have installed ndn-cxx and/or any other dependencies into a non-standard path, |
| 127 | you may need to modify the ``PKG_CONFIG_PATH`` environment variable before running |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 128 | ``./waf configure``. For example: |
| 129 | |
| 130 | .. code-block:: sh |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 131 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 132 | export PKG_CONFIG_PATH="/custom/lib/pkgconfig:$PKG_CONFIG_PATH" |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 133 | ./waf configure |
| 134 | ./waf |
| 135 | sudo ./waf install |
| 136 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 137 | Refer to ``./waf --help`` for more options that can be used during the ``configure`` stage. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 138 | |
Alexander Afanasyev | 508411e | 2014-12-16 13:27:59 -0800 | [diff] [blame] | 139 | .. note:: |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 140 | If you are working on a source repository that has been compiled before, and you have |
| 141 | upgraded one of the dependencies, please execute ``./waf distclean`` to clear object files |
| 142 | and start over. |
Alexander Afanasyev | 508411e | 2014-12-16 13:27:59 -0800 | [diff] [blame] | 143 | |
Alexander Afanasyev | 2618153 | 2014-05-07 23:38:51 -0700 | [diff] [blame] | 144 | Debug symbols |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 145 | ~~~~~~~~~~~~~ |
Alexander Afanasyev | 2618153 | 2014-05-07 23:38:51 -0700 | [diff] [blame] | 146 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 147 | The default compiler flags include debug symbols in binaries. This should provide |
| 148 | more meaningful debugging information if NFD or other tools happen to crash. |
Alexander Afanasyev | 2618153 | 2014-05-07 23:38:51 -0700 | [diff] [blame] | 149 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 150 | If this is not desired, the default flags can be overridden to disable debug symbols. |
| 151 | The following example shows how to completely disable debug symbols and configure |
| 152 | NFD to be installed into ``/usr`` with configuration in the ``/etc`` directory. |
Alexander Afanasyev | 2618153 | 2014-05-07 23:38:51 -0700 | [diff] [blame] | 153 | |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 154 | .. code-block:: sh |
Alexander Afanasyev | 2618153 | 2014-05-07 23:38:51 -0700 | [diff] [blame] | 155 | |
| 156 | CXXFLAGS="-O2" ./waf configure --prefix=/usr --sysconfdir=/etc |
| 157 | ./waf |
| 158 | sudo ./waf install |
| 159 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 160 | For Ubuntu PPA packages, debug symbols are available in ``*-dbg`` packages. |
Alexander Afanasyev | 84dd4ca | 2017-10-15 14:56:08 -0400 | [diff] [blame] | 161 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 162 | Customizing the compiler |
| 163 | ~~~~~~~~~~~~~~~~~~~~~~~~ |
Alexander Afanasyev | 7c10b3b | 2015-01-20 12:24:27 -0800 | [diff] [blame] | 164 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 165 | To build NFD with a different compiler (rather than the platform default), set the |
| 166 | ``CXX`` environment variable to point to the compiler binary. For example, to build |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 167 | with clang on Linux, use the following: |
| 168 | |
| 169 | .. code-block:: sh |
Alexander Afanasyev | 7c10b3b | 2015-01-20 12:24:27 -0800 | [diff] [blame] | 170 | |
Eric Newberry | 81a9a86 | 2016-12-27 22:59:27 -0700 | [diff] [blame] | 171 | CXX=clang++ ./waf configure |
Alexander Afanasyev | 7c10b3b | 2015-01-20 12:24:27 -0800 | [diff] [blame] | 172 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 173 | Building the documentation |
| 174 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 175 | |
Davide Pesavento | 9f6a7d9 | 2020-10-06 15:21:48 -0400 | [diff] [blame] | 176 | Tutorials and API documentation can be built using the following commands: |
| 177 | |
| 178 | .. code-block:: sh |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 179 | |
| 180 | # Full set of documentation (tutorials + API) in build/docs |
| 181 | ./waf docs |
| 182 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 183 | # Only tutorials in build/docs |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 184 | ./waf sphinx |
| 185 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 186 | # Only API docs in build/docs/doxygen |
| 187 | ./waf doxygen |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 188 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 189 | If ``sphinx-build`` is detected during ``./waf configure``, manpages will automatically |
| 190 | be built and installed during the normal build process (i.e., during ``./waf`` and |
| 191 | ``./waf install``). By default, manpages will be installed into ``${PREFIX}/share/man`` |
| 192 | (the default value for ``PREFIX`` is ``/usr/local``). This location can be changed |
| 193 | during the ``./waf configure`` stage using the ``--prefix``, ``--datarootdir``, or |
| 194 | ``--mandir`` options. |
Alexander Afanasyev | 284257b | 2014-04-11 14:16:51 -0700 | [diff] [blame] | 195 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 196 | For further details, please refer to ``./waf --help``. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 197 | |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 198 | Initial configuration |
| 199 | --------------------- |
| 200 | |
| 201 | .. note:: |
| 202 | If you have installed NFD from binary packages, the package manager has already |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 203 | installed a working configuration and you can safely skip this section. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 204 | |
| 205 | General |
| 206 | ~~~~~~~ |
| 207 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 208 | After installing NFD from source, you need to create a proper configuration file. |
| 209 | If the default installation directories were used with ``./waf configure``, this |
| 210 | can be accomplished by simply copying the sample configuration file as follows:: |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 211 | |
| 212 | sudo cp /usr/local/etc/ndn/nfd.conf.sample /usr/local/etc/ndn/nfd.conf |
| 213 | |
| 214 | NFD Security |
| 215 | ~~~~~~~~~~~~ |
| 216 | |
| 217 | NFD provides mechanisms to enable strict authorization for all management commands. In |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 218 | particular, one can authorize only specific public keys to create new faces or change the |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 219 | forwarding strategy for specific namespaces. For more information about how to generate |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 220 | public/private key pairs, generate self-signed certificates, and use them to authorize |
| 221 | NFD management commands, refer to the :ref:`How do I configure NFD security` FAQ question. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 222 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 223 | In the sample configuration file, all security mechanisms are disabled for local clients, |
| 224 | effectively allowing anybody on the local machine to issue NFD management commands. |
| 225 | |
| 226 | .. note:: |
| 227 | The sample configuration file is intended only for demo purposes and should NOT be |
| 228 | used in production environments. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 229 | |
| 230 | Running |
| 231 | ------- |
| 232 | |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 233 | Starting |
| 234 | ~~~~~~~~ |
| 235 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 236 | If you have installed NFD from source, it is recommended to start NFD with the |
| 237 | ``nfd-start`` script:: |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 238 | |
| 239 | nfd-start |
| 240 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 241 | On macOS, this command may ask for your keychain password or ask "nfd wants to sign using |
| 242 | key [xyz] in your keychain". Enter your keychain password and click "Always Allow". |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 243 | |
| 244 | Later, you can stop NFD with ``nfd-stop`` or by simply killing the ``nfd`` process. |
| 245 | |
Davide Pesavento | 2849fd4 | 2019-01-03 18:30:05 -0500 | [diff] [blame] | 246 | If you have installed NFD using a package manager, you can start and stop NFD using the |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 247 | operating system's service manager, such as ``systemctl`` or ``launchctl``. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 248 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 249 | Connecting to remote forwarders |
| 250 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 251 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 252 | To create a UDP tunnel to a remote instance of NFD, execute the following command |
| 253 | in a terminal:: |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 254 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 255 | nfdc face create udp://<other-host> |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 256 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 257 | where ``<other-host>`` is the name or IP address of the other host (e.g., |
| 258 | ``udp://ndn.example.net``). If successful, this will print something like:: |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 259 | |
Junxiao Shi | 849e12a | 2017-08-02 00:14:57 +0000 | [diff] [blame] | 260 | face-created id=308 local=udp4://10.0.2.15:6363 remote=udp4://131.179.196.46:6363 persistency=persistent |
| 261 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 262 | To add a route ``/ndn`` toward this remote forwarder, execute the following command |
| 263 | in a terminal:: |
Junxiao Shi | 849e12a | 2017-08-02 00:14:57 +0000 | [diff] [blame] | 264 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 265 | nfdc route add /ndn udp://<other-host> |
Junxiao Shi | 849e12a | 2017-08-02 00:14:57 +0000 | [diff] [blame] | 266 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 267 | This will print:: |
Junxiao Shi | 849e12a | 2017-08-02 00:14:57 +0000 | [diff] [blame] | 268 | |
| 269 | route-add-accepted prefix=/ndn nexthop=308 origin=static cost=0 flags=child-inherit expires=never |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 270 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 271 | This indicates that NFD will forward all Interests that start with ``/ndn`` through the |
| 272 | face to the other host. This forwards Interests to the other host, but does not provide |
| 273 | a "back route" for the other host to forward Interests to you. For this, you can rely on |
| 274 | the "automatic prefix propagation" feature of NFD or use the ``nfdc`` command on the other |
| 275 | host to add the route. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 276 | |
| 277 | Playing with NFD |
| 278 | ---------------- |
| 279 | |
Davide Pesavento | 69857c3 | 2020-04-05 16:36:26 -0400 | [diff] [blame] | 280 | After you have installed, configured, and started NFD, you can demonstrate the features |
| 281 | of NDN using the following applications and libraries. |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 282 | |
| 283 | Sample applications: |
| 284 | |
Davide Pesavento | bf4c131 | 2023-02-23 20:32:01 -0500 | [diff] [blame] | 285 | + `Simple examples using the ndn-cxx library <https://docs.named-data.net/ndn-cxx/current/examples.html>`__ |
Davide Pesavento | 3bc8e19 | 2022-12-31 01:40:11 -0500 | [diff] [blame] | 286 | + `Simple examples using the python-ndn library <https://python-ndn.readthedocs.io/en/latest/src/examples/basic_app.html>`__ |
Steve DiBenedetto | 62a9394 | 2014-08-24 17:13:52 -0600 | [diff] [blame] | 287 | |
| 288 | Real applications and libraries: |
| 289 | |
Davide Pesavento | 1752159 | 2020-05-14 19:01:32 -0400 | [diff] [blame] | 290 | + `ndn-tools - Essential NDN command-line tools <https://github.com/named-data/ndn-tools>`__ |
Davide Pesavento | 3bc8e19 | 2022-12-31 01:40:11 -0500 | [diff] [blame] | 291 | + `ndn-traffic-generator - Simple traffic generator for NDN <https://github.com/named-data/ndn-traffic-generator>`__ |
| 292 | + `ndn-svs - State Vector Sync library <https://github.com/named-data/ndn-svs>`__ |
| 293 | + `PSync - Partial and full Sync library <https://github.com/named-data/PSync>`__ |