📄 rfc2149.txt
字号:
The first MCS thus becomes the active MCS and supports the group as
described in section 4. The active MCS also opens a point-to-
multipoint VC (HelloVC) to the remaining MCSs in the set (the
inactive MCSs). It starts sending HELLO messages on this VC at a
fixed interval (HelloInterval seconds). The inactive MCSs maintain a
timer to keep track of the last received HELLO message. If an
inactive MCS does not receive a message within HelloInterval*
DeadFactor seconds (values of HelloInterval and DeadFactor are the
same at all the MCSs), or if the HelloVC is closed, it assumes
failure of the active MCS and attempts to elect a new one. The
election process is described in section 5.5.
If an MCS is elected as the new active one, it registers to support
the group with the MARS. It also initiates the transmission of HELLO
messages to the remaining inactive MCSs.
5.3 Inter-MCS control messages
The protocol uses HELLO messages in the heartbeat mechanism, and also
during the election process. The format of the HELLO message is
based on that described in [LA96]. The Hello message type code is 5.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender Len | Recvr Len | State | Type | unused |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HelloInterval | DeadFactor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IP Multicast address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sender ATM address (variable length) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Receiver ATM address (variable length) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Sender Len
This field holds the length in octets of the Sender ATM address.
Recvr Len
This field holds the length in octets of the Receiver ATM
address.
State
Currently two states: No-Op (0x00) and Elected (0x01).
It is used by a candidate MCS to indicate if it was successfully
elected.
Talpade & Ammar Informational [Page 13]
RFC 2149 Multicast Server Architectures May 1997
Type
This is the code for the message type.
HelloInterval
The hello interval advertises the time between sending of
consecutive Hello Messages by an active MCS. If the time between
Hello messages exceeds the HelloInterval then the Hello is to be
considered late by the inactive MCS.
DeadFactor
This is a multiplier to the HelloInterval. If an inactive MCS
does not receive a Hello message within the interval
HelloInterval*DeadFactor from an active MCS that advertised
the HelloInterval then the inactive MCS MUST consider the active
one to have failed.
IP Multicast address
This field is used to indicate the group to associate the HELLO
message with. It is useful if MCSs can support more than one
group.
Sender ATM address
This is the protocol address of the server which is sending the
Hello.
Receiver ATM address
This is the protocol address of the server which is to Reply to
the Hello. If the sender does not know this address then the
sender sets it to zero. (This happens in the HELLO messages sent
from the active MCS to the inactive ones, as they are multicast
and not sent to one specific receiver).
Talpade & Ammar Informational [Page 14]
RFC 2149 Multicast Server Architectures May 1997
5.4 The Multiple MCS protocol
As is indicated in section 5.1, all the MCSs supporting the same IP
Multicast group MUST be started up together. The set of MCSs
("mcslist") MUST be specified to each MCS in the set at startup.
After registering to support the group with the MARS, the first MCS
in the set MUST open a point-to-multipoint VC (HelloVC) with the
remaining MCSs in the "mcslist" as leaves, and thus assumes the role
of active MCS. It MUST send HELLO messages HelloInterval seconds
apart on this VC. The Hello message sent by the active MCS MUST have
the Receiver Len set to zero, the State field set to "Elected", with
the other fields appropriately set. The Receiver ATM address field
does not exist in this HELLO message. The initial value of
HelloInterval and DeadFactor MUST be the same at all MCSs at startup.
The active MCS can choose to change these values by introducing the
new value in the HELLO messages that are sent out. The active MCS
MUST support the group as described in section 4.
The other MCSs in "mcslist" determine the identity of the first MCS
from the "mcslist". They MUST NOT register to support the group with
the MARS, and become inactive MCSs. On startup, an inactive MCS
expects HELLO messages from the active MCS. The inactive MCS MUST
terminate the HelloVC. A timer MUST be maintained, and if the
inactive MCS does not receive HELLO message from the active one
within a period HelloInterval*DeadFactor seconds, it assumes that the
active MCS died, and initiates the election process as described in
section 5.5. If a HELLO message is received within this period, the
inactive MCS does not initiate any further action, other than
restarting the timer. The inactive MCSs MUST set their values of
HelloInterval and DeadFactor to those specified by the active MCS in
the HELLO messages.
In case of an MCS supporting multiple groups, it MUST register to
support those groups for which it is the first MCS, and MUST NOT
register for other groups. A MARSMSERV with multiple <min, max>
pairs may be used for registering multiple disjoint sets of groups.
Support MUST be provided for the use of a single "mcslist" for more
than one group. This is intended to address the case wherein an MCS
is intended to support multiple groups, with other MCSs acting as
backups. This subverts the need for using a different "mcslist" for
each group being supported by the same set of MCSs.
On failure of the active MCS, a new MCS assumes its role as described
in section 5.5. In this case, the remaining inactive MCSs will
expect HELLO messages from this new active MCS as described in the
previous paragraph.
Talpade & Ammar Informational [Page 15]
RFC 2149 Multicast Server Architectures May 1997
5.5 Failure handling
5.5.1 Failure of active MCS
The failure of the active MCS is detected by the inactive MCSs if no
HELLO message is received within an interval of
HelloInterval*DeadFactor seconds, or if the HelloVC is closed. In
this case the next MCS in "mcslist" becomes the candidate MCS. It
MUST open a point-to-multipoint VC to the remaining inactive MCSs
(HelloVC) and send a HELLO message on it with the State field set to
No-Op. The rest of the message is formatted as described earlier.
On receiving a HELLO message from a candidate MCS, an inactive MCS
MUST open a point-to-point VC to that candidate. It MUST send a
HELLO message back to it, with the Sender and Receiver fields
appropriately set (not zero), and the State field being No-Op. If a
HELLO message is received by an inactive MCS from a non-candidate
MCS, it is ignored. If no HELLO message is received from the
candidate with the State field set to "Elected" in HelloInterval
seconds, the inactive MCS MUST retransmit the HELLO. If no HELLO
message with State field set to "Elected" is received by the inactive
MCSs within an interval of HelloInterval*DeadFactor seconds, the next
MCS in "mcslist" is considered as the candidate MCS. Note that the
values used for HelloInterval and DeadFactor in the election phase
are the default ones.
The candidate MCS MUST wait for a period of HelloInterval*DeadFactor
seconds for receiving HELLO messages from inactive MCSs. It MUST
transmit HELLO messages with State field set to No-Op at
HelloInterval seconds interval during this period. If it receives
messages from atleast half of the remaining inactive MCSs during this
period, it considers itself elected and assumes the active MCS role.
It then registers to support the group with the MARS, and starts
sending HELLO messages at HelloInterval second intervals with State
field set to "Elected" on the already existing HelloVC. The active
MCS can then alter the HelloInterval and DeadFactor values if
desired, and communicate the same to the inactive MCSs in the HELLO
message.
5.5.2 Failure of inactive MCS
If an inactive MCS drops off the HelloVC, the active MCS MUST attempt
to add that MCS back to the VC for three attempts, spaced
HelloInterval*DeadFactor seconds apart. If even the third attempt
fails, the inactive MCS is considered dead.
Talpade & Ammar Informational [Page 16]
RFC 2149 Multicast Server Architectures May 1997
An MCS, active or inactive, MUST NOT be started up once it has
failed. Failed MCSs can only be started up by manual intervention
after shutting down all the MCSs, and restarting them together.
5.6 Compatibility with future MARS and MCS versions
Future versions of MCSs can be expected to use an enhanced MARS for
load sharing and fault tolerance ([TA96]). The MCS architecture
described in this document is compatible with the enhanced MARS and
the future MCS versions. This is because the active MCS is the only
one which communicates with the MARS about the group. Hence the
active MCS will only be informed by the enhanced MARS about the
subset of the group that it is to support. Thus MCSs conforming to
this document are compatible with [GA96] based MARS, as well as
enhanced MARS.
6 Summary
This document describes the architecture of an MCS. It also provides
a mechanism for using multiple MCSs per group for providing fault
tolerance. This approach can be used with [GA96] based MARS server
and clients, without needing any change in their functionality. It
uses the HELLO packet format as described in [LA96] for the heartbeat
messages.
7 Acknowledgements
We would like to acknowledge Grenville Armitage (Bellcore) for
reviewing the document and suggesting improvements towards
simplifying the multiple MCS functionalities. Discussion with Joel
Halpern (Newbridge) helped clarify the multiple MCS problem. Anthony
Gallo (IBM RTP) pointed out security issues that are not adequately
addressed in the current document. Arvind Murching (Microsoft)
flagged a potential show stopper in section 4.1.2.
8 Authors' Address
Rajesh Talpade
College of Computing
Georgia Institute of Technology
Atlanta, GA 30332-0280
Phone: (404)-894-6737
Email: taddy@cc.gatech.edu
Talpade & Ammar Informational [Page 17]
RFC 2149 Multicast Server Architectures May 1997
Mostafa H. Ammar
College of Computing
Georgia Institute of Technology
Atlanta, GA 30332-0280
Phone: (404)-894-3292
Email: ammar@cc.gatech.edu
9 References
[GA96] Armitage, G.J., "Support for Multicast over UNI 3.0/3.1 based
ATM networks", RFC 2022, November 1996.
[BK95] Birman, A., Kandlur, D., Rubas, J., "An extension to the MARS
model", Work in Progress.
[LM93] Laubach, M., "Classical IP and ARP over ATM", RFC1577,
Hewlett-Packard Laboratories, December 1993.
[LA96] Luciani, J., G. Armitage, and J. Halpern, "Server Cache
Synchronization Protocol (SCSP) - NBMA", Work in Progress.
[TA96] Talpade, R., and Ammar, M.H., "Multiple MCS support using an
enhanced version of the MARS server.", Work in Progress.
Talpade & Ammar Informational [Page 18]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -