⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2149.txt

📁 <VC++网络游戏建摸与实现>源代码
💻 TXT
📖 第 1 页 / 共 3 页
字号:
RFC 2149             Multicast Server Architectures             May 1997   After the active MCS registers to support a layer 3 group, it uses   MARSREQUEST and MARS-MULTI to obtain information about group   membership from the MARS. These messages are also used during the   revalidation phase (section 4.5) and when no outgoing VC exists for a   received layer 3 packet (section 4.3).   On registering to support a particular layer 3 group, the MCS MUST   send a MARSREQUEST to the MARS. The mechanism to retrieve group   membership and the format of MARSREQUEST and MARS-MULTI is described   in section 5.1.1 and 5.1.2 of [GA96] respectively.  The MCS MUST use   this mechanism for sending (and retransmitting) the MARSREQUEST and   processing the returned MARSMULTI(/s).  The MARS-MULTI MUST be   received correctly, and the MCS MUST use it to initialize its   knowledge of group membership.   On successful reception of a MARSMULTI, the MCS MUST attempt to open   the outgoing point-to-multipoint VC using the mechanism described in   section 5.1.3 of [GA96], if any group members exist.  The MCS however   MUST start transmitting data on this VC after it has opened it   successfully with at least one of the group members as a leaf, and   after it has attempted to add all the group members at least once.4.3 Usage of outgoing point-to-multipoint VC   Cluster members which are sources for MCS-supported layer 3 groups   send (encapsulated) layer 3 packets to the designated MCSs.  An MCS,   on receiving them from cluster members, has to send them out over the   specific point-to-multipoint VC for that layer 3 group.  This VC is   setup as described in the previous section.  However, it is possible   that no group members currently exist, thus causing no VC to be   setup.  So an MCS may have no outgoing VC to forward received layer 3   packets on, in which case it MUST initiate the MARSREQUEST and MARS-   MULTI sequence described in the previous section.  This new MARSMULTI   could contain new members, whose MARSSJOINs may have been not   received by the MCS (and the loss not detected due to absence of   traffic on the ServerControlVC).   If an MCS learns that there are no group members (MARSNAK received   from MARS), it MUST delay sending out a new MARSREQUEST for that   group for a period no less than 5 seconds and no more than 10   seconds.   Layer 3 packets received from cluster members, while no outgoing   point-to-multipoint VC exists for that group, MUST be silently   dropped after following the guidelines in the previous paragraphs.   This might result in some layer 3 packets being lost until the VC is   setup.Talpade & Ammar              Informational                      [Page 7]RFC 2149             Multicast Server Architectures             May 1997   Each outgoing point-to-multipoint VC has a revalidate flag associated   with it.  This flag MUST be checked whenever a layer 3 packet is sent   out on that VC. No action is taken if it is not set.  If it is set,   the packet is sent out, the revalidation procedure (section 4.5.3)   MUST be initiated for this group, and the flag MUST be reset.   In case of error on a point-to-multipoint VC, the MCS MUST initiate   revalidation procedures for that VC as described in section 4.5.3.   Once a point-to-multipoint VC has been setup for a particular layer 3   group, the MCS MUST hold the VC open and mark it as the outgoing path   for any subsequent layer 3 packets being sent for that group address.   A point-to-multipoint VC MUST NOT have an activity timer associated   with it.  It is to remain up at all times, unless the MCS explicitly   stops supporting that layer 3 group, or no more leaves exist on the   VC which causes it to be shut down.  The VC is kept up inspite of   non-existent traffic to reduce the delay suffered by MCS supported   groups.  If the VC were to be shut down on absence of traffic, the VC   reestablishment procedure (needed when new traffic for the layer 3   group appears) would further increase the initial delay, which can be   potentially higher than the VC mesh approach anyway as two VCs need   to be setup in the MCS case (one from source to MCS, second from MCS   to group) as opposed to only one (from source to group) in the VC   Mesh approach.  This approach of keeping the VC from the MCS open   even in the absense of traffic is experimental.  A decision either   way can only be made after gaining experience (either through   implementation or simulation) about the implications of keeping the   VC open.   If the MCS supports multiple layer 3 groups, it MUST follow the   procedure outlined in the four previous subsections for each group   that it is an active MCS. Each incoming data AALSDU MUST be examined   for determining its recipient group, before being forwarded onto the   appropriate outgoing point-to-multipoint VC.4.3.1 Group member dropping off a point-to-multipoint VC   AN ERRL-DROP may be received during the lifetime of a point-to-   multipoint VC indicating that a leaf node has terminated its   participation at the ATM level.  The ATM endpoint associated with the   ERRL-DROP MUST be removed from the locally held set associated with   the VC. The revalidate flag on the VC MUST be set after a random   interval of 1 through 10 seconds.   If an ERRL-RELEASE is received for a VC, then the entire set is   cleared and the VC considered to be completely shutdown.  A new VC   for this layer 3 group will be established only on reception of new   traffic for the group (as described in section 4.3).Talpade & Ammar              Informational                      [Page 8]RFC 2149             Multicast Server Architectures             May 19974.4 Processing of MARSSJOIN and MARS-SLEAVE   The MARS transmits equivalent MARSSJOIN/MARS-SLEAVE on the   ServerControlVC when it receives MARSJOIN/MARS-LEAVE from cluster   members.  The MCSs keep track of group membership updates through   these messages.  The format of these messages are identical to   MARSJOIN and MARS-LEAVE, which are described in section 5.2.1 of   [GA96].  It is sufficient to note here that these messages carry the   ATM address of the node joining/leaving the group(/s), the group(/s)   being joined or left, and a Server Sequence Number from MARS.   When a MARSSJOIN is seen which refers to (or encompasses) a layer 3   group (or groups) supported by the MCS, the following action MUST be   taken.  The new member's ATM address is extracted from the MARSSJOIN.   An L-MULTIADD is issued for the new member for each of those referred   groups which have an outgoing point-to-multipoint VC. An LMULTI-RQ is   issued for the new member for each of those refered groups which have   no outgoing VCs.   When a MARSSLEAVE is seen that refers to (or encompasses) a layer 3   group (or groups) supported by the MCS, the following action MUST be   taken.  The leaving member's ATM address is extracted.  An LMULTI-   DROP is issued for the member for each of the refered groups which   have an outgoing point-to-multipoint VC.   There is a possibility of the above requests (LMULTI-RQ or LMULTIADD   or LMULTI-DROP) failing.  The UNI 3.0/3.1 failure cause must be   returned in the ERRL-RQFAILED signal from the local signaling entity   to the AAL User.  If the failure cause is not 49 (Quality of Service   unavailable), 51 (user cell rate not available - UNI 3.0), 37 (user   cell rate not available - UNI 3.1), or 41 (Temporary failure), the   endpoint's ATM address is dropped from the locally held view of the   group by the MCS. Otherwise, the request MUST be re-attempted with   increasing delay (initial value between 5 to 10 seconds, with delay   value doubling after each attempt) until it either succeeds or the   multipoint VC is released or a MARSSLEAVE is received for that group   member.  If the VC is open, traffic on the VC MUST continue during   these attempts.   MARSSJOIN and MARS-SLEAVE are processed differently if multiple MCSs   share the members of the same layer 3 group (section 5.4).  MARSSJOIN   and MARSSLEAVE that do not refer to (or encompass) supported groups   MUST be used to track the Server Sequence Number (section 4.5.1), but   are otherwise ignored.Talpade & Ammar              Informational                      [Page 9]RFC 2149             Multicast Server Architectures             May 19974.5 Revalidation Procedures   The MCS has to initiate revalidation procedures in case of certain   failures or errors.4.5.1 Server Sequence Number   The MCS needs to track the Server Sequence Number (SSN) in the   messages received on the ServerControlVC from the MARS. It is carried   in the mar$msn of all messages (except MARSNAK) sent by the MARS to   MCSs.  A jump in SSN implies that the MCS missed the previous   message(/s) sent by the MARS. The MCS then sets the revalidate flag   on all outgoing point-to-multipoint VCs after a random delay of   between 1 and 10 seconds, to avoid all MCSs inundating the MARS   simultaneously in case of a more general failure.   The only exception to the rule is if a sequence number is detected   during the establishment of a new group's VC (i.e.  a MARSMULTI was   correctly received, but its mar$msn indicated that some previous MARS   traffic had been missed on ClusterControlVC). In this case every open   VC, EXCEPT the one just being established, MUST have its revalidate   flag set at some random interval between 1 and 10 seconds from the   time the jump in SSN was detected.  (The VC being established is   considered already validated in this case).   Each MCS keeps its own 32 bit MCS Sequence Number (MSN) to track the   SSN.  Whenever a message is received that carries a mar$msn field,   the following processing is performed:        Seq.diff = mar$msn - MSN        mar$msn -> MSN        (.... process MARS message ....)        if ((Seq.diff != 1) && (Seq.diff != 0))              then (.... revalidate group membership information ....)   The mar$msn value in an individual MARSMULTI is not used to update   the MSN until all parts of the MARSMULTI (if > 1) have arrived.  (If   the mar$msn changes during reception of a MARSMULTI series, the   MARS-MULTI is discarded as described in section 5.1.1 of [GA96]).   The MCS sets its MSN to zero on startup.  It gets the current value   of SSN when it receives the copy of the registration MARSMSERV back   from the MARS.Talpade & Ammar              Informational                     [Page 10]RFC 2149             Multicast Server Architectures             May 19974.5.2 Reconnecting to the MARS   The MCSs are assumed to have been configured with the ATM address of   at least one MARS at startup.  MCSs MAY choose to maintain a table of   ATM addresses, each address representing alternative MARS which will   be contacted in case of failure of the previous one.  This table is   assumed to be ordered in descending order of preference.   An MCS will decide that it has problems communicating with a MARS if:      * It fails to establish a point-to-point VC with the MARS.      * MARSREQUEST generates no response (no MARSMULTI or MARS-NAK      returned).      * ServerControlVC fails.      * MARSMSERV or MARSUNSERV do not result in their respective copies      being        received.   (reconnection as in section 5.4 in [GA96], with MCS-specific actions   used where needed).4.5.3 Revalidating a point-to-multipoint VC   The revalidation flag associated with a point-to-multipoint VC is   checked when a layer 3 packet is to be sent out on the VC.   Revalidation procedures MUST be initiated for a point-to-multipoint   VC that has its revalidate flag set when a layer 3 packet is being   sent out on it.  Thus more active groups get revalidated faster than   less active ones.  The revalidation process MUST NOT result in   disruption of normal traffic on the VC being revalidated.   The revalidation procedure is as follows.  The MCS reissues a   MARSREQUEST for the VC being revalidated.  The returned set of   members is compared with the locally held set; LMULTI-ADDs MUST be   issued for new members, and LMULTI-DROPs MUST be issued for non-   existent ones.  The revalidate flag MUST be reset for the VC.5 Multiple MCSs for a layer 3 group   Having a single MCS for a layer 3 group can cause it to become a   single point of failure and a bottleneck for groups with large   numbers of active senders.  It is thus desirable to introduce a level   of fault tolerance by having multiple MCS per group.  Support for   load sharing is not introduced in this document as to reduce the   complexity of the protocol.Talpade & Ammar              Informational                     [Page 11]RFC 2149             Multicast Server Architectures             May 19975.1 Outline   The protocol described in this document offers fault tolerance by   using multiple MCSs for the same group.  This is achieved by having a   standby MCS take over from a failed MCS which had been supporting the   group.  The MCS currently supporting a group is refered to as the   active MCS, while the one or more standby MCSs are refered to as   inactive MCSs.  There is only one active MCS existing at any given   instant for an MCS-supported group.  The protocol makes use of the   HELLO messages as described in [LA96].   To reduce the complexity of the protocol, the following operational   guidelines need to be followed.  These guidelines need to be enforced   by out-of-band means which are not specified in this document and can   be implementation dependent.      * The set of (one or more) MCSs ("mcslist") that support a        particular IP Multicast group is predetermined and fixed.  This        set MUST be known to each MCS in the set at startup, and the        ordering of MCSs in the set is the same for all MCSs in the set.        An implementation of this would be to maintain the set of ATM        addresses of the MCSs in a file, an identical copy of which is        kept at each MCS in the set.      * All MCSs in "mcslist" have to be started up together, with the        first MCS in "mcslist" being the last to be started.      * A failed MCS cannot be started up again.5.2 Discussion of Multiple MCSs in operation   An MCS on startup determines its position in the "mcslist".  If the   MCS is not the first in "mcslist", it does not register for   supporting the group with the MARS. If the MCS is first in the set,   it does register to support the group.Talpade & Ammar              Informational                     [Page 12]RFC 2149             Multicast Server Architectures             May 1997

⌨️ 快捷键说明

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