rfc1301.txt

来自「RFC 的详细文档!」· 文本 代码 · 共 1,474 行 · 第 1/5 页

TXT
1,474
字号
   |                  multicast connection                  |      |
   |                  identifier                            |      |
   ----------------------------------------------------------    -----

                           Figure 3. join packet

   The join[confirm] will also contain the multicast connection
   identifier.  This must be used to form the TSAP that will be the
   destination for all multicast messages for the transport. The source



Armstrong, Freier & Marzullo                                   [Page 16]

RFC 1301              Multicast Transport Protocol         February 1992


   of the join[confirm] message will be the master's TSAP and must be
   recorded by the member for later use.

   The master must be in possession of all the transmit tokens when it
   sends a join[confirm]. Requiring the master to have the transmit
   tokens insures that the joining member will enter the web and observe
   only complete messages. It also permits a notification of the
   master's client of the join so that application state may be
   automatically sent to the newly joining member. The newly joined
   member may be on a network not previously represented in the web's
   membership, thus requiring a new multicast TSAP be added to the
   existing list. The entire list will be conveyed in the data field of
   all subsequent token[confirm] messages (described later).

3.2     Maintaining data consistency

   The transport is responsible for maintaining the consistency of the
   data submitted for delivery by producing clients. The actual client
   data, while representing the bulk of the information that flows
   through the web, is accompanied by significant amounts of protocol
   state information. In addition to the state information piggybacked
   with the client data, there is a minimum amount of protocol packets
   that are purely for use by the transport, invisible to the transport
   client.

3.2.1.  Transmit tokens

   Before any process may transmit client data or state it must first
   possess a transmit token. It may acquire the token by transmitting a
   token[request] to the master. Requests should be unicast to the
   master's TSAP and should be retransmitted at intervals approximately
   equal to the heartbeat. Since it is the central source for a transmit
   token, the master may apply some fairness algorithms to the passing
   of permission to transmit. At a minimum the requests should be queued
   in a first in, first out order. Duplicate requests from a single
   member should be ignored, keeping instead the first unhonored
   request. When appropriate, the master will send a member with a
   request pending a token[confirm].  The data field of the response
   contains all the multicast TSAPs that are represented in the current
   web at that point in time.

   If the master detects no data or heartbeat messages being transmitted
   into the web it will assume the token is lost, presumably because the
   member holding the token has failed or has become partitioned away
   from the master. In such cases, the master may attempt to confirm the
   state of the process (perhaps by sending isMember[request]). If the
   member does not respond it is removed from the active members of the
   web, the message is marked as rejected, the token is assumed by the



Armstrong, Freier & Marzullo                                   [Page 17]

RFC 1301              Multicast Transport Protocol         February 1992


   master.

   Figure 4 shows a timing diagram of a token pass. Increasing time is
   towards the bottom of the figure. In this figure, process A has a
   token, and process B requests a token when there are no free tokens.

                           A    master    B
    "A" multicasts data    |             |  "B" requests
                           |\     |      |  transmit token
                           | \    |     /|
                           |  \   |    / |
                           |   \  |   /  |
    "A" multicasts data    |    \ |  /   |  "B" retransmits
    w/eom set              |\    \| /    |  token request
                           | \    \V    /|
                           |  \   |\   / |
                           |   \  | V /  |
                           |    \ |  /   |
                           |     \| /    |
                           |      \V     |
                           |      |\     |
                           |      | V    |
                           |      |\     |  Master assigns
                           |      | \    |  token to "B"
                           |      |  \   |
                           |      |   \  |
                           |      |    \ |
                           |      |     V|
                           |      |      |
                           |      |     /|  "B" multicasts
                           |      |    / |  data
                           |      |   /  |
                           |      |  /   |
                           |      | /    |
                           |      |/     |
                           |      /      |
                           |     /|      |
                           |    V |      |
                           |      |      |

                     Figure 4. Acquiring the token

   Token packets, like other control packets, do not consume sequence
   numbers. Hence, the master must be able to use another mechanism to
   determine whether multiple token[request] from a single member are
   actually requests for a separate token, or are a retransmission of a
   token[request].  To carry out this obligation, the master and the
   members must have an implicit understanding of each other's state.



Armstrong, Freier & Marzullo                                   [Page 18]

