diff options
Diffstat (limited to 'doc/rfc/rfc2909.txt')
-rw-r--r-- | doc/rfc/rfc2909.txt | 3139 |
1 files changed, 3139 insertions, 0 deletions
diff --git a/doc/rfc/rfc2909.txt b/doc/rfc/rfc2909.txt new file mode 100644 index 0000000..dd8f775 --- /dev/null +++ b/doc/rfc/rfc2909.txt @@ -0,0 +1,3139 @@ + + + + + + +Network Working Group P. Radoslavov +Request for Comments: 2909 D. Estrin +Category: Experimental R. Govindan + USC/ISI + M. Handley + ACIRI + S. Kumar + USC/ISI + D. Thaler + Microsoft + September 2000 + + + The Multicast Address-Set Claim (MASC) Protocol + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. It does not specify an Internet standard of any kind. + Discussion and suggestions for improvement are requested. + Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2000). All Rights Reserved. + +Abstract + + This document describes the Multicast Address-Set Claim (MASC) + protocol which can be used for inter-domain multicast address set + allocation. MASC is used by a node (typically a router) to claim and + allocate one or more address prefixes to that node's domain. While a + domain does not necessarily need to allocate an address set for hosts + in that domain to be able to allocate group addresses, allocating an + address set to the domain does ensure that inter-domain group- + specific distribution trees will be locally-rooted, and that traffic + will be sent outside the domain only when and where external + receivers exist. + + + + + + + + + + + + + +Radoslavov, et al. Experimental [Page 1] + +RFC 2909 The MASC Protocol September 2000 + + +Table of Contents + + 1 Introduction .................................................. 4 + 1.1 Terminology ................................................. 4 + 1.2 Definitions ................................................. 4 + 2 Requirements for Inter-Domain Address Allocation .............. 5 + 3 Overall Architecture .......................................... 5 + 3.1 Claim-Collide vs. Query-Response Rationale .................. 6 + 4 MASC Topology ................................................. 6 + 4.1 Managed vs Locally-Allocated Space .......................... 8 + 4.2 Prefix Lifetime ............................................. 8 + 4.3 Active vs. Deprecated Prefixes .............................. 9 + 4.4 Multi-Parent Sibling-to-Sibling and Internal Peering ........ 9 + 4.5 Administratively-Scoped Address Allocation .................. 9 + 5 Protocol Details .............................................. 10 + 5.1 Claiming Space .............................................. 10 + 5.1.1 Claim Comparison Function ................................. 12 + 5.2 Renewing an Existing Claim .................................. 12 + 5.3 Expanding an Existing Prefix ................................ 12 + 5.4 Releasing Allocated Space ................................... 13 + 6 Constants ..................................................... 13 + 7 Message Formats ............................................... 14 + 7.1 Message Header Format ....................................... 14 + 7.2 OPEN Message Format ......................................... 15 + 7.3 UPDATE Message Format ....................................... 17 + 7.4 KEEPALIVE Message Format .................................... 21 + 7.5 NOTIFICATION Message Format ................................. 21 + 8 MASC Error Handling ........................................... 24 + 8.1 Message Header Error Handling ............................... 24 + 8.2 OPEN Message Error Handling ................................. 25 + 8.3 UPDATE Message Error Handling ............................... 26 + 8.4 Hold Timer Expired Error Handling ........................... 28 + 8.5 Finite State Machine Error Handling ......................... 28 + 8.6 NOTIFICATION Message Error Handling ......................... 28 + 8.7 Cease ....................................................... 29 + 8.8 Connection Collision Detection .............................. 29 + 9 MASC Version Negotiation ...................................... 30 + 10 MASC Finite State Machine .................................... 30 + 10.1 Open/Close MASC Connection FSM ............................. 31 + 11 UPDATE Message Processing .................................... 35 + 11.1 Accept/Reject an UPDATE .................................... 36 + 11.2 PREFIX_IN_USE Message Processing ........................... 38 + 11.2.1 PREFIX_IN_USE by PARENT .................................. 38 + 11.2.2 PREFIX_IN_USE by SIBLING ................................. 38 + 11.2.3 PREFIX_IN_USE by CHILD ................................... 38 + 11.2.4 PREFIX_IN_USE by INTERNAL_PEER ........................... 38 + 11.3 CLAIM_DENIED Message Processing ............................ 39 + 11.3.1 CLAIM_DENIED by CHILD or SIBLING ......................... 39 + + + +Radoslavov, et al. Experimental [Page 2] + +RFC 2909 The MASC Protocol September 2000 + + + 11.3.2 CLAIM_DENIED by INTERNAL_PEER ............................ 39 + 11.3.3 CLAIM_DENIED by PARENT ................................... 39 + 11.4 CLAIM_TO_EXPAND Message Processing ......................... 39 + 11.4.1 CLAIM_TO_EXPAND by PARENT ................................ 39 + 11.4.2 CLAIM_TO_EXPAND by SIBLING ............................... 40 + 11.4.3 CLAIM_TO_EXPAND by CHILD ................................. 40 + 11.4.4 CLAIM_TO_EXPAND by INTERNAL_PEER ......................... 40 + 11.5 NEW_CLAIM Message Processing ............................... 41 + 11.6 PREFIX_MANAGED Message Processing. ........................ 41 + 11.6.1 PREFIX_MANAGED by PARENT ................................. 41 + 11.6.2 PREFIX_MANAGED by CHILD or SIBLING ....................... 41 + 11.6.3 PREFIX_MANAGED by INTERNAL_PEER .......................... 41 + 11.7 WITHDRAW Message Processing ................................ 42 + 11.7.1 WITHDRAW by CHILD ........................................ 42 + 11.7.2 WITHDRAW by SIBLING ...................................... 42 + 11.7.3 WITHDRAW by INTERNAL ..................................... 42 + 11.7.4 WITHDRAW by PARENT ....................................... 43 + 11.8 UPDATE Message Ordering .................................... 43 + 11.8.1 Parent to Child .......................................... 43 + 11.8.2 Child to Parent .......................................... 44 + 11.8.3 Sibling to Sibling ....................................... 44 + 11.8.4 Internal to Internal ..................................... 44 + 12 Operational Considerations ................................... 45 + 12.1 Bootup Operations .......................................... 45 + 12.2 Leaf and Non-leaf MASC Domain Operation .................... 45 + 12.3 Clock Skew Workaround ...................................... 45 + 12.4 Clash Resolving Mechanism .................................. 46 + 12.5 Changing Network Providers ................................. 47 + 12.6 Debugging .................................................. 47 + 12.6.1 Prefix-to-Domain Lookup .................................. 47 + 12.6.2 Domain-to-Prefix Lookup .................................. 47 + 13 MASC Storage ................................................. 47 + 14 Security Considerations ...................................... 48 + 15 IANA Considerations .......................................... 48 + 16 Acknowledgments .............................................. 48 + 17 APPENDIX A: Sample Algorithms ................................ 49 + 17.1 Claim Size and Prefix Selection Algorithm .................. 49 + 17.1.1 Prefix Expansion ......................................... 49 + 17.1.2 Reducing Allocation Latency .............................. 50 + 17.1.3 Address Space Utilization ................................ 50 + 17.1.4 Prefix Selection After Increase of Demand ................ 50 + 17.1.5 Prefix Selection After Decrease of Demand ................ 51 + 17.1.6 Lifetime Extension Algorithm ............................. 51 + 18 APPENDIX B: Strawman Deployment .............................. 51 + 19 Authors' Addresses ........................................... 52 + 20 References ................................................... 54 + 21 Full Copyright Statement ..................................... 56 + + + + +Radoslavov, et al. Experimental [Page 3] + +RFC 2909 The MASC Protocol September 2000 + + +1. Introduction + + This document describes MASC, a protocol for inter-domain multicast + address set allocation. The MASC protocol (a Layer-3 protocol in the + multicast address allocation architecture [MALLOC]) is used by a node + (typically a router) to claim and allocate one or more address + prefixes to that node's domain. Each prefix has an associated + lifetime, and is chosen out of a larger prefix with a lifetime at + least as long, in a manner such that prefixes are aggregatable. At + any time, each MASC node (a Prefix Coordinator in [MALLOC]) will + typically advertise several prefixes with different lifetimes and + scopes, allowing Multicast Address Allocation Servers (MAAS's) in + that domain or child MASC domains to choose appropriate addresses for + their clients. + + The set of prefixes ("address set") associated with a domain is + injected into an inter-domain routing protocol (e.g., BGP4+ [MBGP]), + where it can be used by an inter-domain multicast tree construction + protocol (e.g., BGMP [BGMP]) to construct inter-domain group-shared + trees. + + Note that a domain does not need to allocate an address set for the + hosts in that domain to be able to allocate group addresses, nor does + allocating necessarily guarantee that hosts in other domains will not + use an address in the set (since, for example, hosts are not forced + to contact a MAAS before using a group address). Allocating an + address set to a domain does, however, ensure that inter-domain + group-specific multicast distribution trees for any group in the + address set will be locally-rooted, and that traffic will be sent + outside the given domain only when and where external receivers + exist. + +1.1. Terminology + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in RFC 2119 [RFC2119]. + + Constants used by this protocol are shown as [NAME_OF_CONSTANT], and + summarized in Section 6. + +1.2. Definitions + + This specification uses a number of terms that may not be familiar to + the reader. This section defines some of these and refers to other + documents for definitions of others. + + + + + +Radoslavov, et al. Experimental [Page 4] + +RFC 2909 The MASC Protocol September 2000 + + + MAAS (Multicast Address Allocation Server) + A host providing multicast address allocation services to end + users (e.g. via MADCAP [MADCAP]). + + MASC server + A node running MASC. + + Peer + Other MASC speakers a node directly communicates with. + + Multicast + IP Multicast, as defined for IPv4 in [RFC1112] and for IPv6 in + [RFC2460]. + + Multicast Address + An IP multicast address or group address, as defined in [RFC1112] + and [RFC2373]. An identifier for a group of nodes. + +2. Requirements for Inter-Domain Address Allocation + + The key design requirements for the inter-domain address allocation + mechanism are: + + o Efficient address space utilization when space is scare, which + naturally implies that address allocations be based on the actual + address usage patterns, and therefore that it be dynamic. + + o Address aggregation, that implies that the address allocation + mechanism be hierarchical. + + o Minimize flux in the allocated address sets (e.g. the address sets + should be reused when possible). + + o Robustness, by using decentralized mechanisms. + + The timeliness in obtaining an address set is not a major design + constraint as this is taken care of at a lower level [MALLOC]. + +3. Overall Architecture + + The Multicast Address Set Claim (MASC) protocol is used by MASC + domains to claim and allocate address sets for use by Multicast + Address Allocation Servers (MAASs) within each domain. Typically one + or more border routers of each domain that requires multicast address + space of its own would run MASC. Throughout this document, the term + "MASC domain" refers to a domain that has at least one node running + MASC; typically these domains will be Autonomous Systems (AS's). A + MASC node (on behalf of its domain) chooses an address set to claim, + + + +Radoslavov, et al. Experimental [Page 5] + +RFC 2909 The MASC Protocol September 2000 + + + sends a claim to other MASC domains in the network, and waits while + listening for any colliding claims. If there is a collision, the + losing claimer gives up the colliding claim and claims a different + address set. + + After a sufficiently long collision-free waiting period, the address + set chosen by a MASC node is considered allocated to that node's + domain. Three things may then happen: + + a) The allocated prefix can then be injected as a "multicast route" + into the inter-domain routing protocol (e.g., BGP4+ [MBGP]) as + "G-RIB" Network Layer Reachability Information (NLRI), where it + may be used by an inter-domain multicast routing protocol (e.g., + BGMP [BGMP]) to construct group-shared trees. To reduce the size + and slow the growth of the G-RIB, MASC nodes may perform CIDR-like + aggregation [CIDR] of the multicast NLRI information. This + motivates the need for an algorithm to select prefixes for domains + in such a way as to ensure good aggregation in addition to + achieving good address space utilization. + + b) The node's domain may assign to itself a sub-prefix which can be + used by MAASs within the domain. + + c) Sub-prefixes may be allocated to child domains, if any. + +3.1. Claim-Collide vs. Query-Response Rationale + + We choose a claim-collide mechanism instead of a query-response + mechanism for the following reasons. In a query-response mechanism, + replicas of the MASC node would be needed in parent MASC domains in + order to make their responses be robust to failures. This brings + about the associated problem of synchronization of the replicas and + possibly additional fragmentation of the address space. In addition, + even in this mechanism, address collisions would still need to be + handled. We believe the proposed claim-collide mechanism is simpler + and more robust than a query-response mechanism. + +4. MASC Topology + + The domain hierarchy used by MASC is congruent to the somewhat + hierarchical structure of the inter-domain topology, e.g., backbones + connected to regionals, regionals connected to metropolitan + providers, etc. As in BGP, MASC connections are locally configured. + A MASC domain that is a customer of other MASC domains will have one + or more of those provider domains as its parent. For example, a MASC + domain that is a regional provider will choose one (or more) of its + backbone provider domains as its parent(s). Children are configured + with their parent MASC domain, and parents are configured with their + + + +Radoslavov, et al. Experimental [Page 6] + +RFC 2909 The MASC Protocol September 2000 + + + children domains. At the top, a number of Top-Level Domains are + connected in a (sparse) mesh and share the global multicast address + space. To improve the robustness, a pair of children of the same + parent domain MAY be configured as siblings with regard to that + parent. + + Figure 1 illustrates a sample topology. Double-line links denote + intra-domain TCP peering sessions, and single-line links denote + inter-domain TCP connections. T1 and T2 are Top-Level Domains (e.g., + backbone providers), containing MASC speakers T1a and T2a, + respectively. P3 and P4 are regional domains, containing (P3a, P3b), + and (P4a, P4b) respectively. P3 has a single customer (or "child"), + C5, containing (C5a, C5b, C5c). P4 has three children, C5, C6, C7, + containing (C5a, C5b, C5c), (C6a, C6b), and (C7a) respectively. + + T1a-----------T2a + | | + | | + | | + P3a====P3b P4a====P4b + | | / | / | \ + | | _______/ | / | \ + | | / | / | \______ + | | / | / | \ + C5a====C5b C6a====C6b----------C7a + \\ // + \\// + C5c + + Figure 1: Example MASC Topology + + All MASC communications use TCP. Each MASC node is connected to and + communicates directly with other MASC nodes. The local node acts in + exactly one of the following four roles with respect to each remote + note: + + INTERNAL_PEER + The local and remote nodes are both in the same MASC domain. For + example, P4b is an INTERNAL_PEER of P4a. + + CHILD + A customer relationship exists whereby the local node may obtain + address space from the remote node. For example, C6a is a CHILD + in its session with P4a. + + + + + + + +Radoslavov, et al. Experimental [Page 7] + +RFC 2909 The MASC Protocol September 2000 + + + PARENT + A provider relationship exists whereby the remote node may obtain + address space from the local node. For example, T2a is a PARENT + in its session with P4a. Whether space is actually requested is + up to the implementation and local policy configuration. + + SIBLING + No customer-provider relationship exists. For example, T2a is a + SIBLING in its session with T1a (Top-Level Domain SIBLING + peering). Also, C6b is a SIBLING in its session with C7a with + regard to their common parent P4. + + A node's message will be propagated to its parent, all siblings with + the same parent, and its children. Since a domain need not have a + direct peering session with every sibling, a MASC domain must + propagate messages from a child domain to other children, can + propagate messages from a parent domain to other siblings, and, if a + Top-Level Domain, it must propagate messages from a sibling to other + siblings, otherwise may propagate messages from a sibling domain to + its parent and other siblings. + +4.1. Managed vs Locally-Allocated Space + + Each domain has a "Managed" Address Set, and a "Locally-Allocated" + Address Set. The "managed" space includes all address space which a + domain has successfully claimed via MASC. The "locally-allocated" + space, on the other hand, includes all address space which MAASs + inside the domain may use. Thus, the locally-allocated space is a + subset of the managed space, and refers to the portion which a domain + allocates for its own use. + + For leaf domains (ones with no children), these two sets are + identical, since all claimed space is allocated for local use. A + parent domain, on the other hand, "manages" all address space which + it has claimed via MASC, while sub-prefixes can be allocated to + itself and to its children. + +4.2. Prefix Lifetime + + Each prefix has an associated lifetime. If a domain wants to use a + prefix longer than its lifetime, that domain must "renew" the prefix + BEFORE its lifetime expires (see Section 5.2). If the lifetime + cannot be extended, then the domain should either retry later to + extend, or should choose and claim another prefix. + + + + + + + +Radoslavov, et al. Experimental [Page 8] + +RFC 2909 The MASC Protocol September 2000 + + + After a prefix's lifetime expires, MASC nodes in the domain that own + that prefix must stop using that prefix. The corresponding entry + from the G-RIB database must be removed, and all information + associated with the expired prefix may be deleted from the MASC + node's local memory. + +4.3. Active vs. Deprecated Prefixes + + Each prefix advertised by a parent to its children can be either + "active" or "deprecated". A "deprecated" prefix is a prefix that the + parent wishes to discontinue to use after its lifetime expires. The + "active" prefixes only are candidates for size expansion or lifetime + extension. Usually, this information will be used by a child as a + hint to know which of the parent's prefixes might have their lifetime + extended. + +4.4. Multi-Parent Sibling-to-Sibling and Internal Peering + + Two sibling nodes that have more than one common parent will create + and use between them a number of transport-level connections, one per + each common parent. The information associated with a parent will be + sent over the connection that corresponds to the same parent. + Internal peers do not need to open multiple connections between them; + a single connection is used for all information. + +4.5. Administratively-Scoped Address Allocation + + MASC can also be used for sub-allocating prefixes of addresses within + an administrative scope zone [SCOPE], but only if the scope is + "divisible" (as described in [MALLOC] and [MZAP]). A MASC node can + learn what scopes it resides within by listening to MZAP [MZAP] + messages. + + A "Zone TLD" is a domain which has no parent domain within the scope + zone. Zone TLDs act as TLDs for the prefix associated with the + scope. Figure 2 gives an example, where a scope boundary around + domains P3 and C5 has been added to Figure 1. Domain P3 is a Zone + TLD, since its only parent (T1) is outside the boundary. Hence, P3 + can claim space directly out of the prefix associated with the scope + itself. Domain C5, on the other hand, has a parent within the scope + (namely, P3), and hence is not a Zone TLD. + + + + + + + + + + +Radoslavov, et al. Experimental [Page 9] + +RFC 2909 The MASC Protocol September 2000 + + + T1a-----------T2a + | | + ............|....... | + . | . | + . P3a====P3b . P4a + . | | . / + . | | _______/ + . | | / . + . | | / . + . C5a====C5b . + . \\ // . + . \\// . + . C5c . + . . + . Admin Scope Zone . + .................... + + Figure 2: Scope Zone Example + + It is assumed that the role of a node (as discussed in Section 4) + with respect to a given peering session is the same for every scope + in which both ends are contained. A peering session that crosses a + scope boundary (such as the session between C5b and P4a in Figure 2) + is ignored when propagating messages that pertain to the given scope. + That is, such messages are not sent across such sessions. + +5. Protocol Details + +5.1. Claiming Space + + When a MASC node, on behalf of a MASC domain, needs more address + space, it decides locally the size and the value of the address + prefix(es) it will claim from one of its parents. For example, the + decision might be based on the knowledge this node has about its + parent's address set, its siblings' claims and allocations, its own + address set, the claim messages from its siblings, and/or the demand + pattern of its children and the local domain. A sample algorithm is + given in Appendix A. + + A MASC node which is not in a top-level domain can initiate a claim + toward a parent MASC domain if and only if it currently has an + established connection with at least one node in that parent domain. + + After the prefix address and size are decided, the claim proceeds as + follows: + + + + + + +Radoslavov, et al. Experimental [Page 10] + +RFC 2909 The MASC Protocol September 2000 + + + a) The claim is scheduled to be sent after a random delay in the + interval (0, [INITIATE_CLAIM_DELAY]). If a claim originated by a + node from the same MASC domain is received, and that claim + eliminates the need for the local claim, the local claim is + canceled and no further action is taken. + + b) The claim is sent to one of the parents (if the domain is not a + top-level domain), all known siblings with the same parent, and + all internal peers. A Claim-Timer is then started at + [WAITING_PERIOD], and the MASC node starts listening for colliding + claims. + + c) If a colliding claim is received while the Claim-Timer is running, + that claim is compared with the locally initiated claim using the + function described in Section 5.1.1. If the local claim is the + loser, a new prefix must be chosen to claim, and the loser claim's + Claim-Timer must be canceled. The loser claim can be either + explicitly withdrawn, or can be left to expire without taking + further actions. If the winning claim was originated by a node + from the same MASC domain, no new claim will be initiated. If the + local claim is the winner, no actions need to be taken. + + d) If the Claim-Timer expires, the claimed prefix becomes associated + with the claimer's domain, i.e. it is considered allocated to that + domain and the following actions can be performed: + + o Advertise the prefix to its parent, and to all siblings with + the same parent, by sending a PREFIX_IN_USE claim to them. + + o Inject the prefix into the G-RIB of the inter-domain routing + protocol. + + o Send a PREFIX_MANAGED message to all children and internal + peers, informing them that they may issue claims within the + managed space. A sub-prefix may then be claimed for local + usage (see Section 12.2). + + Each MASC node receives all claims from its siblings and children. A + received claim must be evaluated against all claims saved in the + local cache using the function described in Section 5.1.1. The + output of the function will define the further processing of that + claim (see Section 11). + + + + + + + + + +Radoslavov, et al. Experimental [Page 11] + +RFC 2909 The MASC Protocol September 2000 + + +5.1.1. Claim Comparison Function + + Each claim message includes: + + o a "type", being one of: PREFIX_IN_USE, CLAIM_DENIED, + CLAIM_TO_EXPAND, or NEW_CLAIM (PREFIX_MANAGED and WITHDRAW are + not considered as claims that have to be compared) + + o timestamp when the claim was initiated + + o the claimed prefix and lifetime + + o MASC Identifier of the node that originated the claim + + When two claims are compared, first the type is compared based on the + following precedence: + + PREFIX_IN_USE > CLAIM_DENIED > CLAIM_TO_EXPAND > NEW_CLAIM + + If the type is the same, then the timestamps are used to compare the + claims. In practice, two claims will have the same type if the type + is either NEW_CLAIM (ordinary collision) or PREFIX_IN_USE (signal for + a clash). When the timestamps are compared, the claim with the + smallest, i.e. earliest timestamp wins. If the timestamps are the + same, then the claim with the smallest Origin Node Identifier wins. + +5.2. Renewing an Existing Claim + + The procedure for extending the lifetime of prefixes already in use + is the same as claiming new space (see Section 5.1), except that the + claim type must be CLAIM_TO_EXPAND, while the Address and the Mask of + the claim (see Section 7.3) must be the same as the already allocated + prefix. If the Claim-Timer expires and there is no collision, the + desired lifetime is assumed. + +5.3. Expanding an Existing Prefix + + The procedure for extending the lifetime of prefixes already in use + is the same as claiming new space (see Section 5.1), except that the + claim type must be CLAIM_TO_EXPAND, while the Address and the Mask of + the claim (see Section 7.3) must be set to the desired values. If + the Claim-Timer expires and there is no collision, the desired larger + prefix is associated with the local domain. + + + + + + + + +Radoslavov, et al. Experimental [Page 12] + +RFC 2909 The MASC Protocol September 2000 + + +5.4. Releasing Allocated Space + + If the lifetime of a prefix allocated to the local domain expires and + the domain does not need to reuse it, all resources associated with + this prefix are deleted and no further actions are taken. If the + lifetime of the prefix has not expired, and if no subranges of that + prefix have being allocated for local usage or by some of the + children domains, the space may be released by sending a withdraw + message to the parent domain, all known siblings with the same + parent, and all internal peers. + +6. Constants + + MASC uses the following constants: + + [PORT_NUMBER] + 2587. The TCP port number used to listen for incoming MASC + connections, as assigned by IANA. + + [WAITING_PERIOD] + The amount of time (in seconds) that must pass between a NEW_CLAIM + (or CLAIM_TO_EXPAND), and a PREFIX_IN_USE for the same prefix. + This must be long enough to reasonably span any single inter- + domain network partition. Default: 172800 seconds (i.e. 48 + hours). + + [INITIATE_CLAIM_DELAY] + The amount of time (in seconds) a MASC node must wait before + initiating a new claim or a claim for space expansion. This must + be a random value in the interval (0, [INITIATE_CLAIM_DELAY]). + Default value for [INITIATE_CLAIM_DELAY]: 600 seconds (i.e. 10 + minutes). + + [TLD_ID] + The Parent Domain Identifier used by a Top-Level Domain (which has + no parent). Must be 0. + + [HOLDTIME] + The amount of time (in seconds) that must pass without any + messages received from a remote node before considering the + connection is down. Default: 240 seconds (i.e. 4 minutes). + + + + + + + + + + +Radoslavov, et al. Experimental [Page 13] + +RFC 2909 The MASC Protocol September 2000 + + +7. Message Formats + + This section describes message formats used by MASC. + + Messages are sent over a reliable transport protocol connection. A + message is processed only after it is entirely received. The maximum + message size is 4096 octets. All implementations are required to + support this maximum message size. + +7.1. Message Header Format + + Each message has a fixed-size (4-octets) header. There may or may + not be a data portion following the header, depending on the message + type. The layout of these fields is shown below: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | Type | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Length: + This 2-octet unsigned integer indicates the total length of the + message, including the header, in octets. Thus, e.g., it allows + one to locate in the transport-level stream the start of the next + message. The value of the Length field must always be at least 4 + and no greater than 4096, and may be further constrained, + depending on the message type. No "padding" of extra data after + the message is allowed, so the Length field must have the smallest + value required given the rest of the message. + + Type: + This 1-octet unsigned integer indicates the type code of the + message. The following type codes are defined: + + 1 - OPEN + 2 - UPDATE + 3 - NOTIFICATION + 4 - KEEPALIVE + + Reserved: + This 1-octet field is reserved. MUST be set to zero by the sender, + and MUST be ignored by the receiver. + + + + + + + + +Radoslavov, et al. Experimental [Page 14] + +RFC 2909 The MASC Protocol September 2000 + + +7.2. OPEN Message Format + + After a transport protocol connection is established, the first + message sent by each side is an OPEN message. If the OPEN message is + acceptable, a KEEPALIVE message confirming the OPEN is sent back. + Once the OPEN is confirmed, UPDATE, KEEPALIVE, and NOTIFICATION + messages may be exchanged. + + The minimum length of the OPEN message is 20 octets (including + message header). In addition to the fixed-size MASC header, the OPEN + message contains the following fields: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version |R| AddrFam |Rol| Hold Time | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sender Domain Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sender MASC Node Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Parent's Domain Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + (Optional Parameters) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Version: + This 1-octet unsigned integer indicates the protocol version + number of the message. The current MASC version number is 1. + + R bit: + This 1-bit field is reserved. MUST be set to zero by the sender, + and MUST be ignored by the receiver. + + AddrFam: + This 5-bit field is the IANA-assigned address family number of the + encoded prefix [IANA]. These include (among others): + + Number Description + ------ ----------- + 1 IP (IP version 4) + 2 IPv6 (IP version 6) + + + + + + + +Radoslavov, et al. Experimental [Page 15] + +RFC 2909 The MASC Protocol September 2000 + + + My Role (Rol): + This 2-bit field indicates the proposed relationship of the + sending system to the receiving system: + 00 = INTERNAL_PEER (sent from one internal peer to another) + 01 = CHILD (sent from a child to its parent) + 10 = SIBLING (sent from one sibling to another) + 11 = PARENT (sent from a parent to its child) + + Hold Time: + This 2-octet unsigned integer indicates the number of seconds that + the sender proposes for the value of the Hold Timer. Upon receipt + of an OPEN message, a MASC speaker MUST calculate the value of the + Hold Timer by using the smaller of its configured Hold Time for + that peer and the Hold Time received in the OPEN message. The + Hold Time MUST be either zero or at least three seconds. An + implementation may reject connections on the basis of the Hold + Time. The calculated value indicates the maximum number of + seconds that may elapse between the receipt of successive + KEEPALIVE and/or UPDATE messages by the sender. RECOMMENDED value + is [HOLDTIME] seconds. + + Sender Domain Identifier: + A globally unique identifier. Its length is determined based on + the Address Family, and should be treated as an unsigned integer + (e.g. a 4-octet integer for IPv4, or a 16-octet integer for IPv6), + but must be at least 4 octets long. It should be set to the + Autonomous System number of the sender, but the network unicast + prefix address is also acceptable. + + Sender MASC Node Identifier: + This field's length and format are same as the Sender Domain + Identifier field, and indicates the MASC Node Identifier of the + sender. A given MASC speaker sets the value of its MASC Node + Identifier to a globally-unique value assigned to that MASC + speaker (e.g., an IPv4 or IPv6 address). The value of the MASC + Node Identifier is determined on startup and is the same for every + MASC session opened. + + Parent's Domain Identifier: + This field's length and format are same as the Sender Domain + Identifier field, and is set to the Domain Identifier of the + sender's parent (e.g. the parent's Autonomous System number, or + network prefix address), or is set to [TLD_ID] if the sender is a + TLD. Used only when Rol is INTERNAL_PEER or SIBLING, otherwise is + ignored. This field is used to determine the common parents + between siblings, to associate each sibling-to-sibling connection + with a particular parent, and to discover TLD-related + + + + +Radoslavov, et al. Experimental [Page 16] + +RFC 2909 The MASC Protocol September 2000 + + + configuration problems among internal peers. If a non-TLD node + does not know yet the Domain ID of any of its parents, it can use + its own Domain ID in the OPEN messages to its internal peers. + + Optional Parameters: + This field may contain a list of optional parameters, where each + parameter is encoded as a <Parameter Length, Parameter Type, + Parameter Value> triplet. The combined length of all optional + parameters can be derived from the Length field in the message + header. + + 0 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... + | Parm. Length | Parm. Type | Parameter Value (variable) + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... + + Parameter Length is a one octet field that contains the length of + the Parameter Value field in octets. Parameter Type is a one + octet field that unambiguously identifies individual parameters. + Parameter Value is a variable length field that is interpreted + according to the value of the Parameter Type field. Unrecognized + optional parameters MUST be silently ignored. + + This document does not define any optional parameters. + +7.3. UPDATE Message Format + + UPDATE messages are used to transfer Claim/Collision/PrefixManaged + information between MASC speakers. The UPDATE message always + includes the fixed-size MASC header, and one or more attributes as + described below. The minimum length of the UPDATE message is 40 + octets (including the message header). + + Each attribute is of the form: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Length | Type | Reserved | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Data ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + All attributes are 4-octets aligned. + + + + + + +Radoslavov, et al. Experimental [Page 17] + +RFC 2909 The MASC Protocol September 2000 + + + Length: + The Length is the length of the entire attribute, including the + length, type, and data fields. If other attributes are nested + within the data field, the length includes the size of all such + nested attributes. + + Type: + This 1-octet unsigned integer indicates the type code of the + attribute. The following type codes are defined: + + 0 = PREFIX_IN_USE (prefix is being used by the origin) + 1 = CLAIM_DENIED (the claim is refused (probably by the + origin's parent domain)) + 2 = CLAIM_TO_EXPAND (origin is trying to expand the size of + an existing prefix) + 3 = NEW_CLAIM (origin is trying to claim a new prefix) + 4 = PREFIX_MANAGED (parent is informing child of space + available) + 5 = WITHDRAW (origin is withdrawing a previous claim) + + Types 128-255 are reserved for "optional" attributes. If a + required attribute is unrecognized, a NOTIFICATION with UPDATE + Error Code and Unrecognized Required Attribute subcode will be + sent. Unrecognized optional attributes are simply ignored. + + Reserved: + This 1-octet field is reserved. MUST be set to zero by the + sender, and MUST be ignored by the receiver. + + Types 0-3 are collectively called "CLAIMs". The message format below + describes the encoding of a CLAIM, PREFIX_MANAGED and WITHDRAW. + + + + + + + + + + + + + + + + + + + + +Radoslavov, et al. Experimental [Page 18] + +RFC 2909 The MASC Protocol September 2000 + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Reserved1 |D| AddrFam |Rol| Reserved2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Claim Timestamp | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Claim Lifetime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Claim Holdtime | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Origin Domain Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Origin Node Identifier (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Address (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mask (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + + (Optional Parameters) | + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Reserved1: + This 1-octet field is reserved. MUST be set to zero by the + sender, and MUST be ignored by the receiver. + + D-bit: + DEPRECATED_PREFIX bit. If set, indicates that the advertised + address prefix is Deprecated, otherwise the prefix is Active (see + Section 4.3). + + AddrFam: + This 5-bit field is the IANA-assigned address family number of the + encoded prefix [IANA]. + + Rol: + This 2-bit field indicates the relationship/role of the Origin of + the message to the node sending that message: + 00 = INTERNAL (originated by the sender's domain) + 01 = CHILD (originated by a child of the sender's domain) + 10 = SIBLING (originated by a sibling of the sender's domain) + 11 = PARENT (originated by a parent of the sender's domain) + + Reserved2: + This 2-octet field is reserved. MUST be set to zero by the + sender, and MUST be ignored by the receiver. + + + +Radoslavov, et al. Experimental [Page 19] + +RFC 2909 The MASC Protocol September 2000 + + + Claim Timestamp: + The timestamp of the claim when it was originated. The timestamp + is expressed in number of seconds since midnight (0 hour), January + 1, 1970, Greenwich. + + Claim Lifetime: + The time in seconds between the Claim Timestamp, and the time at + which the prefix will become free. + + Claim Holdtime: + The time in seconds between the Claim Timestamp, and the time at + which the claim should be deleted from the local cache. For + PREFIX_IN_USE and PREFIX_MANAGED claims it should be equal to + Claim Lifetime; for CLAIM_TO_EXPAND, NEW_CLAIM, and CLAIM_DENIED + it should be equal to [WAITING_PERIOD]. + + Origin Domain Identifier: + The domain identifier of the claim originator. Its length and + format definition are same as the Sender Domain Identifier (see + Section 7.2). + + Origin Node Identifier: + The MASC Node ID of the claim originator. Its length and format + definition are same as the Sender MASC Node Identifier (see + Section 7.2). + + Address: + The address associated with the given prefix to be encoded. The + length is determined based on the Address Family (e.g. 4 octets + for IPv4, 16 for IPv6) + + Mask: + The mask associated with the given prefix. The length is the same + as the Address field and is determined based on the Address + Family. The field contains the full bitmask. + + Optional Parameters: + This field may contain a list of optional parameters, where each + parameter is encoded using same format as the optional parameters + of an OPEN message (see Section 7.2). Unrecognized optional + parameters MUST be silently ignored. This document does not + define any optional parameters. + + + + + + + + + +Radoslavov, et al. Experimental [Page 20] + +RFC 2909 The MASC Protocol September 2000 + + +7.4. KEEPALIVE Message Format + + MASC does not use any transport protocol-based keep-alive mechanism + to determine if peers are reachable. Instead, KEEPALIVE messages are + exchanged between peers often enough as not to cause the Hold Timer + to expire. A reasonable maximum time between the last KEEPALIVE or + UPDATE message sent, and the time at which a KEEPALIVE message is + sent, would be one third of the Hold Time interval. KEEPALIVE + messages MUST NOT be sent more frequently than one per second. An + implementation MAY adjust the rate at which it sends KEEPALIVE + messages as a function of the Hold Time interval. + + If the negotiated Hold Time interval is zero, then periodic KEEPALIVE + messages MUST NOT be sent. + + A KEEPALIVE message consists of only a message header, and has a + length of 4 octets. + +7.5. NOTIFICATION Message Format + + A NOTIFICATION message is sent when an error condition is detected. + Depending on the error condition, the MASC connection might or must + be closed immediately after sending the message. If the sender of + the NOTIFICATION decides that the connection is to be closed, it will + indicate this by zeroing the O-bit in the NOTIFICATION message (see + below). + + In addition to the fixed-size MASC header, the NOTIFICATION message + contains the following fields: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |O| Error code | Error subcode | Data | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + O-bit: + Open-bit. If zero, it indicates that the sender will close the + connection. If '1', it indicates that the sender has chosen to + keep the connection open. + + Error Code: + This 7-bit unsigned integer indicates the type of NOTIFICATION. + The following Error Codes have been defined: + + + + + +Radoslavov, et al. Experimental [Page 21] + +RFC 2909 The MASC Protocol September 2000 + + + Error Code Symbolic Name Reference + + 1 Message Header Error Section 8.1 + + 2 OPEN Message Error Section 8.2 + + 3 UPDATE Message Error Section 8.3 + + 4 Hold Timer Expired Section 8.4 + + 5 Finite State Machine Error Section 8.5 + + 6 NOTIFICATION Message Error Section 8.6 + + 7 Cease Section 8.7 + + Error subcode: + This 1-octet unsigned integer provides more specific information + about the nature of the reported error. Each Error Code may have + one or more Error Subcodes associated with it. If no appropriate + Error Subcode is defined, then a zero (Unspecific) value is used + for the Error Subcode field, and the O-bit must be zero (i.e. the + connection will be closed). The notation used in the error + description below is: MC = Must Close connection = O-bit is zero; + CC = Can Close connection = O-bit might be zero. + + Message Header Error subcodes: + 0 - Unspecific (MC) + 1 - Bad Message Length (MC) + 2 - Bad Message Type (CC) + + OPEN Message Error subcodes: + + 0 - Unspecific (MC) + 1 - Unsupported Version Number (MC) + 2 - Bad Peer Domain ID (MC) + 3 - Bad Peer MASC Node ID (MC) + 6 - Unacceptable Hold Time (MC) + 7 - Invalid Parent Configuration (MC) + 8 - Inconsistent Role (MC) + 9 - Bad Parent Domain ID (MC) + 10 - No Common Parent (MC) + 13 - Unrecognized Address Family (MC) + + + + + + + + +Radoslavov, et al. Experimental [Page 22] + +RFC 2909 The MASC Protocol September 2000 + + + UPDATE Message Error subcodes: + 0 - Unspecific (MC) + 1 - Malformed Attribute List (MC) + 2 - Unrecognized Required Attribute (CC) + 5 - Attribute Length Error (MC) + 10 - Invalid Address field (CC) + 11 - Invalid Mask field (CC) + 12 - Non-Contiguous Mask (CC) + 13 - Unrecognized Address Family (MC) + 14 - Claim Type Error (CC) + 15 - Origin Domain ID Error (CC) + 16 - Origin Node ID Error (CC) + 17 - Claim Lifetime Too Short (CC) + 18 - Claim Lifetime Too Long (CC) + 19 - Claim Timestamp Too Old (CC) + 20 - Claim Timestamp Too New (CC) + 21 - Claim Prefix Size Too Small (CC) + 22 - Claim Prefix Size Too Large (CC) + 23 - Illegal Origin Role Error (CC) + 24 - No Appropriate Parent Prefix (CC) + 25 - No Appropriate Child Prefix (CC) + 26 - No Appropriate Internal Prefix (CC) + 27 - No Appropriate Sibling Prefix (CC) + 28 - Claim Holdtime Too Short (CC) + 29 - Claim Holdtime Too Long (CC) + + Hold Timer Expired subcodes (the O-bit is always zero): + + 0 - Unspecific (MC) + + Finite State Machine Error subcodes: + + 0 - Unspecific (MC) + 1 - Open/Close MASC Connection FSM Error (MC) + 2 - Unexpected Message Type FSM Error (MC) + + Cease subcodes (the O-bit is always zero): + + 0 - Unspecific (MC) + + NOTIFICATION subcodes (the O-bit is always zero): + + 0 - Unspecific (MC) + + Data: + This variable-length field is used to diagnose the reason for the + NOTIFICATION. The contents of the Data field depend upon the + Error Code and Error Subcode. See Section 8 for more details. + + + +Radoslavov, et al. Experimental [Page 23] + +RFC 2909 The MASC Protocol September 2000 + + + Note that the length of the Data field can be determined from the + message Length field by the formula: + + Message Length = 6 + Data Length + + The minimum length of the NOTIFICATION message is 6 octets + (including message header). + +8. MASC Error Handling + + This section describes actions to be taken when errors are detected + while processing MASC messages. MASC Error Handling is similar to + that of BGP [BGP]. + + When any of the conditions described here are detected, a + NOTIFICATION message with the indicated Error Code, Error Subcode, + and Data fields is sent. In addition, the MASC connection might be + closed. If no Error Subcode is specified, then a zero (Unspecific) + must be used. + + The phrase "the MASC connection is closed" means that the transport + protocol connection has been closed and that all resources for that + MASC connection have been deallocated. + + Unless specified explicitly, the Data field of the NOTIFICATION + message is empty. + +8.1. Message Header Error Handling + + All errors detected while processing the Message Header are indicated + by sending the NOTIFICATION message with Error Code Message Header + Error. The Error Subcode elaborates on the specific nature of the + error. The Data field contains the erroneous Message (including the + message header). + + If the Length field of the message header is less than 4 or greater + than 4096, or if the length of an OPEN message is less than the + minimum length of the OPEN message, or if the length of an UPDATE + message is less than the minimum length of the UPDATE message, or if + the length of a KEEPALIVE message is not equal to 4, then the Error + Subcode is set to Bad Message Length. + + If the Type field of the message header is not recognized, then the + Error Subcode is set to Bad Message Type. + + + + + + + +Radoslavov, et al. Experimental [Page 24] + +RFC 2909 The MASC Protocol September 2000 + + +8.2. OPEN Message Error Handling + + All errors detected while processing the OPEN message are indicated + by sending the NOTIFICATION message with Error Code OPEN Message + Error. The Error Subcode elaborates on the specific nature of the + error. The Data field contains the erroneous OPEN Message (excluding + the Message Header), unless stated otherwise. + + If the version number contained in the Version field of the received + OPEN message is not supported, then the Error Subcode is set to + Unsupported Version Number. The Data field is a 1-octet unsigned + integer, which indicates the largest locally supported version number + less than the version the remote MASC node bid (as indicated in the + received OPEN message). + + If the Sender Domain Identifier field of the OPEN message is + unacceptable, then the Error Subcode is set to Bad Peer Domain ID. + The determination of acceptable Domain IDs is outside the scope of + this protocol. + + If the Sender MASC Node Identifier field of the OPEN message is + unacceptable, then the Error Subcode is set to Bad Peer MASC Node ID. + The determination of acceptable Node IDs is outside the scope of this + protocol. + + If the Hold Time field of the OPEN message is unacceptable, then the + Error Subcode MUST be set to Unacceptable Hold Time. An + implementation MUST reject Hold Time values of one or two seconds. + An implementation MAY reject any proposed Hold Time. An + implementation which accepts a Hold Time MUST use the negotiated + value for the Hold Time. + + If the remote system's proposed Role is INTERNAL_PEER, and either + (but not both) the local system or the remote system's Parent Domain + ID is [TLD_ID], then the Error Subcode is set to Invalid Parent + Configuration. The Data field must be filled with all the local + system's Parent Domain IDs. + + If the remote system's proposed Role conflicts with its expected role + (based on the local system's configured Role), then the Error Subcode + is set to Inconsistent Role. The Data field is 1-octet long, and + contains the local system's configured Role. + + If the remote system's Parent Domain ID is unacceptable, then the + Error Subcode is set to Bad Parent Domain ID, and the Data field is + filled with the erroneous Parent Domain ID. The determination of + acceptable Parent Domain ID is outside the scope of this protocol. + + + + +Radoslavov, et al. Experimental [Page 25] + +RFC 2909 The MASC Protocol September 2000 + + + If the remote system is supposed to be a sibling, but it does not + have a common parent with the local system (based on the Parent + Domain ID information in the OPEN message), the Error Subcode is set + to No Common Parent, and the Data field is filled with all Parent + Domain IDs of the local MASC domain. + + If the Address Family is unrecognized, then the Error Subcode is set + to Unrecognized Address Family. + +8.3. UPDATE Message Error Handling + + All errors detected while processing the UPDATE message are indicated + by sending the NOTIFICATION message with Error Code UPDATE Message + Error. The error subcode elaborates on the specific nature of the + error. The Data field contains the erroneous UPDATE Message + (including the attribute header, but excluding the Message Header), + unless stated otherwise. + + If any recognized attribute has an Attribute Length that conflicts + with the expected length (based on the attribute type code), then the + Error Subcode is set to Attribute Length Error. + + If any of the mandatory well-known attributes are not recognized, + then the Error Subcode is set to Unrecognized Required Attribute. + + If the Address field includes an invalid address (except 0), then the + Error Subcode is set to Invalid Address. + + If the Mask field includes an invalid mask (for example, starting + with 0), then the Error Subcode is set to Invalid Mask. + + If the Mask field includes a non-contiguous bitmask, and that MASC + server does not support, or is not configured to use non-contiguous + masks, then the Error Subcode is set to Non-Contiguous Mask. + + If the Address Family is unrecognized, then the Error Subcode is set + to Unrecognized Address Family. + + If the Origin Role/Claim Type combination is not one of the + following, then the Error Subcode is set to Claim Type Error. + + + + + + + + + + + +Radoslavov, et al. Experimental [Page 26] + +RFC 2909 The MASC Protocol September 2000 + + + Origin Claim + Role Type + + ICS PREFIX_IN_USE (0) + I P CLAIM_DENIED (1) + ICS CLAIM_TO_EXPAND (2) + ICS NEW_CLAIM (3) + I P PREFIX_MANAGED (4) + ICSP WITHDRAW (5) + + If there is a reason to believe that the Origin Domain ID is invalid, + then the Error Subcode is set to Origin Domain ID Error. The same + applies for Origin Node ID (the corresponding error is Origin Node ID + Error). + + If a node (usually a parent receiving a claim from a child) decides + that the Claim Lifetime is too short (for example, less than 172800, + i.e. 48 hours), it MAY send an UPDATE Message Error with subcode + Claim Lifetime Too Short. + + If a node (usually a parent receiving a claim from a child) decides + that the Claim Lifetime is too long (for example, more than + 15,768,000, i.e. half year), then it MAY send an UPDATE Message Error + with subcode Claim Lifetime Too Long. Note that usually a parent + MASC node should send first CLAIM_DENIED collision messages with + Claim Lifetime field filled with the longest acceptable lifetime. If + the child refuses to claim with shorter lifetime, then Claim Lifetime + Too Long should be sent. + + If a node (usually a parent receiving a claim from a child) decides + that the Claim Timestamp is too small, i.e. too old (for example, if + a node is self-confident that its clock is quite accurate), then it + MUST send an UPDATE Message Error with subcode Claim Timestamp Too + Old. Claim Timestamp Too New is defined similarly. + + If a node (usually a parent receiving a claim from a child) decides + that the prefix size implied by the Mask field is too small (for + example, smaller than 16 addresses), then it MAY send an UPDATE + Message Error with subcode Claim Prefix Size Too Small. + + If a node (usually a parent receiving a claim from a child) decides + that the prefix size implied by the Mask field is too large, then it + MAY send an UPDATE Message Error with subcode Claim Prefix Size Too + Large. Note that usually a parent MASC node should send first + CLAIM_DENIED collision messages for some subrange of the child's + large claimed address range. If the child refuses to shrink the + claim size, then Claim Prefix Size Too Large should be sent. + + + + +Radoslavov, et al. Experimental [Page 27] + +RFC 2909 The MASC Protocol September 2000 + + + If the received UPDATE message's computed Updated Origin Role is + illegal (see Table 1 in Section 11.1), then the Error Subcode is set + to Illegal Origin Role Error. + + If the received UPDATE message needs to be associated with a parent's + prefix, but the association is not successful, then the Error Subcode + is set to No Appropriate Parent Prefix. The No Appropriate Child + Prefix, No Appropriate Internal Prefix, and No Appropriate Sibling + Prefix Error Subcodes are defined similarly. + + If a node decides that the Claim Holdtime is too short (for example, + just few seconds), it MAY send an UPDATE Message Error with subcode + Claim Holdtime Too Short. + + If a node decides that the Claim Holdtime is too long (for example, + more than 15,768,000, i.e. half year), then it SHOULD send an UPDATE + Message Error with subcode Claim Holdtime Too Long. + + If any other error is encountered when processing attributes, then + the Error Subcode is set to Malformed Attribute List, and the erratic + attribute is included in the data field. + +8.4. Hold Timer Expired Error Handling + + If a system does not receive successive KEEPALIVE and/or UPDATE + and/or NOTIFICATION messages within the period specified in the Hold + Time field of the OPEN message, then the NOTIFICATION message with + Hold Timer Expired Error Code must be sent and the MASC connection + closed. + +8.5. Finite State Machine Error Handling + + Any error detected by the MASC Finite State Machine (e.g., receipt of + an unexpected event) is indicated by sending the NOTIFICATION message + with Error Code Finite State Machine Error. The Error Subcode + elaborates on the specific nature of the error. + +8.6. NOTIFICATION Message Error Handling + + If a node sends a NOTIFICATION message, and there is an error in that + message, and the O-bit of that message is not zero, a NOTIFICATION + with O-bit zeroed, Error Code of NOTIFICATION Error, and subcode + Unspecific must be sent. In addition, the Data field must include + the erratic NOTIFICATION message. However, if the erratic + NOTIFICATION message had the O-bit zeroed, then any error, such as an + unrecognized Error Code or Error Subcode, should be noticed, logged + + + + + +Radoslavov, et al. Experimental [Page 28] + +RFC 2909 The MASC Protocol September 2000 + + + locally, and brought to the attention of the administrator of the + remote node. The means to do this, however, lies outside the scope + of this document. + +8.7. Cease + + In absence of any fatal errors (that are indicated in this section), + a MASC node may choose at any given time to close its MASC connection + by sending the NOTIFICATION message with Error Code Cease. However, + the Cease NOTIFICATION message must not be used when a fatal error + indicated by this section does exist. + +8.8. Connection Collision Detection + + If a pair of MASC speakers try simultaneously to establish a TCP + connection to each other, then two parallel connections between this + pair of speakers might well be formed. We refer to this situation as + connection collision. Clearly, one of these connections must be + closed. Note that if the nodes were siblings, and each of those + connections was associated with a different parent, then we do not + consider this situation as collision (see Section 4.4). + + Based on the value of the MASC Node Identifier a convention is + established for detecting which MASC connection is to be preserved + when a connection collision does occur. The convention is to compare + the MASC Node Identifiers of the remote nodes involved in the + collision and to retain only the connection initiated by the MASC + speaker with the higher-valued MASC Node Identifier. + + Upon receipt of an OPEN message, the local system must examine all of + its connections that are in the OpenConfirm state. A MASC speaker + may also examine connections in an OpenSent state if it knows the + MASC Node Identifier of the remote node by means outside of the + protocol. If among these connections there is a connection to a + remote MASC speaker whose MASC Node Identifier equals the one in the + OPEN message, and, in case of a sibling-to-sibling connection, the + Parent Domain ID of that connection equals the one in the OPEN + message, then the local system performs the following connection + collision resolution procedure: + + 1. The MASC Node Identifier of the local system is compared to the + MASC Node Identifier of the remote system (as specified in the + OPEN message). Comparing MASC Node Identifiers is done by + treating them as unsigned integers (e.g. 4-octets long for IPv4 + and 16-octets long for IPv6). + + + + + + +Radoslavov, et al. Experimental [Page 29] + +RFC 2909 The MASC Protocol September 2000 + + + 2. If the value of the local MASC Node Identifier is less than the + remote one, the local system closes MASC connection that already + exists (the one that is already in the OpenConfirm state), and + accepts the MASC connection initiated by the remote system. + + 3. Otherwise, the local system closes the newly created MASC + connection (the one associated with the newly received OPEN + message), and continues to use the existing one (the one that is + already in the OpenConfirm state). + + A connection collision with an existing MASC connection that is in + the Established state causes unconditional closing of the newly + created connection. Note that a connection collision cannot be + detected with connections that are in Idle, or Connect, or Active + states (see Section 10). + + Closing the MASC connection (that results from the collision + resolution procedure) is accomplished by sending the NOTIFICATION + message with the Error Code Cease. + +9. MASC Version Negotiation + + MASC speakers may negotiate the version of the protocol by making + multiple attempts to open a MASC connection, starting with the + highest version number each supports. If an open attempt fails with + an Error Code OPEN Message Error, and an Error Subcode Unsupported + Version Number, then the MASC speaker has available the version + number it tried, the version number the remote node tried, the + version number passed by the remote node in the NOTIFICATION message, + and the version numbers that it supports. If the two MASC speakers + do support one or more common versions, then this will allow them to + rapidly determine the highest common version. In order to support + MASC version negotiation, future versions of MASC must retain the + format of the OPEN and NOTIFICATION messages. + +10. MASC Finite State Machine + + This section specifies MASC operation in terms of a Finite State + Machine (FSM). The FSM and the operations are peer peering session. + Following is a brief summary and overview of MASC operations by state + as determined by this FSM. + + Initially the peering session is in the Idle state. + + + + + + + + +Radoslavov, et al. Experimental [Page 30] + +RFC 2909 The MASC Protocol September 2000 + + +10.1. Open/Close MASC Connection FSM + + Idle state: + + In this state MASC refuses all incoming MASC connections from the + peer. No resources are allocated to the remote node. In response + to the Start event (initiated by either system or operator) the + local system initializes all MASC resources, starts the + ConnectRetry timer, initiates a transport connection to the remote + node, while listening for a connection that may be initiated by + the remote MASC node, and changes its state to Connect. The exact + value of the ConnectRetry timer is a local matter, but should be + sufficiently large to allow TCP initialization. + + If a MASC speaker detects an error, it shuts down the connection + and changes its state to Idle. Getting out of the Idle state + requires generation of the Start event. If such an event is + generated automatically, then persistent MASC errors may result in + persistent flapping of the speaker. To avoid such a condition it + is recommended that Start events should not be generated + immediately for a node that was previously transitioned to Idle + due to an error. For a node that was previously transitioned to + Idle due to an error, the time between consecutive generation of + Start events, if such events are generated automatically, shall + exponentially increase. The value of the initial timer shall be 60 + seconds. The time shall be doubled for each consecutive retry, but + shall not be longer than 24 hours. + + Any other event received in the Idle state is ignored. + + Connect state: + + In this state MASC is waiting for the transport protocol + connection to be completed. + + If the transport protocol connection succeeds, the local system + clears the ConnectRetry timer, completes initialization, sends an + OPEN message to the remote node, and changes its state to + OpenSent. If the transport protocol connect fails (e.g., + retransmission timeout), the local system restarts the + ConnectRetry timer, continues to listen for a connection that may + be initiated by the remote MASC node, and changes its state to + Active state. + + + + + + + + +Radoslavov, et al. Experimental [Page 31] + +RFC 2909 The MASC Protocol September 2000 + + + In response to the ConnectRetry timer expired event, the local + system restarts the ConnectRetry timer, initiates a transport + connection to the other MASC node, continues to listen for a + connection that may be initiated by the remote MASC node, and + stays in the Connect state. + + The Start event is ignored in the Connect state. + + In response to any other event (initiated by either system or + operator), the local system releases all MASC resources associated + with this connection and changes its state to Idle. + + Active state: + + In this state MASC is trying to acquire a remote node by listening + for a transport protocol connection initiated by the remote node. + + If the transport protocol connection succeeds, the local system + clears the ConnectRetry timer, completes initialization, sends an + OPEN message to the remote node, sets its Hold Timer to a large + value, and changes its state to OpenSent. A Hold Timer value of + [HOLDTIME] seconds is suggested. + + In response to the ConnectRetry timer expired event, the local + system restarts the ConnectRetry timer, initiates a transport + connection to other MASC node, continues to listen for a + connection that may be initiated by the remote MASC node, and + changes its state to Connect. + + If the local system detects that a remote node is trying to + establish a MASC connection to it, and the IP address of the + remote node is not an expected one, the local system restarts the + ConnectRetry timer, rejects the attempted connection, continues to + listen for a connection that may be initiated by the remote MASC + node, and stays in the Active state. + + The Start event is ignored in the Active state. + + In response to any other event (initiated by either system or + operator), the local system releases all MASC resources associated + with this connection and changes its state to Idle. + + OpenSent state: + + In this state MASC waits for an OPEN message from the remote node. + When an OPEN message is received, all fields are checked for + correctness. If the MASC message header checking or OPEN message + checking detects an error (see Section 8.2), or a connection + + + +Radoslavov, et al. Experimental [Page 32] + +RFC 2909 The MASC Protocol September 2000 + + + collision (see Section 8.8) the local system sends a NOTIFICATION + message and, if the connection is to be closed, it changes its + state to Idle. + + If the locally configured role is SIBLING and there is no parent + domain with Domain ID equal to the Parent Domain ID in the OPEN + message, the local system sends a NOTIFICATION Open Message Error + with Error Subcode set to No Common Parent, the connection must be + closed, and the state of the local system must be changed to Idle. + + If there are no errors in the OPEN message, MASC sends a KEEPALIVE + message and sets a KeepAlive timer. The Hold Timer, which was + originally set to a large value (see above), is replaced with the + negotiated Hold Time value (see Section 7.2). If the negotiated + Hold Time value is zero, then the Hold Time timer and KeepAlive + timers are not started. If the value of the MASC Domain ID field + is the same as the local MASC Domain ID, and if the Role field of + the OPEN message is set to INTERNAL_PEER, then the connection is + an "internal" connection; otherwise, it is "external". Finally, + the state is changed to OpenConfirm. + + If a disconnect notification is received from the underlying + transport protocol, the local system closes the MASC connection, + restarts the ConnectRetry timer, while continue listening for + connection that may be initiated by the remote MASC node, and goes + into the Active state. + + If the Hold Timer expires, the local system sends a NOTIFICATION + message with error code Hold Timer Expired and changes its state + to Idle. + + In response to the Stop event (initiated by either system or + operator) the local system sends a NOTIFICATION message with Error + Code Cease and changes its state to Idle. + + The Start event is ignored in the OpenSent state. + + In response to any other event the local system sends a + NOTIFICATION message with Error Code Finite State Machine Error + and Error Subcode Open/Close MASC Connection FSM Error, and + changes its state to Idle. + + Whenever MASC changes its state from OpenSent to Idle, it closes + the MASC (and transport-level) connection and releases all + resources associated with that connection. + + + + + + +Radoslavov, et al. Experimental [Page 33] + +RFC 2909 The MASC Protocol September 2000 + + + OpenConfirm state: + + In this state MASC waits for a KEEPALIVE or NOTIFICATION message. + + If the local system receives a KEEPALIVE message, it changes its + state to Established. + + If the Hold Timer expires before a KEEPALIVE message is received, + the local system sends a NOTIFICATION message with error code Hold + Timer Expired and changes its state to Idle. + + If the local system receives a NOTIFICATION message with the O-bit + zeroed, it changes its state to Idle. + + If the KeepAlive timer expires, the local system sends a KEEPALIVE + message and restarts its KeepAlive timer. + + If a disconnect notification is received from the underlying + transport protocol, the local system changes its state to Idle. + + In response to the Stop event (initiated by either system or + operator) the local system sends a NOTIFICATION message with Error + Code Cease and changes its state to Idle. + + The Start event is ignored in the OpenConfirm state. + + In response to any other event the local system sends a + NOTIFICATION message with Error Code Finite State Machine Error + and Error Subcode Unspecific, and changes its state to Idle. + + Whenever MASC changes its state from OpenConfirm to Idle, it + closes the MASC (and transport-level) connection and releases all + resources associated with that connection. + + Established state: + + In the Established state MASC can exchange UPDATE, NOTIFICATION, + and KEEPALIVE messages with the remote node. + + If the local system receives an UPDATE, or KEEPALIVE message, or + NOTIFICATION message with O-bit set, it restarts its Hold Timer, + if the negotiated Hold Time value is non-zero. + + If the local system receives a NOTIFICATION message, with the O- + bit zeroed, it changes its state to Idle. + + + + + + +Radoslavov, et al. Experimental [Page 34] + +RFC 2909 The MASC Protocol September 2000 + + + If the local system receives an UPDATE message and the UPDATE + message error handling procedure (see Section 8.3) detects an + error, the local system sends a NOTIFICATION message and, if the + O-bit was zeroed, changes its state to Idle. + + If a disconnect notification is received from the underlying + transport protocol, the local system changes its state to Idle. + + If the Hold Timer expires, the local system sends a NOTIFICATION + message with Error Code Hold Timer Expired and changes its state + to Idle. + + If the KeepAlive timer expires, the local system sends a KEEPALIVE + message and restarts its KeepAlive timer. + + Each time the local system sends a KEEPALIVE or UPDATE message, it + restarts its KeepAlive timer, unless the negotiated Hold Time + value is zero. + + In response to the Stop event (initiated by either system or + operator), the local system sends a NOTIFICATION message with + Error Code Cease and changes its state to Idle. + + The Start event is ignored in the Established state. + + After entering the Established state, if the local system has + UPDATE messages that are to be sent to the remote node, they must + be sent immediately (see Section 11.8). + + In response to any other event, the local system sends a + NOTIFICATION message with Error Code Finite State Machine Error + with the O-bit zeroed and Error Subcode Unspecific, and changes + its state to Idle. + + Whenever MASC changes its state from Established to Idle, it + closes the MASC (and transport-level) connection, releases all + resources associated with that connection, and deletes all state + derived from that connection. + +11. UPDATE Message Processing + + The UPDATE message are accepted only when the system is in the + Established state. + + In the text below, a MASC domain is considered a child of itself with + regard to the claims that are related to the address space with local + usage purpose (i.e. to be used by the MAASs within that domain). For + + + + +Radoslavov, et al. Experimental [Page 35] + +RFC 2909 The MASC Protocol September 2000 + + + example, a NEW_CLAIM initiated by a MASC node to obtain more space + for local usage from a prefix managed by that domain will have field + Role = CHILD. + + If an UPDATE is to be propagated further, it should not be sent back + to the node that UPDATE was received from, unless there is an + indication that the connection to that node was down and then + restored. + + If the local system receives an UPDATE message, and there is no + indication for error, it checks whether to accept or reject the + message, and if it is not rejected, the UPDATE is processed based on + its type. + + If an UPDATE message must be associated with a parent domain, then + there must be a PREFIX_MANAGED by some parent domain for a prefix + that covers the prefix of the particular UPDATE. + +11.1. Accept/Reject an UPDATE + + The Origin Role field is first compared against the local system's + configured Role, according to Table 1, to determine the relationship + of the origin to the local system, where Locally-Configured Role is + the local configuration with regard to the peer-forwarder of the + message. A result of "---" means that receiving such an UPDATE is + illegal and should generate a NOTIFICATION. Any other result is the + value to use as the "Updated" Origin Role when propagating the UPDATE + to others. This is analogous to updating a metric upon receiving a + route, based on the metric of the link. + + Locally-Configured Role + Origin + Role || INTERNAL_PEER | CHILD | SIBLING | PARENT + =========++===============+=========+=========+========= + INTERNAL || INTERNAL_PEER | PARENT | SIBLING | CHILD + CHILD || CHILD | SIBLING | --- | --- + SIBLING || SIBLING | --- | SIBLING | CHILD + PARENT || PARENT | --- | PARENT | --- + + Table 1: Updated Origin Role Computation + + After the Origin Role is updated, the following additional processing + needs to be applied: + + o If the output from the Updated Origin Role Computation is SIBLING, + but the Origin Domain ID is the same as the local MASC domain, the + Updated Origin Role is changed to INTERNAL. This is necessary in + case a MASC node receives from a parent or sibling its own UPDATEs + + + +Radoslavov, et al. Experimental [Page 36] + +RFC 2909 The MASC Protocol September 2000 + + + after reboot, or if because of internal partitioning, the + INTERNAL_PEERs are exchanging UPDATEs via other MASC domains + (either parent or sibling(s)). + + o If both Locally-Configured Role, and Origin Role are equal to + PARENT, and the Origin Domain ID is the same as the local MASC + domain, the Updated Origin Role is changed to INTERNAL. This is + necessary to allow a parent to receive its own UPDATEs through its + own children, although the parent might drop those UPDATEs if it + has a reason not to believe its children. + + o If both Locally-Configured Role, and Origin Role are equal to + PARENT, and the Origin Domain ID is the same as the remote MASC + domain, and the UPDATE type is CLAIM_DENIED, the Updated Origin + Role is changed to INTERNAL. This is necessary to allow a parent + to receive the CLAIM_DENIED it has originated through the child + whose claim was denied. If the Origin Domain ID is not same as + the remote MASC domain, but is same as some of the other MASC + children domains, the Updated Origin Role still should be changed + to INTERNAL, although the parent might drop this UPDATE if it has + a reason not to believe a third party child. + + If the Updated Origin Role is INTERNAL, but the Origin Domain ID + differs from the local Domain ID, a NOTIFICATION of <UPDATE Message + Error, Illegal Origin Role> must be sent back, and the claim is + rejected. + + If Claim Timestamp and Claim Holdtime indicate that the claim has + expired (e.g. Timestamp + Claim Holdtime <= CurrentTime), the UPDATE + is silently dropped and no further actions are taken. + + Each new arrival UPDATE is compared with all claims in the local + cache. The following fields are compared, and if all of them are the + same, the message is silently rejected and no further actions are + taken: + + o Role, D-bit, Type + + o AddrFam + + o Claim Timestamp + + o Claim Lifetime + + o Claim Holdtime + + o Origin Domain Identifier + + + + +Radoslavov, et al. Experimental [Page 37] + +RFC 2909 The MASC Protocol September 2000 + + + o Origin Node Identifier + + o Address + + o Mask + + Further processing of an UPDATE is based on its type and the Updated + Origin Role. + +11.2. PREFIX_IN_USE Message Processing + +11.2.1. PREFIX_IN_USE by PARENT + + The claim is rejected, and a NOTIFICATION of <UPDATE Message Error, + Illegal Origin Role> should be sent back. + +11.2.2. PREFIX_IN_USE by SIBLING + + If the claim cannot be associated with any parent's PREFIX_MANAGED, + the claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Parent Prefix> must be sent back and no further actions + should be taken. + + If the claim collides with some of the local domain's pending claims, + the local claims must not be considered further, and the Claim-Timer + of each of them must be canceled. If the received PREFIX_IN_USE claim + clashes with and wins over some of the local domain's allocated + prefixes, resolve the clash according to Section 12.4. Finally, the + claim must be propagated further to all INTERNAL_PEERs, all MASC + nodes from the corresponding parent MASC domain and all known + siblings with the same parent domain. + +11.2.3. PREFIX_IN_USE by CHILD + + If the claim's prefix is not a subrange of any of the local domain's + PREFIX_MANAGED, the claim is dropped, a NOTIFICATION of <UPDATE + Message Error, No Appropriate Parent Prefix> must be sent back and no + further actions should be taken. Otherwise, the claim must be + propagated further to all INTERNAL_PEERs and all MASC children + domains. + +11.2.4. PREFIX_IN_USE by INTERNAL_PEER + + If the MASC node decides that the local domain does not need that + prefix any more, it may be withdrawn, otherwise, the claim is + processed as PREFIX_MANAGED. + + + + + +Radoslavov, et al. Experimental [Page 38] + +RFC 2909 The MASC Protocol September 2000 + + +11.3. CLAIM_DENIED Message Processing + +11.3.1. CLAIM_DENIED by CHILD or SIBLING + + The message is rejected, and a NOTIFICATION of <UPDATE Message Error, + Illegal Origin Role> should be sent back. + +11.3.2. CLAIM_DENIED by INTERNAL_PEER + + Propagate to all INTERNAL_PEERs and all MASC children nodes. + +11.3.3. CLAIM_DENIED by PARENT + + If the Origin Domain ID is not same as the local domain ID, and the + UPDATE cannot be associated with any parent domain, the message is + dropped, a NOTIFICATION of <UPDATE Message Error, No Appropriate + Parent Prefix> must be sent back and no further actions should be + taken. + + If the Origin Domain ID is not same as the local domain ID, and the + UPDATE can be associated with a parent domain, the message is + propagated to all nodes from that parent domain, all INTERNAL_PEERs, + and all known SIBLINGs with regard to that parent. + + If the Origin Domain ID is same as the local domain ID, and there is + no corresponding pending claim originated by the local MASC domain + (i.e. a NEW_CLAIM or CLAIM_TO_EXPAND with same AddrFam, Origin Domain + ID, Claim Timestamp, Address and Mask), a NOTIFICATION of <UPDATE + Message Error, No Appropriate Internal Prefix> must be sent back and + no further actions should be taken. Otherwise, the matching NEW_CLAIM + or CLAIM_TO_EXPAND's Claim-Timer must be canceled and the claim must + not be considered further. Finally, the received CLAIM_DENIED must be + propagated to all INTERNAL_PEERs, all MASC nodes from the + corresponding parent MASC domain, and all known SIBLINGs with regard + to that parent. + +11.4. CLAIM_TO_EXPAND Message Processing + +11.4.1. CLAIM_TO_EXPAND by PARENT + + The claim is rejected, and a NOTIFICATION of <UPDATE Message Error, + Illegal Origin Role> should be sent back. + + + + + + + + + +Radoslavov, et al. Experimental [Page 39] + +RFC 2909 The MASC Protocol September 2000 + + +11.4.2. CLAIM_TO_EXPAND by SIBLING + + If the claim cannot be associated with any parent's PREFIX_MANAGED, + the claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Parent Prefix> must be sent back and no further actions + should be taken. + + If there is no overlapping PREFIX_IN_USE by the same MASC domain, the + claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Sibling Prefix> must be sent back and no further actions + should be taken. + + If the claim collides with and wins over some of the local domain's + pending claims, the loser claims must not be considered further, and + the Claim-Timer of the each of them must be canceled. Also, the + received claim must be propagated further to all INTERNAL_PEERs, all + MASC nodes from the corresponding parent MASC domain and all known + siblings with the same parent domain. + +11.4.3. CLAIM_TO_EXPAND by CHILD + + If the claim cannot be associated with any of the local domain's + PREFIX_MANAGED, the claim is dropped, a NOTIFICATION of <UPDATE + Message Error, No Appropriate Parent Prefix> must be sent back and no + further actions should be taken. + + If there is no overlapping PREFIX_IN_USE by the same MASC domain, the + claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Child Prefix> must be sent back and no further actions + should be taken. + + Otherwise, the claim has to be propagated to all INTERNAL_PEERs. If + the lifetime of the claim is longer than the lifetime of the + corresponding prefix managed by the local domain, or if there is an + administratively configured reason to prevent the child from + succeeding allocating the claimed prefix, a CLAIM_DENIED must be sent + to all MASC children nodes that have same Domain ID as Origin Domain + ID in the received message. The CLAIM_DENIED must be the same as the + received claim, except Rol=INTERNAL, and Claim Lifetime should be set + to the maximum allowed lifetime. Otherwise, propagate the claim to + all children as well. + +11.4.4. CLAIM_TO_EXPAND by INTERNAL_PEER + + If the claim cannot be associated with any parent's PREFIX_MANAGED, + the claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Parent Prefix> must be sent back and no further action + should be taken. + + + +Radoslavov, et al. Experimental [Page 40] + +RFC 2909 The MASC Protocol September 2000 + + + If there is no overlapping PREFIX_IN_USE by the local MASC domain, + the claim is dropped, a NOTIFICATION of <UPDATE Message Error, No + Appropriate Internal Prefix> must be sent back and no further actions + should be taken. + + If the MASC node decides that the local domain does not need that + pending claim any more, it MAY be withdrawn. Otherwise, the claim + must be propagated to all INTERNAL_PEERs and all MASC nodes from the + corresponding parent MASC domain. + +11.5. NEW_CLAIM Message Processing + + If the claim's Address field is 0 (i.e. a hint by a child to a parent + to obtain more space), the claim should be propagated only among the + nodes that belong to the child Origin Domain and the parent domain. + + Otherwise, process like CLAIM_TO_EXPAND, except that no check for + overlapping PREFIX_IN_USE needs to be performed. + +11.6. PREFIX_MANAGED Message Processing. + +11.6.1. PREFIX_MANAGED by PARENT + + If the Origin Domain ID matches one of the parents' domain ID's, the + prefix is recorded, and can be used by the address allocation + algorithm for allocating subranges. Also, the message is propagated + to all MASC nodes of the corresponding parent domain, all + INTERNAL_PEERs, and SIBLINGs with same parent. + +11.6.2. PREFIX_MANAGED by CHILD or SIBLING + + The message is rejected, and a NOTIFICATION of <UPDATE Message Error, + Illegal Origin Role> should be sent back. + +11.6.3. PREFIX_MANAGED by INTERNAL_PEER + + The prefix is recorded as allocated to the local domain, propagated + to all INTERNAL_PEERs, and can be used for (all items apply): + + a) address ranges/prefixes advertisements to all MASC children and + local domain's MAASs; + + b) injection into G-RIB; + + c) further expansion by the address allocation algorithm (see + Appendix A); + + + + + +Radoslavov, et al. Experimental [Page 41] + +RFC 2909 The MASC Protocol September 2000 + + +11.7. WITHDRAW Message Processing + +11.7.1. WITHDRAW by CHILD + + If the WITHDRAW cannot be associated with any of the child domain's + PREFIX_IN_USE (i.e. no child's PREFIX_IN_USE covers WITHDRAW's + range), or if the WITHDRAW does not match any of the child domain's + NEW_CLAIM or CLAIM_TO_EXPAND (i.e. there is no child's claim with + same Address, Mask and Timestamp), the message is dropped, a + NOTIFICATION of <UPDATE Message Error, No Appropriate Child Prefix> + must be sent back and no further actions should be taken. Otherwise, + propagate to all INTERNAL_PEERs and children. + +11.7.2. WITHDRAW by SIBLING + + If the WITHDRAW cannot be associated with any of the siblings' + PREFIX_IN_USE (i.e. no sibling's PREFIX_IN_USE covers WITHDRAW's + range), or if the WITHDRAW does not match any of the sibling domain's + NEW_CLAIM or CLAIM_TO_EXPAND (i.e. there is no sibling's claim with + same Address, Mask and Timestamp), the message is dropped, a + NOTIFICATION of <UPDATE Message Error, No Appropriate Sibling Prefix> + must be sent back and no further actions should be taken. Otherwise, + propagate to all INTERNAL_PEERs, all MASC nodes from the same parent + MASC domain and all known siblings with the same parent domain. + +11.7.3. WITHDRAW by INTERNAL + + If the WITHDRAW cannot be associated with any of the local domain's + PREFIX_IN_USE or PREFIX_MANAGED (i.e. no local domain's prefix covers + WITHDRAW's range), or if the WITHDRAW does not match any of the local + domain's NEW_CLAIM or CLAIM_TO_EXPAND (i.e. there is no local + domain's claim with same Address, Mask and Timestamp) the message is + dropped, a NOTIFICATION of <UPDATE Message Error, No Appropriate + Internal Prefix> must be sent back and no further actions should be + taken. + + Otherwise, propagate to all INTERNAL_PEERs, all MASC nodes of the + corresponding parent domain of that prefix, all known siblings with + that parent domain, and all children. If the WITHDRAW can be + associated with some of local domain's PREFIX_IN_USE or + PREFIX_MANAGED, stop advertising the WITHDRAW range to the MAASs and + withdraw that range from the G-RIB database. In the special case + when there is an indication that the WITHDRAW has been originated by + the local domain because of a clash, and the range specified in + WITHDRAW is a subrange of the local PREFIX_MANAGED, and the Claim + Holdtime of WITHDRAW is shorter than the Claim Holdtime of + + + + + +Radoslavov, et al. Experimental [Page 42] + +RFC 2909 The MASC Protocol September 2000 + + + PREFIX_MANAGED, the WITHDRAW's range should not be withdrawn from the + G-RIB. If the WITHDRAW matches a local domain's NEW_CLAIM or + CLAIM_TO_EXPAND, cancel the matching claim's Claim-Timer. + +11.7.4. WITHDRAW by PARENT + + If the WITHDRAW cannot be associated with any parent domain, a + NOTIFICATION of <UPDATE Message Error, No Appropriate Parent Prefix> + must be sent back and no further actions should be taken. + + Otherwise, propagate to all INTERNAL_PEERs and all known siblings + with the same parent domain. Also, originate a WITHDRAW message for + each intersection of a locally owned PREFIX_MANAGED/PREFIX_IN_USE and + the received WITHDRAW. The locally originated WITHDRAW message's + Claim Holdtime should be at least equal to the Claim Holdtime in the + WITHDRAW message received from the parent; the Origin Node ID should + be the same as the particular PREFIX_MANAGED/PREFIX_IN_USE. + +11.8. UPDATE Message Ordering + + To simplify consistency and sanity check implementations, if there is + more than one UPDATE message that needs to be send to a peer (for + example, after a connection (re)establishment), some of the UPDATEs + must be sent before others. + + The rules that always apply are: + + o PREFIX_IN_USE must always be sent BEFORE CLAIM_TO_EXPAND, + NEW_CLAIM, and WITHDRAW by the same MASC domain + + o WITHDRAW must always be sent AFTER PREFIX_IN_USE, CLAIM_TO_EXPAND, + NEW_CLAIM, and PREFIX_MANAGED by the same MASC domain + + Any further ordering is defined below by the roles of the sender and + the receiver. + +11.8.1. Parent to Child + + Messages are sent in the following order: + + 1) Parent's PREFIX_MANAGED and WITHDRAWs. + + 2) All children's PREFIX_IN_USE, CLAIM_TO_EXPAND, and NEW_CLAIMs. + CLAIMs from third party children that are hints for more space + (i.e. address = 0) should not be propagated; if propagated, the + child should drop them. + + + + + +Radoslavov, et al. Experimental [Page 43] + +RFC 2909 The MASC Protocol September 2000 + + + 3) Parent initiated CLAIM_DENIED and children initiated WITHDRAWs. + CLAIM_DENIED regarding third party children's claims/hints with + address = 0 should not be propagated; if propagated, the child + should drop them. + +11.8.2. Child to Parent + + Messages are sent in the following order: + + 1) Parent's PREFIX_MANAGED and WITHDRAWs. + + 2) All PREFIX_IN_USE, CLAIM_TO_EXPAND, and NEW_CLAIMSs from that + parent's space, initiated by that child and all its siblings. + + 3) Parent's initiated CLAIM_DENIED, and all WITHDRAWSs that can be + associated with that parent's space and are initiated by the local + domain or all known siblings with that parent. + +11.8.3. Sibling to Sibling + + Messages are sent in the following order: + + 1) All common parent's PREFIX_MANAGED and WITHDRAWs. + + 2) PREFIX_IN_USE, CLAIM_TO_EXPAND, and NEW_CLAIMs, initiated by + siblings. + + 3) CLAIM_DENIEDs initiated by common parent, and WITHDRAWs initiated + by local domain and all known siblings with that parent. + +11.8.4. Internal to Internal + + Messages are sent in the following order: + + 1) All parents' PREFIX_MANAGED and WITHDRAWs. + + 2) Local domain's and all siblings' PREFIX_IN_USE, CLAIM_TO_EXPAND, + and NEW_CLAIMs. CLAIMs from siblings that are hints for more + space (i.e. address = 0) should not be propagated; if propagated, + the recipient should drop them. + + 3) CLAIM_DENIEDs initiated by all parents, and WITHDRAWs initiated by + local domain and all known siblings. + + 4) All children's PREFIX_IN_USE, CLAIM_TO_EXPAND, and NEW_CLAIMs. + + 5) All local domain initiated CLAIM_DENIED regarding children claims + and all children initiated WITHDRAWs. + + + +Radoslavov, et al. Experimental [Page 44] + +RFC 2909 The MASC Protocol September 2000 + + +12. Operational Considerations + +12.1. Bootup Operations + + To learn about its parent domains' IDs and prefixes, a MASC node + SHOULD try to establish connections to its PARENT nodes before + initiating a connection to a SIBLING node. To avoid learning about + its own PREFIX_MANAGED from its children or siblings, a MASC node + SHOULD try to establish connections to its PARENT nodes and + INTERNAL_PEER nodes before initiating a connection to a CHILD or + SIBLING node. + +12.2. Leaf and Non-leaf MASC Domain Operation + + A non-leaf MASC domain (i.e. a domain that has children domains) + should advertise its PREFIX_MANAGED addresses to its children, and + should claim from that space the sub-ranges that would be advertised + to the internal MAASs (the claim wait time SHOULD be equal to + [WAITING_PERIOD]). A MASC node that belongs to a non-leaf MASC + domain should perform dual functions by being a child of itself with + regard to the claiming and management of the sub-ranges for local + usage. A leaf MASC domain should advertise all PREFIX_MANAGED + addresses to its MAASs without explicitly claiming them for internal + usage. A MASC node can assume that it belongs to a leaf domain if it + simply does not have any UPDATEs by children domains. If an UPDATE + by a child is received, the domain MUST switch from "leaf" to "non- + leaf" mode, and if it needs more addresses for internal usage, it + MUST claim them from that domain's PREFIX_MANAGED. After the last + UPDATE originated by a child expires, the domain can switch back to + "leaf" mode. + +12.3. Clock Skew Workaround + + Each UPDATE has "Claim Timestamp" field that is set to the absolute + time of the MASC node that originated that UPDATE. The timestamp is + used for two purposes: to resolve collisions, and to define how long + an UPDATE should be kept in the local cache of other MASC nodes. A + skew in the clock could result in unfair collision decision such that + the claims originated by nodes that have their clock behind the real + time will always win; however, because collisions are presumably + rare, this will not be an issue. Skew in the clock however might + result in expiring an UPDATE earlier than it really should be + expired, and a node might assume too early that the expired + UPDATE/prefix is free for allocation. To compensate for the clock + skew, an UPDATE message should be kept longer than the amount of time + specified in the Claim Holdtime. For example, keeping UPDATEs for an + additional 24 hours will compensate for clock skew for up to 24 + hours. + + + +Radoslavov, et al. Experimental [Page 45] + +RFC 2909 The MASC Protocol September 2000 + + +12.4. Clash Resolving Mechanism + + If a MASC node receives a PREFIX_IN_USE claim originated by a sibling + and the claim overlaps with some of the local prefixes, the clash + must be resolved. Two MASC domains should not manage overlapping + address ranges, unless the domains have an ancestor-descendant (e.g. + parent-child) relationship in the MASC hierarchy. Also, two MASC + domains should not have locally-allocated overlapping address ranges. + The clashed address ranges should not be advertised to the MAASs and + allocated to multicast applications/sessions. If a clashed address + has being allocated to an application, the application should be + informed to stop using that address and switch to a new one. + + The G-RIB database must be consistent, such that it does not have + ambiguous entries. "Ambiguous G-RIB entries" are those entries that + might cause the multicast routing protocol to loop or lose + connectivity. In MASC the WITHDRAW message is used to solve this + problem. When a clashing PREFIX_IN_USE is received, it is compared + (using the function describe in Section 5.1.1) against all prefixes + allocated to the local domain. If the local PREFIX_IN_USE is the + winner, no further actions are taken. If the local PREFIX_IN_USE is + the loser, the clashing address range must be withdrawn by initiating + a WITHDRAW message. The message must have Role = INTERNAL, Origin + Node ID and Origin Domain ID must be the same as the corresponding + local PREFIX_IN_USE message, while Claim Timestamp, Claim Lifetime, + Claim Holdtime, Address and Mask must be the same as the received + winning PREFIX_IN_USE. The initiated WITHDRAW message must be + processed as described in Section 11.7. + + If a cached WITHDRAW times out and the local MASC domain owns an + overlapping PREFIX_MANAGED or PREFIX_IN_USE, the overlapping prefix + ranges can be injected back into the G-RIB database. Similarly, the + address ranges that were not advertised to the local domain's MAASs + due to the WITHDRAW, can now be advertised again. + + In addition to the automatic resolving of clashes, a MASC + implementation should support manual resolving of clashes. For + example, after a clash is detected, the network administrator should + be informed that a clash has occurred. The specific manual + mechanisms are outside the scope of this protocol. + + A MASC node must be configured to operate using either manual or + automatic clash resolution mechanisms. + + + + + + + + +Radoslavov, et al. Experimental [Page 46] + +RFC 2909 The MASC Protocol September 2000 + + +12.5. Changing Network Providers + + If a MASC domain changes a network provider, such that the old + provider cannot be used to provide connectivity, any traffic for + sessions that are in progress and use that MASC domain as the root of + multicast distribution trees will not be able to reach that domain. + + If the new network provider is willing to carry the traffic for the + old sessions rooted at the customer domain, then it must propagate + the customer's old prefixes through the G-RIB. However, at least one + MASC node in the customer domain must maintain a TCP connection to + one of the old network provider's MASC nodes. Thus, it can continue + to "defend" the customer's prefixes, and should continue until the + old prefixes' lifetimes expire. + + If the new network provider is not willing to propagate the old + prefixes, then the customer should remove its prefixes from the G- + RIB. If BGMP is in use, the old network provider's domain will + automatically become the Root Domain for the customer's old groups + due to the lack of a more specific group route. MASC nodes in the + customer domain MAY still connect with the old provider's MASC nodes + to defend their allocation. + +12.6. Debugging + +12.6.1. Prefix-to-Domain Lookup + + Use mtrace [MTRACE] to find the BGMP/MASC root domain for a group + address chosen from that prefix. + +12.6.2. Domain-to-Prefix Lookup + + We can find the address space allocated to a particular MASC domain + by directly querying one of the MASC servers within that domain, by + observing the state in parents, siblings, or children MASC domains, + or by observing the G-RIB information originated by that domain. + From those three methods, the first method can provide the most + detailed information. Finding the address of one of the MASC nodes + within a particular domain is outside the scope of MASC. + +13. MASC Storage + + In general, MASC will be run by a border routers, which, in general + do not have stable storage. In this case, MASC must use the Layer 2 + protocol/mechanism (e.g., ([AAP]) as described in [MALLOC] to store + the important information (the prefixes allocated by the local + domain) in the domain's MAASs who should have stable storage. If the + + + + +Radoslavov, et al. Experimental [Page 47] + +RFC 2909 The MASC Protocol September 2000 + + + MASC speaker has local storage, it should use it instead of the Layer + 2 protocol/mechanism. Claims that are in progress do not have to be + saved by using the Layer 2 protocol/mechanism. + +14. Security Considerations + + IPsec [IPSEC] can be used to address security concerns between two + MASC peering nodes. However, because of the store-and-forward nature + of the UPDATE messages, it is possible that if a non-trustworthy MASC + node can connect to some point of the MASC topology, then this node + can undetectably inject malicious UPDATEs that may disturb the normal + operation of other MASC nodes. To address this problem, each MASC + node should allow peering only with trustworthy nodes. + + After a reboot, a MASC node/domain can restore its state from its + neighbors (internal peers, parents, siblings, children). Typically, + the state received from a parent or internal peer will be + trustworthy, but a node may choose to drop its own UPDATEs that were + received through a sibling or a child. + + A misbehaving node may attempt a Denial of Service attack by sending + a large number of colliding messages that would prevent any of its + siblings from allocating more addresses. A single mis-behaving node + can easily be identified by all of its siblings, and all of its + UPDATEs can be ignored. A Denial of Service attack that uses + multiple origin addresses can be prevented if a third-party UPDATE + (e.g. by a non-directly connected sibling) is accepted only if it is + sent via the common parent domain, and the MASC nodes in the parent + domain accept children UPDATEs only if they come via an internal + peer, or come directly from a child node that is same as the Origin + Node ID. + +15. IANA Considerations + + This document defines several number spaces (MASC message types, MASC + OPEN message optional parameters types, MASC UPDATE message attribute + types, MASC UPDATE message optional parameters types, and MASC + NOTIFICATION message error codes and subcodes). For all of these + number spaces, certain values are defined in this specification. New + values may only be defined by IETF Consensus, as described in [IANA- + CONSIDERATIONS]. Basically, this means that they are defined by RFCs + approved by the IESG. + +16. Acknowledgments + + The authors would like to thank the participants of the IETF for + their assistance with this protocol. + + + + +Radoslavov, et al. Experimental [Page 48] + +RFC 2909 The MASC Protocol September 2000 + + +17. APPENDIX A: Sample Algorithms + + DISCLAIMER: This section describes some preliminary suggestions by + various people for algorithms which could be used with MASC. + +17.1. Claim Size and Prefix Selection Algorithm + + This section covers the algorithms used by a MASC node (on behalf of + a MASC domain) to satisfy the demand for multicast addresses. The + allocated addresses should be aggregatable, the address utilization + should be reasonably high, and the allocation latency to the MAASs + should be shorter than [WAITING_PERIOD] whenever possible. + +17.1.1. Prefix Expansion + + For ease of implementation and troubleshooting, MASC should use + contiguous masks to specify the address ranges, i.e. prefixes. + (Research indicates that sufficiently good results can be achieved + using contiguous masks only.) The chosen prefixes should be as + expandable as possible. The method used to choose the children sub- + prefixes from the parent's prefix is the so called Reverse Bit + Ordering (idea by Dave Thaler; inspired by Kampai [KAMPAI]). For + example, if the parent's prefix width is four bits, the addresses of + the sub-prefixes are chosen in the following order: + + Parent: xxxx + + Child A: 0000 + Child B: 1000 + Child C: 0100 + Child D: 1100 + + If some of the children need to expand their sub-prefix, they try to + double the corresponding sub-prefix starting from the right: + + Child A: 000x + Child A: 00xx + Child D: 110x + Child D: 11xx + + and so on. + + However, because the address ordering is very strict, to reduce the + probability for collision, when a new sub-prefix has to be chosen, + the choice should be random among all candidates with the same + potential for expandability. For example, if the free sub-prefixes + are 01xx, 10xx, 110x, then the new prefix to claim should be chosen + with probability of 50% for 01xx and 50% for 10xx for example. + + + +Radoslavov, et al. Experimental [Page 49] + +RFC 2909 The MASC Protocol September 2000 + + +17.1.2. Reducing Allocation Latency + + To reduce the allocation latency, a MASC node uses pre-allocation. + It constantly monitors the demand for addresses from its children (or + MAASs), and predicts what would be the address usage after + [WAITING_PERIOD]. Only if the available addresses will be used up + within [WAITING_PERIOD], a MASC node claims more addresses in + advance. + +17.1.3. Address Space Utilization + + Because every prefix size is a power of two, if a node tries to + allocate just a single prefix, the utilization at that node (i.e. at + that node's domain) can be as low as 50%. To improve the + utilization, a MASC node can have more than one prefix allocated at a + time (typically, each of them with different size). By using a pre- + allocation and allocating several prefixes of different size (see + below), a MASC node should try to keep its address utilization in the + range 70-90%. + +17.1.4. Prefix Selection After Increase of Demand + + To additionally reduce the allocation latency by reducing the + probability for collision, and to improve the aggregability of the + allocated addresses, a MASC node carefully chooses the prefixes to + claim. The first prefix is chosen at random among all reasonably + expandable candidates. If a node chooses to allocate another, + smaller prefix, then, instead of doubling the size of the first one + which might reduce significantly the address utilization, a second + "neighbor" prefix is chosen. For example, if prefix 224.0/16 was + already allocated, and the MASC domain needs 256 more addresses, the + second prefix to claim will be 224.1.0/24. If the domain needs more + addresses, the second prefix will eventually grow to 224.1/16, and + then both prefixes can be automatically aggregated into 224.0/15. + Only if 224.0.1/24 could not be allocated, a MASC node will choose + another prefix (eventually random among the unused prefixes). + + If the number of allocated prefixes increases above some threshold, + and none of them can be extended when more addresses are needed, + then, to reduce the amount of state, a MASC node should claim a new + larger prefix and should stop re-claiming the older non-expandable + prefixes. Research results show that up to three prefixes per MASC + domain is a reasonable threshold, such that the address utilization + can be in the range 70-90%, and at the same time the prefix flux will + be reasonably low. + + + + + + +Radoslavov, et al. Experimental [Page 50] + +RFC 2909 The MASC Protocol September 2000 + + +17.1.5. Prefix Selection After Decrease of Demand + + If the demand for addresses decreases, such that its address space is + under-utilized, a MASC node implicitly returns the unused prefixes + after their lifetimes expire, or re-claims some smaller sub-prefixes. + For example, if prefix 224.0/15 is 50% used by the MAASs and/or + children MASC domains, and the overall utilization is such that + approximately 2^16 (64K) addresses should be returned, a MASC node + should stop reclaiming 224.0/15 and should start reclaiming either + 224.0/16 or 224.1/16 (whichever sub-prefix utilization is higher). + +17.1.6. Lifetime Extension Algorithm + + If the demand for addresses did not decrease, then a MASC node re- + claims the prefixes it has allocated before their lifetime expires. + Each prefix (or sub-prefix if the demand has decreased) should be + re-claimed every 48 hours. + +18. APPENDIX B: Strawman Deployment + + At the moment of writing, 225.0.0.0-225.255.255.255 is temporarily + allocated to MALLOC. Presumably this block of addresses will be used + for experimental deployment and testing. + + If MASC were widely deployed on the Internet, we might expect numbers + similar to the following: + + o Initially will have approximately 128 Top-Level Domains + + o Assume initially approximately 8192 level-2 MASC domains; on + average, a TLD will have approximately 64 children domains. + + o MASC managed global addresses: + + The following (large) ranges are not allocated yet (2^N represents + the size of the contiguous mask prefixes): + + 225.0.0.0 - 231.255.255.255 = 2^26 + 2^25 + 2^24 + 234.0.0.0 - 238.255.255.255 = 2^25 + 2^25 + 2^24 + --------------------------- + Total: 12*2^24 addresses + + Initially, the range 228.0.0.0 - 231.255.255.255 (4*2^24 = 2^26 = + 64M) could be used by MASC as the global addresses pool. The rest + (8*2^24) should be reserved. Part of it could be added later to + MASC, or can be used to enlarge the pool of administratively + scoped addresses (currently 239.X.X.X), or the pool for static + allocation (233.X.X.X). + + + +Radoslavov, et al. Experimental [Page 51] + +RFC 2909 The MASC Protocol September 2000 + + + o If the multicast addresses are evenly distributed, each TLD would + have a maximum of 2^19 (512K) addresses, while each level-2 MASC + domain would have 8192 addresses. + + o Initial claim size: 256 addresses/MASC domain + + o Could use soft and hard thresholds to specify the maximum amount + of claimed+allocated addresses per domain. For example, trigger a + warning message if claimed+allocated addresses by a domain is >= + 1.0*average_assumed_per_domain (a strawman default soft + threshold): + + * if a TLD claim+allocation >= 512K + * if a second level MASC domain claim+allocation >= 8K + + The hard threshold (for example, 2.0*average_assumed_per_domain) + can be enforced by sending an explicit DENIED message. + + The TLDs thresholds (with regard to the claims by the second level + MASC domains) is a private matter and is a part of the particular + TLD policy: the thresholds could be per customer, and the warnings + to the administrators could be a signal that it is time to change + the policy. + + o Initial claim lifetime is of the order of 30 days. Prefix + lifetime is periodically (every 48 hours) reclaimed/extended, + unless the prefix is under-utilized (see APPENDIX A). Because the + allocation is demand-driven, the allocated prefix lifetime will be + automatically extended if the MAASs need longer prefix lifetime + (e.g. 3-6 months). + + o A level-2 MASC domain could have children (i.e. level-3) MASC + domains. + + o If a level-2 or level-3 MASC domain uses less than 128 addresses, + a Layer 2 protocol/mechanism (e.g. AAP) should be run among that + domain and its parent MASC domain. + +19. Authors' Addresses + + Pavlin Radoslavov + Computer Science Department + University of Southern California/ISI + Los Angeles, CA 90089 + USA + + EMail: pavlin@catarina.usc.edu + + + + +Radoslavov, et al. Experimental [Page 52] + +RFC 2909 The MASC Protocol September 2000 + + + Deborah Estrin + Computer Science Department + University of Southern California/ISI + Los Angeles, CA 90089 + USA + + EMail: estrin@isi.edu + + + Ramesh Govindan + University of Southern California/ISI + 4676 Admiralty Way + Marina Del Rey, CA 90292 + USA + + EMail: govindan@isi.edu + + + Mark Handley + AT&T Center for Internet Research at ISCI (ACIRI) + 1947 Center St., Suite 600 + Berkeley, CA 94704 + USA + + EMail: mjh@aciri.org + + + Satish Kumar + Computer Science Department + University of Southern California/ISI + Los Angeles, CA 90089 + USA + + EMail: kkumar@usc.edu + + + David Thaler + Microsoft + One Microsoft Way + Redmond, WA 98052 + USA + + EMail: dthaler@microsoft.com + + + + + + + + +Radoslavov, et al. Experimental [Page 53] + +RFC 2909 The MASC Protocol September 2000 + + +20. References + + [AAP] Handley, M. and S. Hanna, "Multicast Address + Allocation Protocol (AAP)", Work in Progress. + + [API] Finlayson, R., "An Abstract API for Multicast + Address Allocation", RFC 2771, February 2000. + + [BGMP] Thaler, D., Estrin, D. and D. Meyer, "Border + Gateway Multicast Protocol (BGMP): Protocol + Specification", Work in Progress. + + [BGP] Rekhter, Y. and T. Li, "A Border Gateway + Protocol 4 (BGP-4)", RFC 1771, March 1995. + + [CIDR] Rekhter, Y. and C. Topolcic, "Exchanging + Routing Information Across Provider Boundaries + in the CIDR Environment", RFC 1520, September + 1993. + + [IANA] Reynolds, J. and J. Postel, "Assigned Numbers", + STD 2, RFC 1700, October 1994. + + [IANA-CONSIDERATIONS] Alvestrand, H. and T. Narten, "Guidelines for + Writing an IANA Considerations Section in + RFCs", BCP 26, RFC 2434, October 1998. + + [IPSEC] Kent, S. and R. Atkinson, "Security + Architecture for the Internet Protocol", RFC + 2401, November 1998. + + [KAMPAI] Tsuchiya, P., "Efficient and Flexible + Hierarchical Address Assignment", INET92, June + 1992, pp. 441--450. + + [MADCAP] Hanna, S., Patel, B. and M. Shah, "Multicast + Address Dynamic Client Allocation Protocol + (MADCAP)", RFC 2730, December 1999. + + [MALLOC] Thaler, D., Handley, M. and D. Estrin, "The + Internet Multicast Address Allocation + Architecture", RFC 2908, September 2000. + + [MBGP] Bates, T., Chandra, R., Katz, D. and Y. + Rekhter, "Multiprotocol Extensions for BGP-4", + RFC 2283, September 1997. + + + + + +Radoslavov, et al. Experimental [Page 54] + +RFC 2909 The MASC Protocol September 2000 + + + [MTRACE] Fenner, W., and S. Casner, "A `traceroute' + facility for IP Multicast", Work in Progress. + + [MZAP] Handley, M, Thaler, D. and R. Kermode + "Multicast-Scope Zone Announcement Protocol + (MZAP)", RFC 2776, February 2000. + + [RFC1112] Deering, S., "Host Extensions for IP + Multicasting", STD 5, RFC 1112, August 1989. + + [RFC2119] Bradner, S., "Key words for use in RFCs to + Indicate Requirement Levels", BCP 14, RFC 2119, + March 1997. + + [RFC2373] Hinden, R. and S. Deering, "IP Version 6 + Addressing Architecture", RFC 2373, July 1998. + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, + Version 6 (IPv6) Specification", RFC 2460, + December 1998. + + [SCOPE] Meyer, D., "Administratively Scoped IP + Multicast", RFC 2365, July 1998. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Radoslavov, et al. Experimental [Page 55] + +RFC 2909 The MASC Protocol September 2000 + + +21. Full Copyright Statement + + Copyright (C) The Internet Society (2000). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Radoslavov, et al. Experimental [Page 56] + |