NFD Developer’s Guide



download Download PDF

Alexander Afanasyev, Junxiao Shi, Beichuan Zhang, Lixia Zhang, Ilya Moiseenko, Yingdi Yu, Wentao Shang, Yanbiao Li, Spyridon Mastorakis, Yi Huang, Jerald Paul Abraham, Eric Newberry, Steve DiBenedetto, Chengyu Fan, Christos Papadopoulos, Davide Pesavento, Giulio Grassi, Giovanni Pau, Hang Zhang, Tian Song, Haowei Yuan, Hila Ben Abraham, Patrick Crowley, Syed Obaid Amin, Vince Lehman, and Lan Wang

NDN, Technical Report NDN-0021.
Revision 5, Oct 27, 2015.

NDN Forwarding Daemon (NFD) is a network forwarder that implements the Named Data Networking (NDN) protocol. NFD is designed with modularity and extensibility in mind to enable easy experiments with new protocol features, algorithms, and applications for NDN. To help developers extend and improve NFD, this document explains NFD’s internals including the overall design, major modules, their implementations, and their interactions.


Revision 6 (March 25, 2016):

– Added description of refactored Face system (Face, LinkService, Transport)
– Added description of WebSocket transport
– Updated description of RIB management
– Added description of Nack processing
– Added introductory description of NDNLP
– Added description of best-route retransmission suppression
– Other updates to synchronize description with current NFD implementation

Difference highlights from the previous revision

Revision 5 (Oct 27, 2015):

– Add description of CS CachePolicy API, including information about new LRU policy
– BroadcastStrategy renamed to MulticastStrategy
– Added overview of how forwarder processes Link objects
– Added overview of the new face system (incomplete)
– Added description of the new automatic prefix propagation feature
– Added description of the refactored management
– Added description of NetworkRegionTable configuration
– Added description about client.conf and NFD

Revision 4 (May 12, 2015):

– New section about testing and updates for NFD version 0.3.2
– Added description of new ContentStore implementation, including a new async lookup model of CS
– Added description of the remote prefix registration
– Updated Common Services section

Revision 3 (February 3, 2015):

– Updates for NFD version 0.3.0
– In Strategy interface, beforeSatisfyPendingInterest renamed to beforeSatisfyInterest
– Added description of dead nonce list and related changes to forwarding pipelines
– Added description of a new strategy_choice config file subsection
– Amended unix config text to reflect removal of “listen” option
– Added discussion about encapsulationg of NDN packets inside WebSocket messages
– Revised FaceManager description, requiring canonical FaceUri in create operations
– Added description of the new access router strategy

Revision 2 (August 25, 2014):

– Updated steps in forwarding pipelines, nfd::BestRouteStrategy is replaced with nfd::BestRouteStrategy2 that allows client-based recovery from Interest losses

Revision 1 (July 1, 2014): Initial release