Internet Engineering Task Force                        Yaron Y. Goland
INTERNET DRAFT                                   Microsoft Corporation
                                                         June 21, 1999
                                                 Expires December 1999



                Multicast and Unicast UDP HTTP Messages
                     <draft-goland-http-udp-00.txt>



Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.

   This document is an Internet-Draft. Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups.  Note that other groups may also distribute
   working documents as Internet-Drafts.

   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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

Abstract

   This document provides rules for encapsulating HTTP messages in
   Multicast and Unicast UDP packets to be sent within a single
   administrative scope. No provisions are made for associating
   requests with responses or for guaranteeing delivery beyond
   rebroadcasting.

1.   Introduction

   This document provides rules for encapsulating HTTP messages in
   Multicast and Unicast UDP packets to be sent within a single
   administrative scope. No provisions are made for associating
   requests with responses or for guaranteeing delivery beyond
   rebroadcasting.

   This technology is motivated by applications such as SSDP where it
   is expected that messages which are primarily transmitted over TCP
   HTTP need to be transmitted over Multicast or Unicast UDP in extreme
   circumstances.




Goland                                                        [Page 1]


INTERNET-DRAFT                 UDP HTTP                  June 21, 1999


2.   Terminology

   Since this document describes a set of extensions to the HTTP/1.1
   protocol, the augmented BNF used herein to describe protocol
   elements is exactly the same as described in section 2.1 of
   [RFC2616].  Since this augmented BNF uses the basic production rules
   provided in section 2.2 of [RFC2616], these rules apply to this
   document as well.

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

3.   HTTPU URL

   The HTTPU URL specifies that the HTTP request is to be sent over
   unicast UDP according to the rules laid out in this document.

   httpu_URL = "httpu:" "//" host [ ":" port ] [ abs_path ]

   The BNF productions host, port and abs_path are defined in
   [RFC2616].

   The syntax of the HTTPU URL is to be processed identically to the
   HTTP URL with the exception of the transport.

   One MUST NOT assume that if a HTTP, HTTPU or HTTPMU URL are
   identical in all ways save the protocol that they necessarily point
   to the same resource.

4.   HTTPMU URL

   The HTTPMU URL specifies that the HTTP request that HTTP request is
   to be sent over multicast UDP according to the rules laid out in
   this document.

   httpmu_URL = "httpmu:" "//" host [ ":" port ] [ abs_path ]

   The syntax of the HTTPMU URL is to be processed identically to the
   HTTP URL other than the absence of abs_path will result in the
   request-URI of the HTTPMU request being set to "*" rather than "/".

5.   Unicast UDP HTTP Messages

   HTTP messages sent over unicast UDP function identically to HTTP
   messages sent over TCP as defined in [RFC2616] except as specified
   below.

   All messages sent over unicast UDP MUST fit entirely in a single UDP
   packet. If a message can not be fit into a single UDP packet then it
   MUST NOT be sent using unicast UDP. Incomplete messages SHOULD be
   ignored.


Goland                                                        [Page 2]


INTERNET-DRAFT                 UDP HTTP                  June 21, 1999



   The request-URI of a HTTP message sent over unicast UDP MUST always
   be fully qualified.

   A single unicast UDP packet MUST only contain a single HTTP message.

   Replies to unicast UDP HTTP requests are sent to the IP address and
   port that sent the request.

6.   Multicast UDP HTTP Requests

   HTTP messages sent over multicast UDP MUST obey all the requirements
   for HTTP requests sent over unicast UDP in addition to the
   requirements provided below.

   Resources that support receiving multicast UDP HTTP requests MUST
   honor the mm and mx headers if included in the request.

   When used with a multicast UDP HTTP request the "*" request-URI
   means "to everyone who is listening to this IP address and port."

   By default httpmu requests are not responded to. This default MAY be
   overridden on a method-by-method basis.

   [Ed. Note: This one bugs me, I suspect we will end up putting in a
   flag so that any intermediaries such as proxies will know what's up
   without having to know anything about the particular method.]

7.   Retrying Requests

   UDP is an inherently unreliable transport and subject to routers
   dropping packets without notice. Applications requiring delivery
   guarantees SHOULD NOT use httpu or httpmu.

   In order to increase the probability that a httpu or httpmu message
   is delivered the message may be repeated several times.

   In order to prevent the network from being flooded a message SHOULD
   NOT be repeated more than MAX_RETRIES time. A random period of time
   between MIN_RETRY_INTERVAL and MAX_RETRY_INTERVAL SHOULD be selected
   between each retry to determine how long to wait before issuing the
   retry.

8.   Caching UDP HTTP Requests

   Caching of httpu and httpmu request/responses is certainly possible
   following the normal HTTP caching rules. However there is no
   mechanism provided in this specification to associated requests with
   responses. Therefore if a client sends multiple requests to a single
   resource there is no generic mechanism to tell the responses apart.
   This restriction has not proven to be a problem for the sorts of
   applications that intend to use httpu and httpmu. Therefore if there


Goland                                                        [Page 3]


INTERNET-DRAFT                 UDP HTTP                  June 21, 1999


   is a strong desire to provide for generic association between
   requests and replies through the use of request Ids are similar
   mechanism this feature should be added in an extension
   specification, as it is not necessary for many applications and thus
   would prove to be a needless burden.

9.   Proxying UDP HTTP Requests

   Just as it is possible to cache a httpu or httpmu request/response
   pair so it is possible to proxy such requests. The same warnings
   provided in section .8 apply.

10.  HTTP Headers

10.1.     AL Header

   AL = "AL" ":" 1*("<" AbsoluteURI ">") ; AbsoluteURI is defined in
   section 3.2.1 of [RFC2616]

   The AL header is an extension of the Location header. The contents
   of an AL header are ordered. If both a Location header and an AL
   header are included in the same request then the URI in the location
   header is to be treated as if it were the first entry in the AL
   header. The AL header MAY be used by itself but implementers should
   be aware that existing systems will ignore the header.

10.2.     mm Request Header

   mm = "mm" ":" Integer
   Integer = First_digit *More_digits
   First_digit = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
   More_digits = "0" | First_digit

   Indicates the minimum number of seconds that a multicast UDP HTTP
   resource MUST wait before it sends a response stimulated by a
   multicast request.

10.3.     mx Request Header

   mx = "mx" ":" Integer

   Indicates the maximum number of seconds that a multicast UDP HTTP
   resource MUST wait before it sends a response stimulated by a
   multicast request.

11.  Security Considerations

   [Ed. Note: Besides putting in a note that all the normal HTTP
   security considerations apply we need to put in a discussion of the
   problems associated with requests getting lost as well as over sized
   request problem. We also need to talk about the fact that requests
   can get randomly lost. We also need to discuss how one uses


Goland                                                        [Page 4]


INTERNET-DRAFT                 UDP HTTP                  June 21, 1999


   authentication over UDP. Specifically, that one needs to assume the
   challenge and send the response as part of the request.]

12.  Constants

   MAX_RETRIES - 3

   MIN_RETRY_INTERVAL - 0 second

   MAX_RETRY_INTERVAL - 10 seconds

13.  References

   [RFC2119] S. Bradner. Key words for use in RFCs to Indicate
   Requirement Levels.  RFC 2119, March 1997.

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

14.  Author's Address

      Yaron Y. Goland
      Microsoft Corporation
      One Microsoft Way
      Redmond, WA 98052

      Email: yarong@microsoft.com

      This document will expire in September 1999.
























Goland                                                        [Page 5]