HBSD: An External Router For DTN2
Design and Development of HBSD (our optimal joint scheduling and drop policy for DTN) as an External Router for DTN2
As described in the papers presented in the related publications section below, HBSD (History Based Scheduling and Drop) is an efficient joint scheduling and drop policy that can optimize different performance metrics in a DTN, like average delay and delivery probability. We have implemented HBSD for DTN2.
DTN2 is the current reference implementation (in C++) for Delay Tolerant Networks by the DTN Research Group. It acts as an additional networking layer between the application layer and the transport layer. DTN2 encapsulates application data into bundles, thus it is often called the "bundle layer", and calls on the transport layer to forward bundles from one node to the next. When two nodes are within range and have an established connection on the transport layer, the "link" between them is considered "open". While the transport layer, using traditional networking protocols, ensures delivery of bundle data from one node to the next, DTN2 is meant to ensure end-to-end delivery of bundles across the entire network.
The decision making aspect of the bundle layer, which controls what bundles are sent over what links, is called the router. DTN2 includes a number of internal routers, such as:
DTN2 includes also support for external routers such as RAPID (developed in Java) and our HBSD external router (developed in C++).
Global Architecture & Source Code
described in the Figure 1, the HBSD external router run as separate processes
and communicates with DTN2 by sending and receiving XML messages over a
multicast socket. DTN2 sends XML event messages to a multicast socket, from
which the HBSD external router reads. HBSD external router then processes the
message, and may or may not decide to send back an XML request message,
prompting DTN2 to take action.