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, Muktadir Chowdhury, and Lan Wang

NDN, Technical Report NDN-0021.
Revision 10, July 4, 2018.

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 10 (July 4, 2018)

– Description of EthernetUnicast transport
– Updates regarding Transport MTU handling

Difference highlights from the previous revision

Revision 9 (May 4, 2018)

– Updated description of congestion control
– Updates in forwarding pipelines and strategy description

Difference highlights from the previous revision

Revision 8 (February 19, 2018)

– Updated description of face system
– Interface whitelist and blacklist for multicast faces
– TCP permanent face
– IPv6 support in MulticastUdpTransport
– New ad hoc link type
– Content Store policy configuration and policy API
– Unsolicited data policy
– Forwarding pipeline updates, including semantics of removing Link from Interest when it reaches producer region
– Description of new semantics of NextHopFaceId
– Scope control in strategies
– Strategy parameters
– Updated description of multicast strategy
– Command Authenticator
– Updated face management to match current NFD implementation
– RIB-to-NLSR readvertise
– New section on Congestion Control

Difference highlights from the previous revision

Revision 7 (October 4, 2016):

– Added brief description and reference to the new Adaptive SRTT-based (ASF) forwarding strategy
– Update description of Strategy API to reflect latest changes
– Miscellaneous updates

Difference highlights from the previous revision

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