NASA Astronaut Email - Proxy DTN Integration Assembly

Key Information

Register
Submit
The challenge is finished.

Challenge Overview

NASA needs to integrate the ION Disruption Tolerant Networking (DTN) implementation of Bundle Protocol (BP) with Microsoft Outlook and Microsoft Exchange Server to support the transfer of astronaut email to/from the International Space Station (ISS).

Microsoft Exchange Server currently supports RPC over HTTP(s) protocol (a.k.a. Outlook Anywhere -  http://msdn.microsoft.com/en-us/library/cc243950.aspx). TopCoder will assemble an HTTP(s) proxy that will use DTN to transport the data to earth.

This objective will be divided in 3 parts. This is the third part of the competition which is to divide the working HTTP(s) proxy and Notification Manager Layer into two applications (space_ssl_proxy and ground_dtn_proxy). This competition will introduce DTN. The space and ground proxy will use Delay  Tolerant  Payload  Conditioning  (DTPC)  Protocol over Bundle Protocol to exchange information.

The picture bellow illustrates the delivered SSL proxy from the second assembly. This assembly introduced some actions (C functions) named:

  • int action_request_data(int, enum peer, struct chunk *);
  • void action_request_close_conn(int, enum peer);
  • void action_request_release_ctx(int);

These functions were created to start the proxy decoupling so DTN could be integrated more smoothly.

You can read about the second assembly in its contest detail page.

The image bellow shows the division of the current SSL Proxy into two applications.


 

We tried this approach using an existing HTTP proxy (lighttpd). The source code is available and the DTN part of the code may be used with a few adjustments.

The basic design is having the Space and Ground communicate with each other using DTN. A simple C struct can be used to hold the exchanged message:

struct { int connection_id, int action_type, char data[DATA_SIZE] };

There might be several action_types, it is up to the assembler to defined the actions needed, but there are three that we can foresee:

  • OPEN_CONN: the space gateway indicates the ground gateway should establish a communication with the exchange server
  • CLOSE_CONN: any party requests the peer to close its connection
  • SEND_DATA: send the data read from the socket to the other side. Whenever a peer receives this message it will write it to the open socket.

Since DTN is not real time and the information may be store to be send later, the peer that sends the message should not wait for a confirmation message. It can assume the delivery was successful.

 

The assembly is complete if one is able to send and receive emails through the proxy and the email is sent to ground using DTPC.

 



Final Submission Guidelines

A complete list of deliverables can be found in the TopCoder Assembly competition Tutorial at:

http://apps.topcoder.com/wiki/display/tc/Assembly+Competition+Tutorials
 
Deliverables

    Source code and configuration files.
    Deployment guide to configure and verify the application.

 
Technology overview

  •     Linux (Redhat or Ubuntu)
  •     C
  •     ION-DTN 3.2.0: http://sourceforge.net/projects/ion-dtn/
  •     HTTP 1.0/1.1
  •     Microsoft Outlook 2010
  •     Exchange Server 2010
  •     Outlook Anywhere (aka RPC over HTTP)

 
Development Environment

  • We can provide Amazon VMs with ION-DTN installed. Send request a VM by email to romanoTC: romanotc@copilots.topcoder.com. We recommend using VM since deploying ION locally may take some time.
  • Attached to this contest is the previous assembly code with deployment guide and instructions on how to setup your Outlook client.
  • Also attached is a previous assembly attempt to use DTN/DTPC with Lighttpd proxy. There is useful DTN code as well as configuration files.

REVIEW STYLE:

Final Review:

Community Review Board

Approval:

User Sign-Off

SHARE:

ID: 30045797