Release Notes for DTN2
----------------------

2.3.0 (December 2006)
---------------------

- Rewritten and documented TCP convergence layer, with support for
  bidirectional communication over a single socket.

- Default port used by TCP & UDP convergence layers is now 4556, newly
  registered with IANA.

- Improvements to the Bluetooth convergence layer (by Jeff Wilson) to
  use the same common stream based convergence layer base class as is
  used by TCP.

- Refactored bundle protocol handling code into separate block
  processing modules allowing for easier integration of security and
  other extension blocks.

- Integrated full support for extension blocks.

- External router interface (by MITRE) using XML to communicate
  between the router and the daemon.

- Initial support for a neighborhood discovery mechanism (by Jeff
  Wilson) using either UDP multicast/broadcast or Bluetooth's builtin
  service discovery protocols.

- Major enhancements to the Prophet router implementation (by Jeff
  Wilson).

- Added dtntunnel and dtncat applications. Reworked and enhanced the
  dtnping application.

- Modified the core for 64-bit compatibility.

- Various stability and performance improvements.

- Resurrection of the dtnsim simulator (by Seguti Gutierrez-Nolasco)
  for simple bundle transmission.

- Switched most of the code from the Intel Open Source License to the
  Apache License.

2.2.0 (March 2006)
------------------

- Various changes for conformance with version 4 of the bundle
  protocol as specified in the Bundle Protocol Internet Draft, as
  released on November 2005.

- Initial implementation of custody transfer, including
  flexible per-route timing specifications for retransmissions.

- Initial implementation of a Bluetooth convergence layer from Jeff
  Wilson <Jeff_Wilson@baylor.edu>.

- Added support for the ARM architecture, gcc 4.0, and BerkeleyDB 4.4.

- Added support for a file system based persistent storage
  implementation as an alternative to Berkeley DB.

- Many minor changes to improve stability and robustness of the code,
  largely due to an improved testing infrastructure including several
  tcl based system tests.

- Miscellaneous other improvements including: a persistent
  ForwardingLog for each bundle to maintain the history of where (and
  when) the bundle was sent to peers, restored support for reactive
  fragmentation, a NullConvergenceLayer and other testing hooks, and
  some scalability improvements.

2.1.99 (December 2005)
----------------------

- Widespread changes for conformance to the latest version of the
  bundle protocol specification document including replacing the
  region/admin syntax and BundleTuple class with a new EndpointID
  class that is a standard URI, and replacing fixed-length values in
  the protocol with SDNVs.
  
  ** NOTE: Due to time constraints, this task was not completed, so
     this release does not include the full bundle spec support,
     though the next one will.

- Completed implementation of expiration timers for both bundles and
  application registrations, as specified by the protocol document and
  architecture specification.

- Removed the use of AddressFamily classes from the configuration of
  the Interface and Link classes, moving the address specification
  into the convergence layer specifically.

- Faster and more robust configure scripts, including support for
  configuring a build directory that's different from the source
  directory. Improved build system so make -j works to build in
  parallel. Add support for the gcc-4.0 series of compilers.

- Other minor cleanup of Bundle class field names and associated
  types to match the protocol document more clearly.

- Rework some of the RPC API to have the daemon construct an
  appropriate endpoint id (in a scheme-specific manner).

- Significant rework of the control flow of Bundles through the
  system, including the state machine for Links, a reduction in the
  number of BundleList queues around the code, and an overall
  simplification of the control flow.

- Update the TCP and UDP convergence layers: removed fixed-width
  length fields from TCP; added pipelining so multiple bundles can be
  "in-flight" on a single TCP connection; removed all the framing
  overhead from UDP by simply sending a bundle per UDP datagram.

- Support added for Cygwin as well as Apple OS X.

2.1.1 (March 2005)
------------------
- Patch to configure script to fix build problems on Apple OS X due to
  a conflict with a system include file (demmer).

- Bug fix in oasys/io/NetUtils.cc so getaddrinfo works properly on OS
  X (or generally any IPv6 enabled system).

- Minor updates to the manual and tutorials (jra).

2.1.0 (March 2005)
------------------
- Major restructuring of the configuration and build process to use
  autoconf to generate configure specifications

- Additional ports to solaris, cygwin, MacOS X, and FreeBSD, as well
  as linux on ARM (sharp zaurus) both cross-compiled and native.

- Major change to the BundleRouter interface to remove the "delayed
  effect" problems of the action list interface. Now all operations
  are immediately enacted by a BundleActions class.

- Simplify the syntax for the link and interface commands to no longer
  require a full bundle tuple, but instead just the admin portion.
  This avoids the confusion in that the region portion was always
  ignored.

- Reorganization of the test directories in both oasys and DTN2,
  including the introduction of a unit testing framework in oasys and
  the conversion of some tests to the new framework.

- Added framework for link-specific option parsing for the convergence
  layers.

- New version of the TCP convergence layer protocol, to be formally
  specified further in an internet draft. Addition of an idle time
  negotiation to close idle connections. Initial work on a feature for
  receiver-initiated connection to be used to traverse NAT routers.

- New version of the UDP convergence layer protocol that tightens up
  the protocoll and makes more sense divergent from the tcp one.

- Change the bundling protocol implementation to use NTP timestamps as
  mandated by the bundling protocol internet draft.

- Initial work on integrating the dtnsim simulation environment with
  the core of the daemon.

- Many other miscellaneous small changes and bug fixes.


2.0.2 (December 2004)
---------------------
- (very minor) change to enable Berkeley DB 4.3 usage

2.0.1 (December 2004):
---------------------

- First public release of the DTN2 code: stable design and overall
  code structure, though still numerous features left to be
  implemented.

- Features include:

  - conformance to the IETF draft Bundle Protocol specification version 3

  - functional implementation of a TCP convergence layer and address
    capabilities amenable to internet-connected hosts

  - static bundle router implementation

  - proactive and reactive fragmentation

  - flexible storage framework adaptable to Berkeley DB, mysql, or
    postgresql underlying implementations
