NFD version 0.4.0
-----------------

Release date: December 31, 2015

.. note::
   Version 0.4.0 introduces several breaking changes to API and wire format of management protocols

Changes since version 0.3.4:

New features
^^^^^^^^^^^^

- **(breaking change)** Refactored implementation of face system (:issue:`3088`, :issue:`3104`,
  :issue:`3165`, :issue:`3168`, :issue:`3225`, :issue:`3226`, :issue:`3253`, :issue:`3259`,
  :issue:`3169`, :issue:`3160`, :issue:`3278`, :issue:`3166`, :issue:`3177`, :issue:`3177`,
  :issue:`3172`)

  The abstraction to send/receive NDN packets has been split into Transport, LinkService, and Face:

  * *Transport* provides delivery of the data blocks over specific underlying channels
    (raw ethernet packets, unicast/multicast UDP datagrams, TCP and WebSocket streams)

    Implemented: :NFD:`UnixStreamTransport`, :NFD:`EthernetTransport`, :NFD:`UnicastUdpTransport`,
    :NFD:`MulticastUdpTransport`, :NFD:`WebSocketTransport`, :NFD:`TcpTransport`,
    :NFD:`InternalForwarderTransport`

  * *LinkService* provides an "adaptation" layer to translate between NDN packets and data
    blocks communicated through Transport.  For example, LinkService can provide packet
    fragmentation and reassembly services.

    Implemented: :NFD:`GenericLinkService`

  * *Face* provides combines Transport and LinkServices, providing high-level interface to work
    with Interest/Data/Nack packets inside NFD.

  .. note::
     This feature replaces support for signaling between local applications and NFD from
     LocalControlHeader with NDNLPv2 protocol.  If your application uses
     LocalControlHeader features, it must be updated to use the new protocol (e.g., update
     to use ndn-cxx >= 0.4.0)

- Support for the following `NDNLPv2 <https://redmine.named-data.net/projects/nfd/wiki/NDNLPv2>`__
  features (:issue:`2520`, :issue:`2763`, :issue:`2841`):

  * Network NACK (:issue:`2883`)
  * Fragmentation and reassembly  (:issue:`3171`)

- Networking NACK in pipelines and best-route strategy (:issue:`3156`)

- Refactored implementation of NFD management (:issue:`2200`, :issue:`2107`)

- Interest forwarding processes Link included in interest packets (:issue:`3034`)

  .. note::
     This feature requires proper defintion of new ``tables.network_region`` section in
     the NFD config file (:issue:`3159`)

- Full support for UDP permanent faces (:issue:`2993`, :issue:`2989`, :issue:`3018`)

- Automatic start of NDN auto-configuration client (``ndn-autoconfig``) when starting NFD
  using ``nfd-start``, when enabled in ``autoconfig.conf`` (:issue:`2716`)

Improvements and bug fixes
^^^^^^^^^^^^^^^^^^^^^^^^^^

- **(breaking change)** Redesign of automatic prefix propagation, formerly known as remote
  prefix registration (:issue:`3211`, :issue:`2413`)

  This includes a backward-incompatible change to NFD's configuration file:

  * ``rib.remote_register`` section has been removed and, if present, will cause failure for NFD to start
  * ``rib.auto_prefix_propagate`` section has been added to control automatic prefix propagation feature

- Adapt pcap filter in EthernetTransport to accept only untagged frames (:issue:`3348`)

- Increase the initial suppression interval in BestRouteStrategy2 to 250ms (:issue:`3230`)

- Fix potential crash in ``Measurements::get(Fib::s_emptyEntry)`` (:issue:`3275`)

- Fix memory leak in PriorityFifoPolicy (:issue:`3236`)

- Display extended information for fatal NFD errors (:issue:`2541`)

- Compilation fixes for clang-700.0.72 (Apple LLVM 7.0.0) (:issue:`3209`)

- Properly handle exception from NetworkMonitor when the platform doesn't support it
  (:issue:`3195`)

- Multiple test suite improvements (:issue:`3322`, :issue:`3306`, :issue:`3305`, :issue:`3307`,
  :issue:`3346`, :issue:`3327`)

Deprecations
^^^^^^^^^^^^

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

- ForwarderStatus dataset retrievable using ``/localhost/nfd/status`` name, use
  ``/localhost/nfd/status/general`` instead.

Removals
^^^^^^^^

- ``NotificationStream``, replaced by the version in ndn-cxx library (:issue:`2144`)

Known issues
^^^^^^^^^^^^

- NFD currently has a known limitation in supporting the retrieval of data using full names,
  i.e., names with the implicit digest (:issue:`3363`).  This limitation will be addressed
  in the next release.
