Skip to content

Latest commit

 

History

History
736 lines (435 loc) · 23.7 KB

RELEASE_NOTES.rst

File metadata and controls

736 lines (435 loc) · 23.7 KB

NFD Release Notes

NFD version 0.3.4 (changes since version 0.3.3)

Release date: August 31, 2015

New features:

  • Boolean Face property IsOnDemand has been replaced with multistate FacePersistency property (:issue:`2989`, :issue:`3018`): persistent (Face exists as long as there are no system or socket errors), on-demand (Face is removed after inactivity period), and permanent (Face exists unless explicitly destroyed by the management).

    Currently, only UDP faces are allowed to be permanent. However, management interface to create UDP permanent faces or switch UDP to permanent state will be available in the next release (:issue:`2991`).

  • Least Recently Used policy for Content Store (:issue:`2219`)

    Currently, changing the policy requires a minor change in NFD source code. Configuration interface is coming in the next release (:issue:`3148`)

Updates and bug fixes:

  • Update of NDN Essential Tools to version 0.2 https://github.com/named-data/ndn-tools with code improvements and the following new tools:
    • PIB service to manage the public information of keys and publish certificates (:issue:`3018`)
    • A Wireshark dissector for NDN packets (:issue:`3092`)
  • RibManager constructor now accepts KeyChain as a parameter, preparing it for simplifying implementation with the new ndn::Dispatcher class (:issue:`2390`)
  • Fix HTML rendering of nfd-status-http-server output in some browsers (:issue:`3019`)
  • Enable automatic re-creation of multicast faces when network connectivity changes (:issue:`2460`)
  • Enhance exception throwing with Boost Exception library (:issue:`2541`)

Deprecated:

  • BroadcastStrategy (/localhost/nfd/strategy/broadcast) renamed as MulticastStrategy (/localhost/nfd/strategy/multicast) (:issue:`3011`)

Upcoming features (partially finished in development branches):


NFD version 0.3.3 (changes since version 0.3.2)

Release date: July 1, 2015

New features:

  • Content Store replacement policy interface (:issue:`1207`)
  • Add unit file and instructions for systemd (:issue:`1586`)
  • NDN Essential Tools version 0.1 https://github.com/named-data/ndn-tools featuring:
    • ndnpeek, ndnpoke: a pair of programs to request and make available for retrieval of a single Data packet
    • ndnping, ndnpingserver: reachability testing tools for Named Data Networking
    • ndndump: a traffic analysis tool that captures Interest and Data packets on the wire
    • ndn-dissect: an NDN packet format inspector. It reads zero or more NDN packets from either an input file or the standard input, and displays the Type-Length-Value (TLV) structure of those packets on the standard output.

Updates and bug fixes:

  • Avoid loopback new Interest in AccessStrategy (:issue:`2831`)
  • Simplified implementation of nfd-status using SegmentFetcher utility class (:issue:`2456`)

Deprecated:

Upcoming features:


NFD version 0.3.2 (changes since version 0.3.1)

Release date: May 12, 2015

New features:

  • Tables
    • Change lookup API to allow async implementations of ContentStore (:issue:`2411`)
  • Management

Updates and bug fixes:

  • Documentation
    • Update planned Features: face enhancements (:issue:`2617`)
    • Updated NFD's developer guide to reflect new changes and adding a new section on NFD/ndn-cxx unit testing
  • Face
    • Refactor channel acceptors to avoid use of shared pointers (:issue:`2613`)
    • Refactor code to avoid deprecated Block::fromBuffer overloads (:issue:`2553`)
    • Refactor code to use move semantics for sockets where possible (:issue:`2613`)
    • Switch to non-throwing version of websocketpp APIs (:issue:`2630`)
  • Forwarding
  • Management
    • Stop removed namespace from inheriting ancestor route (:issue:`2757`)
    • Fix TestFibUpdates/EraseFace on Ubuntu 14.04 32-bit (:issue:`2697`)
  • Tools
  • Build

NFD version 0.3.1 (changes since version 0.3.0)

Release date: March 3, 2015

New features:

  • nfd and nrd daemons are now merged into a single process using separate threads (:issue:`2489`)
  • Core
    • Extend ConfigFile to support passing a parsed ConfigSection (:issue:`2495`)
    • Allow customization of Logger and LoggerFactory (:issue:`2433`)
    • Make global io_service, scheduler, and global random generator thread-local, and logger thread-safe (:issue:`2489`)
  • Forwarding
    • Introduce exponential back-off interest retransmission suppression mechanism and enable its use in the best-route strategy (:issue:`1913`)
    • Strategies are now registered with a macro, making it simpler to introduce new strategies to NFD codebase (:issue:`2410`)
  • Tables
    • ContentStore now recognizes CachingPolicy-NoCache from LocalControlHeader (:issue:`2185`)

Updates and bug fixes:


NFD version 0.3.0 (changes since version 0.2.0)

Release date: February 2, 2015

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:
  • Forwarding

  • 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
    • Updates related to BestRoute strategy
    • 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

  • 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

NFD version 0.2.0 (changes since version 0.1.0)

