Release of NFD version 0.2.0

August 25, 2014

Release Announcement

Dear all,

We are pleased to announce the initial public release (version 0.2.0) of the NDN Forwarding Daemon (NFD). NFD is a network forwarder that implements the Named Data Networking (NDN) protocol. More details about NFD, release notes, HOWTOs, a FAQ and other useful resources are available at NFD’s official webpage.

Also available is the NFD developer’s guide, which provides a detailed description of the implementation internals.

An important goal of NFD is to support the broader community to experiment with the NDN architecture. Thus, the current release emphasizes modularity and extensibility over performance to allow easy experimentation with new protocol features, algorithms, data structures and applications. We invite all interested parties to experiment with the existing code and submit their contributions to NFD Redmine or directly to Gerrit Code Review in terms of new architecture features and performance improvements.

NFD release is part of the new NDN Platform release version 0.3, which include the following components:

Binary Release

On the supported platforms, NFD and related tools can be installed from the packages prepared and maintained by NFD team:

Next releases would include support for other platforms. Please send us feedback on the platforms you’re using, so we can prioritize our goals. We would also appreciate if someone can provide help with packaging the current NFD release for other platforms.

Besides simplicity of installation, the binary release includes automatic initial configuration and platform-specific tools to automatically start NFD and related daemons. In particular, on OSX NFD is controlled using launchd and on Ubuntu using upstart mechanisms. In both cases, nfd-start and nfd-stop scripts are convenience wrappers for launchd and upstart.

Source Releases

The source code and source-code installation instructions are always available on NFD’s homepage:

Additional Information

Besides the officially supported platforms, NFD is known to work on: Fedora 20, CentOS 6, Raspberry Pi, OpenWRT, FreeBSD 10.0, and several other platforms. We are soliciting help with documenting common problems / pitfalls in installing/using NFD on different platforms on NFD WiKi.

Brief Introduction of NFD Features

The main functionality of NFD is to forward Interest and Data packets. To do this, it abstracts lower-level network transport mechanisms into NDN Faces, maintains basic data structures like CS, PIT, and FIB, and implements the packet processing logic. In addition to basic packet forwarding, it also supports multiple forwarding strategies, and a management interface to configure, control, and monitor NFD.

The following is a long but most likely incomplete list of per-module features that are implemented in the initial release of NFD. For more detailed information refer to the official NFD website and NFD’s developer guide.

  • Faces
    • Unix stream socket
    • UDP unicast
    • UDP multicast
    • TCP
    • Ethernet, currently without fragmentation
    • WebSocket (RFC 6455) to support in-browser NDN applications based on NDN-JS
  • Tables
    • Content Store (CS)
    • Pending Interest Table (PIT)
    • Forwarding Information Base (FIB)
    • Routing Information Base (RIB)
    • Strategy Choice Table to remember the selected strategy for individual namespace
    • Measurements Table to store strategy-specific measurements information regarding name prefixes
    • other data structures to support forwarding of NDN Data and Interest packets.
  • Forwarding
    • Strategies
      • broadcast
      • best-route
      • ncc: based on ccnx 0.7 for experimentation
      • client-control: authorized application can directly control Interest forwarding
    • Name-based scoping
      • /localhost: communication only within localhost using "local" Faces (UnixStreamFace, LocalTcpFace). NFD will strictly enforce this scope for Interests and Data packets
      • /localhop: one-hop communication (e.g., if at least one incoming or outgoing Face in PIT entry is non-local, the Interest cannot be forwarded to any non-local Face)
  • Management
    • Use of signed Interests as commands, with authentication and authorization.
    • Face management
    • FIB management
    • Per-namespace strategy selection
    • NFD status publishing
    • Notification to authorized apps of internal events, including Face creation and destruction.
  • RIB Management
    • RIB may be updated by different parties in different ways, including various routing protocols, application prefix registrations, and command-line manipulation by sysadmins. The RIB management module processes all these requests to generate a consistent forwarding table, and synchronizes it up with NFD’s FIB, which contains only the minimal information needed for forwarding decisions. Although part of the management, RIB management (calculation FIB based on RIB, processing routing flags) is performed in a separate process that communicates with NFD process via NFD management protocols (see NFD’s developer guide, Section 7).
  • Core
    • LocalControlHeader, to expose some internal NFD state to the application and to give the applications some control over packet processing.
    • Configuration file in Boost INFO format
    • Face monitoring
  • Applications
    • Tools to discover hubs on NDN testbed.
    • peek/poke and traffic generators for testing and debugging.
    • nfdc, a command-line tool to configure NFD.
    • nfd-status, a command-line tool to query NFD status.
    • nfd-status-http-server, which reads the NFD status and publishes over HTTP.

Planned Functions and Features for Next Releases

  • Forwarding
    • New strategies: additional strategies, including self-learning that populates the FIB by observing Interest and Data exchange.
    • NACK: signaling of the unavailability of a requested Data packet. The protocol specification for NACK is in progress.
    • Hop-by-hop Interest limit mechanism for congestion control
    • Extensible name-based scoping: configurable organization-based scoping
  • Face enhancements
    • Add fragmentation support for Ethernet face
    • New types of Faces, such as WiFi direct.
  • Tables
    • Experiment and evaluate different data structures and algorithms.
  • Tunnel management
    • For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.

The NFD Team.