Internet DRAFT - draft-perreault-dtnrg-http

draft-perreault-dtnrg-http






Network Working Group                                       S. Perreault
Internet-Draft                                               J-P. Dionne
Intended status: Experimental                                   Viagenie
Expires: February 23, 2013                               August 22, 2012


      HTTP over Bundle Protocol for Delay-Tolerant Networks (DTN)
                     draft-perreault-dtnrg-http-00

Abstract

   This document defines how HTTP is transported over DTN using the
   Bundle Protocol.

Status of this Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on February 23, 2013.

Copyright Notice

   Copyright (c) 2012 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.






Perreault & Dionne      Expires February 23, 2013               [Page 1]

Internet-Draft                HTTP over BP                   August 2012


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . . . 3
   2.  Example Use Case  . . . . . . . . . . . . . . . . . . . . . . . 3
   3.  Design Considerations . . . . . . . . . . . . . . . . . . . . . 4
     3.1.  Requirements  . . . . . . . . . . . . . . . . . . . . . . . 4
     3.2.  HTTP over TLS . . . . . . . . . . . . . . . . . . . . . . . 5
   4.  Message Format  . . . . . . . . . . . . . . . . . . . . . . . . 5
     4.1.  Piece . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
     4.2.  Close . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
     4.3.  Prefetch  . . . . . . . . . . . . . . . . . . . . . . . . . 7
     4.4.  Reliability . . . . . . . . . . . . . . . . . . . . . . . . 8
   5.  References  . . . . . . . . . . . . . . . . . . . . . . . . . . 8
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . . . 9





































Perreault & Dionne      Expires February 23, 2013               [Page 2]

Internet-Draft                HTTP over BP                   August 2012


1.  Introduction

   The Hypertext Transfer Protocol (HTTP) [RFC2616] is the most popular
   application-layer protocol on the Internet.  Porting it to DTN will
   allow a tremendous body of knowledge and running code to be reused.

   This document describes how HTTP messages are formatted and then
   inserted into the payload of the bundles (see Bundle Protocol
   [RFC5050]).

   HTTP over BP can be used directly by BP nodes as illustrated in
   Figure 1.

                   +-------+              +-------+
                   |HTTP/BP|              |HTTP/BP|
                   |client |=====<BP>=====|server |
                   +-------+              +-------+

                      Figure 1: Direct Usage Scenario

   Regular HTTP clients and servers can also be accomodated using an
   HTTP/BP proxy as illustrated in Figure 2.  In this case, the proxy
   speaks BP on one side and IP on the other (and presumably TCP,
   although HTTP can make use of other transport protocols over IP).
   From the point of view of the regular HTTP client and server, the two
   HTTP/BP proxies and the BP link are seen as one logical regular HTTP
   proxy.


                   +--------Logical HTTP proxy--------+
   +------+        | +-------+              +-------+ |        +------+
   | HTTP |        | |HTTP/BP|              |HTTP/BP| |        | HTTP |
   |client|---<IP>---| proxy |=====<BP>=====| proxy |---<IP>---|server|
   +------+        | +-------+              +-------+ |        +------+
                   +----------------------------------+

                     Figure 2: Proxied Usage Scenario


2.  Example Use Case

   DTN is often applied to space networking scenarios.  Figure 3 shows
   one such application.








Perreault & Dionne      Expires February 23, 2013               [Page 3]

Internet-Draft                HTTP over BP                   August 2012


 +--------+  +------------+                +-----------+  +------------+
 | Sensor |--| Spacecraft |------<BP>------|  Mission  |--| Monitoring |
 | (HTTP  |  +----+-------+                | operation |  |  station   |
 | server)|       |HTTP/BP|                +-------+--+   |  (HTTP     |
 +--------+       | proxy |                |HTTP/BP|      |  client)   |
                  +-------+                | proxy |      +------------+
                                           +-------+

 |-----------IP-----------|                |------------IP-------------|



 <-------------------------------------- GET /sensors/heartbeat HTTP/1.1
                                         Host: sensor.example.net

 HTTP/1.1 200 OK ------------------------------------------------------>
 Content-Length: ...
 Content-Type: text/html

 ...

               Figure 3: Use of HTTP over BP in a Space DTN

   In this example, a mission operation IP network is linked to a
   spacecraft IP network using BP.  Each BP endpoint is augmented with
   an HTTP/BP proxy allowing HTTP to operate end-to-end, across the DTN,
   from one IP network to another.  This enables, for example, a
   monitoring station on the ground to access a sensor on the spacecraft
   using regular HTTP interfaces.  BP is transparent to them and they
   can be programmed to use HTTP without having to care about the
   details of DTN.

   This is only one use case.  The logical scenarios illustrated in
   Figure 1 and Figure 3 can be applied to any DTN deployment.


