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)

Updates 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 OSX 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