Helsinki University of Technology Faculty of Electronics, Communications and Automation Department of Communications and Networking

DTN-enabled Web Server

The DTN-enabled web server is a server which accepts bundles containing HTTP requests and returns responses of bundled resources (using MHTML); it also supports plain HTTP access. The server obtains the resources to be bundled up in a specific response either from a dependency file stored on the server (which might, e.g., be generated by a web authoring tool. Or it parses the requested resource (if it is HTML) and determines the other resources to be included.

A separate proxy is provided that allows arbitrary web servers to access the DTN web server using bundles.

These were developed by Lauri Peltola in his MSc thesis.



Required Ruby gems:

First install Ruby, DTN2 and the Dtn-ruby bindings. You should also get Rubygems (a package/library manager for Ruby). After that, installing the required gems is a one-liner: gem install mongrel rmail rspec. You should get the latest versions of the gems. If you run into trouble you can revert Mongrel to version 1.1.4.

Untar the server to a desired location and edit the file bin/blunder. Input correct paths for the document root (i.e., where the files are served from), the resource dependency file and the cache root. These can be whatever you like but be sure to use absolute paths.

You will also need to configure a dtnd for the server. Use file system storage instead of Berkeley DB (storage set type filesysdb), it's a lot faster.

Running the server

Start the server with: bin/blunder local-dtn-eid [options]

For example: bin/blunder dtn://blunder.dtn -d -c -l blunder.log

local-dtn-eid is the EID of the server, i.e., the EID to which bundled HTTP requests are sent.


Note: Clearing the cache performs rm -rf on the cache directory. You might want to double check that it is set correctly.

For an example of the resource dependency file, see the included file resources.example.yml. The file is in YAML format, in which indentation is must be correct and must be done with spaces (no tabs).

Use SIGINT (ctrl-c) to stop the server.


Start the proxy with: bin/bproxy local-dtn-eid [options]

For example: bin/bproxy dtn://proxy.dtn -c

local-dtn-eid is the EID of the proxy, i.e., the EID from which bundled HTTP requests are sent.


Configure a DTN between the proxy (dtn://proxy.dtn) and the server (dtn://blunder.dtn). Configure your browser to use the proxy (localhost:8888). Now, when you type in the address http://blunder.dtn to the browser address bar, the proxy will intercept the request, bundle it and send it over the DTN to dtn://blunder.dtn. The server will process the request and send back a bundled response. The resources in the response are cached by the proxy and served to the browser.

Use SIGINT (ctrl-c) to stop the proxy.


The source code is available under GPL here. See the included LICENSE.txt for details

Master's Thesis and Related Publications

The application was developed as a part of a Master's Thesis. The thesis contains further information about the application architecture, etc.

Lauri Peltola: Enabling DTN-based Web Access: the Server Side. MSc Thesis TKK Comnet, 2008. [PDF]

Jörg Ott, Dirk Kutscher: Bundling the Web: HTTP over DTN. WNEPT Workshop 2006. [PDF]

Jörg Ott, Dirk Kutscher: Applying DTN to Mobile Internet Access: An Experiment with HTTP. Technical Report TR-TZI-050701, Technologiezentrum Informatik, Universität Bremen, July 2005. [PDF]

© 2008 Lauri Peltola, Jörg Ott - Last modified: $Id: index.html,v 1.19 2008/05/19 11:42:09 jo Exp $