The protocols that govern the way computers talk on the Internet largely assume that there are reliable low latency connections between any two points on the net. But several applications where we'd like to get the benefits of computer networking do not conform to that assumption. For instance, when NASA sends an instruction to a Mars Rover, there are both latency (speed of light delay) and disruption problems (no line of sight from Earth to Mars because the rover is on the back side of Mars right now, or it is the weather is bad at the receiving station). Another example is the challenge of getting the benefits of the Internet to a villiage in a developing nation. Traditional telecommunications technology cannot reach it cost-effectively, but a guy on a motorcycle can visit twenty such villages in a week much more cheaply than one could build a network to those twenty villages.
The Disruption Tolerant Networking (DTN) family of specifications and protocols lay out an architecture and mechanism to keep data moving even in the face of the difficulties these new environments present.
DTN2 is the name for a reference implementation of the DTN protocols. It is designed as an experimental platform where researchers can validate the protocol designs, and do experiments to show that the DTN protocols are working as expected.
The core implementation is written in C++. The Bundle Protocol Agent and all its support code is implemented as a user space daemon called dtnd. The daemon has a configuration and control interface which can be run remotely over a TCP connection when the daemon is running 'daemonized' (i.e., without a control terminal).
DTN applications interface to dtnd through the application API, which is a simple Sun RPC mechanism. The dtnd daemon embeds a Tcl interpreter, which is used for configuration and script-level control.