home *** CD-ROM | disk | FTP | other *** search
Text File | 2003-06-11 | 184.8 KB | 4,596 lines |
-
-
-
-
-
-
- Network Working Group G. Armitage
- Request for Comments: 2022 Bellcore
- Category: Standards Track November 1996
-
-
- Support for Multicast over UNI 3.0/3.1 based ATM Networks.
-
- Status of this Memo
-
- This document specifies an Internet standards track protocol for the
- Internet community, and requests discussion and suggestions for
- improvements. Please refer to the current edition of the "Internet
- Official Protocol Standards" (STD 1) for the standardization state
- and status of this protocol. Distribution of this memo is unlimited
-
- Abstract
-
- Mapping the connectionless IP multicast service over the connection
- oriented ATM services provided by UNI 3.0/3.1 is a non-trivial task.
- This memo describes a mechanism to support the multicast needs of
- Layer 3 protocols in general, and describes its application to IP
- multicasting in particular.
-
- ATM based IP hosts and routers use a Multicast Address Resolution
- Server (MARS) to support RFC 1112 style Level 2 IP multicast over the
- ATM Forum's UNI 3.0/3.1 point to multipoint connection service.
- Clusters of endpoints share a MARS and use it to track and
- disseminate information identifying the nodes listed as receivers for
- given multicast groups. This allows endpoints to establish and manage
- point to multipoint VCs when transmitting to the group.
-
- The MARS behaviour allows Layer 3 multicasting to be supported using
- either meshes of VCs or ATM level multicast servers. This choice may
- be made on a per-group basis, and is transparent to the endpoints.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 1]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Table of Contents
-
- 1. Introduction................................................. 4
- 1.1 The Multicast Address Resolution Server (MARS)............. 5
- 1.2 The ATM level multicast Cluster............................ 5
- 1.3 Document overview.......................................... 6
- 1.4 Conventions................................................ 7
- 2. The IP multicast service model............................... 7
- 3. UNI 3.0/3.1 support for intra-cluster multicasting........... 8
- 3.1 VC meshes.................................................. 9
- 3.2 Multicast Servers.......................................... 9
- 3.3 Tradeoffs.................................................. 10
- 3.4 Interaction with local UNI 3.0/3.1 signalling entity....... 11
- 4. Overview of the MARS......................................... 12
- 4.1 Architecture............................................... 12
- 4.2 Control message format..................................... 12
- 4.3 Fixed header fields in MARS control messages............... 13
- 4.3.1 Hardware type.......................................... 14
- 4.3.2 Protocol type.......................................... 14
- 4.3.3 Checksum............................................... 15
- 4.3.4 Extensions Offset...................................... 15
- 4.3.5 Operation code......................................... 16
- 4.3.6 Reserved............................................... 16
- 5. Endpoint (MARS client) interface behaviour................... 16
- 5.1 Transmit side behaviour.................................... 17
- 5.1.1 Retrieving Group Membership from the MARS.............. 18
- 5.1.2 MARS_REQUEST, MARS_MULTI, and MARS_NAK messages........ 20
- 5.1.3 Establishing the outgoing multipoint VC................ 22
- 5.1.4 Monitoring updates on ClusterControlVC................. 24
- 5.1.4.1 Updating the active VCs............................ 24
- 5.1.4.2 Tracking the Cluster Sequence Number............... 25
- 5.1.5 Revalidating a VC's leaf nodes......................... 26
- 5.1.5.1 When leaf node drops itself........................ 27
- 5.1.5.2 When a jump is detected in the CSN................. 27
- 5.1.6 'Migrating' the outgoing multipoint VC................. 27
- 5.2. Receive side behaviour.................................... 29
- 5.2.1 Format of the MARS_JOIN and MARS_LEAVE Messages........ 30
- 5.2.1.1 Important IPv4 default values...................... 32
- 5.2.2 Retransmission of MARS_JOIN and MARS_LEAVE messages.... 33
- 5.2.3 Cluster member registration and deregistration......... 34
- 5.3 Support for Layer 3 group management....................... 34
- 5.4 Support for redundant/backup MARS entities................. 36
- 5.4.1 First response to MARS problems........................ 36
- 5.4.2 Connecting to a backup MARS............................ 37
- 5.4.3 Dynamic backup lists, and soft redirects............... 37
- 5.5 Data path LLC/SNAP encapsulations.......................... 40
- 5.5.1 Type #1 encapsulation.................................. 40
- 5.5.2 Type #2 encapsulation.................................. 41
-
-
-
- Armitage Standards Track [Page 2]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.5.3 A Type #1 example...................................... 42
- 6. The MARS in greater detail................................... 42
- 6.1 Basic interface to Cluster members......................... 43
- 6.1.1 Response to MARS_REQUEST............................... 43
- 6.1.2 Response to MARS_JOIN and MARS_LEAVE................... 43
- 6.1.3 Generating MARS_REDIRECT_MAP........................... 45
- 6.1.4 Cluster Sequence Numbers............................... 45
- 6.2 MARS interface to Multicast Servers (MCSs)................. 46
- 6.2.1 MARS_REQUESTs for MCS supported groups................. 47
- 6.2.2 MARS_MSERV and MARS_UNSERV messages.................... 47
- 6.2.3 Registering a Multicast Server (MCS)................... 49
- 6.2.4 Modified response to MARS_JOIN and MARS_LEAVE.......... 49
- 6.2.5 Sequence numbers for ServerControlVC traffic........... 51
- 6.3 Why global sequence numbers?............................... 52
- 6.4 Redundant/Backup MARS Architectures........................ 52
- 7. How an MCS utilises a MARS................................... 53
- 7.1 Association with a particular Layer 3 group................ 53
- 7.2 Termination of incoming VCs................................ 54
- 7.3 Management of outgoing VC.................................. 54
- 7.4 Use of a backup MARS....................................... 54
- 8. Support for IP multicast routers............................. 54
- 8.1 Forwarding into a Cluster.................................. 55
- 8.2 Joining in 'promiscuous' mode.............................. 55
- 8.3 Forwarding across the cluster.............................. 56
- 8.4 Joining in 'semi-promiscous' mode.......................... 56
- 8.5 An alternative to IGMP Queries............................. 57
- 8.6 CMIs across multiple interfaces............................ 58
- 9. Multiprotocol applications of the MARS and MARS clients...... 59
- 10. Supplementary parameter processing.......................... 60
- 10.1 Interpreting the mar$extoff field......................... 60
- 10.2 The format of TLVs........................................ 60
- 10.3 Processing MARS messages with TLVs........................ 62
- 10.4 Initial set of TLV elements............................... 62
- 11. Key Decisions and open issues............................... 62
- Security Considerations......................................... 65
- Acknowledgments................................................. 65
- Author's Address................................................ 65
- References...................................................... 66
- Appendix A. Hole punching algorithms............................ 67
- Appendix B. Minimising the impact of IGMP in IPv4 environments.. 69
- Appendix C. Further comments on 'Clusters'...................... 71
- Appendix D. TLV list parsing algorithm.......................... 72
- Appendix E. Summary of timer values............................. 73
- Appendix F. Pseudo code for MARS operation...................... 74
-
-
-
-
-
-
-
- Armitage Standards Track [Page 3]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 1. Introduction.
-
- Multicasting is the process whereby a source host or protocol entity
- sends a packet to multiple destinations simultaneously using a
- single, local 'transmit' operation. The more familiar cases of
- Unicasting and Broadcasting may be considered to be special cases of
- Multicasting (with the packet delivered to one destination, or 'all'
- destinations, respectively).
-
- Most network layer models, like the one described in RFC 1112 [1] for
- IP multicasting, assume sources may send their packets to abstract
- 'multicast group addresses'. Link layer support for such an
- abstraction is assumed to exist, and is provided by technologies such
- as Ethernet.
-
- ATM is being utilized as a new link layer technology to support a
- variety of protocols, including IP. With RFC 1483 [2] the IETF
- defined a multiprotocol mechanism for encapsulating and transmitting
- packets using AAL5 over ATM Virtual Channels (VCs). However, the ATM
- Forum's currently published signalling specifications (UNI 3.0 [8]
- and UNI 3.1 [4]) does not provide the multicast address abstraction.
- Unicast connections are supported by point to point, bidirectional
- VCs. Multicasting is supported through point to multipoint
- unidirectional VCs. The key limitation is that the sender must have
- prior knowledge of each intended recipient, and explicitly establish
- a VC with itself as the root node and the recipients as the leaf
- nodes.
-
- This document has two broad goals:
-
- Define a group address registration and membership distribution
- mechanism that allows UNI 3.0/3.1 based networks to support the
- multicast service of protocols such as IP.
-
- Define specific endpoint behaviours for managing point to
- multipoint VCs to achieve multicasting of layer 3 packets.
-
- As the IETF is currently in the forefront of using wide area
- multicasting this document's descriptions will often focus on IP
- service model of RFC 1112. A final chapter will note the
- multiprotocol application of the architecture.
-
- This document avoids discussion of one highly non-trivial aspect of
- using ATM - the specification of QoS for VCs being established in
- response to higher layer needs. Research in this area is still very
- formative [7], and so it is assumed that future documents will
- clarify the mapping of QoS requirements to VC establishment. The
- default at this time is that VCs are established with a request for
-
-
-
- Armitage Standards Track [Page 4]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Unspecified Bit Rate (UBR) service, as typified by the IETF's use of
- VCs for unicast IP, described in RFC 1755 [6].
-
- 1.1 The Multicast Address Resolution Server (MARS).
-
- The Multicast Address Resolution Server (MARS) is an extended analog
- of the ATM ARP Server introduced in RFC 1577 [3]. It acts as a
- registry, associating layer 3 multicast group identifiers with the
- ATM interfaces representing the group's members. MARS messages
- support the distribution of multicast group membership information
- between MARS and endpoints (hosts or routers). Endpoint address
- resolution entities query the MARS when a layer 3 address needs to be
- resolved to the set of ATM endpoints making up the group at any one
- time. Endpoints keep the MARS informed when they need to join or
- leave particular layer 3 groups. To provide for asynchronous
- notification of group membership changes the MARS manages a point to
- multipoint VC out to all endpoints desiring multicast support
-
- Valid arguments can be made for two different approaches to ATM level
- multicasting of layer 3 packets - through meshes of point to
- multipoint VCs, or ATM level multicast servers (MCS). The MARS
- architecture allows either VC meshes or MCSs to be used on a per-
- group basis.
-
- 1.2 The ATM level multicast Cluster.
-
- Each MARS manages a 'cluster' of ATM-attached endpoints. A Cluster is
- defined as
-
- The set of ATM interfaces choosing to participate in direct ATM
- connections to achieve multicasting of AAL_SDUs between
- themselves.
-
- In practice, a Cluster is the set of endpoints that choose to use the
- same MARS to register their memberships and receive their updates
- from.
-
- By implication of this definition, traffic between interfaces
- belonging to different Clusters passes through an inter-cluster
- device. (In the IP world an inter-cluster device would be an IP
- multicast router with logical interfaces into each Cluster.) This
- document explicitly avoids specifying the nature of inter-cluster
- (layer 3) routing protocols.
-
- The mapping of clusters to other constrained sets of endpoints (such
- as unicast Logical IP Subnets) is left to each network administrator.
- However, for the purposes of conformance with this document network
- administrators MUST ensure that each Logical IP Subnet (LIS) is
-
-
-
- Armitage Standards Track [Page 5]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- served by a separate MARS, creating a one-to-one mapping between
- cluster and unicast LIS. IP multicast routers then interconnect each
- LIS as they do with conventional subnets. (Relaxation of this
- restriction MAY only occur after future research on the interaction
- between existing layer 3 multicast routing protocols and unicast
- subnet boundaries.)
-
- The term 'Cluster Member' will be used in this document to refer to
- an endpoint that is currently using a MARS for multicast support.
- Thus potential scope of a cluster may be the entire membership of a
- LIS, while the actual scope of a cluster depends on which endpoints
- are actually cluster members at any given time.
-
- 1.3 Document overview.
-
- This document assumes an understanding of concepts explained in
- greater detail in RFC 1112, RFC 1577, UNI 3.0/3.1, and RFC 1755 [6].
-
- Section 2 provides an overview of IP multicast and what RFC 1112
- required from Ethernet.
-
- Section 3 describes in more detail the multicast support services
- offered by UNI 3.0/3.1, and outlines the differences between VC
- meshes and multicast servers (MCSs) as mechanisms for distributing
- packets to multiple destinations.
-
- Section 4 provides an overview of the MARS and its relationship to
- ATM endpoints. This section also discusses the encapsulation and
- structure of MARS control messages.
-
- Section 5 substantially defines the entire cluster member endpoint
- behaviour, on both receive and transmit sides. This includes both
- normal operation and error recovery.
-
- Section 6 summarises the required behaviour of a MARS.
-
- Section 7 looks at how a multicast server (MCS) interacts with a
- MARS.
-
- Section 8 discusses how IP multicast routers may make novel use of
- promiscuous and semi-promiscuous group joins. Also discussed is a
- mechanism designed to reduce the amount of IGMP traffic issued by
- routers.
-
- Section 9 discusses how this document applies in the more general
- (non-IP) case.
-
-
-
-
-
- Armitage Standards Track [Page 6]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Section 10 summarises the key proposals, and identifies areas for
- future research that are generated by this MARS architecture.
-
- The appendices provide discussion on issues that arise out of the
- implementation of this document. Appendix A discusses MARS and
- endpoint algorithms for parsing MARS messages. Appendix B describes
- the particular problems introduced by the current IGMP paradigms, and
- possible interim work-arounds. Appendix C discusses the 'cluster'
- concept in further detail, while Appendix D briefly outlines an
- algorithm for parsing TLV lists. Appendix E summarises various timer
- values used in this document, and Appendix F provides example
- pseudo-code for a MARS entity.
-
- 1.4 Conventions.
-
- In this document the following coding and packet representation rules
- are used:
-
- All multi-octet parameters are encoded in big-endian form (i.e.
- the most significant octet comes first).
-
- In all multi-bit parameters bit numbering begins at 0 for the
- least significant bit when stored in memory (i.e. the n'th bit has
- weight of 2^n).
-
- A bit that is 'set', 'on', or 'one' holds the value 1.
-
- A bit that is 'reset', 'off', 'clear', or 'zero' holds the value
- 0.
-
- 2. Summary of the IP multicast service model.
-
- Under IP version 4 (IPv4), addresses in the range between 224.0.0.0
- and 239.255.255.255 (224.0.0.0/4) are termed 'Class D' or 'multicast
- group' addresses. These abstractly represent all the IP hosts in the
- Internet (or some constrained subset of the Internet) who have
- decided to 'join' the specified group.
-
- RFC1112 requires that a multicast-capable IP interface must support
- the transmission of IP packets to an IP multicast group address,
- whether or not the node considers itself a 'member' of that group.
- Consequently, group membership is effectively irrelevant to the
- transmit side of the link layer interfaces. When Ethernet is used as
- the link layer (the example used in RFC1112), no address resolution
- is required to transmit packets. An algorithmic mapping from IP
- multicast address to Ethernet multicast address is performed locally
- before the packet is sent out the local interface in the same 'send
- and forget' manner as a unicast IP packet.
-
-
-
- Armitage Standards Track [Page 7]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Joining and Leaving an IP multicast group is more explicit on the
- receive side - with the primitives JoinLocalGroup and LeaveLocalGroup
- affecting what groups the local link layer interface should accept
- packets from. When the IP layer wants to receive packets from a
- group, it issues JoinLocalGroup. When it no longer wants to receive
- packets, it issues LeaveLocalGroup. A key point to note is that
- changing state is a local issue, it has no effect on other hosts
- attached to the Ethernet.
-
- IGMP is defined in RFC 1112 to support IP multicast routers attached
- to a given subnet. Hosts issue IGMP Report messages when they perform
- a JoinLocalGroup, or in response to an IP multicast router sending an
- IGMP Query. By periodically transmitting queries IP multicast routers
- are able to identify what IP multicast groups have non-zero
- membership on a given subnet.
-
- A specific IP multicast address, 224.0.0.1, is allocated for the
- transmission of IGMP Query messages. Host IP layers issue a
- JoinLocalGroup for 224.0.0.1 when they intend to participate in IP
- multicasting, and issue a LeaveLocalGroup for 224.0.0.1 when they've
- ceased participating in IP multicasting.
-
- Each host keeps a list of IP multicast groups it has been
- JoinLocalGroup'd to. When a router issues an IGMP Query on 224.0.0.1
- each host begins to send IGMP Reports for each group it is a member
- of. IGMP Reports are sent to the group address, not 224.0.0.1, "so
- that other members of the same group on the same network can overhear
- the Report" and not bother sending one of their own. IP multicast
- routers conclude that a group has no members on the subnet when IGMP
- Queries no longer elicit associated replies.
-
- 3. UNI 3.0/3.1 support for intra-cluster multicasting.
-
- For the purposes of the MARS protocol, both UNI 3.0 and UNI 3.1
- provide equivalent support for multicasting. Differences between UNI
- 3.0 and UNI 3.1 in required signalling elements are covered in RFC
- 1755.
-
- This document will describe its operation in terms of 'generic'
- functions that should be available to clients of a UNI 3.0/3.1
- signalling entity in a given ATM endpoint. The ATM model broadly
- describes an 'AAL User' as any entity that establishes and manages
- VCs and underlying AAL services to exchange data. An IP over ATM
- interface is a form of 'AAL User' (although the default LLC/SNAP
- encapsulation mode specified in RFC1755 really requires that an 'LLC
- entity' is the AAL User, which in turn supports the IP/ATM
- interface).
-
-
-
-
- Armitage Standards Track [Page 8]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The most fundamental limitations of UNI 3.0/3.1's multicast support
- are:
-
- Only point to multipoint, unidirectional VCs may be established.
-
- Only the root (source) node of a given VC may add or remove leaf
- nodes.
-
- Leaf nodes are identified by their unicast ATM addresses. UNI
- 3.0/3.1 defines two ATM address formats - native E.164 and NSAP
- (although it must be stressed that the NSAP address is so called
- because it uses the NSAP format - an ATM endpoint is NOT a Network
- layer termination point). In UNI 3.0/3.1 an 'ATM Number' is the
- primary identification of an ATM endpoint, and it may use either
- format. Under some circumstances an ATM endpoint must be identified
- by both a native E.164 address (identifying the attachment point of a
- private network to a public network), and an NSAP address ('ATM
- Subaddress') identifying the final endpoint within the private
- network. For the rest of this document the term will be used to mean
- either a single 'ATM Number' or an 'ATM Number' combined with an 'ATM
- Subaddress'.
-
- 3.1 VC meshes.
-
- The most fundamental approach to intra-cluster multicasting is the
- multicast VC mesh. Each source establishes its own independent point
- to multipoint VC (a single multicast tree) to the set of leaf nodes
- (destinations) that it has been told are members of the group it
- wishes to send packets to.
-
- Interfaces that are both senders and group members (leaf nodes) to a
- given group will originate one point to multipoint VC, and terminate
- one VC for every other active sender to the group. This criss-
- crossing of VCs across the ATM network gives rise to the name 'VC
- mesh'.
-
- 3.2 Multicast Servers.
-
- An alternative model has each source establish a VC to an
- intermediate node - the multicast server (MCS). The multicast server
- itself establishes and manages a point to multipoint VC out to the
- actual desired destinations.
-
- The MCS reassembles AAL_SDUs arriving on all the incoming VCs, and
- then queues them for transmission on its single outgoing point to
- multipoint VC. (Reassembly of incoming AAL_SDUs is required at the
- multicast server as AAL5 does not support cell level multiplexing of
- different AAL_SDUs on a single outgoing VC.)
-
-
-
- Armitage Standards Track [Page 9]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The leaf nodes of the multicast server's point to multipoint VC must
- be established prior to packet transmission, and the multicast server
- requires an external mechanism to identify them. A side-effect of
- this method is that ATM interfaces that are both sources and group
- members will receive copies of their own packets back from the MCS
- (An alternative method is for the multicast server to explicitly
- retransmit packets on individual VCs between itself and group
- members. A benefit of this second approach is that the multicast
- server can ensure that sources do not receive copies of their own
- packets.)
-
- The simplest MCS pays no attention to the contents of each AAL_SDU.
- It is purely an AAL/ATM level device. More complex MCS architectures
- (where a single endpoint serves multiple layer 3 groups) are
- possible, but are beyond the scope of this document. More detailed
- discussion is provided in section 7.
-
- 3.3 Tradeoffs.
-
- Arguments over the relative merits of VC meshes and multicast servers
- have raged for some time. Ultimately the choice depends on the
- relative trade-offs a system administrator must make between
- throughput, latency, congestion, and resource consumption. Even
- criteria such as latency can mean different things to different
- people - is it end to end packet time, or the time it takes for a
- group to settle after a membership change? The final choice depends
- on the characteristics of the applications generating the multicast
- traffic.
-
- If we focussed on the data path we might prefer the VC mesh because
- it lacks the obvious single congestion point of an MCS. Throughput
- is likely to be higher, and end to end latency lower, because the
- mesh lacks the intermediate AAL_SDU reassembly that must occur in
- MCSs. The underlying ATM signalling system also has greater
- opportunity to ensure optimal branching points at ATM switches along
- the multicast trees originating on each source.
-
- However, resource consumption will be higher. Every group member's
- ATM interface must terminate a VC per sender (consuming on-board
- memory for state information, instance of an AAL service, and
- buffering in accordance with the vendors particular architecture). On
- the contrary, with a multicast server only 2 VCs (one out, one in)
- are required, independent of the number of senders. The allocation of
- VC related resources is also lower within the ATM cloud when using a
- multicast server. These points may be considered to have merit in
- environments where VCs across the UNI or within the ATM cloud are
- valuable (e.g. the ATM provider charges on a per VC basis), or AAL
- contexts are limited in the ATM interfaces of endpoints.
-
-
-
- Armitage Standards Track [Page 10]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- If we focus on the signalling load then MCSs have the advantage when
- faced with dynamic sets of receivers. Every time the membership of a
- multicast group changes (a leaf node needs to be added or dropped),
- only a single point to multipoint VC needs to be modified when using
- an MCS. This generates a single signalling event across the MCS's
- UNI. However, when membership change occurs in a VC mesh, signalling
- events occur at the UNIs of every traffic source - the transient
- signalling load scales with the number of sources. This has obvious
- ramifications if you define latency as the time for a group's
- connectivity to stabilise after change (especially as the number of
- senders increases).
-
- Finally, as noted above, MCSs introduce a 'reflected packet' problem,
- which requires additional per-AAL_SDU information to be carried in
- order for layer 3 sources to detect their own AAL_SDUs coming back.
-
- The MARS architecture allows system administrators to utilize either
- approach on a group by group basis.
-
- 3.4 Interaction with local UNI 3.0/3.1 signalling entity.
-
- The following generic signalling functions are presumed to be
- available to local AAL Users:
-
- L_CALL_RQ - Establish a unicast VC to a specific endpoint.
- L_MULTI_RQ - Establish multicast VC to a specific endpoint.
- L_MULTI_ADD - Add new leaf node to previously established VC.
- L_MULTI_DROP - Remove specific leaf node from established VC.
- L_RELEASE - Release unicast VC, or all Leaves of a multicast VC.
-
- The signalling exchanges and local information passed between AAL
- User and UNI 3.0/3.1 signalling entity with these functions are
- outside the scope of this document.
-
- The following indications are assumed to be available to AAL Users,
- generated by the local UNI 3.0/3.1 signalling entity:
-
- L_ACK - Succesful completion of a local request.
- L_REMOTE_CALL - A new VC has been established to the AAL User.
- ERR_L_RQFAILED - A remote ATM endpoint rejected an L_CALL_RQ,
- L_MULTI_RQ, or L_MULTI_ADD.
- ERR_L_DROP - A remote ATM endpoint dropped off an existing VC.
- ERR_L_RELEASE - An existing VC was terminated.
-
- The signalling exchanges and local information passed between AAL
- User and UNI 3.0/3.1 signalling entity with these functions are
- outside the scope of this document.
-
-
-
-
- Armitage Standards Track [Page 11]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 4. Overview of the MARS.
-
- The MARS may reside within any ATM endpoint that is directly
- addressable by the endpoints it is serving. Endpoints wishing to join
- a multicast cluster must be configured with the ATM address of the
- node on which the cluster's MARS resides. (Section 5.4 describes how
- backup MARSs may be added to support the activities of a cluster.
- References to 'the MARS' in following sections will be assumed to
- mean the acting MARS for the cluster.)
-
- 4.1 Architecture.
-
- Architecturally the MARS is an evolution of the RFC 1577 ARP Server.
- Whilst the ARP Server keeps a table of {IP,ATM} address pairs for all
- IP endpoints in an LIS, the MARS keeps extended tables of {layer 3
- address, ATM.1, ATM.2, ..... ATM.n} mappings. It can either be
- configured with certain mappings, or dynamically 'learn' mappings.
- The format of the {layer 3 address} field is generally not
- interpreted by the MARS.
-
- A single ATM node may support multiple logical MARSs, each of which
- support a separate cluster. The restriction is that each MARS has a
- unique ATM address (e.g. a different SEL field in the NSAP address of
- the node on which the multiple MARSs reside). By definition a single
- instance of a MARS may not support more than one cluster.
-
- The MARS distributes group membership update information to cluster
- members over a point to multipoint VC known as the ClusterControlVC.
- Additionally, when Multicast Servers (MCSs) are being used it also
- establishes a separate point to multipoint VC out to registered MCSs,
- known as the ServerControlVC. All cluster members are leaf nodes of
- ClusterControlVC. All registered multicast servers are leaf nodes of
- ServerControlVC (described further in section 6).
-
- The MARS does NOT take part in the actual multicasting of layer 3
- data packets.
-
- 4.2 Control message format.
-
- By default all MARS control messages MUST be LLC/SNAP encapsulated
- using the following codepoints:
-
- [0xAA-AA-03][0x00-00-5E][0x00-03][MARS control message]
- (LLC) (OUI) (PID)
-
- (This is a PID from the IANA OUI.)
-
-
-
-
-
- Armitage Standards Track [Page 12]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- MARS control messages are made up of 4 major components:
-
- [Fixed header][Mandatory fields][Addresses][Supplementary TLVs]
-
- [Fixed header] contains fields indicating the operation being
- performed and the layer 3 protocol being referred to (e.g IPv4, IPv6,
- AppleTalk, etc). The fixed header also carries checksum information,
- and hooks to allow this basic control message structure to be re-used
- by other query/response protocols.
-
- The [Mandatory fields] section carries fixed width parameters that
- depend on the operation type indicated in [Fixed header].
-
- The following [Addresses] area carries variable length fields for
- source and target addresses - both hardware (e.g. ATM) and layer 3
- (e.g. IPv4). These provide the fundamental information that the
- registrations, queries, and updates use and operate on. For the MARS
- protocol fields in [Fixed header] indicate how to interpret the
- contents of [Addresses].
-
- [Supplementary TLVs] represents an optional list of TLV (type,
- length, value) encoded information elements that may be appended to
- provide supplementary information. This feature is described in
- further detail in section 10.
-
- MARS messages contain variable length address fields. In all cases
- null addresses SHALL be encoded as zero length, and have no space
- allocated in the message.
-
- (Unique LLC/SNAP encapsulation of MARS control messages means MARS
- and ARP Server functionality may be implemented within a common
- entity, and share a client-server VC, if the implementor so chooses.
- Note that the LLC/SNAP codepoint for MARS is different to the
- codepoint used for ATMARP.)
-
- 4.3 Fixed header fields in MARS control messages.
-
- The [Fixed header] has the following format:
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code.
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
-
-
-
- Armitage Standards Track [Page 13]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- mar$shtl and mar$sstl provide information regarding the source's
- hardware (ATM) address. In the MARS protocol these fields are always
- present, as every MARS message carries a non-null source ATM address.
- In all cases the source ATM address is the first variable length
- field in the [Addresses] section.
-
- The other fields in [Fixed header] are described in the following
- subsections.
-
- 4.3.1 Hardware type.
-
- mar$afn defines the type of link layer addresses being carried. The
- value of 0x000F SHALL be used by MARS messages generated in
- accordance with this document. The encoding of ATM addresses and
- subaddresses when mar$afn = 0x000F is described in section 5.1.2.
- Encodings when mar$afn != 0x000F are outside the scope of this
- document.
-
- 4.3.2 Protocol type.
-
- The mar$pro field is made up of two subfields:
-
- mar$pro.type 16 bits Protocol type.
- mar$pro.snap 40 bits Optional SNAP extension to protocol type.
-
- The mar$pro.type field is a 16 bit unsigned integer representing the
- following number space:
-
- 0x0000 to 0x00FF Protocols defined by the equivalent NLPIDs.
- 0x0100 to 0x03FF Reserved for future use by the IETF.
- 0x0400 to 0x04FF Allocated for use by the ATM Forum.
- 0x0500 to 0x05FF Experimental/Local use.
- 0x0600 to 0xFFFF Protocols defined by the equivalent Ethertypes.
-
- (based on the observations that valid Ethertypes are never smaller
- than 0x600, and NLPIDs never larger than 0xFF.)
-
- The NLPID value of 0x80 is used to indicate a SNAP encoded extension
- is being used to encode the protocol type. When mar$pro.type == 0x80
- the SNAP extension is encoded in the mar$pro.snap field. This is
- termed the 'long form' protocol ID.
-
- If mar$pro.type != 0x80 then the mar$pro.snap field MUST be zero on
- transmit and ignored on receive. The mar$pro.type field itself
- identifies the protocol being referred to. This is termed the 'short
- form' protocol ID.
-
-
-
-
-
- Armitage Standards Track [Page 14]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- In all cases, where a protocol has an assigned number in the
- mar$pro.type space (excluding 0x80) the short form MUST be used when
- transmitting MARS messages. Additionally, where a protocol has valid
- short and long forms of identification, receivers MAY choose to
- recognise the long form.
-
- mar$pro.type values other than 0x80 MAY have 'long forms' defined in
- future documents.
-
- For the remainder of this document references to mar$pro SHALL be
- interpreted to mean mar$pro.type, or mar$pro.type in combination with
- mar$pro.snap as appropriate.
-
- The use of different protocol types is described further in section
- 9.
-
- 4.3.3 Checksum.
-
- The mar$chksum field carries a standard IP checksum calculated across
- the entire MARS control message (excluding the LLC/SNAP header). The
- field is set to zero before performing the checksum calculation.
-
- As the entire LLC/SNAP encapsulated MARS message is protected by the
- 32 bit CRC of the AAL5 transport, implementors MAY choose to ignore
- the checksum facility. If no checksum is calculated these bits MUST
- be reset before transmission. If no checksum is performed on
- reception, this field MUST be ignored. If a receiver is capable of
- validating a checksum it MUST only perform the validation when the
- received mar$chksum field is non-zero. Messages arriving with
- mar$chksum of 0 are always considered valid.
-
- 4.3.4 Extensions Offset.
-
- The mar$extoff field identifies the existence and location of an
- optional supplementary parameters list. Its use is described in
- section 10.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 15]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 4.3.5 Operation code.
-
- The mar$op field is further subdivided into two 8 bit fields -
- mar$op.version (leading octet) and mar$op.type (trailing octet).
- Together they indicate the nature of the control message, and the
- context within which its [Mandatory fields], [Addresses], and
- [Supplementary TLVs] should be interpreted.
-
- mar$op.version
- 0 MARS protocol defined in this document.
- 0x01 - 0xEF Reserved for future use by the IETF.
- 0xF0 - 0xFE Allocated for use by the ATM Forum.
- 0xFF Experimental/Local use.
-
- mar$op.type
- Value indicates operation being performed, within context of
- the control protocol version indicated by mar$op.version.
-
- For the rest of this document references to the mar$op value SHALL be
- taken to mean mar$op.type, with mar$op.version = 0x00. The values
- used in this document are summarised in section 11.
-
- (Note this number space is independent of the ATMARP operation code
- number space.)
-
- 4.3.6 Reserved.
-
- mar$hdrrsv may be subdivided and assigned specific meanings for other
- control protocols indicated by mar$op.version != 0.
-
- 5. Endpoint (MARS client) interface behaviour.
-
- An endpoint is best thought of as a 'shim' or 'convergence' layer,
- sitting between a layer 3 protocol's link layer interface and the
- underlying UNI 3.0/3.1 service. An endpoint in this context can exist
- in a host or a router - any entity that requires a generic 'layer 3
- over ATM' interface to support layer 3 multicast. It is broken into
- two key subsections - one for the transmit side, and one for the
- receive side.
-
- Multiple logical ATM interfaces may be supported by a single physical
- ATM interface (for example, using different SEL values in the NSAP
- formatted address assigned to the physical ATM interface). Therefore
- implementors MUST allow for multiple independent 'layer 3 over ATM'
- interfaces too, each with its own configured MARS (or table of MARSs,
- as discussed in section 5.4), and ability to be attached to the same
- or different clusters.
-
-
-
-
- Armitage Standards Track [Page 16]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The initial signalling path between a MARS client (managing an
- endpoint) and its associated MARS is a transient point to point,
- bidirectional VC. This VC is established by the MARS client, and is
- used to send queries to, and receive replies from, the MARS. It has
- an associated idle timer, and is dismantled if not used for a
- configurable period of time. The minimum suggested value for this
- time is 1 minute, and the RECOMMENDED default is 20 minutes. (Where
- the MARS and ARP Server are co-resident, this VC may be used for both
- ATM ARP traffic and MARS control traffic.)
-
- The remaining signalling path is ClusterControlVC, to which the MARS
- client is added as a leaf node when it registers (described in
- section 5.2.3).
-
- The majority of this document covers the distribution of information
- allowing endpoints to establish and manage outgoing point to
- multipoint VCs - the forwarding paths for multicast traffic to
- particular multicast groups. The actual format of the AAL_SDUs sent
- on these VCs is almost completely outside the scope of this
- specification. However, endpoints are not expected to know whether
- their forwarding path leads directly to a multicast group's members
- or to an MCS (described in section 3). This requires additional per-
- packet encapsulation (described in section 5.5) to aid in the the
- detection of reflected AAL_SDUs.
-
- 5.1 Transmit side behaviour.
-
- The following description will often be in terms of an IPv4/ATM
- interface that is capable of transmitting packets to a Class D
- address at any time, without prior warning. It should be trivial for
- an implementor to generalise this behaviour to the requirements of
- another layer 3 data protocol.
-
- When a local Layer 3 entity passes down a packet for transmission,
- the endpoint first ascertains whether an outbound path to the
- destination multicast group already exists. If it does not, the MARS
- is queried for a set of ATM endpoints that represent an appropriate
- forwarding path. (The ATM endpoints may represent the actual group
- members within the cluster, or a set of one or more MCSs. The
- endpoint does not distinguish between either case. Section 6.2
- describes the MARS behaviour that leads to MCSs being supplied as the
- forwarding path for a multicast group.)
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 17]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The query is executed by issuing a MARS_REQUEST. The reply from the
- MARS may take one of two forms:
-
- MARS_MULTI - Sequence of MARS_MULTI messages returning the set of
- ATM endpoints that are to be leaf nodes of an
- outgoing point to multipoint VC (the forwarding
- path).
-
- MARS_NAK - No mapping found, group is empty.
-
- The formats of these messages are described in section 5.1.2.
-
- Outgoing VCs are established with a request for Unspecified Bit Rate
- (UBR) service, as typified by the IETF's use of VCs for unicast IP,
- described in RFC 1755 [6]. Future documents may vary this approach
- and allow the specification of different ATM traffic parameters from
- locally configured information or parameters obtained through some
- external means.
-
- 5.1.1 Retrieving Group Membership from the MARS.
-
- If the MARS had no mapping for the desired Class D address a MARS_NAK
- will be returned. In this case the IP packet MUST be discarded
- silently. If a match is found in the MARS's tables it proceeds to
- return addresses ATM.1 through ATM.n in a sequence of one or more
- MARS_MULTIs. A simple mechanism is used to detect and recover from
- loss of MARS_MULTI messages.
-
- (If the client learns that there is no other group member in the
- cluster - the MARS returns a MARS_NAK or returns a MARS_MULTI with
- the client as the only member - it MUST delay sending out a new
- MARS_REQUEST for that group for a period no less than 5 seconds and
- no more than 10 seconds.)
-
- Each MARS_MULTI carries a boolean field x, and a 15 bit integer field
- y - expressed as MARS_MULTI(x,y). Field y acts as a sequence number,
- starting at 1 and incrementing for each MARS_MULTI sent. Field x
- acts as an 'end of reply' marker. When x == 1 the MARS response is
- considered complete.
-
- In addition, each MARS_MULTI may carry multiple ATM addresses from
- the set {ATM.1, ATM.2, .... ATM.n}. A MARS MUST minimise the number
- of MARS_MULTIs transmitted by placing as many group members'
- addresses in a single MARS_MULTI as possible. The limit on the length
- of an individual MARS_MULTI message MUST be the MTU of the underlying
- VC.
-
-
-
-
-
- Armitage Standards Track [Page 18]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- For example, assume n ATM addresses must be returned, each MARS_MULTI
- is limited to only p ATM addresses, and p << n. This would require a
- sequence of k MARS_MULTI messages (where k = (n/p)+1, using integer
- arithmetic), transmitted as follows:
-
- MARS_MULTI(0,1) carries back {ATM.1 ... ATM.p}
- MARS_MULTI(0,2) carries back {ATM.(p+1) ... ATM.(2p)}
- [.......]
- MARS_MULTI(1,k) carries back { ... ATM.n}
-
- If k == 1 then only MARS_MULTI(1,1) is sent.
-
- Typical failure mode will be losing one or more of MARS_MULTI(0,1)
- through MARS_MULTI(0,k-1). This is detected when y jumps by more than
- one between consecutive MARS_MULTI's. An alternative failure mode is
- losing MARS_MULTI(1,k). A timer MUST be implemented to flag the
- failure of the last MARS_MULTI to arrive. A default value of 10
- seconds is RECOMMENDED.
-
- If a 'sequence jump' is detected, the host MUST wait for the
- MARS_MULTI(1,k), discard all results, and repeat the MARS_REQUEST.
-
- If a timeout occurs, the host MUST discard all results, and repeat
- the MARS_REQUEST.
-
- A final failure mode involves the MARS Sequence Number (described in
- section 5.1.4.2 and carried in each part of a multi-part MARS_MULTI).
- If its value changes during the reception of a multi-part MARS_MULTI
- the host MUST wait for the MARS_MULTI(1,k), discard all results, and
- repeat the MARS_REQUEST.
-
- (Corruption of cell contents will lead to loss of a MARS_MULTI
- through AAL5 CPCS_PDU reassembly failure, which will be detected
- through the mechanisms described above.)
-
- If the MARS is managing a cluster of endpoints spread across
- different but directly accessible ATM networks it will not be able to
- return all the group members in a single MARS_MULTI. The MARS_MULTI
- message format allows for either E.164, ISO NSAP, or (E.164 + NSAP)
- to be returned as ATM addresses. However, each MARS_MULTI message may
- only return ATM addresses of the same type and length. The returned
- addresses MUST be grouped according to type (E.164, ISO NSAP, or
- both) and returned in a sequence of separate MARS_MULTI parts.
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 19]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.1.2 MARS_REQUEST, MARS_MULTI, and MARS_NAK messages.
-
- MARS_REQUEST is shown below. It is indicated by an 'operation type
- value' (mar$op) of 1.
-
- The multicast address being resolved is placed into the the target
- protocol address field (mar$tpa), and the target hardware address is
- set to null (mar$thtl and mar$tstl both zero).
-
- In IPv4 environments the protocol type (mar$pro) is 0x800 and the
- target protocol address length (mar$tpln) MUST be set to 4. The
- source fields MUST contain the ATM number and subaddress of the
- client issuing the MARS_REQUEST (the subaddress MAY be null).
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_REQUEST = 1)
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$thtl 8 bits Type & length of target ATM number (x)
- mar$tstl 8 bits Type & length of target ATM subaddress (y)
- mar$tpln 8 bits Length of target group address (z)
- mar$pad 64 bits Padding (aligns mar$sha with MARS_MULTI).
- mar$sha roctets source ATM number
- mar$ssa qoctets source ATM subaddress
- mar$spa soctets source protocol address
- mar$tpa zoctets target multicast group address
- mar$tha xoctets target ATM number
- mar$tsa yoctets target ATM subaddress
-
- Following the RFC1577 approach, the mar$shtl, mar$sstl, mar$thtl and
- mar$tstl fields are coded as follows:
-
- 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+
- |0|x| length |
- +-+-+-+-+-+-+-+-+
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 20]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The most significant bit is reserved and MUST be set to zero. The
- second most significant bit (x) is a flag indicating whether the ATM
- address being referred to is in:
-
- - ATM Forum NSAPA format (x = 0).
- - Native E.164 format (x = 1).
-
- The bottom 6 bits is an unsigned integer value indicating the length
- of the associated ATM address in octets. If this value is zero the
- flag x is ignored.
-
- The mar$spln and mar$tpln fields are unsigned 8 bit integers, giving
- the length in octets of the source and target protocol address fields
- respectively.
-
- MARS packets use true variable length fields. A null (non-existant)
- address MUST be coded as zero length, and no space allocated for it
- in the message body.
-
- MARS_NAK is the MARS_REQUEST returned with operation type value of 6.
- All other fields are left unchanged from the MARS_REQUEST (e.g. do
- not transpose the source and target information. In all cases MARS
- clients use the source address fields to identify their own messages
- coming back).
-
- The MARS_MULTI message is identified by an mar$op value of 2. The
- message format is:
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_MULTI = 2).
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$thtl 8 bits Type & length of target ATM number (x)
- mar$tstl 8 bits Type & length of target ATM subaddress (y)
- mar$tpln 8 bits Length of target group address (z)
- mar$tnum 16 bits Number of target ATM addresses returned (N)
- mar$seqxy 16 bits Boolean flag x and sequence number y.
- mar$msn 32 bits MARS Sequence Number.
- mar$sha roctets source ATM number
- mar$ssa qoctets source ATM subaddress
- mar$spa soctets source protocol address
- mar$tpa zoctets target multicast group address
-
-
-
- Armitage Standards Track [Page 21]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- mar$tha.1 xoctets target ATM number 1
- mar$tsa.1 yoctets target ATM subaddress 1
- mar$tha.2 xoctets target ATM number 2
- mar$tsa.2 yoctets target ATM subaddress 2
- [.......]
- mar$tha.N xoctets target ATM number N
- mar$tsa.N yoctets target ATM subaddress N
-
- The source protocol and ATM address fields are copied directly from
- the MARS_REQUEST that this MARS_MULTI is in response to (not the MARS
- itself).
-
- mar$seqxy is coded with flag x in the leading bit, and sequence
- number y coded as an unsigned integer in the remaining 15 bits.
-
- | 1st octet | 2nd octet |
- 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- |x| y |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- mar$tnum is an unsigned integer indicating how many pairs of
- {mar$tha,mar$tsa} (i.e. how many group member's ATM addresses) are
- present in the message. mar$msn is an unsigned 32 bit number filled
- in by the MARS before transmitting each MARS_MULTI. Its use is
- described further in section 5.1.4.
-
- As an example, assume we have a multicast cluster using 4 byte
- protocol addresses, 20 byte ATM numbers, and 0 byte ATM subaddresses.
- For n group members in a single MARS_MULTI we require a (60 + 20n)
- byte message. If we assume the default MTU of 9180 bytes, we can
- return a maximum of 456 group member's addresses in a single
- MARS_MULTI.
-
- 5.1.3 Establishing the outgoing multipoint VC.
-
- Following the completion of the MARS_MULTI reply the endpoint may
- establish a new point to multipoint VC, or reuse an existing one.
-
- If establishing a new VC, an L_MULTI_RQ is issued for ATM.1, followed
- by an L_MULTI_ADD for every member of the set {ATM.2, ....ATM.n}
- (assuming the set is non-null). The packet is then transmitted over
- the newly created VC just as it would be for a unicast VC.
-
- After transmitting the packet, the local interface holds the VC open
- and marks it as the active path out of the host for any subsequent IP
- packets being sent to that Class D address.
-
-
-
-
- Armitage Standards Track [Page 22]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- When establishing a new multicast VC it is possible that one or more
- L_MULTI_RQ or L_MULTI_ADD may fail. The UNI 3.0/3.1 failure cause
- must be returned in the ERR_L_RQFAILED signal from the local
- signalling 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
- set {ATM.1, ATM.2, ..., ATM.n} returned by the MARS. Otherwise, the
- L_MULTI_RQ or L_MULTI_ADD should be reissued after a random delay of
- 5 to 10 seconds. If the request fails again, another request should
- be issued after twice the previous delay has elapsed. This process
- should be continued until the call succeeds or the multipoint VC gets
- released.
-
- If the initial L_MULTI_RQ fails for ATM.1, and n is greater than 1
- (i.e. the returned set of ATM addresses contains 2 or more addresses)
- a new L_MULTI_RQ should be immediately issued for the next ATM
- address in the set. This procedure is repeated until an L_MULTI_RQ
- succeeds, as no L_MULTI_ADDs may be issued until an initial outgoing
- VC is established.
-
- Each ATM address for which an L_MULTI_RQ failed with cause 49, 51,
- 37, or 41 MUST be tagged rather than deleted. An L_MULTI_ADD is
- issued for these tagged addresses using the random delay procedure
- outlined above.
-
- The VC MAY be considered 'up' before failed L_MULTI_ADDs have been
- successfully re-issued. An endpoint MAY implement a concurrent
- mechanism that allows data to start flowing out the new VC even while
- failed L_MULTI_ADDs are being re-tried. (The alternative of waiting
- for each leaf node to accept the connection could lead to significant
- delays in transmitting the first packet.)
-
- Each VC MUST have a configurable inactivity timer associated with it.
- If the timer expires, an L_RELEASE is issued for that VC, and the
- Class D address is no longer considered to have an active path out of
- the local host. The timer SHOULD be no less than 1 minute, and a
- default of 20 minutes is RECOMMENDED. Choice of specific timer
- periods is beyond the scope of this document.
-
- VC consumption may also be reduced by endpoints noting when a new
- group's set of {ATM.1, ....ATM.n} matches that of a pre-existing VC
- out to another group. With careful local management, and assuming the
- QoS of the existing VC is sufficient for both groups, a new pt to mpt
- VC may not be necessary. Under certain circumstances endpoints may
- decide that it is sufficient to re-use an existing VC whose set of
- leaf nodes is a superset of the new group's membership (in which case
- some endpoints will receive multicast traffic for a layer 3 group
-
-
-
- Armitage Standards Track [Page 23]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- they haven't joined, and must filter them above the ATM interface).
- Algorithms for performing this type of optimization are not discussed
- here, and are not required for conformance with this document.
-
- 5.1.4 Tracking subsequent group updates.
-
- Once a new VC has been established, the transmit side of the cluster
- member's interface needs to monitor subsequent group changes - adding
- or dropping leaf nodes as appropriate. This is achieved by watching
- for MARS_JOIN and MARS_LEAVE messages from the MARS itself. These
- messages are described in detail in section 5.2 - at this point it is
- sufficient to note that they carry:
-
- - The ATM address of a node joining or leaving a group.
- - The layer 3 address of the group(s) being joined or left.
- - A Cluster Sequence Number (CSN) from the MARS.
-
- MARS_JOIN and MARS_LEAVE messages arrive at each cluster member
- across ClusterControlVC. MARS_JOIN or MARS_LEAVE messages that simply
- confirm information already held by the cluster member are used to
- track the Cluster Sequence Number, but are otherwise ignored.
-
- 5.1.4.1 Updating the active VCs.
-
- If a MARS_JOIN is seen that refers to (or encompasses) a group for
- which the transmit side already has a VC open, the new member's ATM
- address is extracted and an L_MULTI_ADD issued locally. This ensures
- that endpoints already sending to a given group will immediately add
- the new member to their list of recipients.
-
- If a MARS_LEAVE is seen that refers to (or encompasses) a group for
- which the transmit side already has a VC open, the old member's ATM
- address is extracted and an L_MULTI_DROP issued locally. This ensures
- that endpoints already sending to a given group will immediately drop
- the old member from their list of recipients. When the last leaf of a
- VC is dropped, the VC is closed completely and the affected group no
- longer has a path out of the local endpoint (the next outbound packet
- to that group's address will trigger the creation of a new VC, as
- described in sections 5.1.1 to 5.1.3).
-
- The transmit side of the interface MUST NOT shut down an active VC to
- a group for which the receive side has just executed a
- LeaveLocalGroup. (This behaviour is consistent with the model of
- hosts transmitting to groups regardless of their own membership
- status.)
-
- If a MARS_JOIN or MARS_LEAVE arrives with mar$pnum == 0 it carries no
- <min,max> pairs, and is only used for tracking the CSN.
-
-
-
- Armitage Standards Track [Page 24]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.1.4.2 Tracking the Cluster Sequence Number.
-
- It is important that endpoints do not miss group membership updates
- issued by the MARS over ClusterControlVC. However, this will happen
- from time to time. The Cluster Sequence Number is carried as an
- unsigned 32 bit value in the mar$msn field of many MARS messages
- (except for MARS_REQUEST and MARS_NAK). It increments once for every
- transmission the MARS makes on ClusterControlVC, regardless of
- whether the transmission represents a change in the MARS database or
- not. By tracking this counter, cluster members can determine whether
- they have missed a previous message on ClusterControlVC, and possibly
- a membership change. This is then used to trigger revalidation
- (described in section 5.1.5).
-
- The current CSN is copied into the mar$msn field of MARS messages
- being sent to cluster members, whether out ClusterControlVC or on a
- point to point VC.
-
- Calculations on the sequence numbers MUST be performed as unsigned 32
- bit arithmetic.
-
- Every cluster member keeps its own 32 bit Host Sequence Number (HSN)
- to track the MARS's sequence number. Whenever a message is received
- that carries an mar$msn field the following processing is performed:
-
- Seq.diff = mar$msn - HSN
-
- mar$msn -> HSN
- {...process MARS message as appropriate...}
-
- if ((Seq.diff != 1) && (Seq.diff != 0))
- then {...revalidate group membership information...}
-
- The basic result is that the cluster member attempts to keep locked
- in step with membership changes noted by the MARS. If it ever detects
- that a membership change occurred (in any group) without it noticing,
- it re-validates the membership of all groups it currently has
- multicast VCs open to.
-
- The mar$msn value in an individual MARS_MULTI is not used to update
- the HSN until all parts of the MARS_MULTI (if more than 1) have
- arrived. (If the mar$msn changes the MARS_MULTI is discarded, as
- described in section 5.1.1.)
-
- The MARS is free to choose an initial value of CSN. When a new
- cluster member starts up it should initialise HSN to zero. When the
- cluster member sends the MARS_JOIN to register (described later), the
- HSN will be correctly updated to the current CSN value when the
-
-
-
- Armitage Standards Track [Page 25]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- endpoint receives the copy of its MARS_JOIN back from the MARS.
-
- 5.1.5 Revalidating a VC's leaf nodes.
-
- Certain events may inform a cluster member that it has incorrect
- information about the sets of leaf nodes it should be sending to. If
- an error occurs on a VC associated with a particular group, the
- cluster member initiates revalidation procedures for that specific
- group. If a jump is detected in the Cluster Sequence Number, this
- initiates revalidation of all groups to which the cluster member
- currently has open point to multipoint VCs.
-
- Each open and active multipoint VC has a flag associated with it
- called 'VC_revalidate'. This flag is checked everytime a packet is
- queued for transmission on that VC. If the flag is false, the packet
- is transmitted and no further action is required.
-
- However, if the VC_revalidate flag is true then the packet is
- transmitted and a new sequence of events is started locally.
-
- Revalidation begins with re-issuing a MARS_REQUEST for the group
- being revalidated. The returned set of members {NewATM.1, NewATM.2,
- .... NewATM.n} is compared with the set already held locally.
- L_MULTI_DROPs are issued on the group's VC for each node that appears
- in the original set of members but not in the revalidated set of
- members. L_MULTI_ADDs are issued on the group's VC for each node that
- appears in the revalidated set of members but not in the original set
- of members. The VC_revalidate flag is reset when revalidation
- concludes for the given group. Implementation specific mechanisms
- will be needed to flag the 'revalidation in progress' state.
-
- The key difference between constructing a VC (section 5.1.3) and
- revalidating a VC is that packet transmission continues on the open
- VC while it is being revalidated. This minimises the disruption to
- existing traffic.
-
- The algorithm for initiating revalidation is:
-
- - When a packet arrives for transmission on a given group,
- the groups membership is revalidated if VC_revalidate == TRUE.
- Revalidation resets VC_revalidate.
- - When an event occurs that demands revalidation, every
- group has its VC_revalidate flag set TRUE at a random time
- between 1 and 10 seconds.
-
- Benefit: Revalidation of active groups occurs quickly, and
- essentially idle groups are revalidated as needed. Randomly
- distributed setting of VC_revalidate flag improves chances of
-
-
-
- Armitage Standards Track [Page 26]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- staggered revalidation requests from senders when a sequence number
- jump is detected.
-
- 5.1.5.1 When leaf node drops itself.
-
- During the life of a multipoint VC an ERR_L_DROP may be received
- indicating that a leaf node has terminated its participation at the
- ATM level. The ATM endpoint associated with the ERR_L_DROP MUST be
- removed from the locally held set {ATM.1, ATM.2, .... ATM.n}
- associated with the VC.
-
- After a random period of time between 1 and 10 seconds the
- VC_revalidate flag associated with that VC MUST be set true.
-
- If an ERR_L_RELEASE is received then the entire set {ATM.1, ATM.2,
- .... ATM.n} is cleared and the VC is considered to be completely shut
- down. Further packet transmission to the group served by this VC will
- result in a new VC being established as described in section 5.1.3.
-
- 5.1.5.2 When a jump is detected in the CSN.
-
- Section 5.1.4.2 describes how a CSN jump is detected. If a CSN jump
- is detected upon receipt of a MARS_JOIN or a MARS_LEAVE then every
- outgoing multicast VC MUST have its VC_revalidate flag set true at
- some random interval between 1 and 10 seconds from when the CSN jump
- was detected.
-
- The only exception to this rule is if a sequence number jump is
- detected during the establishment of a new group's VC (i.e. a
- MARS_MULTI reply 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 established, MUST
- have its VC_revalidate flag set true at some random interval between
- 1 and 10 seconds from when the CSN jump was detected. (The VC being
- established at the time is considered already validated.)
-
- 5.1.6 'Migrating' the outgoing multipoint VC
-
- In addition to the group tracking described in section 5.1.4, the
- transmit side of a cluster member must respond to 'migration'
- requests by the MARS. This is triggered by the reception of a
- MARS_MIGRATE message from ClusterControlVC. The MARS_MIGRATE message
- is shown below, with an mar$op code of 13.
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
-
-
-
- Armitage Standards Track [Page 27]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_MIGRATE = 13).
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$thtl 8 bits Type & length of target ATM number (x)
- mar$tstl 8 bits Type & length of target ATM subaddress (y)
- mar$tpln 8 bits Length of target group address (z)
- mar$tnum 16 bits Number of target ATM addresses returned (N)
- mar$resv 16 bits Reserved.
- mar$msn 32 bits MARS Sequence Number.
- mar$sha roctets source ATM number
- mar$ssa qoctets source ATM subaddress
- mar$spa soctets source protocol address
- mar$tpa zoctets target multicast group address
- mar$tha.1 xoctets target ATM number 1
- mar$tsa.1 yoctets target ATM subaddress 1
- mar$tha.2 xoctets target ATM number 2
- mar$tsa.2 yoctets target ATM subaddress 2
- [.......]
- mar$tha.N xoctets target ATM number N
- mar$tsa.N yoctets target ATM subaddress N
-
- A migration is requested when the MARS determines that it no longer
- wants cluster members forwarding their packets directly to the ATM
- addresses it had previously specified (through MARS_REQUESTs or
- MARS_JOINs). When a MARS_MIGRATE is received each cluster member MUST
- perform the following steps:
-
- Close down any existing outgoing VC associated with the group
- carried in the mar$tpa field (L_RELEASE), or dissociate the group
- from any outgoing VC it may have been sharing (as described in
- section 5.1.3).
-
- Establish a new outgoing VC for the specified group, using the
- algorithm described in section 5.1.3 and taking the set of ATM
- addresses supplied in the MARS_MIGRATE as the group's new set of
- members {ATM.1, .... ATM.n}.
-
- The MARS_MIGRATE carries the new set of members {ATM.1, .... ATM.n}
- in a single message, in similar manner to a single part MARS_MULTI.
- As with other messages from the MARS, the Cluster Sequence Number
- carried in mar$msn is checked as described in section 5.1.4.2.
-
-
-
-
-
-
-
- Armitage Standards Track [Page 28]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.2. Receive side behaviour.
-
- A cluster member is a 'group member' (in the sense that it receives
- packets directed at a given multicast group) when its ATM address
- appears in the MARS's table entry for the group's multicast address.
- A key function within each cluster is the distribution of group
- membership information from the MARS to cluster members.
-
- An endpoint may wish to 'join a group' in response to a local, higher
- level request for membership of a group, or because the endpoint
- supports a layer 3 multicast forwarding engine that requires the
- ability to 'see' intra-cluster traffic in order to forward it.
-
- Two messages support these requirements - MARS_JOIN and MARS_LEAVE.
- These are sent to the MARS by endpoints when the local layer 3/ATM
- interface is requested to join or leave a multicast group. The MARS
- propagates these messages back out over ClusterControlVC, to ensure
- the knowledge of the group's membership change is distributed in a
- timely fashion to other cluster members.
-
- Certain models of layer 3 endpoints (e.g. IP multicast routers)
- expect to be able to receive packet traffic 'promiscuously' across
- all groups. This functionality may be emulated by allowing routers
- to request that the MARS returns them as 'wild card' members of all
- Class D addresses. However, a problem inherent in the current ATM
- model is that a completely promiscuous router may exhaust the local
- reassembly resources in its ATM interface. MARS_JOIN supports a
- generalisation to the notion of 'wild card' entries, enabling routers
- to limit themselves to 'blocks' of the Class D address space. Use of
- this facility is described in greater detail in Section 8.
-
- A block can be as small as 1 (a single group) or as large as the
- entire multicast address space (e.g. default IPv4 'promiscuous'
- behaviour). A block is defined as all addresses between, and
- inclusive of, a <min,max> address pair. A MARS_JOIN or MARS_LEAVE may
- carry multiple <min,max> pairs.
-
- Cluster members MUST provide ONLY a single <min,max> pair in each
- JOIN/LEAVE message they issue. However, they MUST be able to process
- multiple <min,max> pairs in JOIN/LEAVE messages when performing VC
- management as described in section 5.1.4 (the interpretation being
- that the join/leave operation applies to all addresses in the range
- from <min> to <max> inclusive, for every <min,max> pair).
-
- In RFC1112 environments a MARS_JOIN for a single group is triggered
- by a JoinLocalGroup signal from the IP layer. A MARS_LEAVE for a
- single group is triggered by a LeaveLocalGroup signal from the IP
- layer.
-
-
-
- Armitage Standards Track [Page 29]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Cluster members with special requirements (e.g. multicast routers)
- may issue MARS_JOINs and MARS_LEAVEs specifying a single block of 2
- or more multicast group addresses. However, a cluster member SHALL
- NOT issue such a multi-group block join for an address range fully or
- partially overlapped by multi-group block join(s) that the cluster
- member has previously issued and not yet retracted. A cluster member
- MAY issue combinations of single group MARS_JOINs that overlap with a
- multi-group block MARS_JOIN.
-
- An endpoint MUST register with a MARS in order to become a member of
- a cluster and be added as a leaf to ClusterControlVC. Registration
- is covered in section 5.2.3.
-
- Finally, the endpoint MUST be capable of terminating unidirectional
- VCs (i.e. act as a leaf node of a UNI 3.0/3.1 point to multipoint VC,
- with zero bandwidth assigned on the return path). RFC 1755 describes
- the signalling information required to terminate VCs carrying
- LLC/SNAP encapsulated traffic (discussed further in section 5.5).
-
- 5.2.1 Format of the MARS_JOIN and MARS_LEAVE Messages.
-
- The MARS_JOIN message is indicated by an operation type value of 4.
- MARS_LEAVE has the same format and operation type value of 5. The
- message format is:
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_JOIN or MARS_LEAVE).
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$tpln 8 bits Length of group address (z)
- mar$pnum 16 bits Number of group address pairs (N)
- mar$flags 16 bits layer3grp, copy, and register flags.
- mar$cmi 16 bits Cluster Member ID
- mar$msn 32 bits MARS Sequence Number.
- mar$sha roctets source ATM number.
- mar$ssa qoctets source ATM subaddress.
- mar$spa soctets source protocol address
- mar$min.1 zoctets Minimum multicast group address - pair.1
- mar$max.1 zoctets Maximum multicast group address - pair.1
- [.......]
- mar$min.N zoctets Minimum multicast group address - pair.N
- mar$max.N zoctets Maximum multicast group address - pair.N
-
-
-
- Armitage Standards Track [Page 30]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- mar$spln indicates the number of bytes in the source endpoint's
- protocol address, and is interpreted in the context of the protocol
- indicated by the mar$pro field. (e.g. in IPv4 environments mar$pro
- will be 0x800, mar$spln is 4, and mar$tpln is 4.)
-
- The mar$flags field contains three flags:
-
- Bit 15 - mar$flags.layer3grp.
- Bit 14 - mar$flags.copy.
- Bit 13 - mar$flags.register.
- Bit 12 - mar$flags.punched.
- Bit 0-7 - mar$flags.sequence.
-
- Bits 8 to 11 are reserved and MUST be zero.
-
- mar$flags.sequence is set by cluster members, and MUST always be
- passed on unmodified by the MARS when retransmitting MARS_JOIN or
- MARS_LEAVE messages. It is source specific, and MUST be ignored by
- other cluster members. Its use is described in section 5.2.2.
-
- mar$flags.punched MUST be zero when the MARS_JOIN or MARS_LEAVE is
- transmitted to the MARS. Its use is described in section 5.2.2 and
- section 6.2.4.
-
- mar$flags.copy MUST be set to 0 when the message is being sent from a
- MARS client, and MUST be set to 1 when the message is being sent from
- a MARS. (This flag is intended to support integrating the MARS
- function with one of the MARS clients in your cluster. The
- destination of an incoming MARS_JOIN can be determined from its
- value.)
-
- mar$flags.layer3grp allows the MARS to provide the group membership
- information described further in section 5.3. The rules for its use
- are:
-
- mar$flags.layer3grp MUST be set when the cluster member is issuing
- the MARS_JOIN as the result of a layer 3 multicast group being
- explicitly joined. (e.g. as a result of a JoinHostGroup operation
- in an RFC1112 compliant host).
-
- mar$flags.layer3grp MUST be reset in each MARS_JOIN if the
- MARS_JOIN is simply the local ip/atm interface registering to
- receive traffic on that group for its own reasons.
-
- mar$flags.layer3grp is ignored and MUST be treated as reset by the
- MARS for any MARS_JOIN that specifies a block covering more than a
- single group (e.g. a block join from a router ensuring their
- forwarding engines 'see' all traffic).
-
-
-
- Armitage Standards Track [Page 31]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- mar$flags.register indicates whether the MARS_JOIN or MARS_LEAVE is
- being used to register or deregister a cluster member (described in
- section 5.2.3). When used to join or leave specific groups the
- mar$register flag MUST be zero.
-
- mar$pnum indicates how many <min,max> pairs are included in the
- message. This field MUST be 1 when the message is sent from a cluster
- member. A MARS MAY return a MARS_JOIN or MARS_LEAVE with any mar$pnum
- value, including zero. This will be explained futher in section
- 6.2.4.
-
- The mar$cmi field MUST be zeroed by cluster members, and is used by
- the MARS during cluster member registration, described in section
- 5.2.3.
-
- mar$msn MUST be zero when transmitted by an endpoint. It is set to
- the current value of the Cluster Sequence Number by the MARS when the
- MARS_JOIN or MARS_LEAVE is retransmitted. Its use has been described
- in section 5.1.4.
-
- To simplify construction and parsing of MARS_JOIN and MARS_LEAVE
- messages, the following restrictions are imposed on the <min,max>
- pairs:
-
- Assume max(N) is the <max> field from the Nth <min,max> pair.
- Assume min(N) is the <min> field from the Nth <min,max> pair.
- Assume a join/leave message arrives with K <min,max> pairs.
- The following must hold:
- max(N) < min(N+1) for 1 <= N < K
- max(N) >= min(N) for 1 <= N <= K
-
- In plain language, the set must specify an ascending sequence of
- address blocks. The definition of "greater" or "less than" may be
- protocol specific. In IPv4 environments the addresses are treated as
- 32 bit, unsigned binary values (most significant byte first).
-
- 5.2.1.1 Important IPv4 default values.
-
- The JoinLocalGroup and LeaveLocalGroup operations are only valid for
- a single group. For any arbitrary group address X the associated
- MARS_JOIN or MARS_LEAVE MUST specify a single pair <X, X>.
- mar$flags.layer3grp MUST be set under these circumstances.
-
- A router choosing to behave strictly in accordance with RFC1112 MUST
- specify the entire Class D space. The associated MARS_JOIN or
- MARS_LEAVE MUST specify a single pair <224.0.0.0, 239.255.255.255>.
- Whenever a router issues a MARS_JOIN only in order to forward IP
- traffic it MUST reset mar$flags.layer3grp.
-
-
-
- Armitage Standards Track [Page 32]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The use of alternative <min, max> values by multicast routers is
- discussed in Section 8.
-
- 5.2.2 Retransmission of MARS_JOIN and MARS_LEAVE messages.
-
- Transient problems may result in the loss of messages between the
- MARS and cluster members
-
- A simple algorithm is used to solve this problem. Cluster members
- retransmit each MARS_JOIN and MARS_LEAVE message at regular intervals
- until they receive a copy back again, either on ClusterControlVC or
- the VC on which they are sending the message. At this point the
- local endpoint can be certain that the MARS received and processed
- it.
-
- The interval should be no shorter than 5 seconds, and a default value
- of 10 seconds is recommended. After 5 retransmissions the attempt
- should be flagged locally as a failure. This MUST be considered as a
- MARS failure, and triggers the MARS reconnection described in section
- 5.4.
-
- A 'copy' is defined as a received message with the following fields
- matching a previously transmitted MARS_JOIN/LEAVE:
-
- - mar$op
- - mar$flags.register
- - mar$flags.sequence
- - mar$pnum
- - Source ATM address
- - First <min,max> pair
-
- In addition, a valid copy MUST have the following field values:
-
- - mar$flags.punched = 0
- - mar$flags.copy = 1
-
- The mar$flags.sequence field is never modified or checked by a MARS.
- Implementors MAY choose to utilize locally significant sequence
- number schemes, which MAY differ from one cluster member to the next.
- In the absence of such schemes the default value for
- mar$flags.sequence MUST be zero.
-
- Careful implementations MAY have more than one unacknowledged
- MARS_JOIN/LEAVE outstanding at a time.
-
-
-
-
-
-
-
- Armitage Standards Track [Page 33]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.2.3 Cluster member registration and deregistration.
-
- To become a cluster member an endpoint must register with the MARS.
- This achieves two things - the endpoint is added as a leaf node of
- ClusterControlVC, and the endpoint is assigned a 16 bit Cluster
- Member Identifier (CMI). The CMI uniquely identifies each endpoint
- that is attached to the cluster.
-
- Registration with the MARS occurs when an endpoint issues a MARS_JOIN
- with the mar$flags.register flag set to one (bit 13 of the mar$flags
- field).
-
- The cluster member MUST include its source ATM address, and MAY
- choose to specify a null source protocol address when registering.
-
- No protocol specific group addresses are included in a registration
- MARS_JOIN.
-
- The cluster member retransmits this MARS_JOIN in accordance with
- section 5.2.2 until it confirms that the MARS has received it.
-
- When the registration MARS_JOIN is returned it contains a non-zero
- value in mar$cmi. This value MUST be noted by the cluster member, and
- used whenever circumstances require the cluster member's CMI.
-
- An endpoint may also choose to de-register, using a MARS_LEAVE with
- mar$flags.register set. This would result in the MARS dropping the
- endpoint from ClusterControlVC, removing all references to the member
- in the mapping database, and freeing up its CMI.
-
- As for registration, a deregistration request MUST include the
- correct source ATM address for the cluster member, but MAY choose to
- specify a null source protocol address.
-
- The cluster member retransmits this MARS_LEAVE in accordance with
- section 5.2.2 until it confirms that the MARS has received it.
-
- 5.3 Support for Layer 3 group management.
-
- Whilst the intention of this specification is to be independent of
- layer 3 issues, an attempt is being made to assist the operation of
- layer 3 multicast routing protocols that need to ascertain if any
- groups have members within a cluster.
-
- One example is IP, where IGMP is used (as described in section 2)
- simply to determine whether any other cluster members are listening
- to a group because they have higher layer applications that want to
- receive a group's traffic.
-
-
-
- Armitage Standards Track [Page 34]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Routers may choose to query the MARS for this information, rather
- than multicasting IGMP queries to 224.0.0.1 and incurring the
- associated cost of setting up a VC to all systems in the cluster.
-
- The query is issued by sending a MARS_GROUPLIST_REQUEST to the MARS.
- MARS_GROUPLIST_REQUEST is built from a MARS_JOIN, but it has an
- operation code of 10. The first <min,max> pair will be used by the
- MARS to identify the range of groups in which the querying cluster
- member is interested. Any additional <min,max> pairs will be ignored.
- A request with mar$pnum = 0 will be ignored.
-
- The response from the MARS is a MARS_GROUPLIST_REPLY, carrying a list
- of the multicast groups within the specified <min,max> block that
- have Layer 3 members. A group is noted in this list if one or more
- of the MARS_JOINs that generated its mapping entry in the MARS
- contained a set mar$flags.layer3grp flag.
-
- MARS_GROUPLIST_REPLYs are transmitted back to the querying cluster
- member on the VC used to send the MARS_GROUPLIST_REQUEST.
-
- MARS_GROUPLIST_REPLY is derived from the MARS_MULTI but with mar$op =
- 11. It may have multiple parts if needed, and is received in a
- similar manner to a MARS_MULTI.
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_GROUPLIST_REPLY).
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$thtl 8 bits Unused - set to zero.
- mar$tstl 8 bits Unused - set to zero.
- mar$tpln 8 bits Length of target group address (z)
- mar$tnum 16 bits Number of group addresses returned (N).
- mar$seqxy 16 bits Boolean flag x and sequence number y.
- mar$msn 32 bits MARS Sequence Number.
- mar$sha roctets source ATM number.
- mar$ssa qoctets source ATM subaddress.
- mar$spa soctets source protocol address
- mar$mgrp.1 zoctets Group address 1
- [.......]
- mar$mgrp.N zoctets Group address N
-
- mar$seqxy is coded as for the MARS_MULTI - multiple
-
-
-
- Armitage Standards Track [Page 35]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- MARS_GROUPLIST_REPLY components are transmitted and received using
- the same algorithm as described in section 5.1.1 for MARS_MULTI. The
- only difference is that protocol addresses are being returned rather
- than ATM addresses.
-
- As for MARS_MULTIs, if an error occurs in the reception of a multi
- part MARS_GROUPLIST_REPLY the whole thing MUST be discarded and the
- MARS_GROUPLIST_REQUEST re-issued. (This includes the mar$msn value
- being constant.)
-
- Note that the ability to generate MARS_GROUPLIST_REQUEST messages,
- and receive MARS_GROUPLIST_REPLY messages, is not required for
- general host interface implementations. It is optional for interfaces
- being implemented to support layer 3 multicast forwarding engines.
- However, this functionality MUST be supported by the MARS.
-
- 5.4 Support for redundant/backup MARS entities.
-
- Endpoints are assumed to have been configured with the ATM address of
- at least one MARS. Endpoints MAY choose to maintain a table of ATM
- addresses, representing alternative MARSs that will be contacted in
- the event that normal operation with the original MARS is deemed to
- have failed. It is assumed that this table orders the ATM addresses
- in descending order of preference.
-
- An endpoint will typically decide there are problems with the MARS
- when:
-
- - It fails to establish a point to point VC to the MARS.
- - MARS_REQUESTs fail (section 5.1.1).
- - MARS_JOIN/MARS_LEAVEs fail (section 5.2.2).
- - It has not received a MARS_REDIRECT_MAP in the last 4 minutes
- (section 5.4.3).
-
- (If it is able to discern which connection represents
- ClusterControlVC, it may also use connection failures on this VC to
- indicate problems with the MARS).
-
- 5.4.1 First response to MARS problems.
-
- The first response is to assume a transient problem with the MARS
- being used at the time. The cluster member should wait a random
- period of time between 1 and 10 seconds before attempting to re-
- connect and re-register with the MARS. If the registration MARS_JOIN
- is successful then:
-
- The cluster member MUST then proceed to rejoin every group that
- its local higher layer protocol(s) have joined. It is
-
-
-
- Armitage Standards Track [Page 36]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- recommended that a random delay between 1 and 10 seconds be
- inserted before attempting each MARS_JOIN.
-
- The cluster member MUST initiate the revalidation of every
- multicast group it was sending to (as though a sequence number
- jump had been detected, section 5.1.5).
-
- The rejoin and revalidation procedure must not disrupt the
- cluster member's use of multipoint VCs that were already open at
- the time of the MARS failure.
-
- If re-registration with the current MARS fails, and there are no
- backup MARS addresses configured, the cluster member MUST wait for at
- least 1 minute before repeating the re-registration procedure. It is
- RECOMMENDED that the cluster member signals an error condition in
- some locally significant fashion.
-
- This procedure may repeat until network administrators manually
- intervene or the current MARS returns to normal operation.
-
- 5.4.2 Connecting to a backup MARS.
-
- If the re-registration with the current MARS fails, and other MARS
- addresses have been configured, the next MARS address on the list is
- chosen to be the current MARS, and the cluster member immediately
- restarts the re-registration procedure described in section 5.4.1. If
- this is succesful the cluster member will resume normal operation
- using the new MARS. It is RECOMMENDED that the cluster member signals
- a warning of this condition in some locally significant fashion.
-
- If the attempt at re-registration with the new MARS fails, the
- cluster member MUST wait for at least 1 minute before choosing the
- next MARS address in the table and repeating the procedure. If the
- end of the table has been reached, the cluster member starts again at
- the top of the table (which should be the original MARS that the
- cluster member started with).
-
- In the worst case scenario this will result in cluster members
- looping through their table of possible MARS addresses until network
- administrators manually intervene.
-
- 5.4.3 Dynamic backup lists, and soft redirects.
-
- To support some level of autoconfiguration, a MARS message is defined
- that allows the current MARS to broadcast on ClusterControlVC a table
- of backup MARS addresses. When this message is received, cluster
- members that maintain a list of backup MARS addresses MUST insert
- this information at the top of their locally held list (i.e. the
-
-
-
- Armitage Standards Track [Page 37]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- information provided by the MARS has a higher preference than
- addresses that may have been manually configured into the cluster
- member).
-
- The message is MARS_REDIRECT_MAP. It is based on the MARS_MULTI
- message, with the following changes:
-
- - mar$tpln field replaced by mar$redirf.
- - mar$spln field reserved.
- - mar$tpa and mar$spa eliminated.
-
- MARS_REDIRECT_MAP has an operation type code of 12 decimal.
-
- Data:
- mar$afn 16 bits Address Family (0x000F).
- mar$pro 56 bits Protocol Identification.
- mar$hdrrsv 24 bits Reserved. Unused by MARS control protocol.
- mar$chksum 16 bits Checksum across entire MARS message.
- mar$extoff 16 bits Extensions Offset.
- mar$op 16 bits Operation code (MARS_REDIRECT_MAP).
- mar$shtl 8 bits Type & length of source ATM number. (r)
- mar$sstl 8 bits Type & length of source ATM subaddress. (q)
- mar$spln 8 bits Length of source protocol address (s)
- mar$thtl 8 bits Type & length of target ATM number (x)
- mar$tstl 8 bits Type & length of target ATM subaddress (y)
- mar$redirf 8 bits Flag controlling client redirect behaviour.
- mar$tnum 16 bits Number of MARS addresses returned (N).
- mar$seqxy 16 bits Boolean flag x and sequence number y.
- mar$msn 32 bits MARS Sequence Number.
- mar$sha roctets source ATM number
- mar$ssa qoctets source ATM subaddress
- mar$tha.1 xoctets ATM number for MARS 1
- mar$tsa.1 yoctets ATM subaddress for MARS 1
- mar$tha.2 xoctets ATM number for MARS 2
- mar$tsa.2 yoctets ATM subaddress for MARS 2
- [.......]
- mar$tha.N xoctets ATM number for MARS N
- mar$tsa.N yoctets ATM subaddress for MARS N
-
- The source ATM address field(s) MUST identify the originating MARS.
- A multi-part MARS_REDIRECT_MAP may be transmitted and reassembled
- using the mar$seqxy field in the same manner as a multi-part
- MARS_MULTI (section 5.1.1). If a failure occurs during the reassembly
- of a multi-part MARS_REDIRECT_MAP (a part lost, reassembly timeout,
- or illegal MARS Sequence Number jump) the entire message MUST be
- discarded.
-
-
-
-
-
- Armitage Standards Track [Page 38]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- This message is transmitted regularly by the MARS (it MUST be
- transmitted at least every 2 minutes, it is RECOMMENDED that it is
- transmitted every 1 minute).
-
- The MARS_REDIRECT_MAP is also used to force cluster members to shift
- from one MARS to another. If the ATM address of the first MARS
- contained in a MARS_REDIRECT_MAP table is not the address of cluster
- member's current MARS the client MUST 'redirect' to the new MARS. The
- mar$redirf field controls how the redirection occurs.
-
- mar$redirf has the following format:
-
- 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+
- |x| |
- +-+-+-+-+-+-+-+-+
-
- If Bit 7 (the most significant bit) of mar$redirf is 1 then the
- cluster member MUST perform a 'hard' redirect. Having installed the
- new table of MARS addresses carried by the MARS_REDIRECT_MAP, the
- cluster member re-registers with the MARS now at the top of the table
- using the mechanism described in sections 5.4.1 and 5.4.2.
-
- If Bit 7 of mar$redirf is 0 then the cluster member MUST perform a
- 'soft' redirect, beginning with the following actions:
-
- - open a point to point VC to the first ATM address.
- - attempt a registration (section 5.2.3).
-
- If the registration succeeds, the cluster member shuts down its point
- to point VC to the current MARS (if it had one open), and then
- proceeds to use the newly opened point to point VC as its connection
- to the 'current MARS'. The cluster member does NOT attempt to rejoin
- the groups it is a member of, or revalidate groups it is currently
- sending to.
-
- This is termed a 'soft redirect' because it avoids the extra
- rejoining and revalidation processing that occurs when a MARS failure
- is being recovered from. It assumes some external synchronisation
- mechanisms exist between the old and new MARS - mechanisms that are
- outside the scope of this specification.
-
- Some level of trust is required before initiating a soft redirect. A
- cluster member MUST check that the calling party at the other end of
- the VC on which the MARS_REDIRECT_MAP arrived (supposedly
- ClusterControlVC) is in fact the node it trusts as the current MARS.
-
- Additional applications of this function are for further study.
-
-
-
- Armitage Standards Track [Page 39]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 5.5 Data path LLC/SNAP encapsulations.
-
- An extended encapsulation scheme is required to support the filtering
- of possible reflected packets (section 3.3).
-
- Two LLC/SNAP codepoints are allocated from the IANA OUI space. These
- support two different mechanisms for detecting reflected packets.
- They are called Type #1 and Type #2 multicast encapsulations.
-
- Type #1
-
- [0xAA-AA-03][0x00-00-5E][0x00-01][Type #1 Extended Layer 3 packet]
- LLC OUI PID
-
- Type #2
-
- [0xAA-AA-03][0x00-00-5E][0x00-04][Type #2 Extended Layer 3 packet]
- LLC OUI PID
-
- For conformance with this document MARS clients:
-
- MUST transmit data using Type #1 encapsulation.
-
- MUST be able to correctly receive traffic using Type #1 OR Type #2
- encapsulation.
-
- MUST NOT transmit using Type #2 encapsulation.
-
- 5.5.1 Type #1 encapsulation.
-
- The Type #1 Extended layer 3 packet carries within it a copy of the
- source's Cluster Member ID (CMI) and either the 'short form' or 'long
- form' of the protocol type as appropriate (section 4.3).
-
- When carrying packets belonging to protocols with valid short form
- representations the [Type #1 Extended Layer 3 packet] is encoded as:
-
- [pkt$cmi][pkt$pro][Original Layer 3 packet]
- 2octet 2octet N octet
-
- The first 2 octets (pkt$cmi) carry the CMI assigned when an endpoint
- registers with the MARS (section 5.2.3). The second 2 octets
- (pkt$pro) indicate the protocol type of the packet carried in the
- remainder of the payload. This is copied from the mar$pro field used
- in the MARS control messages.
-
- When carrying packets belonging to protocols that only have a long
- form representation (pkt$pro = 0x80) the overhead SHALL be further
-
-
-
- Armitage Standards Track [Page 40]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- extended to carry the 5 byte mar$pro.snap field (with padding for 32
- bit alignment). The encoded form SHALL be:
-
- [pkt$cmi][0x00-80][mar$pro.snap][padding][Original Layer 3 packet]
- 2octet 2octet 5 octets 3 octets N octet
-
-
- The CMI is copied into the pkt$cmi field of every outgoing Type #1
- packet. When an endpoint interface receives an AAL_SDU with the
- LLC/SNAP codepoint indicating Type #1 encapsulation it compares the
- CMI field with its own Cluster Member ID for the indicated protocol.
- The packet is discarded silently if they match. Otherwise the packet
- is accepted for processing by the local protocol entity identified by
- the pkt$pro (and possibly SNAP) field(s).
-
- Where a protocol has valid short and long forms of identification,
- receivers MAY choose to additionally recognise the long form.
-
- 5.5.2 Type #2 encapsulation.
-
- Future developments may enable direct multicasting of AAL_SDUs beyond
- cluster boundaries. Expanding the set of possible sources in this way
- may cause the CMI to become an inadequate parameter with which to
- detect reflected packets. A larger source identification field may
- be required.
-
- The Type #2 Extended layer 3 packet carries within it an 8 octet
- source ID field and either the 'short form' or 'long form' of the
- protocol type as appropriate (section 4.3). The form and content of
- the source ID field is currently unspecified, and is not relevant to
- any MARS client built in conformance with this document. Received
- Type #2 encapsulated packets MUST always be accepted and passed up to
- the higher layer indicated by the protocol identifier.
-
- When carrying packets belonging to protocols with valid short form
- representations the [Type #2 Extended Layer 3 packet] is encoded as:
-
- [8 octet sourceID][mar$pro.type][Null pad][Original Layer 3
- packet]
- 2octets 2octets
-
- When carrying packets belonging to protocols that only have a long
- form representation (pkt$pro = 0x80) the overhead SHALL be further
- extended to carry the 5 byte mar$pro.snap field (with padding for 32
- bit alignment). The encoded form SHALL be:
-
- [8 octet sourceID][mar$pro.type][mar$pro.snap][Null pad][Layer 3
- packet]
-
-
-
- Armitage Standards Track [Page 41]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 2octets 5octets 1octet
-
- (Note that in this case the padding after the SNAP field is 1 octet
- rather than the 3 octets used in Type #1.)
-
- Where a protocol has valid short and long forms of identification,
- receivers MAY choose to additionally recognise the long form.
-
- (Future documents may specify the contents of the source ID field.
- This will only be relevant to implementations sending Type #2
- encapsulated packets, as they are the only entities that need to be
- concerned about detecting reflected Type #2 packets.)
-
- 5.5.3 A Type #1 example.
-
- An IPv4 packet (fully identified by an Ethertype of 0x800, therefore
- requiring 'short form' protocol type encoding) would be transmitted
- as:
-
- [0xAA-AA-03][0x00-00-5E][0x00-01][pkt$cmi][0x800][IPv4 packet]
-
- The different LLC/SNAP codepoints for unicast and multicast packet
- transmission allows a single IPv4/ATM interface to support both by
- demuxing on the LLC/SNAP header.
-
- 6. The MARS in greater detail.
-
- Section 5 implies a lot about the MARS's basic behaviour as observed
- by cluster members. This section summarises the behaviour of the MARS
- for groups that are VC mesh based, and describes how a MARSs
- behaviour changes when an MCS is registered to support a group.
-
- The MARS is intended to be a multiprotocol entity - all its mapping
- tables, CMIs, and control VCs MUST be managed within the context of
- the mar$pro field in incoming MARS messages. For example, a MARS
- supports completely separate ClusterControlVCs for each layer 3
- protocol that it is registering members for. If a MARS receives
- messages with a mar$pro that it does not support, the message is
- dropped.
-
- In general the MARS treats protocol addresses as arbitrary byte
- strings. For example, the MARS will not apply IPv4 specific 'class'
- checks to addresses supplied under mar$pro = 0x800. It is sufficient
- for the MARS to simply assume that endpoints know how to interpret
- the protocol addresses that they are establishing and releasing
- mappings for.
-
-
-
-
-
- Armitage Standards Track [Page 42]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The MARS requires control messages to carry the originator's identity
- in the source ATM address field(s). Messages that arrive with an
- empty ATM Number field are silently discarded prior to any other
- processing by the MARS. (Only the ATM Number field needs to be
- checked. An empty ATM Number field combined with a non-empty ATM
- Subaddress field does not represent a valid ATM address.)
-
- (Some example pseudo-code for a MARS can be found in Appendix F.)
-
- 6.1 Basic interface to Cluster members.
-
- The following MARS messages are used or required by cluster members:
-
- 1 MARS_REQUEST
- 2 MARS_MULTI
- 4 MARS_JOIN
- 5 MARS_LEAVE
- 6 MARS_NAK
- 10 MARS_GROUPLIST_REQUEST
- 11 MARS_GROUPLIST_REPLY
- 12 MARS_REDIRECT_MAP
-
- 6.1.1 Response to MARS_REQUEST.
-
- Except as described in section 6.2, if a MARS_REQUEST arrives whose
- source ATM address does not match that of any registered Cluster
- member the message MUST be dropped and ignored.
-
- 6.1.2 Response to MARS_JOIN and MARS_LEAVE.
-
- When a registration MARS_JOIN arrives (described in section 5.2.3)
- the MARS performs the following actions:
-
- - Adds the node to ClusterControlVC.
- - Allocates a new Cluster Member ID (CMI).
- - Inserts the new CMI into the mar$cmi field of the MARS_JOIN.
- - Retransmits the MARS_JOIN back privately.
-
- If the node is already a registered member of the cluster associated
- with the specified protocol type then its existing CMI is simply
- copied into the MARS_JOIN, and the MARS_JOIN retransmitted back to
- the node. A single node may register multiple times if it supports
- multiple layer 3 protocols. The CMIs allocated by the MARS for each
- such registration may or may not be the same.
-
- The retransmitted registration MARS_JOIN must NOT be sent on
- ClusterControlVC. If a cluster member issues a deregistration
- MARS_LEAVE it too is retransmitted privately.
-
-
-
- Armitage Standards Track [Page 43]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Non-registration MARS_JOIN and MARS_LEAVE messages are ignored if
- they arrive from a node that is not registered as a cluster member.
-
- MARS_JOIN or MARS_LEAVE messages MUST arrive at the MARS with
- mar$flags.copy set to 0, otherwise the message is silently ignored.
-
- All outgoing MARS_JOIN or MARS_LEAVE messages SHALL have
- mar$flags.copy set to 1, and mar$msn set to the current Cluster
- Sequence Number for ClusterControlVC (Section 5.1.4.2).
-
- mar$flags.layer3grp (section 5.3) MUST be treated as reset for
- MARS_JOINs specifying a single <min,max> pair covering more than a
- single group. If a MARS_JOIN/LEAVE is received that contains more
- than one <min,max> pair, the MARS MUST silently drop the message.
-
- If one or more MCSs have registered with the MARS, message processing
- continues as described in section 6.2.4.
-
- The MARS database is updated to add the node to any indicated
- group(s) that it was not already considered a member of, and message
- processing continues as follows:
-
- If a single group was being joined or left:
-
- mar$flags.punched is set to 0.
-
- If the joining (leaving) node was already (is still) considered a
- member of the specified group, the message is retransmitted
- privately back to the cluster member. Otherwise the message is
- retransmitted on ClusterControlVC.
-
- If a single block covering 2 or more groups was being joined or left:
-
- A copy of the original MARS_JOIN/LEAVE is made. This copy then has
- its <min,max> block replaced with a 'hole punched' set of zero or
- more <min,max> pairs. The 'hole punched' set of <min,max> pairs
- covers the entire address range specified by the original
- <min,max> pair, but excludes those addresses/groups which the
- joining (leaving) node is already (still) a member of due to a
- previous single group join.
-
- If no 'holes' were punched in the specified block, the original
- MARS_JOIN/LEAVE is retransmitted out on ClusterControlVC.
- Otherwise the following occurs:
-
- The original MARS_JOIN/LEAVE is transmitted back to the source
- cluster member unchanged, using the VC it arrived on. The
- mar$flags.punched field MUST be reset to 0 in this message.
-
-
-
- Armitage Standards Track [Page 44]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- If the hole-punched set contains 1 or more <min,max> pair, the
- copy of the original MARS_JOIN/LEAVE is transmitted on
- ClusterControlVC, carrying the new <min,max> list. The
- mar$flags.punched field MUST be set to 1 in this message. (The
- mar$flags.punched field is set to ensure the hole-punched copy
- is ignored by the message's source when trying to match
- received MARS_JOIN/LEAVE messages with ones previously sent
- (section 5.2.2)).
-
- If the MARS receives a deregistration MARS_LEAVE (described in
- section 5.2.3) that member's ATM address MUST be removed from all
- groups for which it may have joined, dropped from ClusterControlVC,
- and the CMI released.
-
- If the MARS receives an ERR_L_RELEASE on ClusterControlVC indicating
- that a cluster member has disconnected, that member's ATM address
- MUST be removed from all groups for which it may have joined, and the
- CMI released.
-
- 6.1.3 Generating MARS_REDIRECT_MAP.
-
- A MARS_REDIRECT_MAP message (described in section 5.4.3) MUST be
- regularly transmitted on ClusterControlVC. It is RECOMMENDED that
- this occur every 1 minute, and it MUST occur at least every 2
- minutes. If the MARS has no knowledge of other backup MARSs serving
- the cluster, it MUST include its own address as the only entry in the
- MARS_REDIRECT_MAP message (in addition to filling in the source
- address fields).
-
- The design and use of backup MARS entities is beyond the scope of
- this document, and will be covered in future work.
-
- 6.1.4 Cluster Sequence Numbers.
-
- The Cluster Sequence Number (CSN) is described in section 5.1.4, and
- is carried in the mar$msn field of MARS messages being sent to
- cluster members (either out ClusterControlVC or on an individual VC).
- The MARS increments the CSN after every transmission of a message on
- ClusterControlVC. The current CSN is copied into the mar$msn field
- of MARS messages being sent to cluster members, whether out
- ClusterControlVC or on a private VC.
-
- A MARS should be carefully designed to minimise the possibility of
- the CSN jumping unnecessarily. Under normal operation only cluster
- members affected by transient link problems will miss CSN updates and
- be forced to revalidate. If the MARS itself glitches, it will be
- innundated with requests for a period as every cluster member
- attempts to revalidate.
-
-
-
- Armitage Standards Track [Page 45]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Calculations on the CSN MUST be performed as unsigned 32 bit
- arithmetic.
-
- One implication of this mechanism is that the MARS should serialize
- its processing of 'simultaneous' MARS_REQUEST, MARS_JOIN and
- MARS_LEAVE messages. Join and Leave operations should be queued
- within the MARS along with MARS_REQUESTS, and not processed until all
- the reply packets of a preceeding MARS_REQUEST have been transmitted.
- The transmission of MARS_REDIRECT_MAP should also be similarly
- queued.
-
- (The regular transmission of MARS_REDIRECT_MAP serves a secondary
- purpose of allowing cluster members to track the CSN, even if they
- miss an earlier MARS_JOIN or MARS_LEAVE.)
-
- 6.2 MARS interface to Multicast Servers (MCS).
-
- When the MARS returns the actual addresses of group members, the
- endpoint behaviour described in section 5 results in all groups being
- supported by meshes of point to multipoint VCs. However, when MCSs
- register to support particular layer 3 multicast groups the MARS
- modifies its use of various MARS messages to fool endpoints into
- using the MCS instead.
-
- The following MARS messages are associated with interaction between
- the MARS and MCSs.
-
- 3 MARS_MSERV
- 7 MARS_UNSERV
- 8 MARS_SJOIN
- 9 MARS_SLEAVE
-
- The following MARS messages are treated in a slightly different
- manner when MCSs have registered to support certain group addresses:
-
- 1 MARS_REQUEST
- 4 MARS_JOIN
- 5 MARS_LEAVE
-
- A MARS must keep two sets of mappings for each layer 3 group using
- MCS support. The original {layer 3 address, ATM.1, ATM.2, ... ATM.n}
- mapping (now termed the 'host map', although it includes routers) is
- augmented by a parallel {layer 3 address, server.1, server.2, ....
- server.K} mapping (the 'server map'). It is assumed that no ATM
- addresses appear in both the server and host maps for the same
- multicast group. Typically K will be 1, but it will be larger if
- multiple MCSs are configured to support a given group.
-
-
-
-
- Armitage Standards Track [Page 46]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The MARS also maintains a point to multipoint VC out to any MCSs
- registered with it, called ServerControlVC (section 6.2.3). This
- serves an analogous role to ClusterControlVC, allowing the MARS to
- update the MCSs with group membership changes as they occur. A MARS
- MUST also send its regular MARS_REDIRECT_MAP transmissions on both
- ServerControlVC and ClusterControlVC.
-
- 6.2.1 Response to a MARS_REQUEST if MCS is registered.
-
- When the MARS receives a MARS_REQUEST for an address that has both
- host and server maps it generates a response based on the identity of
- the request's source. If the requestor is a member of the server map
- for the requested group then the MARS returns the contents of the
- host map in a sequence of one or more MARS_MULTIs. Otherwise, if the
- source is a valid cluster member, the MARS returns the contents of
- the server map in a sequence of one or more MARS_MULTIs. If the
- source is neither a cluster member, nor a member of the server map
- for the group, the request is dropped and ignored.
-
- Servers use the host map to establish a basic distribution VC for the
- group. Cluster members will establish outgoing multipoint VCs to
- members of the group's server map, without being aware that their
- packets will not be going directly to the multicast group's members.
-
- 6.2.2 MARS_MSERV and MARS_UNSERV messages.
-
- MARS_MSERV and MARS_UNSERV are identical to the MARS_JOIN message.
- An MCS uses a MARS_MSERV with a <min,max> pair of <X,X> to specify
- the multicast group X that it is willing to support. A single group
- MARS_UNSERV indicates the group that the MCS is no longer willing to
- support. The operation code for MARS_MSERV is 3 (decimal), and
- MARS_UNSERV is 7 (decimal).
-
- Both of these messages are sent to the MARS over a point to point VC
- (between MCS and MARS). After processing, they are retransmitted on
- ServerControlVC to allow other MCSs to note the new node.
-
- When registering or deregistering support for specific groups the
- mar$flags.register flag MUST be zero. (This flag is only one when the
- MCS is registering as a member of ServerControlVC, as described in
- section 6.2.3.)
-
- When an MCS issues a MARS_MSERV for a specific group the message MUST
- be dropped and ignored if the source has not already registered with
- the MARS as a multicast server (section 6.2.3). Otherwise, the MARS
- adds the new ATM address to the server map for the specified group,
- possibly constructing a new server map if this is the first MCS for
- the group.
-
-
-
- Armitage Standards Track [Page 47]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- If a MARS_MSERV represents the first MCS to register for a particular
- group, and there exists a non null host map serving that particular
- group, the MARS issues a MARS_MIGRATE (section 5.1.6) on
- ClusterControlVC. The MARS's own identity is placed in the source
- protocol and hardware address fields of the MARS_MIGRATE. The ATM
- address of the MCS is placed as the first and only target ATM
- address. The address of the affected group is placed in the target
- multicast group address field.
-
- If a MARS_MSERV is not the first MCS to register for a particular
- group the MARS simply changes its operation code to MARS_JOIN, and
- sends a copy of the message on ClusterControlVC. This fools the
- cluster members into thinking a new leaf node has been added to the
- group specified. In the retransmitted MARS_JOIN mar$flags.layer3grp
- MUST be zero, mar$flags.copy MUST be one, and mar$flags.register MUST
- be zero.
-
- When an MCS issues a MARS_UNSERV the MARS removes its ATM address
- from the server maps for each specified group, deleting any server
- maps that end up being null after the operation.
-
- The operation code is then changed to MARS_LEAVE and the MARS sends a
- copy of the message on ClusterControlVC. This fools the cluster
- members into thinking a leaf node has been dropped from the group
- specified. In the retransmitted MARS_LEAVE mar$flags.layer3grp MUST
- be zero, mar$flags.copy MUST be one, and mar$flags.register MUST be
- zero.
-
- The MARS retransmits redundant MARS_MSERV and MARS_UNSERV messages
- directly back to the MCS generating them. MARS_MIGRATE messages are
- never repeated in response to redundant MARS_MSERVs.
-
- The last or only MCS for a group MAY choose to issue a MARS_UNSERV
- while the group still has members. When the MARS_UNSERV is processed
- by the MARS the 'server map' will be deleted. When the associated
- MARS_LEAVE is issued on ClusterControlVC, all cluster members with a
- VC open to the MCS for that group will close down the VC (in
- accordance with section 5.1.4, since the MCS was their only leaf
- node). When cluster members subsequently find they need to transmit
- packets to the group, they will begin again with the
- MARS_REQUEST/MARS_MULTI sequence to establish a new VC. Since the
- MARS will have deleted the server map, this will result in the host
- map being returned, and the group reverts to being supported by a VC
- mesh.
-
- The reverse process is achieved through the MARS_MIGRATE message when
- the first MCS registers to support a group. This ensures that
- cluster members explicitly dismantle any VC mesh they may have had
-
-
-
- Armitage Standards Track [Page 48]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- up, and re-establish their multicast forwarding path with the MCS as
- its termination point.
-
- 6.2.3 Registering a Multicast Server (MCS).
-
- Section 5.2.3 describes how endpoints register as cluster members,
- and hence get added as leaf nodes to ClusterControlVC. The same
- approach is used to register endpoints that intend to provide MCS
- support.
-
- Registration with the MARS occurs when an endpoint issues a
- MARS_MSERV with mar$flags.register set to one. Upon registration the
- endpoint is added as a leaf node to ServerControlVC, and the
- MARS_MSERV is returned to the MCS privately.
-
- The MCS retransmits this MARS_MSERV until it confirms that the MARS
- has received it (by receiving a copy back, in an analogous way to the
- mechanism described in section 5.2.2 for reliably transmitting
- MARS_JOINs).
-
- The mar$cmi field in MARS_MSERVs MUST be set to zero by both MCS and
- MARS.
-
- An MCS may also choose to de-register, using a MARS_UNSERV with
- mar$flags.register set to one. When this occurs the MARS MUST remove
- all references to that MCS in all servermaps associated with the
- protocol (mar$pro) specified in the MARS_UNSERV, and drop the MCS
- from ServerControlVC.
-
- Note that multiple logical MCSs may share the same physical ATM
- interface, provided that each MCS uses a separate ATM address (e.g. a
- different SEL field in the NSAP format address). In fact, an MCS may
- share the ATM interface of a node that is also a cluster member
- (either host or router), provided each logical entity has a different
- ATM address.
-
- A MARS MUST be capable of handling a multi-entry servermap. However,
- the possible use of multiple MCSs registering to support the same
- group is a subject for further study. In the absence of an MCS
- synchronisation protocol a system administrator MUST NOT allow more
- than one logical MCS to register for a given group.
-
- 6.2.4 Modified response to MARS_JOIN and MARS_LEAVE.
-
- The existence of MCSs supporting some groups but not others requires
- the MARS to modify its distribution of single and block join/leave
- updates to cluster members. The MARS also adds two new messages -
- MARS_SJOIN and MARS_SLEAVE - for communicating group changes to MCSs
-
-
-
- Armitage Standards Track [Page 49]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- over ServerControlVC.
-
- The MARS_SJOIN and MARS_SLEAVE messages are identical to MARS_JOIN,
- with operation codes 18 and 19 (decimal) respectively.
-
- When a cluster member issues MARS_JOIN or MARS_LEAVE for a single
- group, the MARS checks to see if the group has an associated server
- map. If the specified group does not have a server map processing
- continues as described in section 6.1.2.
-
- However, if a server map exists for the group a new set of actions
- are taken.
-
- If the joining (leaving) node was not already (is no longer)
- considered a member of the specified group, a copy of the
- MARS_JOIN/LEAVE is made with type MARS_SJOIN or MARS_SLEAVE as
- appropriate, and transmitted on ServerControlVC. This allows the
- MCS(s) supporting the group to note the new member and update
- their data VCs.
-
- The original message is transmitted back to the source cluster
- member unchanged, using the VC it arrived on rather than
- ClusterControlVC. The mar$flags.punched field MUST be reset to 0
- in this message.
-
- (Section 5.2.2 requires cluster members have a mechanism to confirm
- the reception of their message by the MARS. For mesh supported
- groups, using ClusterControlVC serves dual purpose of providing this
- confirmation and distributing group update information. When a group
- is MCS supported, there is no reason for all cluster members to
- process null join/leave messages on ClusterControlVC, so they are
- sent back on the private VC between cluster member and MARS.)
-
- Receipt of a block MARS_JOIN (e.g. from a router coming on-line) or
- MARS_LEAVE requires a more complex response. The single <min,max>
- block may simultaneously cover mesh supported and MCS supported
- groups. However, cluster members only need to be informed of the
- mesh supported groups that the endpoint has joined. Only the MCSs
- need to know if the endpoint is joining any MCS supported groups.
-
- The solution is to modify the MARS_JOIN or MARS_LEAVE that is
- retransmitted on ClusterControlVC. The following action is taken:
-
- A copy of the MARS_JOIN/LEAVE is made with type MARS_SJOIN or
- MARS_SLEAVE as appropriate, with its <min,max> block replaced with
- a 'hole punched' set of zero or more <min,max> pairs. The 'hole
- punched' set of <min,max> pairs covers the entire address range
- specified by the original <min,max> pair, but excludes those
-
-
-
- Armitage Standards Track [Page 50]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- addresses/groups which the joining (leaving) node is already
- (still) a member of due to a previous single group join.
-
- Before transmission on the ClusterControlVC, the original
- MARS_JOIN/LEAVE then has its <min,max> block replaced with a 'hole
- punched' set of zero or more <min,max> pairs. The 'hole punched'
- set of <min,max> pairs covers the entire address range specified
- by the original <min,max> pair, but excludes those
- addresses/groups supported by MCSs or which the joining (leaving)
- node is already (still) a member of due to a previous single group
- join.
-
- If no 'holes' were punched in the specified block, the original
- MARS_JOIN/LEAVE is re-transmitted out on ClusterControlVC
- unchanged. Otherwise the following occurs:
-
- The original MARS_JOIN/LEAVE is transmitted back to the source
- cluster member unchanged, using the VC it arrived on. The
- mar$flags.punched field MUST be reset to 0 in this message.
-
- If the hole-punched set contains 1 or more <min,max> pair, a
- copy of the original MARS_JOIN/LEAVE is transmitted on
- ClusterControlVC, carrying the new <min,max> list. The
- mar$flags.punched field MUST be set to 1 in this message.
-
- The mar$flags.punched field is set to ensure the hole-punched copy
- is ignored by the message's source when trying to match received
- MARS_JOIN/LEAVE messages with ones previously sent (section
- 5.2.2).
-
- (Appendix A discusses some algorithms for 'hole punching'.)
-
- It is assumed that MCSs use the MARS_SJOINs and MARS_SLEAVEs to
- update their own VCs out to the actual group's members.
-
- mar$flags.layer3grp is copied over into the messages transmitted by
- the MARS. mar$flags.copy MUST be set to one.
-
- 6.2.5 Sequence numbers for ServerControlVC traffic.
-
- In an analogous fashion to the Cluster Sequence Number, the MARS
- keeps a Server Sequence Number (SSN) that is incremented after every
- transmission on ServerControlVC. The current value of the SSN is
- inserted into the mar$msn field of every message the MARS issues that
- it believes is destined for an MCS. This includes MARS_MULTIs that
- are being returned in response to a MARS_REQUEST from an MCS, and
- MARS_REDIRECT_MAP being sent on ServerControlVC. The MARS must check
- the MARS_REQUESTs source, and if it is a registered MCS the SSN is
-
-
-
- Armitage Standards Track [Page 51]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- copied into the mar$msn field, otherwise the CSN is copied into the
- mar$msn field.
-
- MCSs are expected to track and use the SSNs in an analogous manner to
- the way endpoints use the CSN in section 5.1 (to trigger revalidation
- of group membership information).
-
- A MARS should be carefully designed to minimise the possibility of
- the SSN jumping unnecessarily. Under normal operation only MCSs that
- are affected by transient link problems will miss mar$msn updates and
- be forced to revalidate. If the MARS itself glitches it will be
- innundated with requests for a period as every MCS attempts to
- revalidate.
-
- 6.3 Why global sequence numbers?
-
- The CSN and SSN are global within the context of a given protocol
- (e.g. IPv4, mar$pro = 0x800). They count ClusterControlVC and
- ServerControlVC activity without reference to the multicast group(s)
- involved. This may be perceived as a limitation, because there is no
- way for cluster members or multicast servers to isolate exactly which
- multicast group they may have missed an update for. An alternative
- was to try and provide a per-group sequence number.
-
- Unfortunately per-group sequence numbers are not practical. The
- current mechanism allows sequence information to be piggy-backed onto
- MARS messages already in transit for other reasons. The ability to
- specify blocks of multicast addresses with a single MARS_JOIN or
- MARS_LEAVE means that a single message can refer to membership change
- for multiple groups simultaneously. A single mar$msn field cannot
- provide meaningful information about each group's sequence. Multiple
- mar$msn fields would have been unwieldy.
-
- Any MARS or cluster member that supports different protocols MUST
- keep separate mapping tables and sequence numbers for each protocol.
-
- 6.4 Redundant/Backup MARS Architectures.
-
- If backup MARSs exist for a given cluster then mechanisms are needed
- to ensure consistency between their mapping tables and those of the
- active, current MARS.
-
- (Cluster members will consider backup MARSs to exist if they have
- been configured with a table of MARS addresses, or the regular
- MARS_REDIRECT_MAP messages contain a list of 2 or more addresses.)
-
- The definition of an MARS-synchronization protocol is beyond the
- current scope of this document, and is expected to be the subject of
-
-
-
- Armitage Standards Track [Page 52]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- further research work. However, the following observations may be
- made:
-
- MARS_REDIRECT_MAP messages exist, enabling one MARS to force
- endpoints to move to another MARS (e.g. in the aftermath of a MARS
- failure, the chosen backup MARS will eventually wish to hand
- control of the cluster over to the main MARS when it is
- functioning properly again).
-
- Cluster members and MCSs do not need to start up with knowledge of
- more than one MARS, provided that MARS correctly issues
- MARS_REDIRECT_MAP messages with the full list of MARSs for that
- cluster.
-
- Any mechanism for synchronising backup MARSs (and coping with the
- aftermath of MARS failures) should be compatible with the cluster
- member behaviour described in this document.
-
- 7. How an MCS utilises a MARS.
-
- When an MCS supports a multicast group it acts as a proxy cluster
- endpoint for the senders to the group. It also behaves in an
- analogous manner to a sender, managing a single outgoing point to
- multipoint VC to the real group members.
-
- Detailed description of possible MCS architectures are beyond the
- scope of this document. This section will outline the main issues.
-
- 7.1 Association with a particular Layer 3 group.
-
- When an MCS issues a MARS_MSERV it forces all senders to the
- specified layer 3 group to terminate their VCs on the supplied source
- ATM address.
-
- The simplest MCS architecture involves taking incoming AAL_SDUs and
- simply flipping them back out a single point to multipoint VC. Such
- an MCS cannot support more than one group at once, as it has no way
- to differentiate between traffic destined for different groups.
- Using this architecture, a physical node would provide MCS support
- for multiple groups by creating multiple logical instances of the
- MCS, each with different ATM Addresses (e.g. a different SEL value in
- the node's NSAPA).
-
- A slightly more complex approach would be to add minimal layer 3
- specific processing into the MCS. This would look inside the received
- AAL_SDUs and determine which layer 3 group they are destined for. A
- single instance of such an MCS might register its ATM Address with
- the MARS for multiple layer 3 groups, and manage multiple independent
-
-
-
- Armitage Standards Track [Page 53]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- outgoing point to multipoint VCs (one for each group).
-
- When an MCS starts up it MUST register with the MARS as described in
- section 6.2.3, identifying the protocol it supports with the mar$pro
- field of the MARS_MSERV. This also applies to logical MCSs, even if
- they share the same physical ATM interface. This is important so that
- the MARS can react to the loss of an MCS when it drops off
- ServerControlVC. (One consequence is that 'simple' MCS architectures
- end up with one ServerControlVC member per group. MCSs with layer 3
- specific processing may support multiple groups while still only
- registering as one member of ServerControlVC.)
-
- An MCS MUST NOT share the same ATM address as a cluster member,
- although it may share the same physical ATM interface.
-
- 7.2 Termination of incoming VCs.
-
- An MCS MUST terminate unidirectional VCs in the same manner as a
- cluster member. (e.g. terminate on an LLC entity when LLC/SNAP
- encapsulation is used, as described in RFC 1755 for unicast
- endpoints.)
-
- 7.3 Management of outgoing VC.
-
- An MCS MUST establish and manage its outgoing point to multipoint VC
- as a cluster member does (section 5.1).
-
- MARS_REQUEST is used by the MCS to establish the initial leaf nodes
- for the MCS's outgoing point to multipoint VC. After the VC is
- established, the MCS reacts to MARS_SJOINs and MARS_SLEAVEs in the
- same way a cluster member reacts to MARS_JOINs and MARS_LEAVEs.
-
- The MCS tracks the Server Sequence Number from the mar$msn fields of
- messages from the MARS, and revalidates its outgoing point to
- multipoint VC(s) when a sequence number jump occurs.
-
- 7.4 Use of a backup MARS.
-
- The MCS uses the same approach to backup MARSs as a cluster member
- (section 5.4), tracking MARS_REDIRECT_MAP messages on
- ServerControlVC.
-
- 8. Support for IP multicast routers.
-
- Multicast routers are required for the propagation of multicast
- traffic beyond the constraints of a single cluster (inter-cluster
- traffic). (In a sense, they are multicast servers acting at the next
- higher layer, with clusters, rather than individual endpoints, as
-
-
-
- Armitage Standards Track [Page 54]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- their abstract sources and destinations.)
-
- Multicast routers typically participate in higher layer multicast
- routing algorithms and policies that are beyond the scope of this
- memo (e.g. DVMRP [5] in the IPv4 environment).
-
- It is assumed that the multicast routers will be implemented over the
- same sort of IP/ATM interface that a multicast host would use. Their
- IP/ATM interfaces will register with the MARS as cluster members,
- joining and leaving multicast groups as necessary. As noted in
- section 5, multiple logical 'endpoints' may be implemented over a
- single physical ATM interface. Routers use this approach to provide
- interfaces into each of the clusters they will be routing between.
-
- The rest of this section will assume a simple IPv4 scenario where the
- scope of a cluster has been limited to a particular LIS that is part
- of an overlaid IP network. Not all members of the LIS are necessarily
- registered cluster members (you may have unicast-only hosts in the
- LIS).
-
- 8.1 Forwarding into a Cluster.
-
- If the multicast router needs to transmit a packet to a group within
- the cluster its IP/ATM interface opens a VC in the same manner as a
- normal host would. Once a VC is open, the router watches for
- MARS_JOIN and MARS_LEAVE messages and responds to them as a normal
- host would.
-
- The multicast router's transmit side MUST implement inactivity timers
- to shut down idle outgoing VCs, as for normal hosts.
-
- As with normal host, the multicast router does not need to be a
- member of a group it is sending to.
-
- 8.2 Joining in 'promiscuous' mode.
-
- Once registered and initialised, the simplest model of IPv4 multicast
- router operation is for it to issue a MARS_JOIN encompassing the
- entire Class D address space. In effect it becomes 'promiscuous', as
- it will be a leaf node to all present and future multipoint VCs
- established to IPv4 groups on the cluster.
-
- How a router chooses which groups to propagate outside the cluster is
- beyond the scope of this document.
-
- Consistent with RFC 1112, IP multicast routers may retain the use of
- IGMP Query and IGMP Report messages to ascertain group membership.
- However, certain optimisations are possible, and are described in
-
-
-
- Armitage Standards Track [Page 55]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- section 8.5.
-
- 8.3 Forwarding across the cluster.
-
- Under some circumstances the cluster may simply be another hop
- between IP subnets that have participants in a multicast group.
-
- [LAN.1] ----- IPmcR.1 -- [cluster/LIS] -- IPmcR.2 ----- [LAN.2]
-
- LAN.1 and LAN.2 are subnets (such as Ethernet) with attached hosts
- that are members of group X.
-
- IPmcR.1 and IPmcR.2 are multicast routers with interfaces to the LIS.
-
- A traditional solution would be to treat the LIS as a unicast subnet,
- and use tunneling routers. However, this would not allow hosts on the
- LIS to participate in the cross-LIS traffic.
-
- Assume IPmcR.1 is receiving packets promiscuously on its LAN.1
- interface. Assume further it is configured to propagate multicast
- traffic to all attached interfaces. In this case that means the LIS.
-
- When a packet for group X arrives on its LAN.1 interface, IPmcR.1
- simply sends the packet to group X on the LIS interface as a normal
- host would (Issuing MARS_REQUEST for group X, creating the VC,
- sending the packet).
-
- Assuming IPmcR.2 initialised itself with the MARS as a member of the
- entire Class D space, it will have been returned as a member of X
- even if no other nodes on the LIS were members. All packets for group
- X received on IPmcR.2's LIS interface may be retransmitted on LAN.2.
-
- If IPmcR.1 is similarly initialised the reverse process will apply
- for multicast traffic from LAN.2 to LAN.1, for any multicast group.
- The benefit of this scenario is that cluster members within the LIS
- may also join and leave group X at anytime.
-
- 8.4 Joining in 'semi-promiscuous' mode.
-
- Both unicast and multicast IP routers have a common problem -
- limitations on the number of AAL contexts available at their ATM
- interfaces. Being 'promiscuous' in the RFC 1112 sense means that for
- every M hosts sending to N groups, a multicast router's ATM interface
- will have M*N incoming reassembly engines tied up.
-
- It is not hard to envisage situations where a number of multicast
- groups are active within the LIS but are not required to be
- propagated beyond the LIS itself. An example might be a distributed
-
-
-
- Armitage Standards Track [Page 56]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- simulation system specifically designed to use the high speed IP/ATM
- environment. There may be no practical way its traffic could be
- utilised on 'the other side' of the multicast router, yet under the
- conventional scheme the router would have to be a leaf to each
- participating host anyway.
-
- As this problem occurs below the IP layer, it is worth noting that
- 'scoping' mechanisms at the IP multicast routing level do not provide
- a solution. An IP level scope would still result in the router's ATM
- interface receiving traffic on the scoped groups, only to drop it.
-
- In this situation the network administrator might configure their
- multicast routers to exclude sections of the Class D address space
- when issuing MARS_JOIN(s). Multicast groups that will never be
- propagated beyond the cluster will not have the router listed as a
- member, and the router will never have to receive (and simply ignore)
- traffic from those groups.
-
- Another scenario involves the product M*N exceeding the capacity of a
- single router's interface (especially if the same interface must also
- support a unicast IP router service).
-
- A network administrator may choose to add a second node, to function
- as a parallel IP multicast router. Each router would be configured to
- be 'promiscuous' over separate parts of the Class D address space,
- thus exposing themselves to only part of the VC load. This sharing
- would be completely transparent to IP hosts within the LIS.
-
- Restricted promiscuous mode does not break RFC 1112's use of IGMP
- Report messages. If the router is configured to serve a given block
- of Class D addresses, it will receive the IGMP Report. If the router
- is not configured to support a given block, then the existence of an
- IGMP Report for a group in that block is irrelevant to the router.
- All routers are able to track membership changes through the
- MARS_JOIN and MARS_LEAVE traffic anyway. (Section 8.5 discusses a
- better alternative to IGMP within a cluster.)
-
- Mechanisms and reasons for establishing these modes of operation are
- beyond the scope of this document.
-
- 8.5 An alternative to IGMP Queries.
-
- An unfortunate aspect of IGMP is that it assumes multicasting of IP
- packets is a cheap and trivial event at the link layer. As a
- consequence, regular IGMP Queries are multicasted by routers to group
- 224.0.0.1. These queries are intended to trigger IGMP Replies by
- cluster members that have layer 3 members of particular groups.
-
-
-
-
- Armitage Standards Track [Page 57]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The MARS_GROUPLIST_REQUEST and MARS_GROUPLIST_REPLY messages were
- designed to allow routers to avoid actually transmitting IGMP Queries
- out into a cluster.
-
- Whenever the router's forwarding engine wishes to transmit an IGMP
- query, a MARS_GROUPLIST_REQUEST can be sent to the MARS instead. The
- resulting MARS_GROUPLIST_REPLY(s) (described in section 5.3) from the
- MARS carry all the information that the router would have ascertained
- from IGMP replies.
-
- It is RECOMMENDED that multicast routers utilise this MARS service to
- minimise IGMP traffic within the cluster.
-
- By default a MARS_GROUPLIST_REQUEST SHOULD specify the entire address
- space (e.g. <224.0.0.0, 239.255.255.255> in an IPv4 environment).
- However, routers serving part of the address space (as described in
- section 8.4) MAY choose to issue MARS_GROUPLIST_REQUESTs that specify
- only the subset of the address space they are serving.
-
- (On the surface it would also seem useful for multicast routers to
- track MARS_JOINs and MARS_LEAVEs that arrive with mar$flags.layer3grp
- set. These might be used in lieu of IGMP Reports, to provide the
- router with timely indication that a new layer 3 group member exists
- within the cluster. However, this only works on VC mesh supported
- groups, and is therefore NOT recommended).
-
- Appendix B discusses less elegant mechanisms for reducing the impact
- of IGMP traffic within a cluster, on the assumption that the IP/ATM
- interfaces to the cluster are being used by un-optimised IP
- multicasting code.
-
- 8.6 CMIs across multiple interfaces.
-
- The Cluster Member ID is only unique within the Cluster managed by a
- given MARS. On the surface this might appear to leave us with a
- problem when a multicast router is routing between two or more
- Clusters using a single physical ATM interface. The router will
- register with two or more MARSs, and thereby acquire two or more
- independent CMI's. Given that each MARS has no reason to synchronise
- their CMI allocations, it is possible for a host in one cluster to
- have the same CMI has the router's interface to another Cluster. How
- does the router distinguish between its own reflected packets, and
- packets from that other host?
-
- The answer lies in the fact that routers (and hosts) actually
- implement logical IP/ATM interfaces over a single physical ATM
- interface. Each logical interface will have a unique ATM Address (eg.
- an NSAP with different SELector fields, one for each logical
-
-
-
- Armitage Standards Track [Page 58]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- interface).
-
- Each logical IP/ATM interface is configured with the address of a
- single MARS, attaches to only one cluster, and so has only one CMI to
- worry about. Each of the MARSs that the router is registered with
- will have been given a different ATM Address (corresponding to the
- different logical IP/ATM interfaces) in each registration MARS_JOIN.
-
- When hosts in a cluster add the router as a leaf node, they'll
- specify the ATM Address of the appropriate logical IP/ATM interface
- on the router in the L_MULTI_ADD message. Thus, each logical IP/ATM
- interface will only have to check and filter on CMIs assigned by its
- own MARS.
-
- In essence the cluster differentiation is achieved by ensuring that
- logical IP/ATM interfaces are assigned different ATM Addresses.
-
- 9. Multiprotocol applications of the MARS and MARS clients.
-
- A deliberate attempt has been made to describe the MARS and
- associated mechanisms in a manner independent of a specific higher
- layer protocol being run over the ATM cloud. The immediate
- application of this document will be in an IPv4 environment, and this
- is reflected by the focus of key examples. However, the mar$pro.type
- and mar$pro.snap fields in every MARS control message allow any
- higher layer protocol that has a 'short form' or 'long form' of
- protocol identification (section 4.3) to be supported by a MARS.
-
- Every MARS MUST implement entirely separate logical mapping tables
- and support. Every cluster member must interpret messages from the
- MARS in the context of the protocol type that the MARS message refers
- to.
-
- Every MARS and MARS client MUST treat Cluster Member IDs in the
- context of the protocol type carried in the MARS message or data
- packet containing the CMI.
-
- For example, IPv6 has been allocated an Ethertype of 0x86DD. This
- means the 'short form' of protocol identification must be used in the
- MARS control messages and the data path encapsulation (section 5.5).
- An IPv6 multicasting client sets the mar$pro.type field of every MARS
- message to 0x86DD. When carrying IPv6 addresses the mar$spln and
- mar$tpln fields are either 0 (for null or non-existent information)
- or 16 (for the full IPv6 address).
-
- Following the rules in section 5.5, an IPv6 data packet is
- encapsulated as:
-
-
-
-
- Armitage Standards Track [Page 59]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- [0xAA-AA-03][0x00-00-5E][0x00-01][pkt$cmi][0x86DD][IPv6 packet]
-
- A host or endpoint interface that is using the same MARS to support
- multicasting needs of multiple protocols MUST not assume their CMI
- will be the same for each protocol.
-
- 10. Supplementary parameter processing.
-
- The mar$extoff field in the [Fixed header] indicates whether
- supplementary parameters are being carried by a MARS control message.
- This mechanism is intended to enable the addition of new
- functionality to the MARS protocol in later documents.
-
- Supplementary parameters are conveyed as a list of TLV (type, length,
- value) encoded information elements. The TLV(s) begin on the first
- 32 bit boundary following the [Addresses] field in the MARS control
- message (e.g. after mar$tsa.N in a MARS_MULTI, after mar$max.N in a
- MARS_JOIN, etc).
-
- 10.1 Interpreting the mar$extoff field.
-
- If the mar$extoff field is non-zero it indicates that a list of one
- or more TLVs have been appended to the MARS message. The first TLV
- is found by treating mar$extoff as an unsigned integer representing
- an offset (in octets) from the beginning of the MARS message (the MSB
- of the mar$afn field).
-
- As TLVs are 32 bit aligned the bottom 2 bits of mar$extoff are also
- reserved. A receiver MUST mask off these two bits before calculating
- the octet offset to the TLV list. A sender MUST set these two bits
- to zero.
-
- If mar$extoff is zero no TLVs have been appended.
-
- 10.2 The format of TLVs.
-
- When they exist, TLVs begin on 32 bit boundaries, are multiples of 32
- bits in length, and form a sequential list terminated by a NULL TLV.
-
- The TLV structure is:
-
- [Type - 2 octets][Length - 2 octets][Value - n*4 octets]
-
- The Type subfield indicates how the contents of the Value subfield
- are to be interpreted.
-
- The Length subfield indicates the number of VALID octets in the Value
- subfield. Valid octets in the Value subfield start immediately after
-
-
-
- Armitage Standards Track [Page 60]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- the Length subfield. The offset (in octets) from the start of this
- TLV to the start of the next TLV in the list is given by the
- following formula:
-
- offset = (length + 4 + ((4-(length & 3)) % 4))
-
- (where % is the modulus operator)
-
- The Value subfield is padded with 0, 1, 2, or 3 octets to ensure the
- next TLV is 32 bit aligned. The padded locations MUST be set to zero.
-
- (For example, a TLV that needed only 5 valid octets of information
- would be 12 octets long. The Length subfield would hold the value 5,
- and the Value subfield would be padded out to 8 bytes. The 5 valid
- octets of information begin at the first octet of the Value
- subfield.)
-
- The Type subfield is formatted in the following way:
-
- | 1st octet | 2nd octet |
- 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- | x | y |
- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-
- The most significant 2 bits (Type.x) determine how a recipient should
- behave when it doesn't recognise the TLV type indicated by the lower
- 14 bits (Type.y). The required behaviours are:
-
- Type.x = 0 Skip the TLV, continue processing the list.
- Type.x = 1 Stop processing, silently drop the MARS message.
- Type.x = 2 Stop processing, drop message, give error indication.
- Type.x = 3 Reserved. (currently treat as x = 0)
-
- (The error indication generated when Type.x = 2 SHOULD be logged in
- some locally significant fashion. Consequential MARS message activity
- in response to such an error condition will be defined in future
- documents.)
-
- The TLV type space (Type.y) is further subdivided to encourage use
- outside the IETF.
-
- 0 Null TLV.
- 0x0001 - 0x0FFF Reserved for the IETF.
- 0x1000 - 0x11FF Allocated to the ATM Forum.
- 0x1200 - 0x37FF Reserved for the IETF.
- 0x3800 - 0x3FFF Experimental use.
-
-
-
-
- Armitage Standards Track [Page 61]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 10.3 Processing MARS messages with TLVs.
-
- Supplementary parameters act as modifiers to the basic behaviour
- specified by the mar$op field of any given MARS message.
-
- If a MARS message arrives with a non-zero mar$extoff field its TLV
- list MUST be parsed before handling the MARS message in accordance
- with the mar$op value. Unrecognised TLVs MUST be handled as required
- by their Type.x value.
-
- How TLVs modify basic MARS operations will be mar$op and TLV
- specific.
-
- 10.4 Initial set of TLV elements.
-
- Conformance with this document only REQUIRES the recognition of one
- TLV, the Null TLV. This terminates a list of TLVs, and MUST be
- present if mar$extoff is non-zero in a MARS message. It MAY be the
- only TLV present.
-
- The Null TLV is coded as:
-
- [0x00-00][0x00-00]
-
- Future documents will describe the formats, contents, and
- interpretations of additional TLVs. The minimal parsing requirements
- imposed by this document are intended to allow conformant MARS and
- MARS client implementations to deal gracefully and predictably with
- future TLV developments.
-
- 11. Key Decisions and open issues.
-
- The key decisions this document proposes:
-
- A Multicast Address Resolution Server (MARS) is proposed to co-
- ordinate and distribute mappings of ATM endpoint addresses to
- arbitrary higher layer 'multicast group addresses'. The specific
- case of IPv4 multicast is used as the example.
-
- The concept of 'clusters' is introduced to define the scope of a
- MARS's responsibility, and the set of ATM endpoints willing to
- participate in link level multicasting.
-
- A MARS is described with the functionality required to support
- intra-cluster multicasting using either VC meshes or ATM level
- multicast servers (MCSs).
-
-
-
-
-
- Armitage Standards Track [Page 62]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- LLC/SNAP encapsulation of MARS control messages allows MARS and
- ATMARP traffic to share VCs, and allows partially co-resident MARS
- and ATMARP entities.
-
- New message types:
-
- MARS_JOIN, MARS_LEAVE, MARS_REQUEST. Allow endpoints to join,
- leave, and request the current membership list of multicast
- groups.
-
- MARS_MULTI. Allows multiple ATM addresses to be returned by the
- MARS in response to a MARS_REQUEST.
-
- MARS_MSERV, MARS_UNSERV. Allow multicast servers to register
- and deregister themselves with the MARS.
-
- MARS_SJOIN, MARS_SLEAVE. Allow MARS to pass on group membership
- changes to multicast servers.
-
- MARS_GROUPLIST_REQUEST, MARS_GROUPLIST_REPLY. Allow MARS to
- indicate which groups have actual layer 3 members. May be used
- to support IGMP in IPv4 environments, and similar functions in
- other environments.
-
- MARS_REDIRECT_MAP. Allow MARS to specify a set of backup MARS
- addresses.
-
- MARS_MIGRATE. Allows MARS to force cluster members to shift
- from VC mesh to MCS based forwarding tree in single operation.
-
- 'wild card' MARS mapping table entries are possible, where a
- single ATM address is simultaneously associated with blocks of
- multicast group addresses.
-
- For the MARS protocol mar$op.version = 0. The complete set of MARS
- control messages and mar$op.type values is:
-
- 1 MARS_REQUEST
- 2 MARS_MULTI
- 3 MARS_MSERV
- 4 MARS_JOIN
- 5 MARS_LEAVE
- 6 MARS_NAK
- 7 MARS_UNSERV
- 8 MARS_SJOIN
- 9 MARS_SLEAVE
- 10 MARS_GROUPLIST_REQUEST
- 11 MARS_GROUPLIST_REPLY
-
-
-
- Armitage Standards Track [Page 63]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 12 MARS_REDIRECT_MAP
- 13 MARS_MIGRATE
-
- A number of issues are left open at this stage, and are likely to be
- the subject of on-going research and additional documents that build
- upon this one.
-
- The specified endpoint behaviour allows the use of
- redundant/backup MARSs within a cluster. However, no
- specifications yet exist on how these MARSs co-ordinate amongst
- themselves. (The default is to only have one MARS per cluster.)
-
- The specified endpoint behaviour and MARS service allows the use
- of multiple MCSs per group. However, no specifications yet exist
- on how this may be used, or how these MCSs co-ordinate amongst
- themselves. Until futher work is done on MCS co-ordination
- protocols the default is to only have one MCS per group.
-
- The MARS relies on the cluster member dropping off
- ClusterControlVC if the cluster member dies. It is not clear if
- additional mechanisms are needed to detect and delete 'dead'
- cluster members.
-
- Supporting layer 3 'broadcast' as a special case of multicasting
- (where the 'group' encompasses all cluster members) has not been
- explicitly discussed.
-
- Supporting layer 3 'unicast' as a special case of multicasting
- (where the 'group' is a single cluster member, identified by the
- cluster member's unicast protocol address) has not been explicitly
- discussed.
-
- The future development of ATM Group Addresses and Leaf Initiated
- Join to ATM Forum's UNI specification has not been addressed.
- (However, the problems identified in this document with respect to
- VC scarcity and impact on AAL contexts will not be fixed by such
- developments in the signalling protocol.)
-
- Possible modifications to the interpretation of the mar$hrdrsv and
- mar$afn fields in the Fixed header, based on different values for
- mar$op.version, are for further study.
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 64]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Security Considerations
-
- Security issues are not addressed in this document.
-
- Acknowledgments
-
- The discussions within the IP over ATM Working Group have helped
- clarify the ideas expressed in this document. John Moy (Cascade
- Communications Corp.) initially suggested the idea of wild-card
- entries in the ARP Server. Drew Perkins (Fore Systems) provided
- rigorous and useful critique of early proposed mechanisms for
- distributing and validating group membership information. Susan
- Symington (and co-workers at MITRE Corp., Don Chirieleison, and Bill
- Barns) clearly articulated the need for multicast server support,
- proposed a solution, and challenged earlier block join/leave
- mechanisms. John Shirron (Fore Systems) provided useful improvements
- on my original revalidation procedures.
-
- Susan Symington and Bryan Gleeson (Adaptec) independently championed
- the need for the service provided by MARS_GROUPLIST_REQUEST/REPLY.
- The new encapsulation scheme arose from WG discussions, captured by
- Bryan Gleeson in an interim Work in Progress (with Keith McCloghrie
- (Cisco), Andy Malis (Ascom Nexion), and Andrew Smith (Bay Networks)
- as key contributors). James Watt (Newbridge) and Joel Halpern
- (Newbridge) motivated the development of a more multiprotocol MARS
- control message format, evolving it away from its original ATMARP
- roots. They also motivated the development of Type #1 and Type #2
- data path encapsulations. Rajesh Talpade (Georgia Tech) helped
- clarify the need for the MARS_MIGRATE function.
-
- Maryann Maher (ISI) provided valuable sanity and implementation
- checking during the latter stages of the document's development.
- Finally, Jim Rubas (IBM) supplied the MARS pseudo-code in Appendix F
- and also provided detailed proof-reading in the latter stages of the
- document's development.
-
- Author's Address
-
- Grenville Armitage
- Bellcore, 445 South Street
- Morristown, NJ, 07960
- USA
-
- EMail: gja@thumper.bellcore.com
- Phone: +1 201 829 2635
-
-
-
-
-
-
- Armitage Standards Track [Page 65]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- References
-
- [1] Deering, S., "Host Extensions for IP Multicasting", STD 3, RFC
- 1112, Stanford University, August 1989.
-
- [2] Heinanen, J., "Multiprotocol Encapsulation over ATM Adaption
- Layer 5", RFC 1483, Telecom Finland, July 1993.
-
- [3] Laubach, M., "Classical IP and ARP over ATM", RFC 1577, Hewlett-
- Packard Laboratories, December 1993.
-
- [4] ATM Forum, "ATM User Network Interface (UNI) Specification
- Version 3.1", ISBN 0-13-393828-X, Prentice Hall, Englewood Cliffs,
- NJ, June 1995.
-
- [5] Waitzman, D., Partridge, C., and S. Deering, "Distance Vector
- Multicast Routing Protocol", RFC 1075, November 1988.
-
- [6] Perez, M., Liaw, F., Grossman, D., Mankin, A., Hoffman, E., and
- A. Malis, "ATM Signaling Support for IP over ATM", RFC 1755,
- February 1995.
-
- [7] Borden, M., Crawley, E., Davie, B., and S. Batsell, "Integration
- of Real-time Services in an IP-ATM Network Architecture.", RFC 1821,
- August 1995.
-
- [8] ATM Forum, "ATM User-Network Interface Specification Version
- 3.0", Englewood Cliffs, NJ: Prentice Hall, September 1993.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 66]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix A. Hole punching algorithms.
-
- Implementations are entirely free to comply with the body of this
- memo in any way they see fit. This appendix is purely for
- clarification.
-
- A MARS implementation might pre-construct a set of <min,max> pairs
- (P) that reflects the entire Class D space, excluding any addresses
- currently supported by multicast servers. The <min> field of the
- first pair MUST be 224.0.0.0, and the <max> field of the last pair
- must be 239.255.255.255. The first and last pair may be the same.
- This set is updated whenever a multicast server registers or
- deregisters.
-
- When the MARS must perform 'hole punching' it might consider the
- following algorithm:
-
- Assume the MARS_JOIN/LEAVE received by the MARS from the cluster
- member specified the block <Emin, Emax>.
-
- Assume Pmin(N) and Pmax(N) are the <min> and <max> fields from the
- Nth pair in the MARS's current set P.
-
- Assume set P has K pairs. Pmin(1) MUST equal 224.0.0.0, and
- Pmax(M) MUST equal 239.255.255.255. (If K == 1 then no hole
- punching is required).
-
- Execute pseudo-code:
-
- create copy of set P, call it set C.
-
- index1 = 1;
- while (Pmax(index1) <= Emin)
- index1++;
-
- index2 = K;
- while (Pmin(index2) >= Emax)
- index2--;
-
- if (index1 > index2)
- Exit, as the hole-punched set is null.
-
- if (Pmin(index1) < Emin)
- Cmin(index1) = Emin;
-
- if (Pmax(index2) > Emax)
- Cmax(index2) = Emax;
-
-
-
-
- Armitage Standards Track [Page 67]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Set C is the required 'hole punched' set of address blocks.
-
- The resulting set C retains all the MARS's pre-constructed 'holes'
- covering the multicast servers, but will have been pruned to cover
- the section of the Class D space specified by the originating host's
- <Emin,Emax> values.
-
- The host end should keep a table, H, of open VCs in ascending order
- of Class D address.
-
- Assume H(x).addr is the Class address associated with VC.x.
- Assume H(x).addr < H(x+1).addr.
-
- The pseudo code for updating VCs based on an incoming JOIN/LEAVE
- might be:
-
- x = 1;
- N = 1;
-
- while (x < no.of VCs open)
- {
- while (H(x).addr > max(N))
- {
- N++;
- if (N > no. of pairs in JOIN/LEAVE)
- return(0);
- }
-
- if ((H(x).addr <= max(N) &&
- ((H(x).addr >= min(N))
- perform_VC_update();
- x++;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 68]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix B. Minimising the impact of IGMP in IPv4 environments.
-
- Implementing any part of this appendix is not required for
- conformance with this document. It is provided solely to document
- issues that have been identified.
-
- The intent of section 5.1 is for cluster members to only have
- outgoing point to multipoint VCs when they are actually sending data
- to a particular multicast group. However, in most IPv4 environments
- the multicast routers attached to a cluster will periodically issue
- IGMP Queries to ascertain if particular groups have members. The
- current IGMP specification attempts to avoid having every group
- member respond by insisting that each group member wait a random
- period, and responding if no other member has responded before them.
- The IGMP reply is sent to the multicast address of the group being
- queried.
-
- Unfortunately, as it stands the IGMP algorithm will be a nuisance for
- cluster members that are essentially passive receivers within a given
- multicast group. It is just as likely that a passive member, with no
- outgoing VC already established to the group, will decide to send an
- IGMP reply - causing a VC to be established where there was no need
- for one. This is not a fatal problem for small clusters, but will
- seriously impact on the ability of a cluster to scale.
-
- The most obvious solution is for routers to use the
- MARS_GROUPLIST_REQUEST and MARS_GROUPLIST_REPLY messages, as
- described in section 8.5. This would remove the regular IGMP Queries,
- resulting in cluster members only sending an IGMP Report when they
- first join a group.
-
- Alternative solutions do exist. One would be to modify the IGMP reply
- algorithm, for example:
-
- If the group member has VC open to the group proceed as per RFC
- 1112 (picking a random reply delay between 0 and 10 seconds).
-
- If the group member does not have VC already open to the group,
- pick random reply delay between 10 and 20 seconds instead, and
- then proceed as per RFC 1112.
-
- If even one group member is sending to the group at the time the IGMP
- Query is issued then all the passive receivers will find the IGMP
- Reply has been transmitted before their delay expires, so no new VC
- is required. If all group members are passive at the time of the IGMP
- Query then a response will eventually arrive, but 10 seconds later
- than under conventional circumstances.
-
-
-
-
- Armitage Standards Track [Page 69]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- The preceding solution requires re-writing existing IGMP code, and
- implies the ability of the IGMP entity to ascertain the status of VCs
- on the underlying ATM interface. This is not likely to be available
- in the short term.
-
- One short term solution is to provide something like the preceding
- functionality with a 'hack' at the IP/ATM driver level within cluster
- members. Arrange for the IP/ATM driver to snoop inside IP packets
- looking for IGMP traffic. If an IGMP packet is accepted for
- transmission, the IP/ATM driver can buffer it locally if there is no
- VC already active to that group. A 10 second timer is started, and if
- an IGMP Reply for that group is received from elsewhere on the
- cluster the timer is reset. If the timer expires, the IP/ATM driver
- then establishes a VC to the group as it would for a normal IP
- multicast packet.
-
- Some network implementors may find it advantageous to configure a
- multicast server to support the group 224.0.0.1, rather than rely on
- a mesh. Given that IP multicast routers regularly send IGMP queries
- to this address, a mesh will mean that each router will permanently
- consume an AAL context within each cluster member. In clusters served
- by multiple routers the VC load within switches in the underlying ATM
- network will become a scaling problem.
-
- Finally, if a multicast server is used to support 224.0.0.1, another
- ATM driver level hack becomes a possible solution to IGMP Reply
- traffic. The ATM driver may choose to grab all outgoing IGMP packets
- and send them out on the VC established for sending to 224.0.0.1,
- regardless of the Class D address the IGMP message was actually for.
- Given that all hosts and routers must be members of 224.0.0.1, the
- intended recipients will still receive the IGMP Replies. The negative
- impact is that all cluster members will receive the IGMP Replies.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 70]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix C. Further comments on 'Clusters'.
-
- The cluster concept was introduced in section 1 for two reasons. The
- more well known term of Logical IP Subnet is both very IP specific,
- and constrained to unicast routing boundaries. As the architecture
- described in this document may be re-used in non-IP environments a
- more neutral term was needed. As the needs of multicasting are not
- always bound by the same scopes as unicasting, it was not immediately
- obvious that apriori limiting ourselves to LISs was beneficial in the
- long term.
-
- It must be stressed that Clusters are purely an administrative being.
- You choose their size (i.e. the number of endpoints that register
- with the same MARS) based on your multicasting needs, and the
- resource consumption you are willing to put up with. The larger the
- number of ATM attached hosts you require multicast support for, the
- more individual clusters you might choose to establish (along with
- multicast routers to provide inter-cluster traffic paths).
-
- Given that not all the hosts in any given LIS may require multicast
- support, it becomes conceivable that you might assign a single MARS
- to support hosts from across multiple LISs. In effect you have a
- cluster covering multiple LISs, and have achieved 'cut through'
- routing for multicast traffic. Under these circumstances increasing
- the geographical size of a cluster might be considered a good thing.
-
- However, practical considerations limit the size of clusters. Having
- a cluster span multiple LISs may not always be a particular 'win'
- situation. As the number of multicast capable hosts in your LISs
- increases it becomes more likely that you'll want to constrain a
- cluster's size and force multicast traffic to aggregate at multicast
- routers scattered across your ATM cloud.
-
- Finally, multi-LIS clusters require a degree of care when deploying
- IP multicast routers. Under the Classical IP model you need unicast
- routers on the edges of LISs. Under the MARS architecture you only
- need multicast routers at the edges of clusters. If your cluster
- spans multiple LISs, then the multicast routers will perceive
- themselves to have a single interface that is simultaneously attached
- to multiple unicast subnets. Whether this situation will work depends
- on the inter-domain multicast routing protocols you use, and your
- multicast router's ability to understand the new relationship between
- unicast and multicast topologies.
-
- In the absence of futher research in this area, networks deployed in
- conformance to this document MUST make their IP cluster and IP LIS
- coincide, so as to avoid these complications.
-
-
-
-
- Armitage Standards Track [Page 71]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix D. TLV list parsing algorithm.
-
- The following pseudo-code represents how the TLV list format
- described in section 10 could be handled by a MARS or MARS client.
-
- list = (mar$extoff & 0xFFFC);
-
- if (list == 0) exit;
-
- list = list + message_base;
-
- while (list->Type.y != 0)
- {
- switch (list->Type.y)
- {
- default:
- {
- if (list->Type.x == 0) break;
-
- if (list->Type.x == 1) exit;
-
- if (list->Type.x == 2) log-error-and-exit;
- }
-
- [...other handling goes here..]
-
- }
-
- list += (list->Length + 4 + ((4-(list->Length & 3)) %
- 4));
-
- }
-
- return;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 72]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix E. Summary of timer values.
-
- This appendix summarises various timers or limits mentioned in the
- main body of the document. Values are specified in the following
- format: [x, y, z] indicating a minimum value of x, a recommended
- value of y, and a maximum value of z. A '-' will indicate that a
- category has no value specified. Values in minutes are followed by
- 'min', values in seconds are followed by 'sec'.
-
- Idle time for MARS - MARS client pt to pt VC:
- [1 min, 20 min, -]
-
- Idle time for multipoint VCs from client.
- [1 min, 20 min, -]
-
- Allowed time between MARS_MULTI components.
- [-, -, 10 sec]
-
- Initial random L_MULTI_RQ/ADD retransmit timer range.
- [5 sec, -, 10 sec]
-
- Random time to set VC_revalidate flag.
- [1 sec, -, 10 sec]
-
- MARS_JOIN/LEAVE retransmit interval.
- [5 sec, 10 sec, -]
-
- MARS_JOIN/LEAVE retransmit limit.
- [-, -, 5]
-
- Random time to re-register with MARS.
- [1 sec, -, 10 sec]
-
- Force wait if MARS re-registration is looping.
- [1 min, -, -]
-
- Transmission interval for MARS_REDIRECT_MAP.
- [1 min, 1 min, 2 min]
-
- Limit for client to miss MARS_REDIRECT_MAPs.
- [-, -, 4 min]
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 73]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Appendix F. Pseudo code for MARS operation.
-
- Implementations are entirely free to comply with the body of this
- memo in any way they see fit. This appendix is purely for possible
- clarification.
-
- A MARS implementation might be built along the lines suggested in
- this pseudo-code.
-
- 1. Main
-
- 1.1 Initilization
-
- Define a server list as the list of leaf nodes
- on ServerControlVC.
- Define a cluster list as the list of leaf nodes
- on ClusterControlVC.
- Define a host map as the list of hosts that are
- members of a group.
- Define a server map as the list of hosts (MCSs)
- that are serving a group.
- Read config file.
- Allocate message queues.
- Allocate internal tables.
- Set up passive open VC connection.
- Set up redirect_map timer.
- Establish logging.
-
- 1.2 Message Processing
-
- Forever {
- If the message has a TLV then {
- If TLV is unsupported then {
- process as defined in TLV type field.
- } /* unknown TLV */
- } /* TLV present */
- Place incoming message in the queue.
- For (all messages in the queue) {
- If the message is not a JOIN/LEAVE/MSERV/UNSERV with
- mar$flags.register == 1 then {
- If the message source is (not a member of server list) &&
- (not a member of cluster list) then {
- Drop the message silently.
- }
- }
- If (mar$pro.type is not supported) or
- (the ATM source address is missing) then {
- Continue.
-
-
-
- Armitage Standards Track [Page 74]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- }
- Determine type of message.
- If an ERR_L_RELEASE arrives on ClusterControlVC then {
- Remove the endpoints ATM address from all groups
- for which it has joined.
- Release the CMI.
- Continue.
- } /* error on CCVC */
- Call specific message handling routine.
- If redirect_map timer pops {
- Call MARS_REDIRECT_MAP message handling routine.
- } /* redirect timer pop */
- } /* all msgs in the queue */
- } /* forever loop */
-
- 2. Message Handler
-
- 2.1 Messages:
-
- - MARS_REQUEST
-
- Indicate no MARS_MULTI support of TLV.
- If the supported TLV is not NULL then {
- Indicate MARS_MULTI support of TLV.
- Process as required.
- } else { /* TLV NULL */
- Indicate message to be sent on Private VC.
- If the message source is a member of server list then {
- If the group has a non-null host map then {
- Call MARS_MULTI with the host map for the group.
- } else { /* no group */
- Call MARS_NAK message routine.
- } /* no group */
- } else { /* source is cluster list */
- If the group has a non-null server map then {
- Call MARS_MULTI with the server map for the group.
- } else { /* cluster member but no server map */
- If the group has a non-null host map then {
- Call MARS_MULTI with the host map for the group.
- } else { /* no group */
- Call MARS_NAK message routine.
- } /* no group */
- } /* cluster member but no server map */
- } /* source is a cluster list */
- } /* TLV NULL */
- If a message exists then {
- Send message as indicated.
- }
-
-
-
- Armitage Standards Track [Page 75]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Return.
-
- - MARS_MULTI
-
- Construct a MARS_MULTI for the specified map.
- If the param indicates TLV support then {
- Process the TLV as required.
- }
- Return.
-
- - MARS_JOIN
-
- If (mar$flags.copy != 0) silently ignore the message.
- If more than a single <min,max> pair is specified then
- silently ignore the message.
- Indicate message to be sent on private VC.
- If (mar$flags.register == 1) then {
- If the node is already a registered member of the cluster
- associated with protocol type then { /*previous register*/
- Copy the existing CMI into the MARS_JOIN.
- } else { /* new register */
- Add the node to ClusterControlVC.
- Add the node to cluster list.
- mar$cmi = obtain CMI.
- } /* new register */
- } else { /* not a register */
- If the group is a duplicate of a previous MARS_JOIN then {
- mar$msn = current csn.
- Indicate message to be sent on Private VC.
- } else {
- Indicate no message to be sent.
- If the message source is in server map then {
- Drop the message silently.
- } else {
- If the first <min,max> encompasses any group with
- a server map then {
- Call the Modified JOIN/LEAVE Processing routine.
- } else {
- If the MARS_JOIN is for a multi group then {
- Call the MultiGroup JOIN/LEAVE Processing Routine.
- } else {
- Indicate message to be sent on ClusterControlVC.
- } /* not for a multi group */
- } /* group not handled by server */
- } /* msg src not in server map */
- Update internal tables.
- } /* not a duplicate */
- } /* not a register */
-
-
-
- Armitage Standards Track [Page 76]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- If a message exists then {
- mar$flags.copy = 1.
- Send message as indicated.
- }
- Return.
-
- - MARS_LEAVE
-
- If (mar$flags.copy != 0) silently ignore the message.
- If more than a single <min,max> pair is specified then
- silently ignore the message.
- Indicate message to be sent on ClusterControlVC.
- If (mar$flags.register == 1) then { /* deregistration */
- Update internal tables to remove the member's ATM addr
- from all groups it has joined.
- Drop the endpoint from ClusterControlVC.
- Drop the endpoint from cluster list.
- Release the CMI.
- Indicate message to be sent on Private VC.
- } else { /* not a deregistration */
- If the group is a duplicate of a previous MARS_LEAVE then {
- mar$msn = current csn.
- Indicate message to be sent on Private VC.
- } else {
- Indicate no message to be sent.
- If the first <min,max> encompasses any group with
- a server map then {
- Call the Modified JOIN/LEAVE Processing routine.
- } else {
- If the MARS_LEAVE is for a multi group then {
- Call the MultiGroup JOIN/LEAVE Processing Routine.
- } else {
- Indicate message to be sent on ClusterControlVC.
- }
- }
- Update internal tables.
- } /* not a duplicate */
- } /* not a deregistration */
- If a message exists then {
- mar$flags.copy = 1.
- Send message as indicated.
- }
- Return.
-
- - MARS_MSERV
-
- If (mar$flags.register == 1) then { /* server register */
- Add the endpoint as a leaf node to ServerControlVC.
-
-
-
- Armitage Standards Track [Page 77]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- Add the endpoint to the server list.
- Indicate the message to be sent on Private VC.
- mar$cmi = 0.
- } else { /* not a register */
- If the source has not registered then {
- Drop and ignore the message.
- Indicate no message to be sent.
- } else { /* source is registered */
- If MCS is already member of indicated server map {
- Indicate message to be sent on Private VC.
- mar$flags.layer3grp = 0;
- mar$flags.copy = 1.
- } else { /* New MCS to add. */
- Add the server ATM addr to server map for group.
- Indicate message to be sent on ServerControlVC.
- Send message as indicated.
- Make a copy of the message.
- Indicate message to be sent on ClusterControlVC.
- If new server map was just created {
- Construct MARS_MIGRATE, with MCS as target.
- } else {
- Change the op code to MARS_JOIN.
- mar$flags.layer3grp = 0.
- mar$flags.copy = 1.
- } /* new server map */
- } /* New MCS to add. */
- } /* source is registered */
- } /* not a register */
-
- If a message exists then {
- Send message as indicated.
- }
- Return.
-
-
- - MARS_UNSERV
-
- If (mar$flags.register == 1) then { /* deregister */
- Remove the ATM addr of the MCS from all server maps.
- If a server map becomes null then delete it.
- Remove the endpoint as a leaf of ServerControlVC.
- Remove the endpoint from server list.
- Indicate the message to be sent on Private VC.
- } else { /* not a deregister */
- If the source is not a member of server list then {
- Drop and ignore the message.
- Indicate no message to be sent.
- } else { /* source is registered */
-
-
-
- Armitage Standards Track [Page 78]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- If MCS is not member of indicated server map {
- Indicate message to be sent on Private VC.
- mar$flags.layer3grp = 0;
- mar$flags.copy = 1.
- } else { /* MCS existed, must be removed. */
- Remove ATM addr of the MCS from indicated server map.
- If a server map is null then delete it.
- Indicate the message to be sent on ServerControlVC.
- Send message as indicated.
- Make a copy of the message.
- Change the op code to MARS_LEAVE.
- Indicate message (copy) to be sent on ClusterControlVC.
- mar$flags.layer3grp = 0;
- mar$flags.copy = 1.
- } /* MCS existed, must be removed. */
- } /* source is registered */
- } /* not a deregister */
- If a message exists then {
- Send message as indicated.
- }
- Return.
-
- - MARS_NAK
-
- Build command.
- Return.
-
- - MARS_GROUPLIST_REQUEST
-
- If (mar$pnum != 1) then Return.
- Call MARS_GROUPLIST_REPLY with the range and output VC.
- Return.
-
- - MARS_GROUPLIST_REPLY
-
- Build command for specified range.
- Indicate message to be sent on specified VC.
- Send message as indicated.
- Return.
-
- - MARS_REDIRECT_MAP
-
- Include the MARSs own address in the message.
- If there are backup MARSs then include their addresses.
- Indicate MARS_REDIRECT_MAP is to be sent on ClusterControlVC.
- Send message back as indicated.
- Return.
-
-
-
-
- Armitage Standards Track [Page 79]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- 3. Send Message Handler
-
- If (the message is going out ClusterControlVC) &&
- (a new csn is required) then {
- mar$msn = obtain a CSN
- }
- If (the message is going out ServerControlVC) &&
- (a new ssn is required) then {
- mar$msn = obtain a SSN
- }
- Return.
-
- 4. Number Generator
-
- 4.1 Cluster Sequence Number
-
- Generate the next sequence number.
- Return.
-
- 4.2 Server Sequence Number
-
- Generate the next sequence number.
- Return.
-
- 4.3 CMI
-
- CMIs are allocated uniquely per registered cluster member
- within the context of a particular layer 3 protocol type.
- A single node may register multiple times if it supports
- multiple layer 3 protocols.
- The CMIs allocated for each such registration may or may
- not be the same.
- Generate a CMI for this protocol.
- Return.
-
- 5. Modified JOIN/LEAVE Processing
-
- This routine processes JOIN/LEAVE when a server map exists.
-
- Make a copy of the message.
- Change the type of the copy to MARS_SJOIN.
- If the message is a MARS_LEAVE then {
- Change the type of the copy to MARS_SLEAVE.
- }
- mar$flags.copy = 1 (copy).
- Hole punch the <min,max> group by excluding
- from the range those groups which the joining
- (leaving) node is already (still) a member of
-
-
-
- Armitage Standards Track [Page 80]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- due to it having previously issued a single group
- join.
- Indicate the message to be sent on ServerControlVC.
- If the message (copy) contains one or more <min,max> pair {
- Send message (copy) as indicated.
- }
- mar$flags.punched = 0 in the original message.
- Indicate the message to be sent on Private VC.
- Send message (original) as indicated.
- Hole punch the <min,max> group by excluding
- from the range those groups that are served by MCSs
- or which the joining (leaving) node is already
- (still) a member of due to it having previously
- issued a single group join.
- Indicate the (original) message to be sent on ClusterControlVC.
- If (number of holes punched > 0) then { /* punched holes */
- In original message do {
- mar$flags.punched = 1.
- old punched list <- new punched list.
- }
- } /* punched holes */
- mar$flags.copy = 1.
- Send message as indicated.
- Return.
-
- 5.1 MultiGroup JOIN/LEAVE Processing
-
- This routine processes JOIN/LEAVE when a multi group exists.
-
- If (mar$flags.layer3grp) {
- Ignore this setting, consider it reset.
- }
- mar$flags.copy = 1.
- Make a copy of the message.
- From the copy hole punch the <min,max> group by
- excluding from the range those groups that this
- node has already joined or left.
- If (number of holes punched > 0) then {
- mar$flags.punch = 0 in original message.
- Indicate original message to be sent on Private VC.
- Send original message as indicated.
- mar$flags.punch = 1 in copy message.
- old group range <- new punched list.
- Indicate message to be sent on ClusterControlVC.
- Send copy of message as indicated.
- } else {
- Indicate message to be sent on ClusterControlVC.
- Send original message as indicated.
-
-
-
- Armitage Standards Track [Page 81]
-
- RFC 2022 Multicast over UNI 3.0/3.1 based ATM November 1996
-
-
- } /* no holes punched */
- Return.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Armitage Standards Track [Page 82]
-
-