NFD version 0.3.0

Release date: February 2, 2015

Changes since version 0.2.0:

New features

  • Build

    • The code now requires C++11. The minimum supported gcc version is 4.6, as earlier versions do not have proper support for C++11 features.

  • Faces

    • Enable detection of WebSocket connection failures using ping/pong messages (issue #1903)

    • In EthernetFace:

      • Avoid putting the NIC in promiscuous mode if possible (issue #1278)

      • Report packets dropped by the kernel if debug is enabled (issue #2441)

      • Integrate NDNLP fragmentation (issue #1209)

  • Forwarding

    • Strategy versioning (issue #1893)

    • New Dead Nonce List table to supplement PIT for loop detection (issue #1953)

    • Abstract retransmission suppression logic (issue #2377)

    • New forwarding strategy for access router (issue #1999)

  • Management

    • Add config file-based strategy selection (issue #2053)

      The sample config file now includes strategy selection for /, /localhost, /localhost/nfd, and /ndn/broadcast namespaces as follows:

      tables
      {
        ...
        strategy_choice
        {
          /               /localhost/nfd/strategy/best-route
          /localhost      /localhost/nfd/strategy/broadcast
          /localhost/nfd  /localhost/nfd/strategy/best-route
          /ndn/broadcast  /localhost/nfd/strategy/broadcast
        }
      }
      
    • Implement Query Operation in FaceManager (issue #1993)

    • FaceManager now responds with producer-generated NACK when query is invalid (issue #1993)

    • Add functionality for automatic remote prefix registration (issue #2056)

    • Only canonical FaceUri are allowed in faces/create commands (issue #1910)

  • Tables

    • StrategyInfoHost can now store multiple StrategyInfo of distinct types (issue #2240)

    • Enable iteration over PIT and CS entries (issue #2339)

    • Allow predicate to be specified in Measurements::findLongestPrefixMatch (issue #2314)

    • Calculate the implicit digest of Data packets in CS only when necessary (issue #1706)

  • Tools

    • Publish /localhop/ndn-autoconf/routable-prefixes from ndn-autoconfig-server (issue #1954)

    • Display detailed NFD software verion in nfd-status-http-server and nfd-status (issue #1916)

    • nfdc now accepts FaceUri in all commands (issue #1995)

    • Add daemon mode for ndn-autoconfig to re-run detection when connectivity changes (issue #2417)

  • Core

    • New scheduler::ScopedEventId class to automatically handle scheduled event lifetime (issue #2295)

Improvements and bug fixes

  • Documentation

    • NFD Developer’s guide has been updated to reflect changes in the codebase

    • Installation instruction updates

    • Update of config file instructions for disabling unix sockets (issue #2190)

  • Core

    • Use implementations moved to ndn-cxx library

    • Move Network class implementation from tools/ to core/

    • Ignore non-Ethernet AF_LINK addresses when enumerating NICs on OS X and other BSD systems

    • Fix bug on not properly setting FreshnessPeriod inside SegmentPublisher (issue #2438)

  • Faces

    • Fix spurious assertion failure in StreamFace (issue #1856)

    • Update websocketpp submodule (issue #1903)

    • Replace FaceFlags with individual fields (issue #1992)

    • Drop WebSocket message if the size is larger than maximum NDN packet size (issue #2081)

    • Make EthernetFace more robust against errors (issue #1984)

    • Prevent potential infinite loop in TcpFactory and UdpFactory (issue #2292)

    • Prevent crashes when attempting to create a UdpFace over a half-working connection (issue #2311)

    • Support MTU larger than 1500 in EthernetFace (for jumbo frames) (issue #2305)

    • Re-enable EthernetFace on OS X platform with boost >=1.57.0 (issue #1922)

    • Fix ioctl() calls on platforms where libpcap uses /dev/bpf* (issue #2327)

    • Fix overhead estimation in NDNLP slicer (issue #2317)

    • Replace usage of deprecated EventEmitter with Signal in Face abstractions (issue #2300)

    • Fix NDNLP PartialMessage cleanup scheduling (issue #2414)

    • Remove unnecessary use of DNS resolver in (Udp|Tcp|WebSocket)Factory (issue #2422)

  • Forwarding

    • Updates related to NccStrategy

      • Fix to prevent remembering of suboptimal upstreams (issue #1961)

      • Optimizing FwNccStrategy/FavorRespondingUpstream test case (issue #2037)

      • Proper detection for new PIT entry (issue #1971)

      • Use UnitTestTimeFixture in NCC test case (issue #2163)

      • Fix loop back to sole downstream (issue #1998)

    • Updates related to BestRoute strategy

      • Redesign best-route v2 strategy test case (issue #2126)

      • Fix clang compilation error in best-route v2 test case (issue #2179)

      • Use UnitTestClock in BestRouteStrategy2 test (issue #2160)

    • Allow strategies limited access to FaceTable (issue #2272)

  • Tables

    • Ensure that eviction of unsolicited Data is done in FIFO order (issue #2043)

    • Simplify table implementations with C++11 features (issue #2100)

    • Fix issue with Fib::removeNextHopFromAllEntries invalidating NameTree iterator (issue #2177)

    • Replace deprecated EventEmitter with Signal in FaceTable (issue #2272)

    • Refactored implementation of ContentStore based on std::set (issue #2254)

  • Management

    • Allow omitted FaceId in faces/create command (issue #2031)

    • Avoid deprecated ndn::nfd::Controller(Face&) constructor (issue #2039)

    • Enable check of command length before accessing verb (issue #2151)

    • Rename FaceEntry to Route (issue #2159)

    • Insert RIB command prefixes into RIB (issue #2312)

  • Tools

    • Display face attribute fields instead of FaceFlags in nfd-status and nfd-status-http-server output (issue #1991)

    • Fix nfd-status-http-server hanging when nfd-status output is >64k (issue #2121)

    • Ensure that ndn-autoconfig canonizes FaceUri before sending commands to NFD (issue #2387)

    • Refactored ndn-autoconfig implementation (issue #2421)

    • ndn-autoconfig will now register also /localhop/nfd prefix towards the hub (issue #2416)

  • Tests

    • Use UnitTestClock in Forwarder persistent loop test case (issue #2162)

    • Use LimitedIo in FwForwarder/SimpleExchange test case (issue #2161)

  • Build

    • Fix build error with python3 (issue #1302)

    • Embed CI build and test running script

    • Properly disable assertions in release builds (issue #2139)

    • Embed setting of PKG_CONFIG_PATH variable to commonly used values (issue #2178)

    • Add conditional compilation for NetworkInterface and PrivilegeHelper

    • Support tools with multiple translation units (issue #2344)

Removals

  • Remove listen option from unix channel configuration (issue #2188)

  • Remove usage of deprecated MetaInfo::TYPE_* constants (issue #2128)

  • Eliminate MapValueIterator in favor of boost::adaptors::map_values