Release Notes for DTN2 ---------------------- 2.5.0 (October 2007) ------------------- - Integrated support for the Bundle Security Protocol blocks, contributed by SPARTA. - Using SWIG, added bindings to export a version of the application interface to different scripting languages, currently supporting Tcl, Python, and Perl. - Implemented a polling feature in the API so applications can use select() to wait for bundle arrivals on the IPC handle. - Added a dtnhttpproxy application to route http requests over a DTN network. - Add a feature to the routing table to allow routes to point to alternate endpoint id instead of only a next hop link. - Fixed the compilation errors in the 2.4.0 release when trying to build external components. Changed the default configuration for these components to be enabled by default to avoid this oversight in the future. - Fixed the rpm specification file so the rpm builds work again. - Minor miscelleneous other bug fixes and features. 2.4.0 (July 2007) ----------------- - BBN updated the protocol implementation to conform to BP spec version 10, implementing bundle protocol version 5, converting most fixed-length fields to SDNVs and several other changes. - BBN added support for external convergence layers and data stores, matching the DTN reference architecture specification, as well as support for deleting links. - BBN added support for the metadata extension block and improved fragmentation handling. - Added a new router implementation called DTLSR (Delay Tolerant Link State Routing) intended for environments where the inter-node relationships are fairly stable, but links may go up and down. - Added support for forwarding a bundle with a wildcard destination to multiple next-hops, which can be used to implement simple or constrained flooding even with the static router. - Significantly improved the DTN simulator environment including adding support for bandwidth and storage limits on nodes, a structured output format for better post-processing of simulation results, and an internal restructuring making the simulation environment match the real-world environment much more closely. - Reworked the internal class used to represent bundle payloads so that the router can now support fully in-memory bundles which can safely contain binary data in all cases. - Jeff Wilson did a complete rewrite of the Prophet router implementation. - Changed the API to include bundle creation timestamp when receiving a bundle so that it's available to applications that may need it. - Added support for neighbor discovery that uses multicast dns (aka Apple's Bonjour protocol). Reworked the internal structure of the neighbor discovery subsystem. - Made optimizations to the table based routers (including the default static router) to be more efficient when links are coming up and down. - Updated the dtntunnel application to support tunnelling protocols where the server side is the first to send data. Reworked command line arguments to be more intuitive (and similar to ssh tunnels). - Added a dtntraceroute application that sends a single bundle, with a bunch of status report flags turned on and prints out the times embedded in the status reports that come back. - Modified the build environment to enable liboasys and libdtnapi to be built as shared libraries, and thereby used via SWIG export to other programming languages. - Resurrected the Cygwin build though it's not yet back to full functionality. 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 . - 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