home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / rfc / rfc1301 < prev    next >
Text File  |  1992-02-19  |  92KB  |  2,132 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                       S. Armstrong
  8. Request for Comments: 1301                                         Xerox
  9.                                                                A. Freier
  10.                                                                    Apple
  11.                                                              K. Marzullo
  12.                                                                  Cornell
  13.                                                            February 1992
  14.  
  15.  
  16.                       Multicast Transport Protocol
  17.  
  18. Status of this Memo
  19.  
  20.    This memo provides information for the Internet community.  It does
  21.    not specify an Internet standard.  Distribution of this memo is
  22.    unlimited.
  23.  
  24. Summary
  25.  
  26.    This memo describes a protocol for reliable transport that utilizes
  27.    the multicast capability of applicable lower layer networking
  28.    architectures.  The transport definition permits an arbitrary number
  29.    of transport providers to perform realtime collaborations without
  30.    requiring networking clients (aka, applications) to possess detailed
  31.    knowledge of the population or geographical dispersion of the
  32.    participating members.  It is not network architectural specific, but
  33.    does implicitly require some form of multicasting (or broadcasting)
  34.    at the data link level, as well as some means of communicating that
  35.    capability up through the layers to the transport.
  36.  
  37.    Keywords: reliable transport, multicast, broadcast, collaboration,
  38.    networking.
  39.  
  40. Table of Contents
  41.  
  42.            1. Introduction                                     2
  43.            2. Protocol description                             3
  44.            2.1 Definition of terms                             3
  45.            2.2 Packet format                                   6
  46.            2.2.1. Protocol version                             7
  47.            2.2.2. Packet type and modifier                     7
  48.            2.2.3. Subchannel                                   9
  49.            2.2.4. Source connection identifier                 9
  50.            2.2.5. Destination connection identifier           10
  51.            2.2.6. Message acceptance                          10
  52.            2.2.7. Heartbeat                                   12
  53.            2.2.8. Window                                      12
  54.            2.2.9. Retention                                   12
  55.  
  56.  
  57.  
  58. Armstrong, Freier & Marzullo                                    [Page 1]
  59.  
  60. RFC 1301              Multicast Transport Protocol         February 1992
  61.  
  62.  
  63.            2.3 Transport addresses                            12
  64.            2.3.1. Unknown transport address                   12
  65.            2.3.2. Web's multicast address                     13
  66.            2.3.3. Member addresses                            13
  67.            3. Protocol behavior                               13
  68.            3.1. Establishing a transport                      13
  69.            3.1.1. Join request                                14
  70.            3.1.2. Join confirm/deny                           16
  71.            3.2 Maintaining data consistency                   17
  72.            3.2.1. Transmit tokens                             17
  73.            3.2.2. Data transmission                           20
  74.            3.2.3. Empty packets                               23
  75.            3.2.4. Missed data                                 26
  76.            3.2.5. Retrying operations                         26
  77.            3.2.6. Retransmission                              27
  78.            3.2.7. Duplicate suppression                       29
  79.            3.2.8. Banishment                                  29
  80.            3.3 Terminating the transport                      29
  81.            3.3.1. Voluntary quits                             30
  82.            3.3.2. Master quit                                 30
  83.            3.3.3. Banishment                                  30
  84.            3.4 Transport parameters                           30
  85.            3.4.1. Quality of service                          30
  86.            3.4.2. Selecting parameter values                  31
  87.            3.4.3. Caching member information                  33
  88.            A. Appendix: MTP as an Internet Protocol transport 34
  89.            A.1 Internet Protocol multicast addressing         34
  90.            A.2 Encapsulation                                  35
  91.            A.3 Fields of the bridge protocol                  35
  92.            A.4 Relationship to other Internet Transports      36
  93.            References                                         36
  94.            Footnotes                                          37
  95.            Security Considerations                            37
  96.            Authors' Addresses                                 38
  97.  
  98. 1.      Introduction
  99.  
  100.    This document describes a flow controlled, atomic multicasting
  101.    transport protocol (MTP).  The purpose of this document is to present
  102.    sufficient information to implement the protocol.
  103.  
  104.    The MTP design has been influenced by the large body of the
  105.    networking and distributed systems literature and technology that has
  106.    been introduced during the last decade and a half.  Representative
  107.    sources include [Xer81], [BSTM79] and [Pos81] for transport design,
  108.    and [Bog83] and [DIX82] for general concepts of broadcast and
  109.    multicast.  [CLZ87] influenced MTP's retransmission mechanisms, and
  110.    [Fre84] influenced the transport timings. MTP over IP uses mechanisms
  111.  
  112.  
  113.  
  114. Armstrong, Freier & Marzullo                                    [Page 2]
  115.  
  116. RFC 1301              Multicast Transport Protocol         February 1992
  117.  
  118.  
  119.    described in [Dee89].  MTP's ordering and agreement protocols were
  120.    influenced by work done in [CM87], [JB89] and [Cri88].  Finally, a
  121.    description of MTP's philosophy and its motivation can be found in
  122.    [AFM91].
  123.  
  124. 2.      Protocol description
  125.  
  126.    MTP is a transport in that it is a client of the network layer (as
  127.    defined by the OSI networking model) [1].  MTP provides reliable
  128.    delivery of client data between one or more communicating processes,
  129.    as well as a predefined principal process. The collection of
  130.    processes is called a web.
  131.  
  132.    In addition to transporting data reliably and efficiently, MTP
  133.    provides the synchronization necessary for web members to agree on
  134.    the order of receipt of all messages and can agree on the delivery of
  135.    the message even in the face of partitions.  This ordering and
  136.    agreement protocol uses serialized tokens granted by the master to
  137.    producers.
  138.  
  139.    The processes may have any one of three levels of capability. One
  140.    member must be the master. The master instantiates and controls the
  141.    behavior of the web, including its membership and performance. Non
  142.    master members may be either producer/consumers or pure consumers.
  143.    The former class of member is permitted to transmit user data to the
  144.    entire membership (and expected to logically hear itself), while the
  145.    latter is prohibited from transmitting user data.
  146.  
  147.    MTP is a negative acknowledgement protocol, exploiting the highly
  148.    reliable delivery of the local area and wide area network
  149.    technologies of today. Successful delivery of data is accepted by
  150.    consuming stations silently rather than having the successful
  151.    delivery noted to the producing process, thus reducing the amount of
  152.    reverse traffic required to maintain synchronization.
  153.  
  154. 2.1     Definition of terms
  155.  
  156.    The following terms are used throughout this document. They are
  157.    defined here to eliminate ambiguity.
  158.  
  159.    consumer    A consumer is a transport that is capable only of
  160.                receiving user data. It may transmit control packets,
  161.                such as negative acknowledgements, but may never transmit
  162.                any requests for the transmit token or any form of data
  163.                or empty messages.
  164.  
  165.    heartbeat   A heartbeat is an interval of time, nominally measured in
  166.                milliseconds. It is a key parameter in the transport's
  167.  
  168.  
  169.  
  170. Armstrong, Freier & Marzullo                                    [Page 3]
  171.  
  172. RFC 1301              Multicast Transport Protocol         February 1992
  173.  
  174.  
  175.                state and can be adapted to the requirements of the
  176.                transport's client to provide the desired quality of
  177.                service.
  178.  
  179.    master      The master is the principal member of the web. The master
  180.                capability is a superset of a producer member.  The
  181.                master is mainly responsible for giving out transmit
  182.                tokens to members who wish to send data, and overseeing
  183.                the web's membership and operational parameters.
  184.  
  185.    member      A web member is any process that has been permitted to
  186.                join the web (by the master) as well as the master
  187.                itself.
  188.  
  189.    membership  Every member is classified as to its intentions for
  190.    class       joining the web. Membership classes are defined to be
  191.                consumer, producer and master. Each successive class is a
  192.                formal superset of the previous.
  193.  
  194.    message     An MTP message is a concatenation of the user data
  195.                portions of a series of data packets with the last packet
  196.                in the series carrying an end of message indication. A
  197.                message may contain any number of bytes of user data,
  198.                including zero.
  199.  
  200.    NSAP        The network service access point. This is the network
  201.                address, or the node address of the machine, where a
  202.                service is available.
  203.  
  204.    producer    Producer is a class of membership that is a formal
  205.                superset of a consumer. A producer is permitted (and
  206.                expected) to transmit client data as well as consume data
  207.                transmitted by other producers.
  208.  
  209.    retention   Retention is one of the three fundamental parameters that
  210.                make up the transport's state (along with heartbeat and
  211.                window). Retention is a number of heartbeats, and though
  212.                applied in several different circumstances, is primarily
  213.                used as the number of heartbeats a producing client must
  214.                maintain buffered data should it need to be
  215.                retransmitted.
  216.  
  217.    token       In order to transmit, a producer must first be in
  218.                possesion of a token. Tokens are granted only by the
  219.                master and include the message sequence number.
  220.                Consequently, they are fundamental in the operation of
  221.                the ordering and agreement protocol used by MTP.
  222.  
  223.  
  224.  
  225.  
  226. Armstrong, Freier & Marzullo                                    [Page 4]
  227.  
  228. RFC 1301              Multicast Transport Protocol         February 1992
  229.  
  230.  
  231.    TSAP        The transport service access point. This is the address
  232.                that uniquely defines particular instantiation of a
  233.                service. TSAPs are formed by logically concatenating the
  234.                node's NSAP with a transport identifier (and perhaps a
  235.                packet/protocol type).
  236.  
  237.    user data   User data is the client information carried in MTP data
  238.                packets and treated as uninterpreted octets by the
  239.                transport. The end of message and subchannel indicators
  240.                are also be treated as user data.
  241.  
  242.    web         A collection of processes collaborating on the solution
  243.                of a single problem.
  244.  
  245.    window      The window is one of the fundamental elements of the
  246.                transport's state that can be controlled to affect the
  247.                quality of service being provided to the client. It
  248.                represents the number of user data carrying packets that
  249.                may be multicast into the web during a heartbeat by a
  250.                single member.
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Armstrong, Freier & Marzullo                                    [Page 5]
  283.  
  284. RFC 1301              Multicast Transport Protocol         February 1992
  285.  
  286.  
  287. 2.2     Packet format
  288.  
  289.    An MTP packet consists of a transport protocol header followed by a
  290.    variable amount of data. The protocol header, shown in Figure 1, is
  291.    part of every packet. The remainder of the packet is either user data
  292.    (packet type = data) or additional transport specific information.
  293.    The fields in the header are statically defined as n-bit wide
  294.    quantities. There are no undefined fields or fields that may at any
  295.    time have undefined values.  Reserved fields, if they exist, must
  296.    always have a value of zero.
  297.  
  298.     0           7 8           15 16         23 24         31
  299.    ----------------------------------------------------------    -----
  300.    |  protocol    |    packet   |    type     |    client   |      |
  301.    |  version     |    type     |    modifier |    channel  |      |
  302.    ----------------------------------------------------------      |
  303.    |                                                        |      |
  304.    |              source connection identifier              |      |
  305.    ----------------------------------------------------------      |
  306.    |                                                        |      |
  307.    |              destination connection identifier         |
  308.    ---------------------------------------------------------- transport
  309.    |                                                        |    header
  310.    |              message acceptance criteria               |
  311.    ----------------------------------------------------------      |
  312.    |                                                        |      |
  313.    |              heartbeat                                 |      |
  314.    ----------------------------------------------------------      |
  315.    |                            |                           |      |
  316.    |        window              |        retention          |      |
  317.    ----------------------------------------------------------    -----
  318.    |                                                        |      |
  319.    |                                                        |      |
  320.    |                                                        |      |
  321.    |                   (data content and format             |
  322.    |                   dependent on packet type             |    data
  323.    |                   and modifier)                        |    fields
  324.    |                                                        |
  325.    |                                                        |      |
  326.    |                                                        |      |
  327.    |                                                        |      |
  328.    ----------------------------------------------------------    -----
  329.  
  330.                         Figure 1. MTP packet format
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Armstrong, Freier & Marzullo                                    [Page 6]
  339.  
  340. RFC 1301              Multicast Transport Protocol         February 1992
  341.  
  342.  
  343. 2.2.1.  Protocol version
  344.  
  345.    The first 8 bits of the packet are the protocol version number. This
  346.    document describes version 1 of the Multicast Transport Protocol and
  347.    thus the version field has a value of 0x01.
  348.  
  349. 2.2.2.  Packet type and modifier
  350.  
  351.    The second byte of the header is the packet type and the following
  352.    byte contains the packet type modifier. Typical control message
  353.    exchanges are in a request/response pair. The modifier field
  354.    simplifies the construction of responses by permitting reuse of the
  355.    incoming message with minimal modification. The following table gives
  356.    the packet type field values along with their modifiers. The
  357.    modifiers are valid only in the context of the type. In the prose of
  358.    the definitions and later in the document, the syntax for referring
  359.    to one of the entries described in the following table will be
  360.    type[modifier]. For example, a reference to data[eow] would be a
  361.    packet of type data with an end of window modifier.
  362.  
  363.    type       modifier     description
  364.  
  365.    data(0)    data(0)      The packet is one that contains user
  366.                            information. Only the process possessing a
  367.                            transmit token is permitted to send data
  368.                            unless specifically requested to retransmit
  369.                            previously transmitted data. All packets of
  370.                            type data are multicast to the entire web.
  371.  
  372.               eow(1)       A data packet with the eow (end of window)
  373.                            modifier set indicates that the transmitter
  374.                            intends to send no more packets in this
  375.                            heartbeat either because it has sent as many
  376.                            as permitted given the window parameter or
  377.                            simply has no more data to send during the
  378.                            current heartbeat. This is not client
  379.                            information but rather a hint to be used by
  380.                            transport providers to synchronize the
  381.                            computation and transmission of naks.
  382.  
  383.               eom(2)       Data[eom] marks the end of the message to the
  384.                            consumers, and the surrendering of the
  385.                            transmit token to the master. And like a
  386.                            data[eow] a data[eom] packet implies the end
  387.                            of window.
  388.  
  389.    nak(1)     request(0)   A nak[request] packet is a consumer
  390.                            requesting a retransmission of one or more
  391.  
  392.  
  393.  
  394. Armstrong, Freier & Marzullo                                    [Page 7]
  395.  
  396. RFC 1301              Multicast Transport Protocol         February 1992
  397.  
  398.  
  399.                            data packets. The data field contains an
  400.                            ordered list of packet sequence numbers that
  401.                            are being requested. Naks of any form are
  402.                            always unicast.
  403.  
  404.               deny(1)      A nak[deny] message indicates that the
  405.                            producer source of the nak[deny]) cannot
  406.                            retransmit one or more of the packets
  407.                            requested. The process receiving the
  408.                            nak[deny] must report the failure to its
  409.                            client.
  410.  
  411.    empty(2)   dally(0)     An empty[dally] packet is multicast to
  412.                            maintain synchronization when no client data
  413.                            is available.
  414.  
  415.               cancel(1)    If a producer finds itself in possession of a
  416.                            transmit token and has no data to send, it
  417.                            may cancel the token[request] by multicasting
  418.                            an empty[cancel] message.
  419.  
  420.               hibernate(2) If the master possesses all of the web's
  421.                            transmit tokens and all outstanding messages
  422.                            have been accepted or rejected, the master
  423.                            may transmit empty[hibernate] packets at a
  424.                            rate significantly slower than indicated by
  425.                            the web's value of heartbeat.
  426.  
  427.    join(3)    request(0)   A join[request] packet is sent by a process
  428.                            wishing to join a web to the web's unknown
  429.                            TSAP (see section 2.2.5).
  430.  
  431.               confirm(1)   The join[confirm] packet is the master's
  432.                            confirmation of the destination's request to
  433.                            join the web. It will be unicast by the
  434.                            master (and only the master) to the station
  435.                            that sent the join[request].
  436.  
  437.               deny(2)      A join[deny] packet indicates permission to
  438.                            join the web was denied. It may only be
  439.                            transmitted by the master and will be unicast
  440.                            to the member that sent the join[request].
  441.  
  442.    quit(4)    request(0)   A quit[request] may be unicast to the master
  443.                            by any member of the web at any time to
  444.                            indicate the sending process wishes to
  445.                            withdraw from the web. Any member may unicast
  446.                            a quit to another member requesting that the
  447.  
  448.  
  449.  
  450. Armstrong, Freier & Marzullo                                    [Page 8]
  451.  
  452. RFC 1301              Multicast Transport Protocol         February 1992
  453.  
  454.  
  455.                            destination member quit the web due to
  456.                            intolerable behavior.  The master may
  457.                            multicast a quit[request] requiring that the
  458.                            entire web disband. The request will be
  459.                            multicast at regular heartbeat intervals
  460.                            until there are no responses to retention
  461.                            requests.
  462.  
  463.               confirm(1)   The quit[confirm] packet is the indication
  464.                            that a quit[request] has been observed and
  465.                            appropriate local action has been taken.
  466.                            Quit[confirm] are always unicast.
  467.  
  468.    token(5)   request(0)   A token[request] is a producing member
  469.                            requesting a transmit token from the master.
  470.                            Such packets are unicast to the master.
  471.  
  472.               confirm(1)   The token[confirm] packet is sent by the
  473.                            master to assign the transmit token to a
  474.                            member that has requested it. token[confirm]
  475.                            will be unicast to the member being granted
  476.                            the token.
  477.  
  478.    isMember(6) request(0)  An isMember[request] is soliciting
  479.                            verification that the target member is a
  480.                            recognized member of the web. All forms of
  481.                            the isMember packet are unicast to a specific
  482.                            member.
  483.  
  484.               confirm(1)   IsMember[confirm] packets are positive
  485.                            responses to isMember[requests].
  486.  
  487.               deny(2)      If the member receiving the isMember[request]
  488.                            cannot confirm the target's membership in the
  489.                            web, it responds with a isMember[deny].
  490.  
  491. 2.2.3.  Subchannel
  492.  
  493.    The fourth byte of the transport header contains the client's
  494.    subchannel value. The default value of the subchannel field is zero.
  495.    Semantics of the subchannel value are defined by the transport client
  496.    and therefore are only applicable to packets of type data. All other
  497.    packet types must have a subchannel value of zero.
  498.  
  499. 2.2.4.  Source connection identifier
  500.  
  501.    The source connection identifier field is a 32 bit field containing a
  502.    transmitting system unique value assigned at the time the transport
  503.  
  504.  
  505.  
  506. Armstrong, Freier & Marzullo                                    [Page 9]
  507.  
  508. RFC 1301              Multicast Transport Protocol         February 1992
  509.  
  510.  
  511.    is created. The field is used in identifying the particular transport
  512.    instantiation and is a component of the TSAP. Every packet
  513.    transmitted by the transport must have this field set.
  514.  
  515. 2.2.5.  Destination connection identifier
  516.  
  517.    The destination connection identifier is the 32 bit identifier of the
  518.    target transport. From the point of view of a process sending a
  519.    packet, there are three types of destination connection identifiers.
  520.    First, there is the unknown connection identifier (0x00000000). The
  521.    unknown value is used only as the destination connection identifier
  522.    in the join[request] packet.
  523.  
  524.    Second, there is the multicast connection identifier gleaned from the
  525.    join[confirm] message sent by the master. The multicast connection
  526.    identifier is used in conjunction with the multicast NSAP to form the
  527.    destination TSAP of all packets multicast to the entire web [2].
  528.  
  529.    The last class of connection identifier is a unicast identifier and
  530.    is used to form the destination TSAP when unicasting packets to
  531.    individual members. Every member of the web has associated with it a
  532.    unicast connection identifier that is used to form its own unicast
  533.    TSAP.
  534.  
  535. 2.2.6.  Message acceptance
  536.  
  537.    MTP ensures that all processes agree on which messages are accepted
  538.    and in what order they are accepted. The master controls this aspect
  539.    of the protocol by controlling allocation of transmit tokens and
  540.    setting the status of messages. Once a token for a message has been
  541.    assigned (see section 3.2.1) the master sets the status of that
  542.    message according to the following rules [AFM91]:
  543.  
  544.     If the master has seen the entire message (i.e., has seen the
  545.     data[eom] and all intervening data packets), the status is accepted.
  546.  
  547.     If the master has not seen the entire message but believes the
  548.     message sender is still operational and connected to the master (as
  549.     determined by the master), the status is pending.
  550.  
  551.     If the master has not seen the entire message and believes the
  552.     sender to have failed or partitioned away, the status is rejected.
  553.  
  554.    Message status is carried in the message acceptance record (see
  555.    Figure 2) of every packet, and processes learn the status of earlier
  556.    messages by processing this information.
  557.  
  558.    The acceptance criteria is a multiple part record that carries the
  559.  
  560.  
  561.  
  562. Armstrong, Freier & Marzullo                                   [Page 10]
  563.  
  564. RFC 1301              Multicast Transport Protocol         February 1992
  565.  
  566.  
  567.    rules of agreement to determine the message acceptance. The most
  568.    significant 8 bits is a flag that, if not zero, indicates
  569.    synchronization is required.  The field may vary on a per message
  570.    basis as directed by producing transport's client. The default is
  571.    that no synchronization is required.
  572.  
  573.    The second part of the record is a 12 element vector that represents
  574.    the status of the last 12 messages transmitted into the web.
  575.  
  576.        0          7 8          15 16          23 24         31
  577.       ---------------------------------------------------------
  578.       |            |                                          |
  579.       |  synchro   |         tri-state bitmask[12]            |
  580.       ---------------------------------------------------------
  581.       |      message             |      packet sequence       |
  582.       |      sequence number     |      number                |
  583.       ---------------------------------------------------------
  584.  
  585.                      Figure 2. Message acceptance record
  586.  
  587.    Each element of the array is two bits in length and may have one of
  588.    three values: accepted(0), pending(1) or rejected(2). Initially, the
  589.    bit mask is set to all zeros. When the token for message m is
  590.    transmitted, the first (left-most) element of the vector represents
  591.    the the state of message m - 1, the second element of the vector is
  592.    the status of message m - 2, and so forth. Therefore the status of
  593.    the last 12 messages are visible, the status of older messages are
  594.    lost, logically by shifting the elements out of the vector. Only the
  595.    master is permitted to set the status of messages. The master is not
  596.    permitted to shift a status of pending beyond the end of the vector.
  597.    If that situation arises, the master must instead not confirm any
  598.    token[request] until the oldest message can be marked as either
  599.    rejected or accepted.
  600.  
  601.    Message sequence numbers are 16 bit unsigned values. The field is
  602.    initialized to zero by the master when the transport is initialized,
  603.    and incremented by one after each token is granted. Only the master
  604.    is permitted to change the value of the message sequence number. Once
  605.    granted, that message sequence number is consumed and the state of
  606.    the message must eventually become either accepted or rejected. No
  607.    transmit tokens may be granted if the assignment of a message
  608.    sequence number that would cause a value of pending to be shifted
  609.    beyond the end of the status vector.
  610.  
  611.    Packet sequence numbers are unsigned 16 bit numbers assigned by the
  612.    producing process on a per message basis. Packet sequence numbers
  613.    start at a value of zero for each new message and are incremented by
  614.    one (consumed) for each data packet making up the message. Consumers
  615.  
  616.  
  617.  
  618. Armstrong, Freier & Marzullo                                   [Page 11]
  619.  
  620. RFC 1301              Multicast Transport Protocol         February 1992
  621.  
  622.  
  623.    detecting missing packet sequence numbers must send a nak[request] to
  624.    the appropriate producer to recover the missed data.
  625.  
  626.    Control packets always contain the message acceptance criteria with a
  627.    synchronization flag set to zero (0x00), the highest message sequence
  628.    number observed and a packet sequence number one greater than
  629.    previously observed. Control packets do not consume any sequence
  630.    numbers.  Since control messages are not reliably delivered, the
  631.    acceptance criteria should only be checked to see if they fall within
  632.    the proper range of message numbers, relative to the current message
  633.    number of the receiving station.  The range of acceptable sequence
  634.    numbers should be m-11 to m-13, inclusive, where m is the current
  635.    message number.
  636.  
  637. 2.2.7.  Heartbeat
  638.  
  639.    Heartbeat is an unsigned 32 bit field that has the units of
  640.    milliseconds. The value of heartbeat is shared by all members of the
  641.    web. By definition at least one packet (either data, empty or quit
  642.    from the master) will be multicast into the web within every
  643.    heartbeat period.
  644.  
  645. 2.2.8.  Window
  646.  
  647.    The allocation window (or simply window) is a 16 bit unsigned field
  648.    that indicates the maximum number of data packets that can be
  649.    multicasted by a member in a single heartbeat. It is the sum of the
  650.    retransmitted and new data packets.
  651.  
  652. 2.2.9.  Retention
  653.  
  654.    The retention field is a 16 bit unsigned value that is the number of
  655.    heartbeats for which a producer must retain transmitted client data
  656.    and state for the purpose of retransmission.
  657.  
  658. 2.3     Transport addresses
  659.  
  660.    Associated with each transport are logically three transport service
  661.    access points (TSAP), logically formed by the concatenation of a
  662.    network service access point (NSAP) and a transport connection
  663.    identifier. These TSAPs are the unknown TSAP, the web's multicast
  664.    TSAP and each individual member's TSAP.
  665.  
  666. 2.3.1.  Unknown transport address
  667.  
  668.    Stations that are just joining must use the multicast NSAP associated
  669.    with the transport, but are not yet aware of either the web's
  670.    multicast TSAP the master process' TSAP. Therefore, joining stations
  671.  
  672.  
  673.  
  674. Armstrong, Freier & Marzullo                                   [Page 12]
  675.  
  676. RFC 1301              Multicast Transport Protocol         February 1992
  677.  
  678.  
  679.    fabricate a temporary TSAP (referred to as a unknown TSAP) by using a
  680.    connection identifier reserved to mean unknown (0x00000000). The
  681.    join[confirm] message will be sourced from the master's TSAP and will
  682.    include the multicast transport connection identifier in the data
  683.    field. Those values must be extracted from the join[confirm] and
  684.    remembered by the joining process.
  685.  
  686. 2.3.2.  Web's multicast address
  687.  
  688.    The multicast TSAP is formed by logically concatenating the multicast
  689.    NSAP associated with the transport creation and the transport
  690.    connection identifier returned in the data field of the join[confirm]
  691.    packet. If more than one network is involved in the web, then the
  692.    multicast transport address becomes a list, one for each network
  693.    represented.  This list is supplied in the data field of
  694.    token[confirm] packets.
  695.  
  696.    The multicast TSAP is used as the target for all messages that are
  697.    destined to the entire web, such as data and empty. The master's
  698.    decision to abandon the transport (quit) is also sent to the
  699.    multicast transport address.
  700.  
  701. 2.3.3.  Member addresses
  702.  
  703.    The member TSAP is formed by using the process' unicast NSAP
  704.    concatenated with a locally generated unique connection identifier.
  705.    That TSAP must be the source of every packet transmitted by the
  706.    process, regardless of its destination, for the lifetime of the
  707.    transport.
  708.  
  709.    Packets unicast to specific members must contain the appropriate
  710.    TSAP.  For producers and consumers this is not difficult. The only
  711.    TSAPs of interest are the master and the station(s) currently
  712.    transmitting data.
  713.  
  714. 3.      Protocol behavior
  715.  
  716.    This section defines the expectations of the protocol implementation.
  717.    These expectations should not be considered guidelines or hints, but
  718.    rather part the protocol.
  719.  
  720. 3.1     Establishing a transport
  721.  
  722.    Before any rendezvous can be affected, a process must first acquire
  723.    an NSAP that will be the service access point for the instantiation
  724.    [3].  The process that first establishes at that NSAP is referred to
  725.    as the master of the web. The decision as to what process acts as the
  726.    master must be made a priori in order to guarantee unambiguous
  727.  
  728.  
  729.  
  730. Armstrong, Freier & Marzullo                                   [Page 13]
  731.  
  732. RFC 1301              Multicast Transport Protocol         February 1992
  733.  
  734.  
  735.    creation in the face of network partitions. The process should make a
  736.    robust effort to verify that the NSAP being used is not already in
  737.    service. It may do so by repeatedly sending join[requests] to the
  738.    web's unknown TSAP. If there is no response to repeated transmissions
  739.    the process may be relatively confident that the NSAP is not in use
  740.    and proceed with the creation of the web. If not, the creation must
  741.    be aborted and the situation reported to its client.
  742.  
  743. 3.1.1.  Join request
  744.  
  745.    Additional members may join the web at any time after the
  746.    establishment of the master by the joining process sending a
  747.    join[request] to the unknown TSAP. The joining process should have
  748.    already assigned a unique connection identifier to its transport
  749.    instantiation that will be used in the source TSAP of the
  750.    join[request]. The join[request] must contain zeros in all of the
  751.    acceptance fields. The heartbeat, window and retention parameters are
  752.    filled in as requested by the transport provider's client. The data
  753.    of the message must contain the type, class and quality of service
  754.    parameters that the client has requested.
  755.  
  756.  
  757.    field               class       definition
  758.  
  759.    membership class    master(0)   There can be only a single web
  760.                                    master, and that member has all
  761.                                    privileges of a producer class member
  762.                                    plus those acquitted only to the
  763.                                    master.
  764.  
  765.                        producer(1) A process that has producer class
  766.                                    membership wishes to transmit data
  767.                                    into the web as well as consume.
  768.  
  769.                        consumer(2) A consumer process is a read only
  770.                                    process. It will send naks in order
  771.                                    to reliably receive data but will
  772.                                    never ask for or be permitted to take
  773.                                    possession of a transmit token.
  774.  
  775.    transport class     reliable(0) Specifies a reliable transport, i.e.,
  776.                                    one that will generate and process
  777.                                    naks.  The implication is that the
  778.                                    data will be reliably delivered or
  779.                                    the failure will be detected and
  780.                                    reported to the client.
  781.  
  782.                        unreliable(1)   The transport supports best
  783.  
  784.  
  785.  
  786. Armstrong, Freier & Marzullo                                   [Page 14]
  787.  
  788. RFC 1301              Multicast Transport Protocol         February 1992
  789.  
  790.  
  791.                                    effort delivery. Such a transport may
  792.                                    still fail if the error rates are too
  793.                                    high, but tolerable loss or
  794.                                    corruption of data will be permitted
  795.                                    [4].
  796.  
  797.    transport type      NxN(0)      The transport will accept multiple
  798.                                    processes with producing capability.
  799.  
  800.                        1xN(1)      A 1xN transport permits only a single
  801.                                    producer whose identity was
  802.                                    established a priori.
  803.  
  804.    The client's desire for minimum throughput (expressed in kilobytes
  805.    per second) is the lowest value that will be accepted. That
  806.    throughput is calculated using the heartbeat and window parameters of
  807.    the transport, and the maximum data unit size, not by measuring
  808.    actual traffic. Any member that suggests a combination of those
  809.    parameters that result in an unacceptable throughput will be ignored
  810.    or asked to withdraw from the web.
  811.  
  812.    A joining client may also suggest a maximum data unit size. This
  813.    field is expressed as a number of bytes that can be included in a
  814.    data packet as client data.
  815.  
  816.    If no response is received in a single heartbeat, the join[request]
  817.    should be retransmitted using the same source TSAP so the master can
  818.    detect the difference between a new process and a retransmission of a
  819.    join[request].
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842. Armstrong, Freier & Marzullo                                   [Page 15]
  843.  
  844. RFC 1301              Multicast Transport Protocol         February 1992
  845.  
  846.  
  847. 3.1.2.  Join confirm/deny
  848.  
  849.    Only the master of the web will respond to join[request]. The
  850.    response may either permit the entry of the new process or deny it.
  851.    The request to join may be denied because the new member is
  852.    specifying service parameters that are in conflict with those
  853.    established by the master.  If the join is confirmed the
  854.    join[confirm] will be unicast by the master with a data field that
  855.    contains the web's current operating parameters. If those parameters
  856.    are unacceptable to the joining process it may decide to withdraw
  857.    from the web. Otherwise the parameters must be accepted as the
  858.    current operating values.
  859.  
  860.     0           7 8           15 16         23 24         31
  861.    ----------------------------------------------------------    -----
  862.    |  protocol    |    packet   |    type     |    client   |      |
  863.    |  version     |    type     |    modifier |    channel  |      |
  864.    ----------------------------------------------------------      |
  865.    |                                                        |      |
  866.    |              source connection identifier              |      |
  867.    ----------------------------------------------------------      |
  868.    |                                                        |      |
  869.    |              destination connection identifier         |
  870.    ---------------------------------------------------------- transport
  871.    |                                                        |    header
  872.    |              message acceptance criteria               |
  873.    ----------------------------------------------------------      |
  874.    |                                                        |      |
  875.    |              heartbeat                                 |      |
  876.    ----------------------------------------------------------      |
  877.    |                            |                           |      |
  878.    |        window              |        retention          |      |
  879.    ----------------------------------------------------------    -----
  880.    |  member     |   transport  |  transport  |             |      |
  881.    |  class      |   class      |  type       |  reserved   |      |
  882.    ----------------------------------------------------------
  883.    |        minimum             |     maximum data          |    data
  884.    |        throughput          |     unit size             |
  885.    ----------------------------------------------------------      |
  886.    |                  multicast connection                  |      |
  887.    |                  identifier                            |      |
  888.    ----------------------------------------------------------    -----
  889.  
  890.                            Figure 3. join packet
  891.  
  892.    The join[confirm] will also contain the multicast connection
  893.    identifier.  This must be used to form the TSAP that will be the
  894.    destination for all multicast messages for the transport. The source
  895.  
  896.  
  897.  
  898. Armstrong, Freier & Marzullo                                   [Page 16]
  899.  
  900. RFC 1301              Multicast Transport Protocol         February 1992
  901.  
  902.  
  903.    of the join[confirm] message will be the master's TSAP and must be
  904.    recorded by the member for later use.
  905.  
  906.    The master must be in possession of all the transmit tokens when it
  907.    sends a join[confirm]. Requiring the master to have the transmit
  908.    tokens insures that the joining member will enter the web and observe
  909.    only complete messages. It also permits a notification of the
  910.    master's client of the join so that application state may be
  911.    automatically sent to the newly joining member. The newly joined
  912.    member may be on a network not previously represented in the web's
  913.    membership, thus requiring a new multicast TSAP be added to the
  914.    existing list. The entire list will be conveyed in the data field of
  915.    all subsequent token[confirm] messages (described later).
  916.  
  917. 3.2     Maintaining data consistency
  918.  
  919.    The transport is responsible for maintaining the consistency of the
  920.    data submitted for delivery by producing clients. The actual client
  921.    data, while representing the bulk of the information that flows
  922.    through the web, is accompanied by significant amounts of protocol
  923.    state information. In addition to the state information piggybacked
  924.    with the client data, there is a minimum amount of protocol packets
  925.    that are purely for use by the transport, invisible to the transport
  926.    client.
  927.  
  928. 3.2.1.  Transmit tokens
  929.  
  930.    Before any process may transmit client data or state it must first
  931.    possess a transmit token. It may acquire the token by transmitting a
  932.    token[request] to the master. Requests should be unicast to the
  933.    master's TSAP and should be retransmitted at intervals approximately
  934.    equal to the heartbeat. Since it is the central source for a transmit
  935.    token, the master may apply some fairness algorithms to the passing
  936.    of permission to transmit. At a minimum the requests should be queued
  937.    in a first in, first out order. Duplicate requests from a single
  938.    member should be ignored, keeping instead the first unhonored
  939.    request. When appropriate, the master will send a member with a
  940.    request pending a token[confirm].  The data field of the response
  941.    contains all the multicast TSAPs that are represented in the current
  942.    web at that point in time.
  943.  
  944.    If the master detects no data or heartbeat messages being transmitted
  945.    into the web it will assume the token is lost, presumably because the
  946.    member holding the token has failed or has become partitioned away
  947.    from the master. In such cases, the master may attempt to confirm the
  948.    state of the process (perhaps by sending isMember[request]). If the
  949.    member does not respond it is removed from the active members of the
  950.    web, the message is marked as rejected, the token is assumed by the
  951.  
  952.  
  953.  
  954. Armstrong, Freier & Marzullo                                   [Page 17]
  955.  
  956. RFC 1301              Multicast Transport Protocol         February 1992
  957.  
  958.  
  959.    master.
  960.  
  961.    Figure 4 shows a timing diagram of a token pass. Increasing time is
  962.    towards the bottom of the figure. In this figure, process A has a
  963.    token, and process B requests a token when there are no free tokens.
  964.  
  965.                            A    master    B
  966.     "A" multicasts data    |             |  "B" requests
  967.                            |\     |      |  transmit token
  968.                            | \    |     /|
  969.                            |  \   |    / |
  970.                            |   \  |   /  |
  971.     "A" multicasts data    |    \ |  /   |  "B" retransmits
  972.     w/eom set              |\    \| /    |  token request
  973.                            | \    \V    /|
  974.                            |  \   |\   / |
  975.                            |   \  | V /  |
  976.                            |    \ |  /   |
  977.                            |     \| /    |
  978.                            |      \V     |
  979.                            |      |\     |
  980.                            |      | V    |
  981.                            |      |\     |  Master assigns
  982.                            |      | \    |  token to "B"
  983.                            |      |  \   |
  984.                            |      |   \  |
  985.                            |      |    \ |
  986.                            |      |     V|
  987.                            |      |      |
  988.                            |      |     /|  "B" multicasts
  989.                            |      |    / |  data
  990.                            |      |   /  |
  991.                            |      |  /   |
  992.                            |      | /    |
  993.                            |      |/     |
  994.                            |      /      |
  995.                            |     /|      |
  996.                            |    V |      |
  997.                            |      |      |
  998.  
  999.                      Figure 4. Acquiring the token
  1000.  
  1001.    Token packets, like other control packets, do not consume sequence
  1002.    numbers. Hence, the master must be able to use another mechanism to
  1003.    determine whether multiple token[request] from a single member are
  1004.    actually requests for a separate token, or are a retransmission of a
  1005.    token[request].  To carry out this obligation, the master and the
  1006.    members must have an implicit understanding of each other's state.
  1007.  
  1008.  
  1009.  
  1010. Armstrong, Freier & Marzullo                                   [Page 18]
  1011.  
  1012. RFC 1301              Multicast Transport Protocol         February 1992
  1013.  
  1014.  
  1015.     0           7 8           15 16         23 24         31
  1016.    ----------------------------------------------------------    -----
  1017.    |  protocol    |    packet   |    type     |    client   |      |
  1018.    |  version     |    type     |    modifier |    channel  |      |
  1019.    ----------------------------------------------------------      |
  1020.    |                                                        |      |
  1021.    |              source connection identifier              |      |
  1022.    ----------------------------------------------------------      |
  1023.    |                                                        |      |
  1024.    |              destination connection identifier         |
  1025.    ---------------------------------------------------------- transport
  1026.    |                                                        |    header
  1027.    |              message acceptance criteria               |
  1028.    ----------------------------------------------------------      |
  1029.    |                                                        |      |
  1030.    |              heartbeat                                 |      |
  1031.    ----------------------------------------------------------      |
  1032.    |                            |                           |      |
  1033.    |        window              |        retention          |      |
  1034.    ----------------------------------------------------------    -----
  1035.    |                                                        |      |
  1036.    |                                                        |      |
  1037.    |                   TSAPs of all networks                |
  1038.    |                   represented in the web               |    data
  1039.    |                   membership                           |
  1040.    |                                                        |      |
  1041.    |                                                        |      |
  1042.    ----------------------------------------------------------    -----
  1043.  
  1044.                           Figure 5. token packet
  1045.  
  1046.    Assume that the token, as viewed by the master, has three states:
  1047.  
  1048.    idle        The token is not currently assigned. Specifically the
  1049.                message number that it defines is not represented in the
  1050.                current message acceptance vector.
  1051.  
  1052.    pending     The token has been assigned by the master via a
  1053.                token[confirm] packet, but the master has not yet seen
  1054.                any data packets to indicate that the from the producing
  1055.                member received the notification.
  1056.  
  1057.    busy        The token has been assigned and the master has seen data
  1058.                packets carrying the assigned message number. The message
  1059.                comprised by those packets is still represented in the
  1060.                message acceptance vector.
  1061.  
  1062.    Furthermore, a token that is not idle also has associated with its
  1063.  
  1064.  
  1065.  
  1066. Armstrong, Freier & Marzullo                                   [Page 19]
  1067.  
  1068. RFC 1301              Multicast Transport Protocol         February 1992
  1069.  
  1070.  
  1071.    state the TSAP of the process that owns (or owned) the token.
  1072.  
  1073.    Based on this state, the master will respond to any process that has
  1074.    a token in pending state with a reassignment of that token. This is
  1075.    based on the assumption that the original token[confirm] was not
  1076.    received by the requesting process. The only other possibility is
  1077.    that the process did receive the token and transmitted data packets
  1078.    using that token, but the master did not see them. But data messages
  1079.    are by design multi-packet messages, padded with empty packets if
  1080.    necessary. The possibility of the master missing all of the packets
  1081.    of a message is considered less than the possibility of the
  1082.    requesting process missing a single token[confirm] packet.
  1083.  
  1084.    The process requesting tokens must consider the actions of the master
  1085.    and what prompted them. In most cases the assumptions made by the
  1086.    master will be correct. However, there are two ambiguous situations.
  1087.    There is the situation that the master is most directly addressing,
  1088.    not knowing whether the requesting process has failed to observe the
  1089.    token[confirm] or the master has failed to see data packets
  1090.    transmitted by the producing process. There is also the possibility
  1091.    that the requesting process timed out too quickly and the
  1092.    retransmission of the token[request] passed the token[confirm] in the
  1093.    night. In any case the producing process may find itself in
  1094.    possession of a token for which it has no need. These can be
  1095.    dismissed by sending an empty[cancel] packet.
  1096.  
  1097.    Another possibility is that the requesting process has actually made
  1098.    use of the assigned token and is requesting another token. Unless the
  1099.    master has observed data using the token, the master will still
  1100.    consider the token pending. Therefore, a process that receives a
  1101.    duplicate token[confirm] should interpret it as a nak and retransmit
  1102.    any data packets previously sent using the token's message sequence
  1103.    number.
  1104.  
  1105. 3.2.2.  Data transmission
  1106.  
  1107.    Data is provided by the transport client in the form of uninterpreted
  1108.    bytes. The bytes are encapsulated in packets immediately following
  1109.    the protocol's fixed overhead fields. The packet may have any number
  1110.    of data bytes between zero and the maximum number of bytes of a
  1111.    network protocol packet minus the network overhead and the fixed
  1112.    transport overhead.  Every packet that consumes a sequence number
  1113.    must contain either client data or client state transitions such as
  1114.    the end of message indicator or a subchannel transition.
  1115.  
  1116.    Packets are transmitted in bursts of packets called windows. The
  1117.    protocol guarantees that no more than the current value of window
  1118.    data packets will be transmitted by a single process during a
  1119.  
  1120.  
  1121.  
  1122. Armstrong, Freier & Marzullo                                   [Page 20]
  1123.  
  1124. RFC 1301              Multicast Transport Protocol         February 1992
  1125.  
  1126.  
  1127.    heartbeat.  Every packet transmitted always contains the latest
  1128.    heartbeat, window and retention information. If full packets are
  1129.    unavailable [5], empty[dally] messages should be transmitted instead.
  1130.    The only packets that will be transmitted containing less than
  1131.    maximum capacity will be data[eom] or those containing client
  1132.    subchannel transitions.
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Armstrong, Freier & Marzullo                                   [Page 21]
  1179.  
  1180. RFC 1301              Multicast Transport Protocol         February 1992
  1181.  
  1182.  
  1183.             -----     |      |
  1184.               |       |\     |
  1185.               |       | \    |
  1186.                       |\ \   |
  1187.           heartbeat   | \ \  |
  1188.                       |\ \ \ |
  1189.               |       | \ \ V|  data(n)
  1190.               |       |  \ \ |
  1191.             -----     |   \ V|  data(n+1)
  1192.                       |\   \ |
  1193.                       | \   V|  data(n+w-1) w/eow
  1194.                       |\ \   |
  1195.                       | \ \  |
  1196.                       |\ \ \ |
  1197.                       | \ \ V|  data(n+w)
  1198.                       |  \ \ |
  1199.             -----     |   \ V|  data(n+w+1)
  1200.                       |\   \ |
  1201.                       | \   V|  data(n+2w-1) w/eow
  1202.    w = window = 3     |  \   |
  1203.    r = retention = 2  |   \  |
  1204.                       |    \ |
  1205.                       |     V|  empty(n+2w)
  1206.                       |      |
  1207.             -----     |      |
  1208.                       |\     |
  1209.                       | \    |
  1210.                       |  \   |
  1211.                       |   \  |
  1212.                       |    \ |
  1213.                       |     V|  data(n+2w) w/eom
  1214.                       |      |    Packets n..n+w-1 are released,
  1215.             -----     |      |    token is surrendered.
  1216.                       |      |
  1217.                       |      |
  1218.                       |      |
  1219.                       |      |
  1220.                       |      |
  1221.                       |      |
  1222.                       |      |
  1223.             -----     |      |    Packets n+w..n+2w-1 are released.
  1224.  
  1225.  
  1226.                     Figure 6. Normal data transmission
  1227.  
  1228.    Figure 6 shows a timing diagram of a process transmitting into a web
  1229.    (without any complicating naks). Increasing time is towards the
  1230.    bottom of the figure. The transmitting process is obligated to
  1231.  
  1232.  
  1233.  
  1234. Armstrong, Freier & Marzullo                                   [Page 22]
  1235.  
  1236. RFC 1301              Multicast Transport Protocol         February 1992
  1237.  
  1238.  
  1239.    retransmit requested packets for at least retention heartbeat
  1240.    intervals after their first transmission.
  1241.  
  1242.     0           7 8           15 16         23 24         31
  1243.    ----------------------------------------------------------    -----
  1244.    |  protocol    |    packet   |    type     |    client   |      |
  1245.    |  version     |    type     |    modifier |    channel  |      |
  1246.    ----------------------------------------------------------      |
  1247.    |                                                        |      |
  1248.    |              source connection identifier              |      |
  1249.    ----------------------------------------------------------      |
  1250.    |                                                        |      |
  1251.    |              destination connection identifier         |
  1252.    ---------------------------------------------------------- transport
  1253.    |                                                        |    header
  1254.    |              message acceptance criteria               |
  1255.    ----------------------------------------------------------      |
  1256.    |                                                        |      |
  1257.    |              heartbeat                                 |      |
  1258.    ----------------------------------------------------------      |
  1259.    |                            |                           |      |
  1260.    |        window              |        retention          |      |
  1261.    ----------------------------------------------------------    -----
  1262.    |                                                        |      |
  1263.    |                   uninterpreted data                   |
  1264.    |                                                        |    data
  1265.    |                                                        |
  1266.    |                                                        |      |
  1267.    ----------------------------------------------------------    -----
  1268.  
  1269.                            Figure 7. data packet
  1270.  
  1271. 3.2.3.  Empty packets
  1272.  
  1273.    An empty packet is a control packet multicast into the web at regular
  1274.    intervals by a producer possessing a transmit token when no client
  1275.    data is available. Empty packets are sent to maintain synchronization
  1276.    and to advertise the maximum sequence number of the producer. It
  1277.    provides the opportunity for consuming processes to detect and
  1278.    request retransmission of missed data as well as identifying the
  1279.    owner of a transmit token.
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Armstrong, Freier & Marzullo                                   [Page 23]
  1291.  
  1292. RFC 1301              Multicast Transport Protocol         February 1992
  1293.  
  1294.  
  1295.     0           7 8           15 16         23 24         31
  1296.    ----------------------------------------------------------    -----
  1297.    |  protocol    |    packet   |    type     |    client   |      |
  1298.    |  version     |    type     |    modifier |    channel  |      |
  1299.    ----------------------------------------------------------      |
  1300.    |                                                        |      |
  1301.    |              source connection identifier              |      |
  1302.    ----------------------------------------------------------      |
  1303.    |                                                        |      |
  1304.    |              destination connection identifier         |
  1305.    ---------------------------------------------------------- transport
  1306.    |                                                        |    header
  1307.    |              message acceptance criteria               |
  1308.    ----------------------------------------------------------      |
  1309.    |                                                        |      |
  1310.    |              heartbeat                                 |      |
  1311.    ----------------------------------------------------------      |
  1312.    |                            |                           |      |
  1313.    |        window              |        retention          |      |
  1314.    ----------------------------------------------------------    -----
  1315.  
  1316.                           Figure 8. empty packet
  1317.  
  1318.    There are two situations where the empty[dally] packet is used. The
  1319.    first is when there is insufficient data for a full packet presented
  1320.    by the client during a heartbeat. Partial packets should not be
  1321.    transmitted unless there is a client transition to be conveyed, yet
  1322.    something must be transmitted during a heartbeat or the master may
  1323.    think the process owning a transmit token has failed. Empty[dally] is
  1324.    used instead of a data packet until the client provides additional
  1325.    data to fill a packet or indicates a state transition such as an end
  1326.    of message or subchannel transition.
  1327.  
  1328.    The second situation where empty[dally] is used is after the
  1329.    transmission of short messages. Each message should consist of
  1330.    multiple packets in order to enhance the possibility that consumers
  1331.    will observe at least one packet of a message and therefore be able
  1332.    to identify the producer. The transport parameter retention has
  1333.    approximately the correct properties for that insurance. Therefore, a
  1334.    message must consist of at least retention packets. If the client
  1335.    data does not require that many packets, empty[dally] packets must be
  1336.    appended. A process that has no transmittable data and is in
  1337.    possession of a transmit token must send an empty[cancel].
  1338.    Transmissions of empty[cancel] packets pass the ownership of the
  1339.    transmit token back to the master. When the master observes the
  1340.    control packet, it will mark the referenced to message as rejected so
  1341.    that other consumers do not believe the message lost and attempt to
  1342.    recover.
  1343.  
  1344.  
  1345.  
  1346. Armstrong, Freier & Marzullo                                   [Page 24]
  1347.  
  1348. RFC 1301              Multicast Transport Protocol         February 1992
  1349.  
  1350.  
  1351.    During periods of no activity (i.e., after all messages have been
  1352.    either accepted or rejected and there are no outstanding transmit
  1353.    tokens) the master may enter hibernation mode by transmitting
  1354.    empty[hibernate] packets. In that mode the master will increase the
  1355.    value of the transport parameter heartbeat in order to reduce network
  1356.    traffic. Such packets are used to indicate that the packet's
  1357.    heartbeat field should not be used for resource computation by those
  1358.    processes that observe it.
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.  
  1400.  
  1401.  
  1402. Armstrong, Freier & Marzullo                                   [Page 25]
  1403.  
  1404. RFC 1301              Multicast Transport Protocol         February 1992
  1405.  
  1406.  
  1407. 3.2.4.  Missed data
  1408.  
  1409.    The most common method of detecting data loss will be the reception
  1410.    of a data or a heartbeat message that has a sequence number greater
  1411.    than expected from that producer. The second most common method will
  1412.    be a message fragment (missing the end of message) and seeing no more
  1413.    data or empty packets from the producer of the fragment for more than
  1414.    a single heartbeat. In any case the consumer process directs a
  1415.    negative acknowledgment (nak) to the producer of the incomplete
  1416.    message. The data field of the nak message contains a list of
  1417.    ascending sequence number pairs the consumer needs to recover the
  1418.    missed data.
  1419.  
  1420.     0           7 8           15 16         23 24         31
  1421.    ----------------------------------------------------------    -----
  1422.    |  protocol    |    packet   |    type     |    client   |      |
  1423.    |  version     |    type     |    modifier |    channel  |      |
  1424.    ----------------------------------------------------------      |
  1425.    |                                                        |      |
  1426.    |              source connection identifier              |      |
  1427.    ----------------------------------------------------------      |
  1428.    |                                                        |      |
  1429.    |              destination connection identifier         |
  1430.    ---------------------------------------------------------- transport
  1431.    |                                                        |    header
  1432.    |              message acceptance criteria               |
  1433.    ----------------------------------------------------------      |
  1434.    |                                                        |      |
  1435.    |              heartbeat                                 |      |
  1436.    ----------------------------------------------------------      |
  1437.    |                            |                           |      |
  1438.    |        window              |        retention          |      |
  1439.    ----------------------------------------------------------    -----
  1440.    |                            |                           |      |
  1441.    |  message sequence (low)    |  packet sequence (low)    |
  1442.    ----------------------------------------------------------    data
  1443.    |                            |                           |
  1444.    |  message sequence (high)   |  packet sequence (high)   |      |
  1445.    ----------------------------------------------------------    -----
  1446.  
  1447.                            Figure 9. nak packet
  1448.  
  1449. 3.2.5.  Retrying operations
  1450.  
  1451.    Operations must be retried in order to assure that a single packet
  1452.    loss does not cause transport failure. In general the right numbers
  1453.    to do that with exist in the transport. The proper interval between
  1454.    retries is the transport's time constant or heartbeat. The proper
  1455.  
  1456.  
  1457.  
  1458. Armstrong, Freier & Marzullo                                   [Page 26]
  1459.  
  1460. RFC 1301              Multicast Transport Protocol         February 1992
  1461.  
  1462.  
  1463.    number of retries is retention.
  1464.  
  1465.    Operations that are retriable (and represented by their respective
  1466.    message types) are join, nak, token, isMember and quit. Another
  1467.    application for the heartbeat and retention is when transmitting
  1468.    empty messages. Empty[dally] messages are transmitted any time data
  1469.    is not available but the data[eom] has not yet been sent. Any process
  1470.    not observing data or empty for more than retention heartbeat
  1471.    intervals will assume to have failed or partitioned away and the
  1472.    transport will be abandoned.
  1473.  
  1474. 3.2.6.  Retransmission
  1475.  
  1476.    If the producer receives a nak[request] from a consumer process
  1477.    requesting the retransmission of a packet that is no longer
  1478.    available, the producer must send a nak[deny] to the source of the
  1479.    request. If that puts the consumer in a failed state, the consumer
  1480.    will initiate the withdrawal from the web. If a producer receives a
  1481.    nak[request] from a consumer requesting the retransmission of one or
  1482.    more packets, those packets will be multicast to the entire web [6].
  1483.    All will contain the original client information (such as subchannel
  1484.    and end of message state) and message and packet sequence number.
  1485.    However, the retransmitted packets must contain updated protocol
  1486.    parameter information (heartbeat, window and retention).
  1487.    Retransmitted packets are subject to the same constraints regarding
  1488.    heartbeat and window as original transmissions. Therefore the
  1489.    producer's retransmissions consume a portion of the allocation window
  1490.    allowing less new data to be transmitted in a single heartbeat.
  1491.    Retransmitted packets have priority over (i.e., should be transmitted
  1492.    before) new data packets.
  1493.  
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502.  
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Armstrong, Freier & Marzullo                                   [Page 27]
  1515.  
  1516. RFC 1301              Multicast Transport Protocol         February 1992
  1517.  
  1518.  
  1519.             -----     |       |     retransmission count = rx=0
  1520.               |       |\     |
  1521.               |       | \    |
  1522.               |       |\ \   |
  1523.               |       | \ \  |
  1524.               |       |\ \ \ |
  1525.               |       | \ \ V|  data(n)
  1526.               |       |  \ \ |
  1527.                       |   \ *|  data(n+1)
  1528.           heartbeat   |    \ |
  1529.                       |     V|  data(n+w-1-rx) w/eow       rx=0
  1530.               |       |      |
  1531.               |       |     /|  nak(n') of n+1
  1532.               |       |    / |
  1533.               |       |   /  |
  1534.               |       |  /   |
  1535.               |       | /    |
  1536.               |       |V     |
  1537.             -----     |      |
  1538.                       |\     |
  1539.                       | \    |
  1540.                       |\ \   |
  1541.                       | \ \  |
  1542.                       |\ \ \ |
  1543.    w = window = 3     | \ \ *|  retransmission(n+1)        rx=1
  1544.    r = retention = 1  |  \ \ |
  1545.                       |   \ V|  data(n+w)
  1546.                       |    \ |
  1547.                       |     V|  data(n+2w-1-rx) w/eow      rx=1
  1548.                       |      |
  1549.                       |     /|  nak(n') of n+1
  1550.                       |    / |
  1551.             -----     |   /  |
  1552.                       |\ /   |
  1553.                       | /    |
  1554.                       |V \   |
  1555.                       |\  \  |
  1556.                       | \  \ |
  1557.                       |\ \  V|  data(n+2w-rx)              rx=1
  1558.                       | \ \  |    Packets n..n+w-1-0 can be released.
  1559.                       |  \ \ |
  1560.                       |   \ V|  nak deny(n+1)              rx=2
  1561.                       |    \ |
  1562.                       |     V|  data(n+3w-1-rx) w/eom      rx=2
  1563.                       |      |
  1564.            -----      |      |    Packets n+w..n+2w-1-1 are released.
  1565.  
  1566.                   Figure 10. naks and retransmission
  1567.  
  1568.  
  1569.  
  1570. Armstrong, Freier & Marzullo                                   [Page 28]
  1571.  
  1572. RFC 1301              Multicast Transport Protocol         February 1992
  1573.  
  1574.  
  1575. 3.2.7.  Duplicate suppression
  1576.  
  1577.    The consumer must be prepared to ignore duplicate packets received.
  1578.    They will invariably be the result of the producer's retransmission
  1579.    in response to another consumer's nak.
  1580.  
  1581. 3.2.8.  Banishment
  1582.  
  1583.    If at any time a process detects another in violation of the protocol
  1584.    it may ask the offending process to withdraw from the web by
  1585.    unicasting to it a quit[request] that has the target field set to the
  1586.    value of the offender's TSAP. Any member that exhibits a detectable
  1587.    and recoverable protocol violation and still responds willingly to
  1588.    the quit[request] will be noted as having truly correct social
  1589.    behavior.
  1590.  
  1591.     0           7 8           15 16         23 24         31
  1592.    ----------------------------------------------------------    -----
  1593.    |  protocol    |    packet   |    type     |    client   |      |
  1594.    |  version     |    type     |    modifier |    channel  |      |
  1595.    ----------------------------------------------------------      |
  1596.    |                                                        |      |
  1597.    |              source connection identifier              |      |
  1598.    ----------------------------------------------------------      |
  1599.    |                                                        |      |
  1600.    |              destination connection identifier         |
  1601.    ---------------------------------------------------------- transport
  1602.    |                                                        |    header
  1603.    |              message acceptance criteria               |
  1604.    ----------------------------------------------------------      |
  1605.    |                                                        |      |
  1606.    |              heartbeat                                 |      |
  1607.    ----------------------------------------------------------      |
  1608.    |                            |                           |      |
  1609.    |        window              |        retention          |      |
  1610.    ----------------------------------------------------------    -----
  1611.    |                                                        |
  1612.    |              target TSAP                               |
  1613.    |                                                        |
  1614.    ----------------------------------------------------------
  1615.  
  1616.                           Figure 11. quit packet
  1617.  
  1618. 3.3     Terminating the transport
  1619.  
  1620.    Transport termination is an advisory process that may be initiated by
  1621.    any member of the web. No process should intentionally quit the web
  1622.    while it has retransmittable data buffered. Stations should make
  1623.  
  1624.  
  1625.  
  1626. Armstrong, Freier & Marzullo                                   [Page 29]
  1627.  
  1628. RFC 1301              Multicast Transport Protocol         February 1992
  1629.  
  1630.  
  1631.    every reasonable attempt advise the master of their intentions to
  1632.    withdraw, as their departure may collapse the topology of the web and
  1633.    eliminate the need to carry multicast messages across network
  1634.    boundaries.
  1635.  
  1636. 3.3.1.  Voluntary quits
  1637.  
  1638.    Voluntary quit[requests] are unicast to the master's TSAP. When the
  1639.    master receives a quit from a member of the web, it responds with a
  1640.    quit[confirm] packet. At that time the member will be formally
  1641.    removed from the web. The request should be retransmitted at
  1642.    heartbeat intervals until the confirmation is received from the
  1643.    master or as many times as the web's value of retention.
  1644.  
  1645. 3.3.2.  Master quit
  1646.  
  1647.    If the master initiates the transport termination it effects all
  1648.    members of the web. The master will retain all transmit tokens and
  1649.    refuse to assign them. Once the tokens are acquired, the master will
  1650.    multicast a quit[request] to the entire web. That request should be
  1651.    acknowledged by every active member. When the master receives no
  1652.    confirmations for retention transmissions, it may assume every member
  1653.    has terminated its transport and then may follow suit.
  1654.  
  1655. 3.3.3.  Banishment
  1656.  
  1657.    If the master receives any message other than a join[request] from a
  1658.    member that it does not recognize, it should transmit a quit[request]
  1659.    with that process as a target. This covers cases where the consumer
  1660.    did not see the termination reply and retransmitted its original quit
  1661.    request, as well as unannounced and rejected consumers.
  1662.  
  1663. 3.4     Transport parameters
  1664.  
  1665.    The following section provides guidelines and rationale for selecting
  1666.    reasonable transport quality of service parameters. It also describes
  1667.    some of the reasoning behind the ranges of values presented.
  1668.  
  1669. 3.4.1.  Quality of service
  1670.  
  1671.    Active members of the web may suggest changes in the transport's
  1672.    quality of service parameters during the lifetime of the transport.
  1673.    Producers in general adjust the transport's parameters to encourage a
  1674.    higher level of throughput. Since consumers are responsible for
  1675.    certifying reliable delivery, it is expected that they will provide
  1676.    the force encouraging more reliability and stability. Both are trying
  1677.    to optimize the quality of service. The negotiation that took place
  1678.    when members joined the web included the clients' desires with
  1679.  
  1680.  
  1681.  
  1682. Armstrong, Freier & Marzullo                                   [Page 30]
  1683.  
  1684. RFC 1301              Multicast Transport Protocol         February 1992
  1685.  
  1686.  
  1687.    regards to the worst case behavior that will be tolerated. If a
  1688.    member cannot maintain the negotiated lower bound, it may asked to
  1689.    withdraw from the web. That process will be sent a unicast message
  1690.    (quit[request]) indicating that it should retire. There are
  1691.    essentially three parameters maintained by the transport that reflect
  1692.    the client's quality of service requirements: heartbeat, window and
  1693.    retention. These three parameters can be adapted by the transport to
  1694.    reflect the capability of the members, the type of application being
  1695.    supported and the network topology. When members join the web, they
  1696.    suggest values for the quality of service parameters to the master.
  1697.    If the parameters are acceptable, the master will respond with the
  1698.    web's current operating values. During the lifetime of the web, it is
  1699.    expected that the parameters be modified by its members, though they
  1700.    may never result in a quality of service less than the lower bounds
  1701.    established by the joining procedure. Producers may try to improve
  1702.    performance by reducing the heartbeat interval and increasing the
  1703.    window size. This will have the effect of increasing the resources
  1704.    committed to the transport at any time. In order to keep the
  1705.    resources under control, the producer may also reduce the retention.
  1706.  
  1707.    Consumers must rely on their clients to consume the data occupying
  1708.    the resources of the transport. To do so the consumer transport
  1709.    implementation must monitor the level of committed resources to
  1710.    insure that it does not exceed its capabilities. Since MTP is a NAK
  1711.    based protocol, the consumer is required to tell the producer if a
  1712.    change in parameters is required. The new information must be
  1713.    delivered to the producer(s) before the consumer's resource situation
  1714.    becomes critical in order to avoid missing data.
  1715.  
  1716.    For more stable operation, consumers would try to extend the
  1717.    heartbeat interval and reduce the window. To a certain degree, they
  1718.    could also attempt to reduce the value of retention in order to
  1719.    reduce the amount of resources required to support the transport.
  1720.    However, that requires a more stringent real-time capability.
  1721.  
  1722. 3.4.2.  Selecting parameter values
  1723.  
  1724.    The value of heartbeat is approximately the transport time constant.
  1725.    Assuming that the transport can be modelled as a closed loop system
  1726.    function, reaction to feedback into the transport should settle out
  1727.    in three time constants. In a transport that is constrained to a
  1728.    single network, the dominant cause of processing delay of the
  1729.    transport will most likely be page fault resolution time.
  1730.  
  1731.    For example, using a one MIP processor on a ethernet and an industry
  1732.    standard disk, the worst case page fault resolution requiring two
  1733.    seeks (one to write out a dirty page, another to swap in the new
  1734.    page) and an average seek time of 40 milliseconds, page fault
  1735.  
  1736.  
  1737.  
  1738. Armstrong, Freier & Marzullo                                   [Page 31]
  1739.  
  1740. RFC 1301              Multicast Transport Protocol         February 1992
  1741.  
  1742.  
  1743.    resolution should be less than 80 milliseconds. Allowing for some
  1744.    additional overhead and scheduling delays, two times the worst case
  1745.    page fault resolution time would appear to be the minimum suitable
  1746.    transport time constant one could expect. So,
  1747.  
  1748.            Heartbeat (minimum) = 160 - 200 milliseconds.
  1749.  
  1750.    The transmit time for a full (ethernet) packet is approximately 1.2
  1751.    milliseconds. Processing time should be less than 3 milliseconds
  1752.    (ignoring possible overlapped processing). Assuming disk access (with
  1753.    no faulting) is equivalent, and the total time per packet is the sum
  1754.    of the parts, or 8.4 milliseconds. Therefore, the theoretical maximum
  1755.    value would be approximately 17 packets per heartbeat. The transport
  1756.    should be capable of approximately 120 packets per second, or 19.2
  1757.    packets per heartbeat.
  1758.  
  1759.            Window (maximum) = 17 - 20 packets per heartbeat.
  1760.  
  1761.    The (theoretical) throughput with these parameters in effect is 180
  1762.    kilobytes per second.
  1763.  
  1764.    Reducing retention may introduce instability because the consumers
  1765.    will have less opportunity to react to missing data. Data can be
  1766.    missed for a variety of reasons. If constrained to the local net the
  1767.    data lost due to data link corruption should be in the neighborhood
  1768.    of one packet in every 50,000 (bit error rate of approximately 10-9).
  1769.    Telephony links (between routers, for instance) exhibit similar
  1770.    characteristics. Several orders of magnitude more packets are lost at
  1771.    receiving processes, including packet switch routers, than over the
  1772.    physical links. The losses are usually a result of congestion and
  1773.    resource starvation at lower layers due to the processing of (nearly)
  1774.    back to back packets. The incidental packet loss of this type is
  1775.    virtually unavoidable. One can only require that a receiving process
  1776.    be capable of receiving some number of back to back packets
  1777.    successfully, and that number must be at least greater then the value
  1778.    of window. And beyond that the probability of success can be made as
  1779.    close to unity as required by providing the receiver the opportunity
  1780.    to observe the data multiple times.
  1781.  
  1782.    The receiving process must detect packet loss. The simplest method is
  1783.    to notice gaps in the received message/packet sequence numbers. Such
  1784.    detection should be done after receiving an end of window or other
  1785.    state transition indication. As such, the naks cannot be transmitted,
  1786.    let alone received, until the following heartbeat. In order to not
  1787.    have any single packet loss cause transport failure, the naks should
  1788.    have the opportunity to be transmitted at least twice.
  1789.  
  1790.    When the loss is detected, the nak must be transmitted and should be
  1791.  
  1792.  
  1793.  
  1794. Armstrong, Freier & Marzullo                                   [Page 32]
  1795.  
  1796. RFC 1301              Multicast Transport Protocol         February 1992
  1797.  
  1798.  
  1799.    received at the producing process in less than two heartbeats after
  1800.    the data it references was transmitted. Again, it is the detection
  1801.    time that dominates, not the transmission of the nak.
  1802.  
  1803.            Retention (minimum) = 3.
  1804.  
  1805.    The resources committed to a producing transport using the above
  1806.    assumptions are buffers sufficient for 80 packets of 1500 bytes each.
  1807.    Each buffer will be committed for 600 - 800 milliseconds.
  1808.  
  1809.    Transports that span multiple networks have unique problems. One such
  1810.    problem is that if a router drops a packet, all the processes on the
  1811.    remote network may attempt to send a nak[request] at the same time.
  1812.    That is not likely to enhance the router's quality of service.
  1813.    Furthermore, it is obvious that any one nak[request] will suffice to
  1814.    prompt the producer to retransmit the desired packet. To reduce the
  1815.    number of nak[requests] in this situation, the following scheme might
  1816.    be employed.
  1817.  
  1818.    First, extend the value of retention to a minimum value of N. Then
  1819.    use a randomizing function that returns a value between zero and N -
  1820.    2, choose how many heartbeat intervals to dally before sending the
  1821.    nak[request], thus spreading out the transmissions over time. In
  1822.    order for the method to be meaningful, the minimum value of retention
  1823.    must be adjusted.
  1824.  
  1825.            Retention (minimum) = 5 (for internet cases)
  1826.  
  1827. 3.4.3.  Caching member information
  1828.  
  1829.    In order to reduce transport member interaction and to enhance
  1830.    performance, a certain amount of caching should be employed by
  1831.    producing members. These caches may be filled by gleaning information
  1832.    from reliable sources such as multicast data or, when all else fails,
  1833.    from responses solicited from the web's master by use of the
  1834.    isMember[request]. IsMember[request] requests are unicast to a member
  1835.    that is believed to have an accurate state of the web, at least to
  1836.    the degree that it can answer the question posed. The destination of
  1837.    such a message is usually the master. But in cases where a process
  1838.    (such as the master) wants to verify that a process believes itself
  1839.    to be valid, it can assign the target TSAP and the destination to be
  1840.    the same. It is assumed that every process can verify itself.
  1841.  
  1842.    If the member receiving the isMember[request] can confirm the
  1843.    target's active membership status in the web, it responds with a
  1844.    unicast isMember[confirm]. The data field contains the credibility
  1845.    value of the confirmation, that is the time (in milliseconds) since
  1846.    the information was confirmed from a reliable source.
  1847.  
  1848.  
  1849.  
  1850. Armstrong, Freier & Marzullo                                   [Page 33]
  1851.  
  1852. RFC 1301              Multicast Transport Protocol         February 1992
  1853.  
  1854.  
  1855.    Caches are risky as the information stored in them can become stale.
  1856.    Consequently, with only a few exceptions, the entries should be aged,
  1857.    and when sufficiently old, discarded. Ideally they may be renewed by
  1858.    the same gleanable sources alluded to in the previous paragraph. If
  1859.    not, they are simply discarded and refilled when needed.
  1860.  
  1861.    Web membership may be gleaned from any packet that does not have a
  1862.    value of unknown as the destination connection identifier. A
  1863.    producing transport may extract the TSAP from such packets and either
  1864.    create or refresh local caches. Then, if in the process of
  1865.    transmitting and NAK is received from one of the members whose
  1866.    identity is cached, no explicit request will be needed to verify the
  1867.    source's membership.
  1868.  
  1869.    The explicit source of membership information is the master.
  1870.    Information can be requested by using the isMember message.
  1871.    Information gathered in that manner should be treated the same as
  1872.    gleaned information with respect to aging.
  1873.  
  1874.    The aging is a function of the transport's time constant, or
  1875.    heartbeat, and the retention. Information about a producing member
  1876.    must be cached at least as long as that producer has incomplete
  1877.    messages. It may be cached longer. The namespace for both sequence
  1878.    numbers and connection identifiers is intentionally long to insure
  1879.    that reuse of those namespaces will not likely collide.
  1880.  
  1881. A.      Appendix: MTP as an Internet Protocol transport
  1882.  
  1883.    MTP is a transport layer protocol, designed to be layered on top of a
  1884.    number of different network layer protocols.  Such a protocol must
  1885.    provide certain facilities that MTP expects.  In particular, the
  1886.    underlying network level protocol must provide "ports" or "sockets"
  1887.    to facilitate addressing of processes within a machine, and a
  1888.    mechanism for multicast addressing of datagrams.  These two
  1889.    addressing facilities are also used to formulate the NSAP for MTP on
  1890.    IP.
  1891.  
  1892. A.1     Internet Protocol multicast addressing
  1893.  
  1894.    MTP on Internet Protocol uses the Internet Protocol multicast
  1895.    mechanisms defined in RFC 1112, "Host Extensions for IP
  1896.    Multicasting".  MTP requires "Level 2" conformance described in that
  1897.    paper, for hosts which need to both send and receive multicast
  1898.    packets, both on the local net and on an internet. MTP on Internet
  1899.    Protocol uses the permanent host group address 224.0.1.9.
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Armstrong, Freier & Marzullo                                   [Page 34]
  1907.  
  1908. RFC 1301              Multicast Transport Protocol         February 1992
  1909.  
  1910.  
  1911. A.2     Encapsulation
  1912.  
  1913.    The Internet Protocol does not provide a port mechanism - ports are
  1914.    defined at the transport level instead.  In order to encapsulate MTP
  1915.    packet within Internet Protocol packets, a simple convergence or
  1916.    "bridge" protocol must be defined to run on top of Internet Protocol,
  1917.    which will provide MTP with the mechanism needed to deliver packets
  1918.    to the proper processes.  We will call this protocol the
  1919.    "MTP/Internet Protocol Bridge Protocol", or just "Bridge".  The
  1920.    protocol header is encapsulated the Internet Protocol data - the
  1921.    protocol field of the Internet Protocol packet carries the value
  1922.    indicating this packet is an MTP packet (92 decimal).  The MTP packet
  1923.    itself is encapsulated in the Bridge data. Figure A.1 shows the
  1924.    positions of the fields within the MTP packet while table A.1 defines
  1925.    the contents of those fields.
  1926.  
  1927. A.3  Fields of the bridge protocol
  1928.  
  1929.        0           7 8           15 16         23 24         31
  1930.       ----------------------------------------------------------
  1931.       |                            |                           |
  1932.       |     destination port       |     source port           |
  1933.       ----------------------------------------------------------
  1934.       |                            |                           |
  1935.       |     length                 |     checksum              |
  1936.       ----------------------------------------------------------
  1937.       |                                                        |
  1938.       |                      client data                       |
  1939.       ----------------------------------------------------------
  1940.  
  1941.                Figure A.1 MTP bridge protocol header fields
  1942.  
  1943.    destination port The port to which the packet is destined or sinked.
  1944.  
  1945.    source port The port from which the packet originates or is sourced.
  1946.  
  1947.    length      The length in octets of the bridged packet, including
  1948.                header and all data (the MTP packet).  The minimum value
  1949.                in this field is 8, the maximum is 65535.  The length
  1950.                does not include any padding bytes that were used to
  1951.                compute the checksum.  Note that though this field allows
  1952.                for very long packets, most networks have significantly
  1953.                shorter maximum frame sizes - the allowable and optimal
  1954.                packet size must be determined by means beyond the scope
  1955.                of this specification.
  1956.  
  1957.    checksum    The 16 bit one's compliment of the one's compliment sum
  1958.                of the entire bridge protocol header and data, padded
  1959.  
  1960.  
  1961.  
  1962. Armstrong, Freier & Marzullo                                   [Page 35]
  1963.  
  1964. RFC 1301              Multicast Transport Protocol         February 1992
  1965.  
  1966.  
  1967.                with a zero octet (if necessary) to make multiple 16 bit
  1968.                quanities. A computed checksum of all zeros should be
  1969.                changed to all ones.  The checksum field is optional -
  1970.                all zeros in the field indicate that checksums are not in
  1971.                use.
  1972.  
  1973.    data        The data field is the field that carries the actual
  1974.                transport data. A single MTP packet will be carried the
  1975.                data field of each bridge packet.
  1976.  
  1977. A.4     Relationship to other Internet Protocol Transports
  1978.  
  1979.    The astute reader might note that the MTP/Bridge Protocol looks much
  1980.    like the User Datagram Protocol (UDP).  UDP itself was not used
  1981.    because the protocol field in the Internet Protocol packet should
  1982.    reflect the fact that the higher level protocol of interest is MTP.
  1983.  
  1984. References
  1985.  
  1986.    AFM91   Armstrong, S., A. Freier and K. Marzullo, "MTP: An Atomic
  1987.            Multicast Transport Protocol", Xerox Webster Research Center
  1988.            technical report X9100359, March 1991.
  1989.  
  1990.    Bog83   Boggs, D., "Internet Broadcasting", Xerox PARC technical
  1991.            report CSL-83-3, October 1983.
  1992.  
  1993.    BSTM79  Boggs, D., J. Shoch, E. Taft, and R. Metcalfe, "Pup: An
  1994.            Internetwork Architecture", IEEE Transactions on
  1995.            Communications, COM-28(4), pages 612-624. April 1980.
  1996.  
  1997.    DIX82   Digital Equipment Corp., Intel Corp., Xerox Corp., "The
  1998.            Ethernet, a Local Area Network: Data Link and Physical Layer
  1999.            Specifications", September 1982.
  2000.  
  2001.    CLZ87   Clark, D., M. Lambert, and L. Zhang, "NETBLT: A high
  2002.            throughput transport protocol", In Proceedings of ACM SIGCOMM
  2003.            '87 Workshop, pages 353-359, 1987.
  2004.  
  2005.    CM87    Chang J., and M. Maxemchuck. "Atomic broadcast",  ACM
  2006.            Transactions on Computer Systems, 2(3):251-273, August 1987.
  2007.  
  2008.    Cri88   Cristian, F., "Reaching agreement on processor group
  2009.            membership in synchronous distributed systems",  In
  2010.            Proceedings of the 18th International Conference on Fault-
  2011.            Tolerant Computing. IEEE TOCS, 1988.
  2012.  
  2013.    Dee89   Deering, S., "Host Extensions for IP Multicasting", RFC 1112,
  2014.            Stanford University, August 1989.
  2015.  
  2016.  
  2017.  
  2018. Armstrong, Freier & Marzullo                                   [Page 36]
  2019.  
  2020. RFC 1301              Multicast Transport Protocol         February 1992
  2021.  
  2022.  
  2023.    Fre84   Freier, A., "Compatability and interoperability", Open letter
  2024.            to XNS Interest Group, Xerox Systems Developement Division,
  2025.            December 13, 1984.
  2026.  
  2027.    JB89    Joseph T., and K. Birman, "Reliable Broadcast Protocols",
  2028.            pages 294-318, ACM Press, New York, 1989.
  2029.  
  2030.    Pos81   Postel, J., "Transmission Control Protocol - DARPA Internet
  2031.            Program Protocol Specification", RFC 793, DARPA, September
  2032.            1981.
  2033.  
  2034.    Xer81   Xerox Corp., "Internet Transport Protocols", Xerox System
  2035.            Integration Standard 028112, Stamford, Connecticut. December
  2036.            1981.
  2037.  
  2038. Footnotes
  2039.  
  2040.    [1] The network layer is not specified by MTP. One of the goals is to
  2041.    specify a transport that can be implemented with equal functionality
  2042.    on many network architectures.
  2043.  
  2044.    [2] There's only one such multicast connection identifier per web. If
  2045.    there are multiple processes on the same machine participating in a
  2046.    web, the transport must descriminate between those processes by using
  2047.    the connnection identifier.
  2048.  
  2049.    [3] Determining the network service access point (NSAP) for a given
  2050.    instantiation of a web is not addressed by this protocol. This
  2051.    document may define some policy, but the actual means are left for
  2052.    other mechanisms.
  2053.  
  2054.    [4] Best effort delivery is also known as highly reliable delivery.
  2055.    It is somewhat unique that the qualifying adjective highly weakens
  2056.    the definition of reliable in this context.
  2057.  
  2058.    [5] The resource being flow controlled is packets carrying client
  2059.    data.  Consequently, full data units provide the greatest efficiency.
  2060.  
  2061.    [6] There seems to be an opportunity to suppress retransmissions to
  2062.    networks that were not represented in the set of naks received.
  2063.  
  2064. Security Considerations
  2065.  
  2066.    Security issues are not discussed in this memo.
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074. Armstrong, Freier & Marzullo                                   [Page 37]
  2075.  
  2076. RFC 1301              Multicast Transport Protocol         February 1992
  2077.  
  2078.  
  2079. Authors' Addresses
  2080.  
  2081.    Susan M. Armstrong
  2082.    Xerox Webster Research Center
  2083.    800 Phillips Rd. MS 128-27E
  2084.    Webster, NY 14580
  2085.  
  2086.    Phone: (716) 422-6437
  2087.    EMail: armstrong@wrc.xerox.com
  2088.  
  2089.  
  2090.    Alan O. Freier
  2091.    Apple Computer, Inc.
  2092.    20525 Mariani Ave. MS 3-PK
  2093.    Cupertino, CA 95014
  2094.  
  2095.    Phone: (408) 974-9196
  2096.    EMail: freier@apple.com
  2097.  
  2098.  
  2099.    Keith A. Marzullo
  2100.    Cornell University
  2101.    Department of Computer Science
  2102.    Upson Hall
  2103.    Ithaca, NY 14853-7501
  2104.  
  2105.    Phone: (607) 255-9188
  2106.    EMail: marzullo@cs.cornell.edu
  2107.  
  2108.       Keith Marzullo is supported in part by the Defense Advanced
  2109.       Research Projects Agency (DoD) under NASA Ames grant number NAG
  2110.       2-593, Contract N00140-87-C-8904.  The views, opinions and
  2111.       findings contained in this report are those of the authors and
  2112.       should not be construed as an official Department of Defense
  2113.       position, policy, or decision.
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130. Armstrong, Freier & Marzullo                                   [Page 38]
  2131.  
  2132.