    Network Working Group                                         H. Kennedy
    Request for Comments: 3252                                      Mimezine
    Category: Informational                                     1 April 2002

                     Binary Lexical Octet Ad-hoc Transport

    Status of this Memo

       This memo provides information for the Internet community.  It does
       not specify an Internet standard of any kind.  Distribution of this
       memo is unlimited.

    Copyright Notice

       Copyright (C) The Internet Society (2002).  All Rights Reserved.

    Abstract

       This document defines a reformulation of IP and two transport layer
       protocols (TCP and UDP) as XML applications.

    1.   Introduction

    1.1. Overview

       This document describes the Binary Lexical Octet Ad-hoc Transport
       (BLOAT): a reformulation of a widely-deployed network-layer protocol
       (IP [RFC791]), and two associated transport layer protocols (TCP
       [RFC793] and UDP [RFC768]) as XML [XML] applications.  It also
       describes methods for transporting BLOAT over Ethernet and IEEE 802
       networks as well as encapsulating BLOAT in IP for gatewaying BLOAT
       across the public Internet.

    1.2. Motivation

       The wild popularity of XML as a basis for application-level protocols
       such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple
       Object Access Protocol [SOAP], and Jabber [JABBER] prompted
       investigation into the possibility of extending the use of XML in the
       protocol stack.  Using XML at both the transport and network layer in
       addition to the application layer would provide for an amazing amount
       of power and flexibility while removing dependencies on proprietary
       and hard-to-understand binary protocols.  This protocol unification
       would also allow applications to use a single XML parser for all
       aspects of their operation, eliminating developer time spent figuring
       out the intricacies of each new protocol, and moving the hard work of

    Kennedy                      Informational                      [Page 1]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       parsing to the XML toolset.  The use of XML also mitigates concerns
       over "network vs. host" byte ordering which is at the root of many
       network application bugs.

    1.3. Relation to Existing Protocols

       The reformulations specified in this RFC follow as closely as
       possible the spirit of the RFCs on which they are based, and so MAY
       contain elements or attributes that would not be needed in a pure
       reworking (e.g. length attributes, which are implicit in XML.)

       The layering of network and transport protocols are maintained in
       this RFC despite the optimizations that could be made if the line
       were somewhat blurred (i.e. merging TCP and IP into a single, larger
       element in the DTD) in order to foster future use of this protocol as
       a basis for reformulating other protocols (such as ICMP.)

       Other than the encoding, the behavioral aspects of each of the
       existing protocols remain unchanged.  Routing, address spaces, TCP
       congestion control, etc. behave as specified in the extant standards.
       Adapting to new standards and experimental algorithm heuristics for
       improving performance will become much easier once the move to BLOAT
       has been completed.

    1.4. Requirement Levels

       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 BCP 14, RFC 2119
       [RFC2119].

    2.   IPoXML

       This protocol MUST be implemented to be compliant with this RFC.
       IPoXML is the root protocol REQUIRED for effective use of TCPoXML
       (section 3.) and higher-level application protocols.

       The DTD for this document type can be found in section 7.1.

       The routing of IPoXML can be easily implemented on hosts with an XML
       parser, as the regular structure lends itself handily to parsing and
       validation of the document/datagram and then processing the
       destination address, TTL, and checksum before sending it on to its
       next-hop.

       The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the
       wider deployment of IPv4 and the fact that implementing IPv6 as XML
       would have exceeded the 1500 byte Ethernet MTU.

    Kennedy                      Informational                      [Page 2]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       All BLOAT implementations MUST use - and specify - the UTF-8 encoding
       of RFC 2279 [RFC2279].  All BLOAT document/datagrams MUST be well-
       formed and include the XMLDecl.

    2.1. IP Description

       A number of items have changed (for the better) from the original IP
       specification.  Bit-masks, where present have been converted into
       human-readable values.  IP addresses are listed in their dotted-
       decimal notation [RFC1123].  Length and checksum values are present
       as decimal integers.

       To calculate the length and checksum fields of the IP element, a
       canonicalized form of the element MUST be used.  The canonical form
       SHALL have no whitespace (including newline characters) between
       elements and only one space character between attributes.  There
       SHALL NOT be a space following the last attribute in an element.

       An iterative method SHOULD be used to calculate checksums, as the
       length field will vary based on the size of the checksum.

       The payload element bears special attention.  Due to the character
       set restrictions of XML, the payload of IP datagrams (which MAY
       contain arbitrary data) MUST be encoded for transport. This RFC
       REQUIRES the contents of the payload to be encoded in the base-64
       encoding of RFC 2045 [RFC2045], but removes the requirement that the
       encoded output MUST be wrapped on 76-character lines.

    Kennedy                      Informational                      [Page 3]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

    2.2. Example Datagram

       The following is an example IPoXML datagram with an empty payload:

       <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
       <ip>
       <header length="474">
       <version value="4"/>
       <tos precedence="Routine" delay="Normal" throughput="Normal"
            relibility="Normal" reserved="0"/>
       <total.length value="461"/>
       <id value="1"/>
       <flags reserved="0" df="dont" mf="last"/>
       <offset value="0"/>
       <ttl value="255"/>
       <protocol value="6"/>
       <checksum value="8707"/>
       <source address="10.0.0.22"/>
       <destination address="10.0.0.1"/>
       <options>
       <end copied="0" class="0" number="0"/>
       </options>
       <padding pad="0"/>
       </header>
       <payload>
       </payload>
       </ip>

    3.   TCPoXML

       This protocol MUST be implemented to be compliant with this RFC.  The
       DTD for this document type can be found in section 7.2.

    3.1. TCP Description

       A number of items have changed from the original TCP specification.
       Bit-masks, where present have been converted into human-readable
       values.  Length and checksum and port values are present as decimal
       integers.

       To calculate the length and checksum fields of the TCP element, a
       canonicalized form of the element MUST be used as in section 2.1.

       An iterative method SHOULD be used to calculate checksums as in
       section 2.1.

       The payload element MUST be encoded as in section 2.1.

    Kennedy                      Informational                      [Page 4]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       The TCP offset element was expanded to a maximum of 255 from 16 to
       allow for the increased size of the header in XML.

       TCPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header
       as well as the <!DOCTYPE> declaration.

    3.2. Example Datagram

       The following is an example TCPoXML datagram with an empty payload:

       <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
       <tcp>
       <tcp.header>
       <src port="31415"/>
       <dest port="42424"/>
       <sequence number="322622954"/>
       <acknowledgement number="689715995"/>
       <offset number=""/>
       <reserved value="0"/>
       <control syn="1" ack="1"/>
       <window size="1"/>
       <urgent pointer="0"/>
       <checksum value="2988"/>
       <tcp.options>
       <tcp.end kind="0"/>
       </tcp.options>
       <padding pad="0"/>
       </tcp.header>
       <payload>
       </payload>
       </tcp>

    4.   UDPoXML

       This protocol MUST be implemented to be compliant with this RFC.  The
       DTD for this document type can be found in section 7.3.

    4.1. UDP Description

       A number of items have changed from the original UDP specification.
       Bit-masks, where present have been converted into human-readable
       values.  Length and checksum and port values are present as decimal
       integers.

    Kennedy                      Informational                      [Page 5]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       To calculate the length and checksum fields of the UDP element, a
       canonicalized form of the element MUST be used as in section 2.1.  An
       iterative method SHOULD be used to calculate checksums as in section
       2.1.

       The payload element MUST be encoded as in section 2.1.

       UDPoXML datagrams encapsulated by IPoXML MAY omit the <?xml?> header
       as well as the <!DOCTYPE> declaration.

    4.2. Example Datagram

       The following is an example UDPoXML datagram with an empty payload:

       <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
       <udp>
       <udp.header>
       <src port="31415"/>
       <dest port="42424"/>
       <udp.length value="143"/>
       <checksum value="2988"/>
       </udp.header>
       <payload>
       </payload>
       </udp>

    5.   Network Transport

       This document provides for the transmission of BLOAT datagrams over
       two common families of physical layer transport.  Future RFCs will
       address additional transports as routing vendors catch up to the
       specification, and we begin to see BLOAT routed across the Internet
       backbone.

    5.1. Ethernet

       BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the
       exception that the type field of the Ethernet frame MUST contain the
       value 0xBEEF.  The first 5 octets of the Ethernet frame payload will
       be 0x3c 3f 78 6d 6c ("<?xml".)

    5.2. IEEE 802

       BLOAT is encapsulated in IEEE 802 Networks as in [RFC1042] except
       that the protocol type code for IPoXML is 0xBEEF.

    Kennedy                      Informational                      [Page 6]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

    6. Gatewaying over IP

       In order to facilitate the gradual introduction of BLOAT into the
       public Internet, BLOAT MAY be encapsulated in IP as in [RFC2003] to
       gateway between networks that run BLOAT natively on their LANs.

    7. DTDs

       The Transport DTDs (7.2. and 7.3.) build on the definitions in the
       Network DTD (7.1.)

       The DTDs are referenced by their PubidLiteral and SystemLiteral (from
       [XML]) although it is understood that most IPoXML implementations
       will not need to pull down the DTD, as it will normally be embedded
       in the implementation, and presents something of a catch-22 if you
       need to load part of your network protocol over the network.

    7.1.  IPoXML DTD

       <!--
        DTD for IP over XML.
        Refer to this DTD as:

        <!DOCTYPE ip PUBLIC "-//IETF//DTD BLOAT 1.0 IP//EN" "bloat.dtd">
       -->
       <!--
        DTD data types:

          Digits      [0..9]+

          Precedence  "NetworkControl | InternetworkControl |
                       CRITIC | FlashOverride | Flash | Immediate |
                       Priority | Routine"

          IP4Addr     "dotted-decimal" notation of [RFC1123]

          Class       [0..3]

          Sec          "Unclassified | Confidential | EFTO | MMMM | PROG |
                        Restricted | Secret | Top Secret | Reserved"

          Compartments [0..65535]

          Handling     [0..65535]

          TCC          [0..16777216]

       -->

    Kennedy                      Informational                      [Page 7]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       <!ENTITY % Digits "CDATA">
       <!ENTITY % Precedence "CDATA">
       <!ENTITY % IP4Addr "CDATA">
       <!ENTITY % Class "CDATA">
       <!ENTITY % Sec "CDATA">
       <!ENTITY % Compartments "CDATA">
       <!ENTITY % Handling "CDATA">
       <!ENTITY % TCC "CDATA">

       <!ELEMENT ip (header, payload)>

       <!ELEMENT header (version, tos, total.length, id, flags, offset, ttl,
                        protocol, checksum, source, destination, options,
                        padding)>
       <!-- length of header in 32-bit words -->
       <!ATTLIST header
                 length %Digits; #REQUIRED>

       <!ELEMENT version EMPTY>
       <!-- ip version. SHOULD be "4" -->
       <!ATTLIST version
                 value   %Digits;  #REQUIRED>

       <!ELEMENT tos EMPTY>
       <!ATTLIST tos
                 precedence   %Precedence;    #REQUIRED
                 delay    (normal | low)  #REQUIRED
                 throughput   (normal | high) #REQUIRED
                 relibility   (normal | high) #REQUIRED
                 reserved     CDATA #FIXED "0">

       <!ELEMENT total.length EMPTY>
       <!--
        total length of datagram (header and payload) in octets, MUST be
        less than 65,535 (and SHOULD be less than 1024 for IPoXML on local
        ethernets).
       -->
       <!ATTLIST total.length
                 value %Digits; #REQUIRED>

       <!ELEMENT id EMPTY>
       <!-- 0 <= id <= 65,535  -->
       <!ATTLIST id
                 value %Digits; #REQUIRED>

       <!ELEMENT flags EMPTY>
       <!-- df = don't fragment, mf = more fragments  -->
       <!ATTLIST flags

    Kennedy                      Informational                      [Page 8]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

              reserved CDATA  #FIXED "0"
              df (may|dont)   #REQUIRED
              mf (last|more)  #REQUIRED>

       <!ELEMENT offset EMPTY>
       <!-- 0 <= offset <= 8192 measured in 8 octet (64-bit) chunks -->
       <!ATTLIST offset
                 value %Digits; #REQUIRED>

       <!ELEMENT ttl EMPTY>
       <!-- 0 <= ttl <= 255 -->
       <!ATTLIST ttl
                 value %Digits; #REQUIRED>

       <!ELEMENT protocol EMPTY>
       <!-- 0 <= protocol <= 255 (per IANA) -->
       <!ATTLIST protocol
                 value %Digits; #REQUIRED>

       <!ELEMENT checksum EMPTY>
       <!-- 0 <= checksum <= 65535 (over header only) -->
       <!ATTLIST checksum
                 value %Digits; #REQUIRED>

       <!ELEMENT source EMPTY>
       <!ATTLIST source
                 address %IP4Addr; #REQUIRED>

       <!ELEMENT destination EMPTY>
       <!ATTLIST destination
                 address %IP4Addr; #REQUIRED>

       <!ELEMENT options ( end | noop | security | loose | strict | record
                         | stream | timestamp )*>

       <!ELEMENT end EMPTY>
       <!ATTLIST end
                 copied (0|1) #REQUIRED
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "0">

       <!ELEMENT noop EMPTY>
       <!ATTLIST noop
                 copied (0|1) #REQUIRED
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "1">

       <!ELEMENT security EMPTY>

    Kennedy                      Informational                      [Page 9]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       <!ATTLIST security
                 copied CDATA #FIXED "1"
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "2"
                 length CDATA #FIXED "11"
                 security %Sec; #REQUIRED
                 compartments %Compartments; #REQUIRED
                 handling %Handling; #REQUIRED
                 tcc %TCC; #REQUIRED>
       <!ELEMENT loose (hop)+>
       <!ATTLIST loose
                 copied CDATA #FIXED "1"
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "3"
                 length %Digits; #REQUIRED
                 pointer %Digits; #REQUIRED>

       <!ELEMENT hop EMPTY>
       <!ATTLIST hop
                 address %IP4Addr; #REQUIRED>

       <!ELEMENT strict (hop)+>
       <!ATTLIST strict
                 copied CDATA #FIXED "1"
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "9"
                 length %Digits; #REQUIRED
                 pointer %Digits; #REQUIRED>

       <!ELEMENT record (hop)+>
       <!ATTLIST record
                 copied CDATA #FIXED "0"
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "7"
                 length %Digits; #REQUIRED
                 pointer %Digits; #REQUIRED>

       <!ELEMENT stream EMPTY>
       <!-- 0 <= id <= 65,535 -->
       <!ATTLIST stream
                 copied CDATA #FIXED "1"
                 class  CDATA #FIXED "0"
                 number CDATA #FIXED "8"
                 length CDATA #FIXED "4"
                 id %Digits; #REQUIRED>

       <!ELEMENT timestamp (tstamp)+>
       <!-- 0 <= oflw <=15 -->

    Kennedy                      Informational                     [Page 10]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       <!ATTLIST timestamp
                 copied CDATA #FIXED "0"
                 class  CDATA #FIXED "2"
                 number CDATA #FIXED "4"
                 length %Digits;  #REQUIRED
                 pointer %Digits; #REQUIRED
                 oflw %Digits;    #REQUIRED
                 flag (0 | 1 | 3)  #REQUIRED>

       <!ELEMENT tstamp EMPTY>
       <!ATTLIST tstamp
                 time %Digits;   #REQUIRED
                 address %IP4Addr; #IMPLIED>
       <!--
           padding to bring header to 32-bit boundary.
           pad MUST be "0"*
        -->
       <!ELEMENT padding EMPTY>
       <!ATTLIST padding
                 pad CDATA #REQUIRED>

       <!-- payload MUST be encoded as base-64 [RFC2045], as modified
            by section 2.1 of this RFC -->
       <!ELEMENT payload (CDATA)>

    7.2.  TCPoXML DTD

       <!--
          DTD for TCP over XML.
          Refer to this DTD as:

          <!DOCTYPE tcp PUBLIC "-//IETF//DTD BLOAT 1.0 TCP//EN" "bloat.dtd">
       -->

       <!-- the pseudoheader is only included for checksum calculations -->
       <!ELEMENT tcp (tcp.pseudoheader?, tcp.header, payload)>

       <!ELEMENT tcp.header (src, dest, sequence, acknowledgement, offset,
                             reserved, control, window, checksum, urgent,
                             tcp.options, padding)>

       <!ELEMENT src EMPTY>
       <!-- 0 <= port <= 65,535 -->
       <!ATTLIST src
                 port %Digits; #REQUIRED>

       <!ELEMENT dest EMPTY>
       <!-- 0 <= port <= 65,535 -->

    Kennedy                      Informational                     [Page 11]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       <!ATTLIST dest
                 port %Digits; #REQUIRED>

       <!ELEMENT sequence EMPTY>
       <!-- 0 <= number <= 4294967295 -->
       <!ATTLIST sequence
                 number %Digits; #REQUIRED>

       <!ELEMENT acknowledgement EMPTY>
       <!-- 0 <= number <= 4294967295 -->
       <!ATTLIST acknowledgement
                 number %Digits; #REQUIRED>

       <!ELEMENT offset EMPTY>
       <!-- 0 <= number <= 255 -->
       <!ATTLIST offset
                 number %Digits; #REQUIRED>

       <!ELEMENT reserved EMPTY>
       <!ATTLIST reserved
                 value CDATA #FIXED "0">

       <!ELEMENT control EMPTY>
       <!ATTLIST control
                 urg (0|1) #IMPLIED
                 ack (0|1) #IMPLIED
                 psh (0|1) #IMPLIED
                 rst (0|1) #IMPLIED
                 syn (0|1) #IMPLIED
                 fin (0|1) #IMPLIED>

       <!ELEMENT window EMPTY>
       <!-- 0 <= size <= 65,535 -->
       <!ATTLIST window
                 size %Digits; #REQUIRED>

       <!--
          checksum as in ip, but with
          the following pseudo-header added into the tcp element:
         -->
       <!ELEMENT tcp.pseudoheader (source, destination, protocol,
                                   tcp.length)>

       <!--
          tcp header + data length in octets. does not include the size of

          the pseudoheader.
        -->

    Kennedy                      Informational                     [Page 12]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       <!ELEMENT tcp.length EMPTY>
       <!ATTLIST tcp.length
                 value %Digits; #REQUIRED>

       <!ELEMENT urgent EMPTY>
       <!-- 0 <= pointer <= 65,535 -->
       <!ATTLIST urgent
                 pointer %Digits; #REQUIRED>

       <!ELEMENT tcp.options (tcp.end | tcp.noop | tcp.mss)+>

       <!ELEMENT tcp.end EMPTY>
       <!ATTLIST tcp.end
                 kind CDATA #FIXED "0">

       <!ELEMENT tcp.noop EMPTY>
       <!ATTLIST tcp.noop
                 kind CDATA #FIXED "1">

       <!ELEMENT tcp.mss EMPTY>
       <!ATTLIST tcp.mss
                 kind CDATA #FIXED "2"
                 length CDATA #FIXED "4"
                 size %Digits; #REQUIRED>

    7.3.  UDPoXML DTD

       <!--
          DTD for UDP over XML.
          Refer to this DTD as:

          <!DOCTYPE udp PUBLIC "-//IETF//DTD BLOAT 1.0 UDP//EN" "bloat.dtd">
       -->

       <!ELEMENT udp (udp.pseudoheader?, udp.header, payload)>

       <!ELEMENT udp.header (src, dest, udp.length, checksum)>

       <!ELEMENT udp.pseudoheader (source, destination, protocol,
                                   udp.length)>

       <!--
          udp header + data length in octets. does not include the size of
          the pseudoheader.
        -->
       <!ELEMENT udp.length EMPTY>
       <!ATTLIST udp.length
                 value %Digits; #REQUIRED>

    Kennedy                      Informational                     [Page 13]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

    8. Security Considerations

       XML, as a subset of SGML, has the same security considerations as
       specified in SGML Media Types [RFC1874].  Security considerations
       that apply to IP, TCP and UDP also likely apply to BLOAT as it does
       not attempt to correct for issues not related to message format.

    9.   References

       [JABBER]    Miller, J., "Jabber", draft-miller-jabber-00.txt,
                   February 2002. (Work in Progress)

       [RFC768]    Postel, J., "User Datagram Protocol", STD 6, RFC 768,
                   August 1980.

       [RFC791]    Postel, J., "Internet Protocol", STD 5, RFC 791,
                   September 1981.

       [RFC793]    Postel, J., "Transmission Control Protocol", STD 7, RFC
                   793, September 1981.

       [RFC894]    Hornig, C., "Standard for the Transmission of IP
                   Datagrams over Ethernet Networks.", RFC 894, April 1984.

       [RFC1042]   Postel, J. and J. Reynolds, "Standard for the
                   Transmission of IP Datagrams Over IEEE 802 Networks", STD
                   43, RFC 1042, February 1988.

       [RFC1123]   Braden, R., "Requirements for Internet Hosts -
                   Application and Support", RFC 1123, October 1989.

       [RFC1874]   Levinson, E., "SGML Media Types", RFC 1874, December
                   1995.

       [RFC2003]   Perkins, C., "IP Encapsulation within IP", RFC 2003,
                   October 1996.

       [RFC2045]   Freed, N. and N. Borenstein, "Multipurpose Internet Mail
                   Extensions (MIME) Part One: Format of Internet Message
                   Bodies", RFC 2045, November 1996.

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

       [RFC2279]   Yergeau, F., "UTF-8, a transformation format of ISO
                   10646", RFC 2279, January 1998.

    Kennedy                      Informational                     [Page 14]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

       [RFC2460]   Deering, S. and R. Hinden, "Internet Protocol, Version 6
                   (IPv6) Specification", RFC 2460, December 1998.

       [RFC3080]   Rose, M., "The Blocks Extensible Exchange Protocol Core",
                   RFC 3080, March 2001.

       [SOAP]      Box, D., Ehnebuske, D., Kakivaya, G., Layman, A.,
                   Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D.,
                   "Simple Object Access Protocol (SOAP) 1.1" World Wide Web
                   Consortium Note, May 2000 http://www.w3.org/TR/SOAP/

       [XML]       Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible
                   Markup Language (XML)" World Wide Web Consortium
                   Recommendation REC- xml-19980210.
                   http://www.w3.org/TR/1998/REC-xml-19980210

    10.  Author's Address

       Hugh Kennedy
       Mimezine
       1060 West Addison
       Chicago, IL 60613
       USA

       EMail: kennedyh@engin.umich.edu

    Kennedy                      Informational                     [Page 15]

    RFC 3252         Binary Lexical Octet Ad-hoc Transport      1 April 2002

    11.  Full Copyright Statement

       Copyright (C) The Internet Society (2002).  All Rights Reserved.

       This document and translations of it may be copied and furnished to
       others, and derivative works that comment on or otherwise explain it
       or assist in its implementation may be prepared, copied, published
       and distributed, in whole or in part, without restriction of any
       kind, provided that the above copyright notice and this paragraph are
       included on all such copies and derivative works.  However, this
       document itself may not be modified in any way, such as by removing
       the copyright notice or references to the Internet Society or other
       Internet organizations, except as needed for the purpose of
       developing Internet standards in which case the procedures for
       copyrights defined in the Internet Standards process must be
       followed, or as required to translate it into languages other than
       English.

       The limited permissions granted above are perpetual and will not be
       revoked by the Internet Society or its successors or assigns.

       This document and the information contained herein is provided on an
       "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
       TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
       BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
       HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
       MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    Acknowledgement

       Funding for the RFC Editor function is currently provided by the
       Internet Society.

    Kennedy                      Informational                     [Page 16]