Getting Started
This page will guide you through the process of installing the basic tools needed to start using and developing NDN applications.
Packet Forwarder
To begin, you will need to first install the NDN Forwarding Daemon (NFD) on your computer. There are several implementations of NFD, the most popular of which are:
- NFD1, the reference implementation (C++)
- YaNFD2, a multithreaded implementation (Golang)
- NDN-DPDK3, a high-performance implementation (C)
- NDN-Lite4, an IoT implementation (C)
What is the role of NFD?
NFD is the NDN equivalent of an IP "router", and runs on each node in the network. It is responsible for forwarding NDN packets between nodes, including functions of Data multicast and caching.
Client Library
Next, you will need to install a client library of your choice to interact with the NDN network. Depending on the library, you will need the corresponding compilers / interpreters / build tools.
- ndn-cxx (C++) [Docs, API]
- python-ndn (Python) [Docs]
- NDNts (TypeScript) [Docs]
- go-ndn (Golang)
- NDN-Lite (C, IoT) [Docs, API]
- esp8266ndn (Arduino) [API]
What does the client library do?
The client library provides the NDN equivalent of a TCP/IP "socket", and runs inside each application. It is responsible for encoding and decoding NDN packets, and sending / receiving them to / from NFD.
Once you have installed NFD and a client library, you need to start NFD on your local development machine. You are now ready to start developing NDN applications!
Contributing to the NDN codebase
The NDN codebase is free and open-source software, and most of it is available on GitHub. If you are interested in contributing, make sure you read this guide and the code of conduct first.
Debugging Tools
The ndn-tools package is highly recommended and contains several tools for developing and debugging NDN applications.
- peek: transmit a single Interest/Data packet between a consumer and a producer.
- chunks: segmented file transfer between a consumer and a producer.
- ping: test reachability between two NDN nodes
- dump: capture and analyze live traffic on an NDN network
- dissect: inspect the TLV structure of an NDN packet
- dissect-wireshark: Wireshark extension to inspect the TLV structure of NDN packets
Ping test for NFD
You can run a simple test for your local NFD by using thee ndn-tools package to start a ping server and client on the same machine. These will then communicate by connecting to NFD over a unix socket.
ndnpingserver /my/nfd/test &
ndnping /my/nfd/test
Getting Help
If you have any questions about NDN or the code base, we encourage you to reach out to the community for help. Some options include,
- Ask a question at the most appropriate mailing list.
- File an issue at the relevant GitHub repository or Redmine.
- (If applicable) reach out to the authors of the paper that introduced the software.
-
Afanasyev, A. et al. 2014. NFD developer’s guide. Dept. Comput. Sci., Univ. California, Los Angeles, Los Angeles, CA, USA, Tech. Rep. NDN-0021. 29, (2014), 31. ↩
-
Newberry, E. et al. 2021. YaNFD: Yet another named data networking forwarding daemon. Proceedings of the 8th ACM conference on information-centric networking (New York, NY, USA, 2021), 30–41. ↩
-
Shi, J. et al. 2020. NDN-DPDK: NDN forwarding at 100 gbps on commodity hardware. Proceedings of the 7th ACM conference on information-centric networking (New York, NY, USA, 2020), 30–40. ↩
-
Zhang, Z. et al. 2018. NDNoT: A framework for named data network of things. Proceedings of the 5th ACM conference on information-centric networking (New York, NY, USA, 2018), 200–201. ↩