NFD Release Notes

NFD version 0.5.1

Release date: January 25, 2017

Changes since version 0.5.0

New features

  • In ndn-autoconfig, add the Find (geographically) Closest Hub stage (NDN-FCH) using a deployed service (Issue #3800)
  • Add face_system.ether.whitelist and face_system.ether.blacklist config options for Ethernet multicast faces creation (Issue #1712)
  • Add face_system.udp.whitelist and face_system.udp.blacklist config options for UDP multicast faces creation (Issue #1712)
  • Introduce tables.cs_policy config option to configure cache policy (policy change requires restart of NFD) (Issue #3148)
  • Introduce strategy parameters that can be specified when selecting a strategy for a namespace (Issue #3868)
  • Initial implementation of route re-advertise feature. This release only includes supporting classes. Full implementation of this feature is expected to be introduced in the next release (Issue #3818).
  • Introduce FACE_EVENT_UP and FACE_EVENT_DOWN notifications (Issue #3794, Issue #3818)
  • GenericLinkService now encodes and decodes the NDNLPv2 CongestionMark field (Issue #3797)


  • Allow strategies to pick outgoing Interest. The outgoing Interest pipeline and Strategy API have changed to give strategies an opportunity to pick an outgoing Interest that matches the Interest table entry (Issue #1756)
  • Refactor localhop restriction handling in strategies. Previously available canForwardToLegacy function no longer checks scope. Strategies using this function shall use wouldViolateScope separately (Issue #3841, Issue #1756)
  • Strategy instances are no longer shared among different StrategyChoice entries. Each instance can be individually configured using the arguments supplied during construction (as part of strategy name) (Issue #3868)
  • Change strategy-choice/set response codes. Specifically, if the specified strategy name cannot be instantiated, the command responds with 404 status code (Issue #3868)
  • Add ability to instantiate strategy of next higher version if the requested version is not available (Issue #3868)
  • Refactor face management system. The function of the monolithic FaceManager class has been split among the newly introduced FaceSystem class and the various protocol factories. FaceSystem class is the entry point of NFD’s face system and owns the concrete protocol factories, created based on face_system section of the NFD configuration file. (Issue #3904)
  • Switch to use faces/update instead of legacy faces/enable-local-control to enable local fields (Issue #3734)
  • Add support for permanent persistency in TcpTransport (Issue #3167)
  • Add missing and refactor existing registry implementations for replaceable modules, including strategy, protocol factory, CS policy, and unsolicited data policy (Issue #2181, Issue #3148, Issue #3868, Issue #3904)
  • Refactor and extend nfdc tool. The tool is now a universal instrument to query and change NFD state (Issue #3780)
  • Refactor implementation of ndn-autoconfig tool (Issue #2426)


  • Fix RTT calculation in ASF strategy (Issue #3829)
  • Ensure that pit::Entry checks that Interest matches entry when updating in/out-record to prevent strategies to incorrectly pick an incorrect Interest (Issue #1756)
  • Fix uncaught bad_lexical_cast exception in Network::isValidCidr() (Issue #3858)
  • Fix incorrect output of operator<< for Rib class (Issue #3423)
  • Make FIB and StrategyChoice iterators default-constructible (Issue #3882)
  • Ensure that nfd-status-http-server returns error code (HTTP/504) when NFD is not running (Issue #3863)
  • A number of fixes in documentation


  • Deprecate nfd-status command line options. Use nfdc subcommands, such as nfdc face list and nfdc status report xml. The argument-less nfd-status is retained as an alias of nfdc status report (Issue #3780)


  • Delete deprecated Strategy::sendInterest overload and violatesScope (Issue #1756, Issue #3841)
  • StrategyChoice no longer supports installed instances. All strategies should be registered in the strategy registry (Issue #3868)
  • Strategy::getName. Instead, Strategy API introduces getStrategyName (strategy program name, including version component) and getInstanceName (strategy name assigned during strategy instance instantiation, including version and optional extra parameter components) (Issue #3868)