RFC 1301              Multicast Transport Protocol         February 1992


    0           7 8           15 16         23 24         31
   ----------------------------------------------------------    -----
   |  protocol    |    packet   |    type     |    client   |      |
   |  version     |    type     |    modifier |    channel  |      |
   ----------------------------------------------------------      |
   |                                                        |      |
   |              source connection identifier              |      |
   ----------------------------------------------------------      |
   |                                                        |      |
   |              destination connection identifier         |
   ---------------------------------------------------------- transport
   |                                                        |    header
   |              message acceptance criteria               |
   ----------------------------------------------------------      |
   |                                                        |      |
   |              heartbeat                                 |      |
   ----------------------------------------------------------      |
   |                            |                           |      |
   |        window              |        retention          |      |
   ----------------------------------------------------------    -----
   |                                                        |      |
   |                                                        |      |
   |                   TSAPs of all networks                |
   |                   represented in the web               |    data
   |                   membership                           |
   |                                                        |      |
   |                                                        |      |
   ----------------------------------------------------------    -----

                          Figure 5. token packet

   Assume that the token, as viewed by the master, has three states:

   idle        The token is not currently assigned. Specifically the
               message number that it defines is not represented in the
               current message acceptance vector.

   pending     The token has been assigned by the master via a
               token[confirm] packet, but the master has not yet seen
               any data packets to indicate that the from the producing
               member received the notification.

   busy        The token has been assigned and the master has seen data
               packets carrying the assigned message number. The message
               comprised by those packets is still represented in the
               message acceptance vector.

   Furthermore, a token that is not idle also has associated with its



Armstrong, Freier & Marzullo                                   [Page 19]

RFC 1301              Multicast Transport Protocol         February 1992


   state the TSAP of the process that owns (or owned) the token.

   Based on this state, the master will respond to any process that has
   a token in pending state with a reassignment of that token. This is
   based on the assumption that the original token[confirm] was not
   received by the requesting process. The only other possibility is
   that the process did receive the token and transmitted data packets
   using that token, but the master did not see them. But data messages
   are by design multi-packet messages, padded with empty packets if
   necessary. The possibility of the master missing all of the packets
   of a message is considered less than the possibility of the
   requesting process missing a single token[confirm] packet.

   The process requesting tokens must consider the actions of the master
   and what prompted them. In most cases the assumptions made by the
   master will be correct. However, there are two ambiguous situations.
   There is the situation that the master is most directly addressing,
   not knowing whether the requesting process has failed to observe the
   token[confirm] or the master has failed to see data packets
   transmitted by the producing process. There is also the possibility
   that the requesting process timed out too quickly and the
   retransmission of the token[request] passed the token[confirm] in the
   night. In any case the producing process may find itself in
   possession of a token for which it has no need. These can be
   dismissed by sending an empty[cancel] packet.

   Another possibility is that the requesting process has actually made
   use of the assigned token and is requesting another token. Unless the
   master has observed data using the token, the master will still
   consider the token pending. Therefore, a process that receives a
   duplicate token[confirm] should interpret it as a nak and retransmit
   any data packets previously sent using the token's message sequence
   number.

3.2.2.  Data transmission

   Data is provided by the transport client in the form of uninterpreted
   bytes. The bytes are encapsulated in packets immediately following
   the protocol's fixed overhead fields. The packet may have any number
   of data bytes between zero and the maximum number of bytes of a
   network protocol packet minus the network overhead and the fixed
   transport overhead.  Every packet that consumes a sequence number
   must contain either client data or client state transitions such as
   the end of message indicator or a subchannel transition.

   Packets are transmitted in bursts of packets called windows. The
   protocol guarantees that no more than the current value of window
   data packets will be transmitted by a single process during a



Armstrong, Freier & Marzullo                                   [Page 20]

RFC 1301              Multicast Transport Protocol         February 1992


   heartbeat.  Every packet transmitted always contains the latest
   heartbeat, window and retention information. If full packets are
   unavailable [5], empty[dally] messages should be transmitted instead.
   The only packets that will be transmitted containing less than
   maximum capacity will be data[eom] or those containing client
   subchannel transitions.













































Armstrong, Freier & Marzullo                                   [Page 21]

RFC 1301              Multicast Transport Protocol         February 1992

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?