3.  Design Considerations

3.1.  Requirements

   It is intended that the format described in this document have the
   following features:

   o  Support for partial HTTP messages because HTTP message length can
      be larger than bundle payload length.

   o  Support for multiple HTTP messages per bundle for efficiency
      purposes.



Perreault & Dionne      Expires February 23, 2013               [Page 4]

Internet-Draft                HTTP over BP                   August 2012


   o  Support for infinite-length HTTP messages because those HTTP
      messages are used, for example, in media streaming.

   o  Support for pre-fetching related HTTP resources so as to reduce
      round-trips, which is very important in DTN.  In a disconnected
      network, it may be very useful to pre-fetch some data during the
      windows when communications are possible.

3.2.  HTTP over TLS

   HTTP over TLS is implicitly supported with the CONNECT method
   [RFC2817].  Note that the use of encryption will defeat optimizations
   such as pre-fetching that HTTP/BP proxies can provide with non-
   encrypted HTTP.


4.  Message Format

   HTTP over BP occupies the payload block ([RFC5050] section 4.5.3).
   The whole block consists of a series of TLVs (Type-Length-Value).
   Each TLV has the following format:

                     +----------------+---------------+
                     |      Type      |    Length     |
                     +----------------+---------------+
                     :                                :
                     :             Value              :
                     :                                :

                       Figure 4: Generic TLV Format

   Type:  An SDNV identifying the TLV type.

   Length:  An SDNV containing the length of the Value field, in bytes.

   Value:  Zero or more bytes whose meaning depends on the Type SDNV.

   Multiple such TLVs MAY be included in a bundle's payload block.
   There is no limit on the number of TLVs besides pre-existing limits
   on bundle size.

   This document defines types 0, 1, and 2.  Other types MAY be defined
   in the future.  An implementation of HTTP over BP MUST completely
   ignore any TLV whose type is unknown.







Perreault & Dionne      Expires February 23, 2013               [Page 5]

Internet-Draft                HTTP over BP                   August 2012


4.1.  Piece

   The Piece TLV contains a piece of HTTP message.  Its type is 0.  It
   has the following format:

                     +----------------+---------------+
                     |     Type (0)   |    Length     |
                     +----------------+---------------+
                     |       RID      |    Offset     |
                     +----------------+---------------+
                     :                                :
                     :          Piece of HTTP         :
                     :                                :

                          Figure 5: Piece Format

   Note that the Length field includes the RID and Offset fields.

   RID (Request ID):  An SDNV uniquely identifying the request/response
      exchange.

   Offset:  An SDNV indicating, in the full HTTP message, the number of
      bytes coming before the first byte in this piece.

   Following this is the piece of HTTP message itself.  The HTTP message
   includes the headers and the body, and there is no limitation on
   where a piece begins or ends.  Therefore, the HTTP headers MAY be
   split among multiple pieces, likewise for the body, and a piece MAY
   contain part of the headers and body simultaneously.  A receiver MUST
   be prepared to handle all possible cases.

   HTTP relies on the transport-layer protocol to associate responses
   with requests.  Since BP is inherently connectionless, a new
   mechanism is necessary for this purpose: the Request ID.  The client
   sending a request MUST generate an ID such that the 3-tuple
   comprising the source EID, the destination EID, and the RID is unique
   across time.  The server will respond with the same RID.

   An HTTP message MAY be split into as many pieces as the sender
   desires.  Note that some HTTP messages are effectively infinite in
   length (e.g., a response containing live streaming video).

   Pieces MAY not be all the same size and MAY be sent out of order.
   Note also that bundles may be reordered during transport.  In
   consequence, the receiver MUST reassemble the pieces using the offset
   and length values.

   The sender MUST NOT send overlapping pieces.  If any overlap is



Perreault & Dionne      Expires February 23, 2013               [Page 6]

Internet-Draft                HTTP over BP                   August 2012


   detected by the receiver, the message SHOULD be dropped.

   The total length of the HTTP message is not available at the bundling
   layer.  The receiver will determine the total length of the HTTP
   message in an HTTP-specific manner (e.g., for HTTP 1.1 see [RFC2616]
   section 4.4).

4.2.  Close

   The Close TLV is used to indicate the termination of an HTTP
   exchange.  It plays a role analogous to the RST flag in TCP.  Its
   type is 1.  Its format is as follows:

                     +----------------+---------------+
                     |     Type (1)   |    Length     |
                     +----------------+---------------+
                     |       RID      |    Offset     |
                     +----------------+---------------+

                          Figure 6: Close Format

   The RID SDNV indicates the request/response exhange that is being
   terminated.

   The Offset SDNV indicates the number of bytes that are to be received
   before the HTTP exchange is closed.  An Offset of zero means that the
   Close takes effect immediately, no matter how many bytes have been
   received.

   An HTTP/BP proxy SHOULD send a Close TLV when the corresponding
   connection on the IP side (TCP, SCTP, or other) is terminated before
   the HTTP request/response exchange has completed, unless it has
   already sent or received a Close TLV for this RID.

4.3.  Prefetch

   It is often important on the DTN to eliminate as many round-trips as
   possible.  With HTTP, many heuristics can be used to this end.  For
   example, one technique consists in transferring multiple related HTTP
   resources across the DTN in anticipation of future requests for them.
   For a local cache to be able to correctly compute the cacheability
   properties of a resource, it must have access to the request and
   response headers.

   The Prefetch TLV contains an HTTP request concatenated with the
   corresponding HTTP response.  Its format is as follows:





Perreault & Dionne      Expires February 23, 2013               [Page 7]

Internet-Draft                HTTP over BP                   August 2012


                     +----------------+---------------+
                     |     Type (2)   |    Length     |
                     +----------------+---------------+
                     |                                |
                     /           HTTP request         /
                     /                                /
                     |                                |
                     +--------------------------------+
                     |                                |
                     /           HTTP response        /
                     /                                /
                     |                                |
                     +--------------------------------+

                         Figure 7: Prefetch Format

   The Type SDNV has value 2.

   The request and response contained in the Prefetch TLV MUST NOT be
   infinite in length.

   The mechanisms that trigger Prefetch TLVs on the sender side, as well
   as the way they are interpreted on the receiver side are out of scope
   for this document.

4.4.  Reliability

   HTTP depends on the transport protocol (traditionally TCP) to provide
   reliability.  Over BP, custody transfer SHOULD be used.

   Implementations of HTTP over BP SHOULD provide user-configurable
   timeouts for each HTTP transaction state item that is created.  An
   HTTP transaction SHOULD be aborted after a user-specified period of
   inactivity.  The timeouts MAY be much longer than what is commonly
   used with TCP.

   Implementations MAY set bundle lifetimes based on the value of the
   Expires HTTP header and/or the Cache-Control "max-age" parameter,
   when they are present.


5.  References

   [RFC2616]  Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
              Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
              Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.

   [RFC2817]  Khare, R. and S. Lawrence, "Upgrading to TLS Within



Perreault & Dionne      Expires February 23, 2013               [Page 8]

Internet-Draft                HTTP over BP                   August 2012


              HTTP/1.1", RFC 2817, May 2000.

   [RFC5050]  Scott, K. and S. Burleigh, "Bundle Protocol
              Specification", RFC 5050, November 2007.


Authors' Addresses

   Simon Perreault
   Viagenie
   246 Aberdeen
   Quebec, QC  G1R 2E1
   Canada

   Phone: +1 418 656 9254
   Email: simon.perreault@viagenie.ca
   URI:   http://viagenie.ca


   Jean-Philippe Dionne
   Viagenie
   246 Aberdeen
   Quebec, QC  G1R 2E1
   Canada

   Phone: +1 418 656 9254
   Email: simon.perreault@viagenie.ca
   URI:   http://viagenie.ca























Perreault & Dionne      Expires February 23, 2013               [Page 9]