Release date: August 25, 2014

  • Documentation

    • "NFD Developer's Guide" by NFD authors that explains NFD's internals including the overall design, major modules, their implementation, and their interactions
    • New detailed instructions on how to enable auto-start of NFD using OSX launchd and Ubuntu's upstart (see contrib/ folder)
  • Core

  • Faces

  • Forwarding

    • Outgoing Interest pipeline now allows strategies to request a fresh Nonce (e.g., when the strategy needs to re-express the Interest) (:issue:`1596`)
    • Fix in the incoming Data pipeline to avoid sending packets to the incoming Face (:issue:`1556`)
    • New RttEstimator class that implements the Mean-Deviation RTT estimator to be used in forwarding strategies
    • Fix memory leak caused by not removing PIT entry when Interest matches CS (:issue:`1882`)
    • Fix spurious assertion in NCC strategy (:issue:`1853`)
  • Tables

    • Fix in ContentStore to properly adjust internal structure when Cs::setLimit is called (:issue:`1646`)
    • New option in configuration file to set an upper bound on ContentStore size (:issue:`1623`)
    • Fix to prevent infinite lifetime of Measurement entries (:issue:`1665`)
    • Introducing capacity limit in PIT NonceList (:issue:`1770`)
    • Fix memory leak in NameTree (:issue:`1803`)
    • Fix segfault during Fib::removeNextHopFromAllEntries (:issue:`1816`)
  • Management

    • RibManager now fully support CHILD_INHERIT and CAPTURE flags (:issue:`1325`)
    • Fix in FaceManager to respond with canonical form of Face URI for Face creation command (:issue:`1619`)
    • Fix to prevent creation of duplicate TCP/UDP Faces due to async calls (:issue:`1680`)
    • Fix to properly handle optional ExpirationPeriod in RibRegister command (:issue:`1772`)
    • Added functionality of publishing RIB status (RIB dataset) by RibManager (:issue:`1662`)
    • Fix issue of not properly canceling route expiration during processing of unregister command (:issue:`1902`)
    • Enable periodic clean up of route entries that refer to non-existing faces (:issue:`1875`)
  • Tools

    • Extended functionality of nfd-status

      • -x to output in XML format, see :ref:`nfd-status xml schema`
      • -c to retrieve channel status information (enabled by default)
      • -s to retrieve configured strategy choice for NDN namespaces (enabled by default)
      • Face status now includes reporting of Face flags (local and on-demand)
      • On-demand UDP Faces now report remaining lifetime (expirationPeriod)
      • -r to retrieve RIB information
    • Improved nfd-status-http-server

      • HTTP server now presents status as XSL-formatted XML page
      • XML dataset and formatted page now include certificate name of the corresponding NFD (:issue:`1807`)
    • Several fixes in ndn-autoconfig tool (:issue:`1595`)

    • Extended options in nfdc:

      • -e to set expiration time for registered routes
      • -o to specify origin for registration and unregistration commands
    • Enable all-faces-prefix'' option in ``nfd-autoreg to register prefix for all face (on-demand and non-on-demand) (:issue:`1861`)

    • Enable processing auto-registration in nfd-autoreg for faces that existed prior to start of the tool (:issue:`1863`)

  • Build

    • Enable support of precompiled headers for clang and gcc to speed up compilation
  • Other small fixes and extensions


NFD version 0.1.0

Release date: May 7, 2014

This is an incomplete list of features that are implemented in NFD version 0.1.0.

  • Packet Format

    • NDN-TLV
    • LocalControlHeader, to allow apps to set outgoing face and learn incoming face.
  • Faces

    • Unix stream socket

    • UDP unicast

    • UDP multicast

    • TCP

    • Ethernet, currently without fragmentation.

      Note

      Ethernet support will not work properly on Linux kernels with TPACKET_V3 flexible buffer implementation (>= 3.2.0) and libpcap >= 1.5.0 (e.g., Ubuntu Linux 14.04). Refer to Issue 1551 for more detail and implementation progress.

  • 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.
  • Tables and forwarding pipelines support most Interest/Data processing, including selectors.

  • RIB Management that runs as a separate process, nrd. It supports basic prefix registration by applications, but no flags yet.

  • 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)
  • Support configuration file, which is in the Boost INFO format.

  • 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

  • NACK
    A packet sent back by a producer or a router to signal the unavailability of a requested Data packet. The protocol specification for NACK is in progress.
  • New strategies
    Additional strategies, including self-learning that populates the FIB by observing Interest and Data exchange.
  • Hop-by-hop Interest limit mechanism
    For congestion control
  • Face enhancements
    Add faces for new underlying protocols such as WiFi direct. Introduce the concept of "permanent faces" that can survive socket errors. Design a new hop-by-hop header that supports fragmentation, reliability improvement, etc.
  • Tables
    Experiment and evaluate different data structures and algorithms.
  • RIB management
    Move to more scalable data structures and support all flags in prefix registrations.
  • Tunnel management
    For hub nodes to authenticate incoming tunnel requests and maintain the tunnels.
  • Extensible name-based scoping
    Configurable organization-based scoping