diff options
Diffstat (limited to 'doc/rfc/rfc2730.txt')
-rw-r--r-- | doc/rfc/rfc2730.txt | 2971 |
1 files changed, 2971 insertions, 0 deletions
diff --git a/doc/rfc/rfc2730.txt b/doc/rfc/rfc2730.txt new file mode 100644 index 0000000..f46c68d --- /dev/null +++ b/doc/rfc/rfc2730.txt @@ -0,0 +1,2971 @@ + + + + + + +Network Working Group S. Hanna +Requests for Comments: 2730 Sun Microsystems, Inc. +Category: Standards Track B. Patel + Intel Corp. + M. Shah + Microsoft Corp. + December 1999 + + + Multicast Address Dynamic Client Allocation Protocol (MADCAP) + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1999). All Rights Reserved. + +Abstract + + This document defines a protocol, Multicast Address Dynamic Client + Allocation Protocol (MADCAP), that allows hosts to request multicast + addresses from multicast address allocation servers. + +1. Introduction + + Multicast Address Dynamic Client Allocation Protocol (MADCAP) is a + protocol that allows hosts to request multicast address allocation + services from multicast address allocation servers. This protocol is + part of the Multicast Address Allocation Architecture being defined + by the IETF Multicast Address Allocation Working Group. However, it + may be used separately from the rest of that architecture as + appropriate. + +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 [9]. + + Constants used by this protocol are shown as [NAME-OF-CONSTANT], and + summarized in Appendix B. + + + + +Hanna, et al. Standards Track [Page 1] + +RFC 2730 MADCAP December 1999 + + +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. + + MADCAP client or client + A host requesting multicast address allocation services via MADCAP. + + MADCAP server or server + A host providing multicast address allocation services via MADCAP. + + Multicast + IP Multicast, as defined in [11] and modified in [12]. + + Multicast Address + An IP multicast address or group address, as defined in [11] and + [13]. An identifier for a group of nodes. + + Multicast Scope + A range of multicast addresses configured so that traffic sent to + these addresses is limited to some subset of the internetwork. See + [3] and [13]. + + Scope ID + The lowest numbered address in a multicast scope. This definition + applies only within this document. + + Scope Zone + One multicast scope may have several instances, which are known as + Scope Zones or zones, for short. + + For instance, an organization may have multiple sites. Each site + might have its own site-local Scope Zone, each of which would be an + instance of the site-local Scope. However, a given interface on a + given host would only ever be in at most one instance of a given + scope. Messages sent by a host in a site-local Scope Zones to an + address in the site-local Scope would be limited to the site-local + Scope Zone containing the host. + + Zone Name + A human readable name for a Scope Zone. An ISO 10646 character + string with an RFC 1766 [6] language tag. One zone may have several + zone names, each in a different language. For instance, a zone for + use within IBM's locations in Switzerland might have the names "IBM + Suisse", "IBM Switzerland", "IBM Schweiz", and "IBM Svizzera" with + language tags "fr", "en", "de", and "it". + + + + +Hanna, et al. Standards Track [Page 2] + +RFC 2730 MADCAP December 1999 + + + Multicast Scope List + A list of multicast scope zones. + + Since it can be difficult to determine which multicast scope zones + are in effect, MADCAP clients can ask MADCAP servers to supply a + Multicast Scope List listing all of the zones available to the + client. For each scope zone, the list includes the range of + multicast addresses for this scope, a maximum TTL or hop count to + be used for this scope, and one or more zone names for this scope + zone. + + This definition applies only within this document. + +1.3. Motivation and Protocol Requirements + + For multicast applications to be deployed everywhere, there is a need + to define a protocol that any host may use to allocate multicast + addresses. Here are the requirements for such a protocol. + + Quick response: The host should be able to allocate a multicast + address and begin to use it promptly. + + Low network load: Hosts that are not allocating or deallocating + multicast addresses at the present time should not need to send or + receive any network traffic. + + Support for intermittently connected or power managed systems: Hosts + should be able to be disconnected from the network, powered off, or + otherwise inaccessible except during the brief period during which + they are allocating a multicast address. + + Multicast address scopes: The protocol must be able to allocate both + the administratively scoped and globally scoped multicast addresses. + + Efficient use of address space: The multicast address space is fairly + small. The protocol should make efficient use of this scarce + resource. + + Authentication: Because multicast addresses are scarce, it is + important to protect against hoarding of these addresses. One way to + do this is by authenticating clients. This is also a key prerequisite + for establishing policies. + + + + + + + + + +Hanna, et al. Standards Track [Page 3] + +RFC 2730 MADCAP December 1999 + + + Policy neutral: Allocation policies (such as who can allocate + addresses) should not be dictated by the protocol. + + Conferencing support: When allocating an address for use in a + conferencing environment, members of the conference should be able to + modify a multicast address lease used for the conference. + +1.4. Relationship with DHCP + + MADCAP was originally based on DHCP. There are still some + similarities and it may be possible to share some code between a DHCP + implementation and a MADCAP implementation. However, MADCAP is + completely separate from DHCP, with no dependencies between the two + and many significant differences. + +1.5. Protocol Overview + + MADCAP is built on a client-server model, where hosts request address + allocation services from address allocation servers. When a MADCAP + client wishes to request a service, it unicasts or multicasts a + message to one or more MADCAP servers, each of which optionally + responds with a message unicast to the client. + + All messages are UDP datagrams. The UDP data contains a fixed length + header and a variable length options field. Options are encoded in a + type-length-value format with two octets type and value fields. The + fixed fields are version, msgtype (message type), addrfamily (address + family), and xid (transaction identifier). + + Retransmission is handled by the client. If a client sends a message + and does not receive a response, it may retransmit its request a few + times using an exponential backoff. To avoid executing the same + client request twice when a retransmitted request is received, + servers cache responses for a short period of time and resend cached + responses upon receiving retransmitted requests. + + Each request contains a msgtype, an xid, and a Lease Identifier + option. Clients must ensure that this triple is probably unique + across all MADCAP messages received by a MADCAP server over a period + of [XID-REUSE-INTERVAL] (10 minutes). This allows the MADCAP server + to use this triple as the key in its response cache. + + Messages sent by servers include the xid included in the original + request so that clients can match up responses with requests. + + The msgtype field is a single octet that defines the "type" of a + MADCAP message. Currently defined message types are listed in Table + 2. They are: DISCOVER, OFFER, REQUEST, RENEW, ACK, NAK, RELEASE, and + + + +Hanna, et al. Standards Track [Page 4] + +RFC 2730 MADCAP December 1999 + + + GETINFO. DISCOVER, REQUEST, RENEW, RELEASE, and GETINFO messages are + only sent by a client. OFFER, ACK, and NAK messages are only sent by + a server. + + The REQUEST, RENEW, and RELEASE messages are used to request, renew, + or release a lease on one or more multicast addresses. A client + unicasts one of these messages to a server and the server responds + with an ACK or a NAK. + + The GETINFO message is used to request information, such as the + multicast scope list, or to find MADCAP servers. A client may unicast + an GETINFO message to a MADCAP server. However, it may not know the + IP address of any MADCAP server. In that case, it will multicast an + GETINFO message to a MADCAP Server Multicast Address and all servers + that wish to respond will send a unicast ACK or NAK back to the + client. + + Each multicast scope has an associated MADCAP Server Multicast + Address. This address has been reserved by the IANA as the address + with a relative offset of -1 from the last address of a multicast + scope. MADCAP clients use this address to find MADCAP servers. + + The DISCOVER message is a message used to discover MADCAP servers + that can probably satisfy a REQUEST. DISCOVER messages are always + multicast. Servers that can probably satisfy a REQUEST corresponding + to the parameters supplied in the DISCOVER message temporarily + reserve the addresses needed and send a unicast OFFER back to the + client. The client selects a server with which to continue and sends + a multicast REQUEST including the server's Server Identifier to the + same multicast address used for the DISCOVER. The chosen server + responds with an ACK or NAK and the other servers stop reserving the + addresses they were temporarily holding. + + For detailed descriptions of typical protocol exchanges, consult + Appendix A. + + MADCAP is a mechanism rather than a policy. MADCAP allows local + system administrators to exercise control over configuration + parameters where desired. For example, MADCAP servers may be + configured to limit the number of multicast addresses allocated to a + single client. Properly enforcing such a limit requires cryptographic + security, as described in the Security Consideration section. + + MADCAP requests from a single host may be sent on behalf of different + applications with different needs and requirements. MADCAP servers + MUST NOT assume that because one request from a MADCAP client + supports a particular optional feature (like Retry After), future + requests from that client will also support that optional feature. + + + +Hanna, et al. Standards Track [Page 5] + +RFC 2730 MADCAP December 1999 + + +2. Protocol Description + + The MADCAP protocol is a client-server protocol. In general, the + client unicasts or multicasts a message to one or more servers, which + optionally respond with messages unicast to the client. + + A reserved port number dedicated for MADCAP is used on the server + (port number 2535, as assigned by IANA). Any port number may be used + on client machines. When a MADCAP server sends a message to a MADCAP + client, it MUST use a destination port number that matches the source + port number provided by the client in the message that caused the + server to send its message. + + The next few sections describe the MADCAP message format and message + types. A full list of MADCAP options is provided in section 3. + +2.1. Message Format + + Figure 1 gives the format of a MADCAP message and Table 1 describes + each of the fields in the MADCAP message. The numbers in parentheses + indicate the size of each field in octets. The names for the fields + given in the figure will be used throughout this document to refer to + the fields in MADCAP messages. + + All multi-octet quantities are in network byte-order. + + Any message whose UDP data is too short to hold this format (at least + 12 bytes) MUST be ignored. + + + + + + + + + + + + + + + + + + + + + + + +Hanna, et al. Standards Track [Page 6] + +RFC 2730 MADCAP December 1999 + + + +-+-+-+-+-+-+-+-+ + | version (1) | + +---------------+ + | msgtype (1) | + +---------------+ + | addrfamily | + | (2) | + +---------------+ + | | + | xid (4) | + | | + | | + +---------------+ + | | + | options | + | (variable) | + | ... | + +---------------+ + + Figure 1: Format of a MADCAP message + + + FIELD OCTETS DESCRIPTION + ----- ------ ----------- + + version 1 Protocol version number (zero for this specification) + msgtype 1 Message type (DISCOVER, GETINFO, etc.) + addrfamily 2 Address family (IPv4, IPv6, etc.) + xid 4 Transaction ID + options var Options field + + Table 1: Description of fields in a MADCAP message + +2.1.1. The version field + + The version field must always be zero for this version of the + protocol. Any messages that include other values in this field MUST + be ignored. + +2.1.2. The msgtype field + + The msgtype field defines the "type" of the MADCAP message. + + For more information about this field, see section 2.2. + + + + + + + +Hanna, et al. Standards Track [Page 7] + +RFC 2730 MADCAP December 1999 + + +2.1.3. The addrfamily field + + The addrfamily field defines the default address family (such as IPv4 + or IPv6) for this MADCAP message, using the address family numbers + defined in by the IANA (including those defined in [10]). Unless + otherwise specified, all addresses included in the message will be + from this family. + +2.1.4. The xid field + + The xid field is a transaction identifier. This number MUST be chosen + by the client so that the combination of xid, msgtype, and Lease + Identifier is unique across all MADCAP messages received by a MADCAP + server over a period of [XID-REUSE-INTERVAL] (10 minutes). + + The xid field is used by the client and server to associate messages + and responses between a client and a server. Before a client sends a + message, it chooses a number to use as an xid. The technique used to + choose an xid is implementation-dependent, but whatever technique is + used MUST make it unlikely that the same combination of xid, msgtype, + and Lease Identifier will be used for two different messages within + [XID-REUSE-INTERVAL] (even across multiple clients which do not + communicate among themselves). This allows enough time for the + message to be dropped from all server response caches (as described + in the next few paragraphs) and for any network delays to be + accomodated. + + The RECOMMENDED technique for choosing an xid is to choose a random + four octet number as the first xid in a session and increment this + value each time a new xid is needed. The random number chosen need + not be cryptographically random. The random number may be chosen via + any suitable technique, such as the one described in section A.6 of + RFC 1889 [14]. + + When a server responds to a client message, it MUST use the same xid + value in the response that the client used in the request. This + allows the client to associate responses with the message that they + are responding to. + + When retransmitting messages (as described in section 2.3), the + client MUST retransmit them without changing them, thereby using the + same xid and and Lease Identifier. + + If a server receives a message with the same xid, msgtype, and Lease + Identifier as one received within [RESPONSE-CACHE-INTERVAL], it MUST + treat this message as a retransmission of the previously received one + and retransmit the response, if any. After [RESPONSE-CACHE-INTERVAL], + the server may forget about the previously received message and treat + + + +Hanna, et al. Standards Track [Page 8] + +RFC 2730 MADCAP December 1999 + + + any retransmissions of this message as if they were new messages. Of + course, a server need not cache a message if it ends up ignoring that + message. However, performance gains may be achieved by doing so. + + This avoids retransmissions causing multiple allocations, since + requests are not idempotent. An appropriate value for [RESPONSE- + CACHE-INTERVAL] would be sixty seconds, but it may have any value + from zero seconds to 300 seconds (five minutes) and may be adjusted + dynamically according to resource constraints on the server. + However, using a value less than sixty seconds is NOT RECOMMENDED + because this is the normal client retransmission period. + +2.1.5. The options field + + The options field consists of a list of tagged parameters that are + called "options". All options consist of a two octet option code and + a two octet option length, followed by the number of octets specified + by the option length. In the case of some options, the length field + is a constant but must still be specified. + + The option field MUST contain a sequence of options with the last one + being the End option (option code 0). Any message whose options field + does not conform to this syntax MUST be ignored. + + Any MADCAP client or server sending a MADCAP message MAY include any + of the options listed in section 3, subject to the restrictions in + Table 5 and elsewhere in this document. They MAY also include other + MADCAP options that are defined in the future. A MADCAP client or + server MUST NOT include more than one option with the same option + type in one MADCAP message. + + All MADCAP clients and servers MUST recognize all options listed in + this document and behave in accordance with this document when + receiving and processing any of these options. Any unrecognized + options MUST be ignored and the rest of the message processed as if + the unknown options were not present. If a MADCAP server receives a + message that does not conform to the requirements of this document + (for instance, not including all required options), an Invalid + Request error MUST be generated and processed in the manner described + in section 2.6. If a MADCAP client receives a message that does not + conform to the requirements of this document, it MUST ignore the + message. + + The order of options within a message has no significance and any + order MUST be supported in an equivalent manner, with the exception + that the End option must occur once per message, as the last option + in the option field. + + + + +Hanna, et al. Standards Track [Page 9] + +RFC 2730 MADCAP December 1999 + + + New MADCAP option codes may only be defined by IETF Consensus, as + described in section 5. + +2.2. Message Types + + The msgtype field defines the "type" of a MADCAP message. Legal + values for this field are: + + Value Message Type + ----- ------------ + 1 DISCOVER + 2 OFFER + 3 REQUEST + 4 RENEW + 5 ACK + 6 NAK + 7 RELEASE + 8 GETINFO + + Table 2: MADCAP message types + + Throughout this document, MADCAP messages will be referred to by the + type of the message; e.g., a MADCAP message with a message type of 8 + will be referred to as an GETINFO message. + + Here are descriptions of the MADCAP message types. Table 5, which + appears at the beginning of section 3, summarizes which options are + allowed with each message type. + + MADCAP clients and servers MUST handle all MADCAP message types + defined in this document in a manner consistent with this document. + + If a MADCAP server receives a message whose message type it does not + recognize, an Invalid Request error MUST be generated and processed + in the manner described in section 2.6. If a MADCAP client receives a + message whose message type it does not recognize, it MUST ignore the + message. + + Note, however, that under some circumstances this document requires + or suggests that clients or servers ignore messages with certain + message types even though they may be recognized. For instance, + clients that do not send DISCOVER messages SHOULD ignore OFFER + messages. Also, secure servers SHOULD ignore DISCOVER messages and + all servers SHOULD ignore DISCOVER messages that they cannot satisfy. + + New MADCAP message types may only be defined by IETF Consensus, as + described in section 5. + + + + +Hanna, et al. Standards Track [Page 10] + +RFC 2730 MADCAP December 1999 + + +2.2.1. GETINFO + + The GETINFO message is used by a MADCAP client that wants to acquire + configuration parameters, especially a multicast scope list. This + message also allows a client to determine which servers are likely to + be able to handle future requests. + + The MADCAP client sends out an GETINFO message. The message may be + unicast to a particular MADCAP server or multicast to a MADCAP Server + Multicast Address. For more details about the MADCAP Server Multicast + Address, see section 2.10. + + If a server receives an GETINFO message and it can process the + request successfully, it MUST unicast an ACK message to the client. + All GETINFO messages MUST include an Option Request List option. The + server SHOULD try to include the specified options in its response, + but is not required to do so (especially if it does not recognize + them). + + If a server receives an GETINFO message and it does not process the + request successfully, it MUST generate and process an error in the + manner described in section 2.6. + + If a client sends an GETINFO message and does not receive any ACK + messages in response, it SHOULD resend its GETINFO message, as + described in section 2.3. + + When a MADCAP client sends an GETINFO message, it MAY include the + Requested Language option, which specifies which language the client + would prefer for the zone names in the Multicast Scope List. The + proper way to handle this tag with respect to zone names is discussed + in the definition of the Multicast Scope List option. + +2.2.2. DISCOVER + + The DISCOVER message is a multicast message sent by a MADCAP client + that wants to discover MADCAP servers that can probably satisfy a + REQUEST. + + MADCAP clients are not required to use the DISCOVER message. They + MAY employ other methods to find MADCAP servers, such as sending a + multicast GETINFO message, caching an IP address that worked in the + past or being configured with an IP address. Using the DISCOVER + message has the particular advantage that it allows clients to + receive responses from all servers that can satisfy the request. + + + + + + +Hanna, et al. Standards Track [Page 11] + +RFC 2730 MADCAP December 1999 + + + The MADCAP client begins by sending a multicast DISCOVER message to a + MADCAP Server Multicast Address. Any servers that wish to assist the + client respond by sending a unicast OFFER message to the client. If a + server can only process the request with a shorter lease time or + later start time than the client requested, it SHOULD send an OFFER + message with the lease time or start time that it can offer. + However, it MUST NOT offer a lease time shorter than the minimum + lease time specified by the client or a start time later than the + maximum start time specified by the client. + + For more details about the MADCAP Server Multicast Address, see + section 2.10. + + If a client sends a DISCOVER message and does not receive any OFFER + messages in response, the client SHOULD retransmit its DISCOVER + message, as described in section 2.3. + + If a client sends a DISCOVER message and receives one or more OFFER + messages in response, it SHOULD select the server it wants to use (if + any) and send a multicast REQUEST message identifying that server + within [DISCOVER-DELAY] after receiving the first OFFER message. See + section 2.2.4 for more information about the REQUEST message. + + The mechanism used by the client in selecting the server it wants to + use is implementation dependent. The client MAY choose the first + acceptable response or it MAY wait some period of time (no more than + [DISCOVER-DELAY]) and choose the best response received in that + period of time (if the first response has a smaller lease time than + requested, for instance). + + The value of [DISCOVER-DELAY] is also implementation dependent, but + the RECOMMENDED value is the current retransmit timer, as specified + in section 2.3. Waiting too long (approaching [OFFER-HOLD]) may cause + servers to drop the addresses they have reserved. + + When a MADCAP client sends a DISCOVER message, it MAY include the + Lease Time, Minimum Lease Time, Start Time, Maximum Start Time, + Number of Addresses Requested, and List of Address Ranges options, + describing the addresses it wants to receive. However, it need not + include any of these options. If one of these options is not + included, the server will provide the appropriate default (maximum + available for Lease Time, no minimum for Minimum Lease Time, as soon + as possible for Start Time, no maximum for Maximum Start Time, one + for Number of Addresses Requested, and any addresses available for + List of Address Ranges). The Multicast Scope option MUST be included + in the DISCOVER message so that the server knows what scope should be + used. The Current Time option MUST be included if the Start Time or + Maximum Start Time options are included. The Lease Identifier option + + + +Hanna, et al. Standards Track [Page 12] + +RFC 2730 MADCAP December 1999 + + + MUST always be included. + +2.2.3. OFFER + + The OFFER message is a unicast message sent by a MADCAP server in + response to a DISCOVER message that it can probably satisfy. + + A MADCAP server is never required to send an OFFER message in + response to a DISCOVER message. For instance, it may not be able to + satisfy the client's request or it may have been configured to + respond only to certain types of DISCOVER messages or not to respond + to DISCOVER messages at all. + + If a MADCAP server decides to send an OFFER message, it MUST include + the Lease Time and Multicast Scope options, describing the addresses + it is willing to provide. However, it need not include the List of + Address Ranges option. If the List of Address Ranges Allocated option + is not included, it is assumed that the server is willing to provide + the number of addresses that the client requested. If the Start Time + option is not included, it is assumed that the server is willing to + provide the start time requested by the client (if any). The Current + Time option MUST be included if the Start Time option is included. + + If a server can process the request with a shorter lease time or + later start time than the client requested, it SHOULD send an OFFER + message with the lease time or start time that it can offer. + However, it MUST NOT offer a lease time shorter than the minimum + lease time specified by the client or a start time later than the + maximum start time specified by the client. + + If the server sends an OFFER message, it SHOULD attempt to hold + enough addresses to complete the transaction. If it receives a + multicast REQUEST message with the same Lease Identifier option as + the DISCOVER message for which it is holding these addresses and a + Server Identifier option that does not match its own, it SHOULD stop + holding the addresses. The server SHOULD also stop holding the + addresses after an appropriate delay [OFFER-HOLD] if the transaction + is not completed. The value of this delay is implementation-specific, + but a value of at least 60 seconds is RECOMMENDED. + + As with all messages sent by the server, the xid field MUST match the + xid field included in the client request to which this message is + responding. The Lease Identifier option MUST be included, with the + value matching the one included in the client request. The Server + Identifier option MUST be included, with the value being the server's + IP address. And the packet MUST NOT be retransmitted. + + + + + +Hanna, et al. Standards Track [Page 13] + +RFC 2730 MADCAP December 1999 + + +2.2.4. REQUEST + + The REQUEST message is used by a MADCAP client that wants to allocate + one or more multicast addresses. It is not used for renewing an + existing lease. The RENEW message is used for that. + + If a REQUEST message is completing a transaction initiated by a + DISCOVER message, the following procedure MUST be followed so that + all MADCAP servers know which server was selected. The client MUST + multicast a REQUEST message to the same MADCAP Server Multicast + Address that the DISCOVER message was sent to. The same Lease + Identifier used in the DISCOVER message MUST be used in the REQUEST + message. Also, the Server Identifier option MUST be included, using + the Server Identifier of the server selected. + + If a REQUEST message is not completing a transaction initiated by a + DISCOVER message, the REQUEST message MUST be unicast to the MADCAP + server that the client wants to use. In this case, the Server + Identifier option MAY be included, but need not be. + + If the selected server can process the request successfully, it + SHOULD unicast an ACK message to the client. Otherwise, it SHOULD + generate and process an error in the manner described in section 2.6. + If a server can process the request with a shorter lease time or + later start time than the client requested, it SHOULD send an ACK + message with the lease time or start time that it can offer. However, + it MUST NOT offer a lease time shorter than the minimum lease time + specified by the client or a start time later than the maximum start + time specified by the client. + + When a MADCAP client sends a REQUEST message, it MAY include the + Lease Time, Minimum Lease Time, Start Time, Maximum Start Time, + Number of Addresses Requested, and List of Address Ranges options, + describing the addresses it wants to receive. However, it need not + include any of these options. If one of these options is not + included, the server will provide the appropriate default (maximum + available for Lease Time, no minimum for Minimum Lease Time, as soon + as possible for Start Time, no maximum for Maximum Start Time, one + for Number of Addresses Requested, and any addresses available for + List of Address Ranges). The Multicast Scope option MUST be included + in the REQUEST message so that the server knows what scope should be + used. The Current Time option MUST be included if the Start Time or + Maximum Start Time options are included. + + If a client sends a REQUEST message and does not receive any ACK or + NAK messages in response, the client SHOULD resend its REQUEST + message, as described in section 2.3. + + + + +Hanna, et al. Standards Track [Page 14] + +RFC 2730 MADCAP December 1999 + + + If the server responds with a NAK or fails to respond within a + reasonable (implementation-dependent) delay [NO-RESPONSE-DELAY], the + client MAY try to find another server by sending a DISCOVER message + with another xid or sending a REQUEST message with another xid to + another server. The RECOMMENDED value for [NO-RESPONSE-DELAY] is 60 + seconds. + +2.2.5. ACK + + The ACK message is used by a MADCAP server to respond affirmatively + to an GETINFO, REQUEST, or RELEASE message. The server unicasts the + ACK message to the client from which it received the message to which + it is responding. + + The set of options included with an ACK message differs, depending on + what sort of message it is responding to. + + If the ACK message is responding to an GETINFO message, it SHOULD + include any options requested by the client using the Option Request + List option. + + If the ACK message is responding to a REQUEST message, it MUST + include Lease Time, Multicast Scope, and List of Address Ranges + options. It MAY include a Start Time option. If a Start Time option + is included, a Current Time option MUST also be included. If no Start + Time option is included, the lease is assumed to start immediately. + + If the ACK message is responding to a RENEW message, it MUST include + Lease Time, Multicast Scope, and List of Address Ranges options. It + MAY include a Start Time option. If a Start Time option is included, + a Current Time option MUST also be included. If no Start Time option + is included, the lease is assumed to start immediately. + + If the ACK message is responding to a RELEASE message, it MUST only + include Server Identifier and Lease Identifier options. + + As with all messages sent by the server, the xid field MUST match the + xid field included in the client request to which this message is + responding. The Lease Identifier option MUST be included, with the + value matching the one included in the client request. The Server + Identifier option MUST be included, with the value being the server's + IP address. And the packet MUST NOT be retransmitted. + +2.2.6. NAK + + The NAK message is used by a MADCAP server to respond negatively to a + message. The server unicasts the NAK message to the client from which + it received the message to which it is responding. + + + +Hanna, et al. Standards Track [Page 15] + +RFC 2730 MADCAP December 1999 + + + As with all messages sent by the server, the xid field MUST match the + xid field included in the client request to which this message is + responding. The Lease Identifier option MUST be included, with the + value matching the one included in the client request. The Server + Identifier option MUST be included, with the value being the server's + IP address. The Error option MUST be included with an error code + indicating what went wrong. And the packet MUST NOT be retransmitted. + +2.2.7. RENEW + + The RENEW message is used by a MADCAP client that wants to renew a + multicast address lease, changing the lease time or start time. + + The client unicasts the RENEW message to a MADCAP server. If the + server can process the request successfully, it SHOULD unicast an ACK + message to the client. Otherwise, it MUST generate and process an + error in the manner described in section 2.6. + + The lease to be renewed is whichever one was allocated with a Lease + Identifier option matching the one provided in the RENEW message. + + When a MADCAP client sends a RENEW message, it MAY include the Lease + Time, Minimum Lease Time, Start Time, and Maximum Start Time options, + describing the new lease it wants to receive. However, it need not + include any of these options. If one of these options is not + included, the server will provide the appropriate default (maximum + available for Lease Time, no minimum for Minimum Lease Time, as soon + as possible for Start Time, and no maximum for Maximum Start Time). + The Current Time option MUST be included if the Start Time or Maximum + Start Time options are included. + + If a client sends a RENEW message and does not receive any ACK or NAK + messages in response, the client SHOULD resend its RENEW message, as + described in section 2.3. + + If the server responds with a NAK or fails to respond within a + reasonable (implementation-dependent) delay [NO-RESPONSE-DELAY], the + client MAY send a RENEW message with another xid to another server, + provided that the Server Mobility feature was used in the original + REQUEST message and that this feature is required for the subsequent + RENEW message sent to another server. For more information about the + Server Mobility feature, see section 2.13.1. The RECOMMENDED value + for [NO-RESPONSE-DELAY] is 60 seconds. + + + + + + + + +Hanna, et al. Standards Track [Page 16] + +RFC 2730 MADCAP December 1999 + + +2.2.8. RELEASE + + The RELEASE message is used by a MADCAP client that wants to + deallocate one or more multicast addresses before their lease + expires. + + The client unicasts the RELEASE message to the MADCAP server from + which it allocated the addresses. If the selected server can process + the request successfully, it MUST unicast an ACK message to the + client. Otherwise, it MUST generate and process an error in the + manner described in section 2.6. + + The lease to be released is whichever one was allocated with a Lease + Identifier option matching the one provided in the RELEASE message. + It is not possible to release only part of the addresses in a single + lease. + + If a client sends a RELEASE message and does not receive any ACK or + NAK messages in response, the client SHOULD resend its RELEASE + message, as described in section 2.3. + + If the server responds with a NAK or fails to respond within a + reasonable (implementation-dependent) delay [NO-RESPONSE-DELAY], the + client MAY send a RELEASE message with another xid to another server, + provided that the Server Mobility feature was used in the original + REQUEST message and that this feature is required for the subsequent + RELEASE message sent to another server. For more information about + the Server Mobility feature, see section 2.13.1. The RECOMMENDED + value for [NO-RESPONSE-DELAY] is 60 seconds. + +2.3. Retransmission + + MADCAP clients are responsible for all message retransmission. The + client MUST adopt a retransmission strategy that incorporates an + exponential backoff algorithm to determine the delay between + retransmissions. The delay between retransmissions SHOULD be chosen + to allow sufficient time for replies from the server to be delivered + based on the characteristics of the internetwork between the client + and the server. + + The RECOMMENDED algorithm is to use a 4 second delay before the first + retransmission and to double this delay for each successive + retransmission, with a maximum delay of 16 seconds and a maximum of + three retransmissions. If an initial transmission was sent at time + (in seconds) t and no responses were received, subsequent + transmissions would be at t+4, t+12, and t+28. If no response has + been received by t+60, the client would stop retransmitting and take + another course of action (such as logging an error or sending a + + + +Hanna, et al. Standards Track [Page 17] + +RFC 2730 MADCAP December 1999 + + + message to another address. + + The client MAY provide an indication of retransmission attempts to + the user as an indication of the progress of the process. The client + MAY halt retransmission at any point. + +2.4. The Lease Identifier + + The Lease Identifier option is included in each MADCAP message. Its + value is used to identify a lease and MUST be unique across all + leases requested by all clients in a multicast address allocation + domain. + + The first octet of the Lease Identifier is the Lease Identifier type. + Table 3 lists the Lease Identifier types defined at this time and + sections 2.4.1 and 2.4.2 describe these Lease Identifier types. + + New MADCAP Lease Identifier types may only be defined by IETF + Consensus, as described in section 5. + + + Lease Identifier Type Name + --------------------- ---- + 0 Random Lease Identifier + 1 Address-Specific Lease Identifier + + Table 3: MADCAP Lease Identifier Types + + The MADCAP server does not need to parse the Lease Identifier. It + SHOULD use the Lease Identifier only as an opaque identifier, which + must be unique for each lease. The purpose of defining different + Lease Identifier types is to allow MADCAP clients that already have a + globally unique address to avoid the possibility of Lease Identifier + collisions by using this address together with a client-specific + identifier. MADCAP clients that do not have a globally unique address + SHOULD use Lease Identifier type 0. + + In addition to associating client and server messages (along with the + msgtype and xid fields, as described in the next section), the Lease + Identifier is used to determine which lease a RENEW or RELEASE + request refers to. MADCAP servers SHOULD match the Lease Identifier + included in a RENEW or RELEASE message with the Lease Identifier used + in an initial REQUEST message. If the Lease Identifier does not + match, a MADCAP server MUST generate and process a Lease Identifier + Not Recognized error in the manner described in section 2.6. + + + + + + +Hanna, et al. Standards Track [Page 18] + +RFC 2730 MADCAP December 1999 + + + For conferencing applications, it may be desirable to allow + conference participants to modify a lease used for the conference. + The Shared Lease Identifier feature code is used to support this + requirement. If this feature code was requested by the client and + implemented by the server when the lease was allocated, the server + SHOULD disable any authentication requirements and allow any client + that knows the Lease Identifier to modify the lease. + + As described in the Security Considerations section, MADCAP security + is not terribly useful without admission control in the multicast + routing infrastructure. However, if MADCAP security is desired when + using the Shared Lease Identifier feature, the confidentiality of the + Lease Identifier MUST be maintained by encrypting all messages that + contain it. A Lease Identifier that includes a long cryptographically + random number (at least eight octets in length) MUST be used in this + circumstance so that it is not easy to guess the Lease Identifier. + +2.4.1. Random Lease Identifier + + The first octet of a Random Lease Identifier is the Lease Identifier + type (0 to indicate Random Lease Identifier). After this come a + sequence of octets, which SHOULD represent a long random number (at + least 16 octets) from a decent random number generator. + + A Random Lease Identifier does not include any indication of its + length. It is assumed that this may be determined by external means, + such as a length field preceding the Lease Identifier. + + Lease ID + Type Random Number + +---------+-------------... + | 0 | + +---------+-------------... + +2.4.2. Address-Specific Lease Identifier + + The first octet of an Address-Specific Lease Identifier is the Lease + Identifier type (1 to indicate Address-Specific Lease Identifier). + After this comes a two octet IANA-defined address family number + (including those defined in [10]), an address from the specified + address family, and a client-specific identifier (such as a sequence + number or the current time). + + An Address-Specific Lease Identifier does not include any indication + of its length. It is assumed that this may be determined by external + means, such as a length field preceding the Lease Identifier. + + + + + +Hanna, et al. Standards Track [Page 19] + +RFC 2730 MADCAP December 1999 + + + Lease ID Address Family Address Client-specific + Type Number Identifier + +---------+---------+---------+-----...-----+-----...-----+ + | 1 | addrfamily | address | cli-spec id | + +---------+---------+---------+-----...-----+-----...-----+ + +2.5. Associating Client and Server Messages + + Messages between clients and servers are associated with one another + using the Lease Identifier and the xid field. As described in section + 2.1.4, the client MUST choose an xid so that it is unlikely that the + same combination of xid, msgtype, and Lease Identifier will be used + for two different messages within [XID-REUSE-INTERVAL] (even across + multiple clients which do not communicate among themselves). The + Lease Identifier option, msgtype, and xid field MUST be included in + each message sent by the client or the server. + + The client MUST check the Lease Identifier option and xid field in + each incoming message to ensure that they match the Lease Identifier + and xid for an outstanding transaction. If not, the message MUST be + ignored. The server MUST check the Lease Identifier option and xid + field in each incoming message to establish the proper context for + the message. If a server cannot process a message because it is + invalid for its context, the server MUST generate and process an + Invalid Request error, as described in section 2.6. A transaction + can be an attempt to allocate a multicast address (consisting of + DISCOVER, OFFER, REQUEST, ACK, and NAK messages), an attempt to renew + a lease (consisting of RENEW, ACK, and NAK messages), an attempt to + release a previously allocated multicast address (consisting of + RELEASE, ACK, and NAK messages), or an attempt to acquire + configuration parameters (consisting of GETINFO, ACK, and NAK + messages). + +2.6. Processing Errors + + If a MADCAP server encounters an error while processing a message, + there are two different ways to process this error. If it is clear + that the message is not a NAK, the server SHOULD respond with a NAK + containing the appropriate Error option. However, the server MAY + decide to completely ignore chronic offenders. If the message is a + NAK or it is not clear whether the message is a NAK (for instance, + the message is garbled or has an incorrect version number), the + server SHOULD ignore the message. This avoids NAK loops. + + If a MADCAP client encounters an error while processing a message, it + MUST ignore the message. + + + + + +Hanna, et al. Standards Track [Page 20] + +RFC 2730 MADCAP December 1999 + + +2.7. Multicast Scopes + + RFC 2365 [3] provides for dividing the multicast address space into a + number of administrative scopes. Routers should be configured so that + each scope corresponds to a particular partition of the network into + disjoint regions. Messages sent to a multicast address that falls + within a certain administrative scope should only be delivered to + hosts that have joined that multicast group *and* fall within the + same region as the sender. For instance, packets sent to an address + in the organization-local scope should only be delivered to hosts + that have joined that group and fall within the same organization as + the sender. + + Different sets of scopes may be in effect at different places in the + network and at different times. Before attempting to allocate an + address from an administrative scope (other than global or link-level + scope, which are always in effect), a MADCAP client SHOULD determine + that the scope is in effect at its location at this time. Several + techniques that a MADCAP client may use to determine the set of + administrative scopes in effect (the scope list) are: manual + configuration or configuration via MADCAP (using the Multicast Scope + List option). + + If a MADCAP client is unable to determine its scope list using one of + these techniques, it MAY temporarily assume a scope list consisting + of a single scope. If it is using IPv4, it SHOULD use IPv4 Local + Scope (239.255.0.0/16), with a maximum TTL of 16. If it is using + IPv6, it SHOULD use SCOP 3, with a maximum hop count of 16. Using + this temporary scope list, it MAY attempt to contact a MADCAP server + that can provide a scope list for it. + + When a MADCAP client requests an address with a DISCOVER or REQUEST + message, it MUST specify the administrative scope from which the + address should be allocated. This scope is indicated with the + Multicast Scope option. Likewise, the server MUST include the + Multicast Scope option in all OFFER messages and all ACK messages + sent in response to REQUEST messages. + +2.8. Multicast TTL + + Another way to limit propagation of multicast messages is by using + TTL scoping. This technique has several disadvantages in comparison + to administratively scoped multicast addresses (as described in [3]), + but it is currently in widespread usage. + + With TTL scoping, areas of the network are designated as scopes. + Routers on the edges of these areas are configured with TTL + thresholds so that multicast packets are not forwarded unless their + + + +Hanna, et al. Standards Track [Page 21] + +RFC 2730 MADCAP December 1999 + + + remaining TTL exceeds this threshold. A packet which should be + restricted to a given TTL scope should have an initial TTL less than + that scope's TTL threshold. Similar techniques may be used with IPv6, + using the Hop Count field instead of the TTL field. + + MADCAP may be used in an environment where administrative scoping is + not in use and TTL scoping is. Under these circumstances, a MADCAP + server MAY return a scope list that includes scopes with TTLs less + than 255. The MADCAP client MAY then allocate addresses from these + scopes, but MUST NOT set the TTL field of any packet sent to such an + address to a value greater than the maximum TTL indicated in the + scope list. In such an environment, it is recommended that the MADCAP + Server Multicast Addresses associated with the IPv4 Local Scope (or + SCOP 3 for IPv6) be configured using TTL thresholds so that packets + sent to these addresses with TTL of 16 are not sent outside an + appropriate boundary. This will allow MADCAP clients to use their + default behavior for finding MADCAP servers. + + In an environment where administrative scoping is in use, the maximum + TTLs in the scope list SHOULD be 255. The admin scope zone boundary + routers will prevent leakage of MADCAP packets beyond appropriate + limits. + +2.9. Locating MADCAP Servers + + There are several ways for a MADCAP client to locate a MADCAP server. + For instance, the client may be configured with an IP address. + + The RECOMMENDED technique is for the client to send an GETINFO + message to a MADCAP Server Multicast Address and wait for ACK + responses. This technique is described in more detail in the next + section. + +2.10. MADCAP Server Multicast Address + + Each multicast scope has an associated MADCAP Server Multicast + Address. This address has been reserved by the IANA as the address + with a relative offset of -1 from the last address of a multicast + scope. + + A MADCAP client looking for servers that can provide multicast + allocation services MAY send an GETINFO message to a MADCAP Server + Multicast Address. Any MADCAP servers listening to this address + SHOULD respond with a unicast ACK message to the client if they wish + to offer a response. + + + + + + +Hanna, et al. Standards Track [Page 22] + +RFC 2730 MADCAP December 1999 + + + The MADCAP Server Multicast Address used by a client MAY be + established by configuration. If a client has no such configuration, + it SHOULD use the MADCAP Server Multicast Address associated with + IPv4 Local Scope (or SCOP 3 for IPv6) with maximum TTL of 16, unless + otherwise configured. + +2.11. Going Beyond the Local Scope + + If a client receives no response to a message sent to a MADCAP Server + Multicast Address (after retransmission), it MAY send the message to + a larger scope and repeat this process as necessary. However, the + client MUST NOT send a MADCAP message to the MADCAP Server Multicast + Address associated with the global scope. + + This technique allows MADCAP servers to provide services for scopes + in which they do not reside. However, this is a dangerous and + complicated technique and is NOT RECOMMENDED at this time. + Therefore, MADCAP clients SHOULD only send multicast messages to the + MADCAP Server Multicast Address corresponding to the IPv4 Local Scope + (or SCOP 3, if using IPv6), unless configured otherwise. + + MADCAP servers that wish to provide services for scopes in which they + do not reside MUST make special efforts to ensure that their services + meet clients' needs for largely conflict-free allocation and accurate + scope list information. In particular, coordinating with other + servers that provide services for this scope may be difficult. Also, + establishing which scope the client is in may be difficult. If a + MADCAP server is not prepared to provide services for scopes in which + it does not reside, it SHOULD ignore DISCOVER and REQUEST messages + whose scope does not match or enclose the scope of the MADCAP Server + Multicast Address on which the request was received. It SHOULD also + ignore GETINFO messages that are not received on the MADCAP Server + Multicast Address for IPv4 Local Scope. + +2.12. Clock Skew + + The Current Time option is used to detect and handle clock skew + between MADCAP clients and servers. This option MUST be included in + any MADCAP message that includes an absolute time (such as the Start + Time option). It MAY be included in any DISCOVER, OFFER, REQUEST, + RENEW, or ACK message. + + Clock skew is a situation where two systems have clocks that are not + synchronized. Many protocols (such as DHCP) ignore clock skew by + using relative times. MADCAP could use a similar technique, but this + leads to nasty situations due to the way multicast addresses are + used. + + + + +Hanna, et al. Standards Track [Page 23] + +RFC 2730 MADCAP December 1999 + + + For example, assume that at 1 PM UTC a client whose clock is one hour + fast requests a lease for one hour starting in one hour. If we were + using relative times for MADCAP, the server, whose clock is set + correctly, would reserve a multicast address for 2 to 3 PM UTC and + grant the request. If the client was the only one using the lease, + everything would be OK. The client would start using the lease in one + hour and continue for one hour. This would coincide with the time the + server had reserved (although the client would think it was 3 to 4 PM + UTC). + + However, multicast addresses are usually used by several parties at + once. The client would probably use SAP (or some other mechanism for + conveying SDP) to advertise a session using the multicast address + just leased. SDP uses absolute times, since it may be sent via email, + web, or other store-and-forward mechanisms. So the client would + advertise the session as running from 3 to 4 PM UTC. Any clients + whose clocks are set correctly would use the address during this + interval. Since the server only reserved the address from 2 to 3 PM + UTC, this might cause the address to be used for multiple sessions + simultaneously. + + MADCAP cannot solve all clock skew problems. That is the domain of + NTP [4]. However, it does attempt to detect substantial clock skew + between MADCAP clients and servers so that this clock skew does not + cause massive collisions in multicast address usage later on. + + The Current Time option contains the sender's opinion of the current + time in UTC at or about the time the message was assembled. Because + of delays in transmission and processing, this value will rarely + match the receiver's opinion of the current time at the time the + option is processed by the receiver. However, difference greater than + a minute or two probably indicate clock skew between the sender and + the receiver. + + MADCAP servers SHOULD expect and tolerate a small amount of clock + skew with their clients by ensuring that multicast addresses are + allocated for an extra period of time [EXTRA-ALLOCATION-TIME] on + either side of the lease given to the client. However, large amounts + of clock skew require special handling. The value of [EXTRA- + ALLOCATION-TIME] MUST be a configurable parameter, since local + circumstances may vary. The RECOMMENDED default is one hour. + + However, large amounts of clock skew will cause problems later when + sessions are advertised. If a MADCAP server detects clock skew + greater than [CLOCK-SKEW-ALLOWANCE], it MUST generate and process an + Excessive Clock Skew error, as described in section 2.6. The server + MAY also log a message. The value of [CLOCK-SKEW-ALLOWANCE] MUST be a + configurable parameter, since local circumstances may vary. The + + + +Hanna, et al. Standards Track [Page 24] + +RFC 2730 MADCAP December 1999 + + + RECOMMENDED default is 30 minutes. + +2.13. Optional Features + + Each MADCAP client or server MAY implement one or more optional + features. Optional features of MADCAP are identified with a two + octet feature code. + + A MADCAP client MAY request, require, or indicate support for an + optional feature by including a Feature List option in a message. For + more information about optional features, see the description of the + Feature List option. + + Table 4 lists the feature codes defined at this time and sections + 2.13.1 and 2.13.2 describe how these features work. + + New MADCAP feature codes may only be defined by IETF Consensus, as + described in section 5. + + Feature Code Feature Name + ------------ ------------ + 0 Server Mobility + 1 Retry After + 2 Shared Lease Identifier + + Table 4: MADCAP Feature Codes + +2.13.1. Server Mobility + + The Server Mobility feature allows an address allocated on one MADCAP + server to be renewed or released on a different MADCAP server. This + requires communication and coordination among MADCAP servers. The + primary benefits are immunity to the failure of a single MADCAP + server and perhaps greater performance through load balancing. + + In order to take advantage of the Server Mobility feature, a MADCAP + client must ensure that the feature is implemented by both the server + that is used for the original allocation and the server that is used + for the renewal or release. The best way to ensure this is to include + the Server Mobility feature in the required list of a Feature List + option in the REQUEST message used to allocate the address (and the + DISCOVER message, if one is used). When the time comes to renew or + release the address, the client SHOULD send a unicast RENEW or + RELEASE message to the server from which it allocated the address. + However, if this server is unavailable, the client MAY send the RENEW + or RELEASE message to any other server that includes the Server + Mobility feature in its list of supported features. The client can + find such a server by (for instance) sending an GETINFO message with + + + +Hanna, et al. Standards Track [Page 25] + +RFC 2730 MADCAP December 1999 + + + an Option Request List option that includes the Feature List option + code. + + If the MADCAP client does not want to require this feature when + allocating addresses, it may include the feature in the requested + list of a Feature List option and see if the server includes the + feature in the required list of a Feature List option in the ACK + message. + + Even if the Server Mobility feature is used, there is no guarantee + that a server will be available to perform the renewal or release or + that the renewal or release will succeed. Server connectivity may + have failed, for instance. + +2.13.2. Retry After + + The Retry After feature allows a MADCAP server to ask the MADCAP + client to retry its request later, as may be required when allocating + large numbers of addresses or allocating addresses for a long period + of time. + + For instance, if a MADCAP client requests 1000 addresses, + administrative approval may be required or allocation of more + addresses from another MASC domain may be necessary. This may take + several hours or several days. If the MADCAP client and server both + support the Retry After feature, the MADCAP server can send back an + ACK message with a Retry Time option indicating when the addresses + may be ready. The client can retry its request after the Retry Time + to get the addresses. + + If a MADCAP client includes the Retry After feature in the supported + list of a Feature List option in a REQUEST message, a MADCAP server + that supports the Retry After feature MAY decide to begin a lengthy + allocation process. In this case, the MADCAP server will include an + empty List of Address Ranges option in its ACK message, a Feature + List option that includes the Retry After feature in the required + list, and a Retry Time option with a time after which the client + should retry the REQUEST. + + The client MUST NOT include the Retry After feature in the requested + or required list of a Feature List option, since the decision about + whether Retry After is desirable should be left to the MADCAP server. + + + + + + + + + +Hanna, et al. Standards Track [Page 26] + +RFC 2730 MADCAP December 1999 + + + At some later time (preferably after the time indicated in the Retry + Time option), the client SHOULD send a REQUEST message with all the + same options as the original REQUEST message (especially the Lease + Identifier option), but with a new xid value. The server MAY return + a normal ACK or NAK message at this point or it MAY continue the + transaction to a later time by including an empty List of Address + Ranges option in its ACK message, a Feature List option that includes + the Retry After feature in the required list, and a Retry Time option + with a later time after which the client should retry the REQUEST. + + At any point after receiving the initial ACK message with the Retry + Time option, the client MAY terminate the allocation process and any + accompanying lease by sending to the server performing the allocation + (or another server if the Server Mobility feature is also in effect) + a RELEASE message with the Lease Identifier included in the original + REQUEST message. + + The Retry After feature may also be used when renewing a lease. In + this case, the description above applies except that the client sends + a RENEW message instead of a REQUEST message. + + If a client sends a RENEW message with a Lease Identifier that + matches a lease which is currently undergoing allocation with the + Retry After feature in response to a REQUEST message, the server MUST + generate and process an Invalid Request error in the manner described + in section 2.6. Also, if a client sends a RENEW message with a Lease + Identifier that matches a lease which is currently undergoing + allocation with the Retry After feature in response to a RENEW + message, but the options supplied with the two RENEW messages do not + match, the server MUST generate and process an Invalid Request error + in the manner described in section 2.6. + + Note that the Retry After feature may complicate the application API. + For this reason, a MADCAP client may request the Retry After feature + for some messages and not for others. This should not cause problems + for a robust MADCAP server. In general, servers should not expect + consistent behavior from clients except as required by this + specification. This also applies to clients' expectations. + +2.13.3. Shared Lease Identifier + + For conferencing applications, it may be desirable to allow + conference participants to modify a lease used for the conference. + The Shared Lease Identifier feature code is used to support this + requirement. + + + + + + +Hanna, et al. Standards Track [Page 27] + +RFC 2730 MADCAP December 1999 + + + If this feature code was requested by the client and implemented by + the server when the lease was allocated, the server SHOULD disable + any authentication requirements pertaining to this lease, allowing + any client that knows the Lease Identifier to modify the lease. + + A MADCAP client wishing to use the Shared Lease Identifier feature + should include this feature in the requested or required lists of the + Feature List option of a REQUEST message when first allocating the + lease. If the feature was required, the server SHOULD try to + implement it for this request and include the feature in the required + list of the response. If the server can not implement the feature for + this request, it MUST generate and process a Required Feature Not + Supported error in the manner described in section 2.6. If the + feature was requested, the server SHOULD try to implement the feature + and include the feature in the required list of the response. + However, if the server cannot implement the feature, it may simply + skip it. + + Subsequent requests pertaining to a lease for which the Shared Lease + Identifier feature was implemented at allocation time MAY include the + Shared Lease Identifier feature in the requested or required lists of + the Feature List option. In this case, the server SHOULD try to + implement the feature by disabling any authentication requirements + pertaining to this lease, allowing any client that knows the Lease + Identifier to modify the lease, and including the feature in the + required list of the response. If the server cannot implement the + feature, it SHOULD skip it if the feature was requested. But if the + feature was required and the server cannot implement it, the server + MUST generate and process a Required Feature Not Supported error in + the manner described in section 2.6. + +3. MADCAP Options + + As described earlier, each MADCAP message includes an options field + consisting of a list of tagged parameters that are called "options". + All options consist of a two octet option code and a two octet option + length, followed by the number of octets specified by the option + length. + + This section defines a set of option codes for use in MADCAP + messages. New options may be defined using the process defined in + section 5. The options are listed in numerical order. + + + + + + + + + +Hanna, et al. Standards Track [Page 28] + +RFC 2730 MADCAP December 1999 + + + Table 5 summarizes which options are allowed with each message type. + + Option GETINFO ACK (in response to GETINFO) + ------ ------ --------------------------- + Lease Time MUST NOT MUST NOT + Server Identifier MUST NOT MUST + Lease Identifier MUST MUST + Multicast Scope MUST NOT MUST NOT + Option Request List MUST MUST NOT + Start Time MUST NOT MUST NOT + Number of Addresses + Requested MUST NOT MUST NOT + Requested Language MAY MUST NOT + Multicast Scope List MUST NOT MAY + List of Address Ranges MUST NOT MUST NOT + Current Time MUST NOT MAY + Feature List MAY MAY + Retry Time MUST NOT MUST NOT + Minimum Lease Time MUST NOT MUST NOT + Maximum Start Time MUST NOT MUST NOT + Error MUST NOT MUST NOT + + Option DISCOVER OFFER + ------ -------- ----- + Lease Time MAY MUST + Server Identifier MUST NOT MUST + Lease Identifier MUST MUST + Multicast Scope MUST MUST + Option Request List MUST NOT MUST NOT + Start Time MAY MAY + Number of Addresses + Requested MAY MUST NOT + Requested Language MUST NOT MUST NOT + Multicast Scope List MUST NOT MUST NOT + List of Address Ranges MAY MAY + Current Time MAY MAY + Feature List MAY MAY + Retry Time MUST NOT MUST NOT + Minimum Lease Time MAY MUST NOT + Maximum Start Time MAY MUST NOT + Error MUST NOT MUST NOT + + + + + + + + + + +Hanna, et al. Standards Track [Page 29] + +RFC 2730 MADCAP December 1999 + + + Option REQUEST ACK (in response to REQUEST) + ------ ------- ---------------------------- + Lease Time MAY MUST + Server Identifier MUST (if MUST + multicast) + Lease Identifier MUST MUST + Multicast Scope MUST MUST + Option Request List MUST NOT MUST NOT + Start Time MAY MAY + Number of Addresses + Requested MAY MUST NOT + Requested Language MUST NOT MUST NOT + Multicast Scope List MUST NOT MUST NOT + List of Address Ranges MAY MUST + Current Time MAY MAY + Feature List MAY MAY + Retry Time MUST NOT MAY + Minimum Lease Time MAY MUST NOT + Maximum Start Time MAY MUST NOT + Error MUST NOT MUST NOT + + Option RENEW ACK (in response to RENEW) + ------ ----- -------------------------- + Lease Time MAY MUST + Server Identifier MUST NOT MUST + Lease Identifier MUST MUST + Multicast Scope MUST NOT MUST + Option Request List MUST NOT MUST NOT + Start Time MAY MAY + Number of Addresses + Requested MUST NOT MUST NOT + Requested Language MUST NOT MUST NOT + Multicast Scope List MUST NOT MUST NOT + List of Address Ranges MUST NOT MUST + Current Time MAY MAY + Feature List MAY MAY + Retry Time MUST NOT MAY + Minimum Lease Time MAY MUST NOT + Maximum Start Time MAY MUST NOT + Error MUST NOT MUST NOT + + + + + + + + + + + +Hanna, et al. Standards Track [Page 30] + +RFC 2730 MADCAP December 1999 + + + Option RELEASE ACK (in response to RELEASE) + ------ ------- ---------------------------- + Lease Time MUST NOT MUST NOT + Server Identifier MUST NOT MUST + Lease Identifier MUST MUST + Multicast Scope MUST NOT MUST NOT + Option Request List MUST NOT MUST NOT + Start Time MUST NOT MUST NOT + Number of Addresses + Requested MUST NOT MUST NOT + Requested Language MUST NOT MUST NOT + Multicast Scope List MUST NOT MUST NOT + List of Address Ranges MUST NOT MUST NOT + Current Time MUST NOT MUST NOT + Feature List MAY MAY + Retry Time MUST NOT MUST NOT + Minimum Lease Time MUST NOT MUST NOT + Maximum Start Time MUST NOT MUST NOT + Error MUST NOT MUST NOT + + Option NAK + ------ --- + Lease Time MUST NOT + Server Identifier MUST + Lease Identifier MUST + Multicast Scope MUST NOT + Option Request List MUST NOT + Start Time MUST NOT + Number of Addresses + Requested MUST NOT + Requested Language MUST NOT + Multicast Scope List MUST NOT + List of Address Ranges MUST NOT + Current Time MUST NOT + Feature List MAY + Retry Time MUST NOT + Minimum Lease Time MUST NOT + Maximum Start Time MUST NOT + Error MUST + + Table 5: Options allowed in MADCAP messages + +3.1. End + + The End option marks the end of valid information in the options + field. This option MUST be included at the end of the options field + in each MADCAP message. + + + + +Hanna, et al. Standards Track [Page 31] + +RFC 2730 MADCAP December 1999 + + + The code for this option is 0, and its length is 0. + + Code Len + +-----+-----+-----+-----+ + | 0 | 0 | + +-----+-----+-----+-----+ + +3.2. Lease Time + + This option is used in a client request (DISCOVER, REQUEST, or RENEW) + to allow the client to request a lease time for the multicast + address. In a server reply (OFFER or ACK), a MADCAP server uses this + option to specify the lease time it is willing to offer. + + The time is in units of seconds, and is specified as a 32-bit + unsigned integer. + + The code for this option is 1, and its length is 4. + + Code Len Lease Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 1 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + 3.3. Server Identifier + + This option contains the IP address of a MADCAP server. A two octet + address family number (as defined by IANA, including those defined in + [10]) is stored first, followed by the address. The address family + for this address is not determined by the addrfamily field in the + fixed header so that addresses from one family may be allocated while + communicating with a server via addresses of another family. + + All messages sent by a MADCAP server MUST include a Server Identifier + option with the IP address of the server sending the message. + + MADCAP clients MUST include a Server Identifier option in multicast + REQUEST messages in order to indicate which OFFER message has been + accepted. + + The code for this option is 2, and its minimum length is 3. + + Code Len Address Family Address + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + | 2 | n | family | a1 | ... | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + + + + + +Hanna, et al. Standards Track [Page 32] + +RFC 2730 MADCAP December 1999 + + +3.4. Lease Identifier + + This option is used by MADCAP clients to specify a unique lease + identifier. For more information about this option and how it is + used, see section 2.4. + + The code for this option is 3, and its minimum length is 1. + + Code Len Lease Identifier + +-----+-----+-----+-----+-----+-----+--- + | 3 | n | i1 | i2 | ... + +-----+-----+-----+-----+-----+-----+--- + +3.5. Multicast Scope + + The multicast scope option is used by the client to indicate the + requested multicast scope in a DISCOVER or REQUEST message. It is + also used by the MADCAP server to indicate the scope of an assigned + address. + + The client may obtain the scope list through the Multicast Scope List + option or using some other means. The Scope ID is the first multicast + address in the scope. The address family of the Scope ID is + determined by the addrfamily field in the fixed header. + + The code for this option is 4, and its minimum length is 1. + + Code Len Scope ID + +-----+-----+-----+-----+-----+----- + | 4 | n | i1 | ... + +-----+-----+-----+-----+-----+----- + +3.6. Option Request List + + This option is used by a MADCAP client in an GETINFO message to + request that certain options be included in the server's ACK + response. The server SHOULD try to include the specified options in + its response, but is not required to do so. + + The format of this option is a list of option codes. + + The code for this option is 5 and the minimum length is 2. + + Code Len Requested Options + +-----+-----+-----+-----+-----+-----+---... + | 5 | n | Option1 | + +-----+-----+-----+-----+-----+-----+---... + + + + +Hanna, et al. Standards Track [Page 33] + +RFC 2730 MADCAP December 1999 + + +3.7. Start Time + + The Start Time option specifies the starting time for a multicast + address lease. + + A client may include this option in a DISCOVER, RENEW, or REQUEST + message to request a multicast address for use at a future time. A + server may include this option in an OFFER message or in an ACK in + response to REQUEST or RENEW message to indicate that a lease has + been granted which starts at a future time. + + If the Start Time option is present, the IP Address Lease Time option + specifies the duration of the lease beginning at the Start Time + option value. + + If the Start Time option is present, the Current Time option MUST + also be present, as described in section 2.12. + + The time value is an unsigned 32 bit integer in network byte order + giving the number of seconds since 00:00 UTC, 1st January 1970. This + can be converted to an NTP timestamp by adding decimal 2208988800. + This time format will not wrap until the year 2106. + + The code for this option is 6 and the length is 4. + + + Code Len Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 6 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + +3.8. Number of Addresses Requested + + This option specifies the minimum and desired number of addresses + requested by the client. It is only used in DISCOVER and REQUEST + messages and is only sent by the client. + + The minimum and desired number of addresses requested are unsigned 16 + bit integers in network byte order. The minimum MUST be less than or + equal to the desired number. If a message is received where this is + not the case, the MADCAP server MUST generate and process an Invalid + Request error in the manner described in section 2.6. + + The client MAY obtain more than one address either by repeating the + protocol for every address or by requesting several addresses at the + same time via this option. When the client is requesting only one + address, this option SHOULD NOT be included. A MADCAP server + + + + +Hanna, et al. Standards Track [Page 34] + +RFC 2730 MADCAP December 1999 + + + receiving a DISCOVER or REQUEST packet including this option MUST + include between the minimum and desired number of addresses in any + OFFER or ACK response. + + The code for this option is 7 and the length is 4. + + Code Len Minimum Desired + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 7 | 4 | min | desired | + +-----+-----+-----+-----+-----+-----+-----+-----+ + +3.9. Requested Language + + This option specifies the language in which the MADCAP client would + like strings such as zone names to be returned. It is only included + in an GETINFO message sent by the client. It is an RFC 1766 [6] + language tag. The proper way to handle this tag with respect to zone + names is discussed further in the definition of the Multicast Scope + List option. + + The code for this option is 8 and the minimum length is 0. + + Code Len Language Tag + +-----+-----+-----+-----+-----+-...-+-----+ + | 8 | n | L1 | | Ln | + +-----+-----+-----+-----+-----+-...-+-----+ + +3.10. Multicast Scope List + + This option is sent by the server in an ACK message in response to an + GETINFO message sent by the client. + + If the client did not include a Requested Language option in its + GETINFO message, the MADCAP server SHOULD return all zone names for + each zone. If the client included a Requested Language option in its + GETINFO message, the MADCAP server MUST return no more than one zone + name for each zone. For each zone, the MADCAP server SHOULD first + look for a zone name that matches the requested language tag (using a + case-insensitive ASCII comparison). If any names match, one of them + should be returned. Otherwise, the MADCAP server SHOULD choose + another zone name to return (if any are defined). It SHOULD give + preference to zone names that are marked to be used if no name is + available in a desired language. + + + + + + + + +Hanna, et al. Standards Track [Page 35] + +RFC 2730 MADCAP December 1999 + + + The code for this option is 9 and the minimum length is 0. + + The format of the multicast scope list option is: + + Code Len Count Scope List + +-----+-----+-----+-----+-----+-----+-...-+-----+ + | 9 | p | m | L1 | | Lm | + +-----+-----+-----+-----+-----+-----+-...-+-----+ + + The scope list is a list of m tuples, where each tuple is of the + form: + + Scope ID Last Address TTL Name Encoded Name List + Count + +---+--...--+---+---+--...--+---+-----+-----+-----+-...-+-----+ + | ... ID ... | ... Last ... | T | n | EN1 | | ENn | + +---+--...--+---+---+--...--+---+-----+-----+-----+-...-+-----+ + + where Scope ID is the first multicast address in the scope, Last + Address is the last multicast address in the scope, TTL is the + multicast TTL value for the multicast addresses of the scope, and + Name Count is the number of encoded names for this zone (which may be + zero). The address family of the Scope ID and Last Address is + determined by the addrfamily field in the fixed header. Note that a + particular MADCAP server may be allocating addresses out of some + subset of the scope. For instance, the addresses in the scope may be + divided among several servers in some way. + + Each encoded name is of the form + + Name Lang Language Tag Name Name + Flags Length Length + +-----+-----+-----+-...-+-----+-----+-----+-...-+-----+ + | F | q | L1 | | Lq | r | N1 | | Nr | + +-----+-----+-----+-...-+-----+-----+-----+-...-+-----+ + + where Name Flags is a flags field with flags defined below, Lang + Length is the length of the Language Tag in octets (which MUST NOT be + zero), Language Tag is a language tag indicating the language of the + zone name (as described in [6]), Name Length is the length of the + Name in octets (which MUST NOT be zero), and Name is a UTF-8 [5] + string indicating the name given to the scope zone. + + The high bit of the Name Flags field is set if the following name + should be used if no name is available in a desired language. + Otherwise, this bit is cleared. All remaining bits in the octet + SHOULD be set to zero and MUST be ignored. + + + + +Hanna, et al. Standards Track [Page 36] + +RFC 2730 MADCAP December 1999 + + + The Scope IDs of entries in the list MUST be unique and the scopes + SHOULD be listed from smallest (topologically speaking) to largest. + This makes it easier to display a consistent user interface, with + scopes usually keeping the same order. However, scopes may not be + strictly nested. In this circumstance, there is no strict ordering + from smallest to largest and the server must use another technique + for ordering the scope list. + + Example: + + There are two scopes supported by the multicast address allocation + server: Inside abcd.com with addresses 239.192.0.0-239.195.255.255, + and world with addresses 224.0.1.0-238.255.255.255. Then this option + will be given as: + + Code Len Count + +-----+-----+-----+-----+-----+... + | 9 | 51 | 2 | + +-----+-----+-----+-----+-----+... + + Scope ID Last Address TTL Name Name Lang Language + Count Flags Length Tag + +---+---+---+---+---+---+---+---+---+-----+-----+------+-...-+... + |239|192| 0 | 0 |239|195|255|255|10 | 1 | 128 | 2 | en | + +---+---+---+---+---+---+---+---+---+-----+-----+------+-...-+... + + Name + Length Name + +------+--+--+-...-+--+--+... + | 15 | Inside abcd.com | + +------+--+--+-...-+--+--+... + + Scope ID Last Address TTL Name Name Lang Language + Count Flags Length Tag + +---+---+---+---+---+---+---+---+---+-----+-----+------+-...-+... + |224| 0 | 1 | 0 |238|255|255|255|16 | 1 | 128 | 2 | en | + +---+---+---+---+---+---+---+---+---+-----+-----+------+-...-+... + + Name + Length Name + +------+--...--+ + | 5 | world | + +------+--...--+ + + + + + + + + +Hanna, et al. Standards Track [Page 37] + +RFC 2730 MADCAP December 1999 + + +3.11. List of Address Ranges + + This option is used by the server to provide the list of all the + address ranges allocated to the client. + + This option is also used by the client when requesting a lease for a + specific set of addresses. This feature should be needed only rarely, + such as when a lease is accidentally allowed to expire and it needs + to be reallocated. + + The address family of the addresses is determined by the addrfamily + field. + + The code for this option is 10 and the minimum length is 0. + + Code Len Address Range List + +-----+-----+-----+-----+-----+-----+-...-+-----+ + | 10 | n | L1 | L2 | | Ln | + +-----+-----+-----+-----+-----+-----+-...-+-----+ + + where the Address Range List is of the following format. + + StartAddress1 BlockSize1 StartAddress2 BlockSize2 ... + +---+---+---+---+---+---+---+---+---+---+---+---+--...--+ + | ... S1 ... |B11|B12| ... S2 ... |B21|B22| | + +---+---+---+---+---+---+---+---+---+---+---+---+--...--+ + +3.12. Current Time + + This option is used to express what the sender thinks the current + time is. This is useful for detecting clock skew. This option MUST be + included if the Start Time or Maximum Start Time options are used, as + described in section 2.12. + + The time value is an unsigned 32 bit integer in network byte order + giving the number of seconds since 00:00 UTC, 1st January 1970. This + can be converted to an NTP [4] timestamp by adding decimal + 2208988800. This time format will not wrap until the year 2106. + + The code for this option is 11 and the length is 4. + + Code Len Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 11 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + + + + + + +Hanna, et al. Standards Track [Page 38] + +RFC 2730 MADCAP December 1999 + + +3.13. Feature List + + This option lists optional MADCAP features supported, requested, or + required, by the sender. This option MAY be included in any message + sent by a MADCAP server or client. + + Optional features of MADCAP are identified with a two octet feature + code. New MADCAP feature codes may only be defined by IETF + Consensus, as described in section 5. + + The Feature List option consists of three separate lists: supported + features, requested features, and required features. Each list + consists of an unordered list of feature codes. The supported list is + used by MADCAP clients or servers to indicate the features that the + sender supports. The requested and required lists are used by MADCAP + clients to indicate which features are requested of or required from + a MADCAP server. The required list is used by MADCAP servers to + indicate which features were implemented by the MADCAP server in + processing this message. Messages sent by MADCAP servers MUST NOT + include any feature codes in the requested list. + + If a MADCAP client includes the Feature List option in a message, it + MAY include features in any of the lists: supported, requested, and + required. If a MADCAP server receives a message containing the + Feature List option and it does not support all of the features in + the required list, it MUST generate and process a Required Feature + Not Supported error in the manner described in section 2.6. If the + server supports all of the features in the required list, it MUST + implement them as appropriate for this message. It SHOULD try to + implement the features in the requested list and it MAY implement any + of the features in the supported list. If an optional feature (such + as Retry After) is not included in any part of the Feature List + option included in the client's message (or if the client does not + include a Feature List option in its message), the server MUST NOT + use that feature in its response. + + If a MADCAP server does respond to a client's message that includes a + Feature List option, the server MUST include a Feature List option + with a supported features list that lists the features that it + supports, a required features list that lists the features that it + implemented in responding to this message (which must be included in + the supported features list of the client's Feature List option), and + an empty requested features list. + + + + + + + + +Hanna, et al. Standards Track [Page 39] + +RFC 2730 MADCAP December 1999 + + + The code for this option is 12 and the minimum length is 6. + + Code Len Supported Requested Required + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + | 12 | n | FL1 | FL2 | FL3 | + +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+ + + where each of the Feature Lists is of the following format: + + Feature Feature Feature + Count Code 1 Code m + +-----+-----+-----+-----+-...-+-----+-----+ + | m | FC1 | | FCm | + +-----+-----+-----+-----+-...-+-----+-----+ + +3.14. Retry Time + + The Retry Time option specifies the time at which a client should + retry a REQUEST or RENEW message when using the Retry After feature. + + This option should only be sent by a MADCAP server in an ACK when + responding to a REQUEST or RENEW message that includes the Retry + After feature in the supported, requested, or required list. For more + discussion of Retry After, see section 2.13.2. + + If the Retry Time option is present, the Current Time option MUST + also be present. + + The time value is an unsigned 32 bit integer in network byte order + giving the number of seconds since 00:00 UTC, 1st January 1970. This + can be converted to an NTP timestamp by adding decimal 2208988800. + This time format will not wrap until the year 2106. + + The code for this option is 13 and the length is 4. + + Code Len Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 13 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + +3.15. Minimum Lease Time + + This option is used in a client request (DISCOVER, REQUEST, or RENEW) + to allow the client to specify a minimum lease time for the multicast + address. If a server cannot meet this minimum lease time, it MUST + generate and process a Valid Request Could Not Be Completed error in + the manner described in section 2.6. + + + + +Hanna, et al. Standards Track [Page 40] + +RFC 2730 MADCAP December 1999 + + + The time is in units of seconds, and is specified as a 32-bit + unsigned integer. + + The code for this option is 14, and its length is 4. + + Code Len Lease Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 14 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + +3.16. Maximum Start Time + + The Maximum Start Time option specifies the latest starting time that + the client is willing to accept for a multicast address lease. + + A client may include this option in a DISCOVER, RENEW, or REQUEST + message to specify that it does not want to receive a lease with a + starting time later than the specified value. If a server cannot meet + this maximum start time, it MUST generate and process a Valid Request + Could Not Be Completed error in the manner described in section 2.6. + + If the Maximum Start Time option is present, the Current Time option + MUST also be present, as described in section 2.12. + + The time value is an unsigned 32 bit integer in network byte order + giving the number of seconds since 00:00 UTC, 1st January 1970. This + can be converted to an NTP timestamp by adding decimal 2208988800. + This time format will not wrap until the year 2106. + + The code for this option is 15 and the length is 4. + + Code Len Time + +-----+-----+-----+-----+-----+-----+-----+-----+ + | 15 | 4 | t1 | t2 | t3 | t4 | + +-----+-----+-----+-----+-----+-----+-----+-----+ + +3.17. Error + + A MADCAP server includes this option in a NAK message to indicate why + the request failed. A MADCAP server MUST include an Error option in + each NAK message. + + The first two octets of an Error option contain a MADCAP error code. + Several MADCAP error codes are defined later in this section. New + MADCAP error codes may only be defined by IETF Consensus, as + described in section 5. + + + + + +Hanna, et al. Standards Track [Page 41] + +RFC 2730 MADCAP December 1999 + + + Any remaining octets in the Error option contain extra data about the + error. The format of this data depends on the error code. The + definition of a MADCAP error code must include a definition of the + extra data to be included with that error code. + + A client that receives a NAK message containing an Error option MAY + log or display a message indicating the error code and extra data + received. The client MUST NOT retransmit a message once a NAK + response to that message has been received. The client MAY adjust the + message to correct the error and send the corrected message or send a + message to a different server. + + The code for this option is 16, and the minimum length is 2. + + Code Len Error Code Extra Data + +-----+-----+-----+-----+-----+-----+-----+-----+ ... + | 16 | n | ecode | d1 d2 + +-----+-----+-----+-----+-----+-----+-----+-----+ ... + +3.17.1. Valid Request Could Not Be Completed + + MADCAP error code 0 indicates that the request was valid, but could + not be completed with the available addresses and the current + configuration. The extra data is a two octet option code indicating + which option caused the problem. A value of 0xFFFF indicates that the + problem was not with a specific option. + +3.17.2. Invalid Request + + MADCAP error code 1 indicates that the request was malformed or + invalid in some other manner. The extra data is a two octet option + code indicating which option caused the problem. A value of 0xFFFF + indicates that the problem was not with a specific option. + +3.17.3. Excessive Clock Skew + + MADCAP error code 2 indicates excessive clock skew (see section + 2.12). The extra data consists of a four octet time value + representing the server's idea of the current time, an unsigned 32 + bit integer in network byte order giving the number of seconds since + 00:00 UTC, 1st January 1970. This can be converted to an NTP + timestamp by adding decimal 2208988800. This time format will not + wrap until the year 2106. + + + + + + + + +Hanna, et al. Standards Track [Page 42] + +RFC 2730 MADCAP December 1999 + + +3.17.4. Lease Identifier Not Recognized + + MADCAP error code 3 indicates that the Lease Identifier was not + recognized (usually in response to a RENEW or RELEASE message). There + is no extra data. + +3.17.5. Required Feature Not Supported + + MADCAP error code 4 indicates that at least one feature included in + the required list of the Feature List option is not supported. The + extra data contains a list of the feature codes in the required list + that are not supported. + +3.17.6. Experimental Use + + MADCAP error codes 1024-2047 are reserved for experimental use. The + format of the extra data included with these error codes is not + defined. + +4. Security Considerations + + MADCAP has relatively basic security requirements. At present there + is no way of enforcing authorized use of multicast addresses in the + multicast routing/management protocols. Therefore, it is not + possible to identify unauthorized use of multicast address by an + adversary. Moreover, a multicast address allocated to a user/system + can be used by other systems without violating terms of the multicast + address allocation. For example, a system may reserve an address to + be used for a work group session where each and every member of the + work group is allowed to transmit packets using the allocated group + address. In other words, the multicast address allocation protocol + does not dictate how the address should be used, it only dictates the + time period for which it can be used and who gets to release it or + renew it. When an address is allocated to a system/user, it basically + means that no other user/system (most likely) will be allocated that + address for the time period, without any restrictions on its use. + + To protect against rogue MADCAP servers (mis-configured servers and + intentional), clients in certain situations would like to + authenticate the server. Similarly, for auditing or book-keeping + purposes, the server may want to authenticate clients. Moreover, in + some cases, the server may have certain policies in place to restrict + the number of addresses that are allocated to a system or a user. + This feature is of much value when a well behaved but naive user or + client requests a large number of addresses, and therefore, + inadvertently impacts other users or systems. Therefore, an + administrator may want to exert a limited amount of control based on + the client identification. The client identification could be based + + + +Hanna, et al. Standards Track [Page 43] + +RFC 2730 MADCAP December 1999 + + + on the system or user identity. In most practical situations, system + identification will suffice, however, particularly in case of multi- + user systems, at times, user identification will play an important + role. Therefore, authentication capabilities based on user + identification may be desirable. As usual, data integrity is a strong + requirement and if not protected, can lead to many problems including + denial of service attacks. + + In the case of MADCAP, confidentiality is not a strong requirement. + In most of the cases, at least when a multicast address is in use, an + adversary will be able to determine information that was contained in + the MADCAP messages. In some cases, the users/systems may want to + protect information in the MADCAP messages so that an adversary is + not able to determine relevant information in advance and thus, plan + an attack in advance. For example, if an adversary knows in advance + (based on MADCAP messages) that a particular user has requested a + large number of address for certain time period and scope, he may be + able to guess the purpose behind such request and target an attack. + When the Shared Lease Identifier feature is used, preserving the + confidentiality of MADCAP messages becomes more important. Also, + there may be features added to the protocol in the future that may + have stronger confidentiality requirements. + + The IPSEC protocol [8] meets client/server identification and + integrity protection requirements stated above, requires no + modification to the MADCAP protocol, and leverages extensive work in + IETF and industry. Therefore, when security is a strong requirement, + IPSEC SHOULD be used for protecting all the unicast messages of + MADCAP protocol. When IPSEC based security is in use, all the + multicast packets except GETINFO MUST be dropped by the MADCAP + server. The prevalent implementations of IPSEC support client + identification in form of system identification and do not support + user identification. However, when desired, IPSEC with appropriate + API's may be required to support user identification. + +5. IANA Considerations + + This document defines several number spaces (MADCAP options, MADCAP + message types, MADCAP Lease Identifier types, MADCAP features, and + MADCAP error codes). 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 [7]. Basically, this means that they + are defined by RFCs approved by the IESG. + + + + + + + + +Hanna, et al. Standards Track [Page 44] + +RFC 2730 MADCAP December 1999 + + +6. Acknowledgments + + The authors would like to thank Rajeev Byrisetty, Steve Deering, + Peter Ford, Mark Handley, Van Jacobson, David Oran, Thomas Pfenning, + Dave Thaler, Ramesh Vyaghrapuri and the participants of the IETF for + their assistance with this protocol. + + Much of this document is based on [1] and [2]. The authors of this + document would like to express their gratitude to the authors of + these previous works. Any errors in this document are solely the + fault of the authors of this document. + +7. References + + [1] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, + March 1997. + + [2] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor + Extensions", RFC 2132, March 1997. + + [3] Meyer, D., "Administratively Scoped IP Multicast", BCP 23, RFC + 2365, July 1998. + + [4] Mills, D., "Network Time Protocol (Version 3) Specification, + Implementation and Analysis", RFC 1305, March 1992. + + [5] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC + 2279, January 1998. + + [6] Alvestrand, H., "Tags for the Identification of Languages", RFC + 1766, March 1995. + + [7] Alvestrand, H. and T. Narten, "Guidelines for Writing an IANA + Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. + + [8] Atkinson, R. and S. Kent, "Security Architecture for the + Internet Protocol", RFC 2401, November 1998. + + [9] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [10] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, + October 1994. + + [11] Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC + 1112, August 1989. + + + + + +Hanna, et al. Standards Track [Page 45] + +RFC 2730 MADCAP December 1999 + + + [12] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) + Specification", RFC 2460, December 1998. + + [13] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 2373, July 1998. + + [14] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, + "RTP: A Transport Protocol for Real-Time Applications", RFC + 1889, January 1996. + +8. Authors' Addresses + + Stephen R. Hanna + Sun Microsystems, Inc. + One Network Drive + Burlington, MA 01803 + + Phone: +1.781.442.0166 + EMail: steve.hanna@sun.com + + + Baiju V. Patel + Intel Corp. + Mail Stop: AG2-201 + 5200 NE Elam Young Parkway + Hillsboro, OR 97124 + + Phone: 503 696 8192 + EMail: baiju.v.patel@intel.com + + + Munil Shah + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052 + + Phone: 425 703 3924 + EMail: munils@microsoft.com + + + + + + + + + + + + + +Hanna, et al. Standards Track [Page 46] + +RFC 2730 MADCAP December 1999 + + +APPENDIX A: Examples + + This appendix includes several examples of typical MADCAP protocol + exchanges. + +1. Multicast Scope List Discovery + + In this example, a MADCAP client wants to determine the scope list in + effect. The client is using IPv4, so it starts by multicasting an + GETINFO packet to the MADCAP Server Multicast Address corresponding + to IPv4 Local Scope. This packet includes the Lease Identifier + option, an Option Request List including the Multicast Scope List + option code, and a Requested Language option containing the string + "en", since the client is configured to prefer the English language. + + Two MADCAP servers respond by sending ACK messages. These ACK + messages include the Lease Identifier option and xid supplied by the + client, the server's Server Identifier, and the Multicast Scope List + with one name per scope (the one that most closely matches the + language tag "en"). + + The following figure illustrates this exchange. + + Server Client Server + v v v + | | | + | | | + | _____________/|\_____________ | + |/ GETINFO | GETINFO \| + | | | + | | | + |\ | ____________/| + | \_________ | / ACK | + | ACK \ |/ | + | \ | | + | | | + v v v + + Figure 2: Timeline diagram of messages exchanged + in Multicast Scope List Discovery example + +2. Multicast Discovery and Address Allocation + + In this example, the MADCAP client wants to allocate a multicast + address from the global scope for use during the next two hours. + + + + + + +Hanna, et al. Standards Track [Page 47] + +RFC 2730 MADCAP December 1999 + + + The client begins by multicasting a DISCOVER packet to the MADCAP + Server Multicast Address associated with IPv4 Local Scope. This + packet includes the Lease Time, Lease Identifier, and Multicast Scope + options. + + Any servers that receive the DISCOVER packet and can satisfy this + request temporarily reserve an address for the client and unicast an + OFFER packet to the client. These packets contain the Lease Time, + Server Identifier, Lease Identifier, and Multicast Scope options. + + After an appropriate delay, the client multicasts a REQUEST packet to + the MADCAP Server Multicast Address. This packet contains all of the + options included in the DISCOVER packet, but also includes the Server + Identifier option, indicating which server it has selected for the + request. + + The server whose Server Identifier matches the one specified by the + client responds with an ACK packet containing the options included in + the OFFER packet, as well as a List of Address Ranges option listing + the address allocated. All the other servers that had sent OFFER + packets stop reserving an address for the client and forget about the + whole exchange. + + The client now has a two hour "lease" on the multicast address. + + If the client had not received an ACK from the server, it would have + retransmitted its REQUEST packet for a while. If it still received no + response, it would start over with a new DISCOVER message. + + + + + + + + + + + + + + + + + + + + + + + +Hanna, et al. Standards Track [Page 48] + +RFC 2730 MADCAP December 1999 + + + The following figure illustrates this exchange. + + Server Client Server + (not selected) (selected) + v v v + | | | + |Begin multicast address request| + | | | + | _____________/|\_____________ | + |/ DISCOVER | DISCOVER \| + | | | + Reserves | Reserves + Address | Address + | | | + |\ | ____________/| + | \_________ | / OFFER | + | OFFER \ |/ | + | \ | | + | Collects replies | + | \| | + | Selects Server | + | | | + | _____________/|\_____________ | + |/ REQUEST | REQUEST \| + | | | + | | Commits address + | | | + | | _____________/| + | |/ ACK | + | | | + | assignment complete | + | | | + v v v + + Figure 3: Timeline diagram of messages exchanged + in Multicast Address Allocation example + +3. Lease Extension + + This is a continuation of the previous example. The client has + already allocated a multicast address from the global scope for use + during the next two hours. Half way through this two hour period, it + decides that it wants to extend its lease for another hour. + + The client unicasts a RENEW packet to the server from which it + allocated the address. This packet includes the Lease Time and Lease + Identifier options. The Lease Identifier matches the one used for the + original allocation. The time included in the Lease Time is two + + + +Hanna, et al. Standards Track [Page 49] + +RFC 2730 MADCAP December 1999 + + + hours, since the client wants the lease to expire two hours from the + current time. + + The server responds with an ACK packet indicating that the lease + extension has been granted. This packet includes the Lease Time, + Server Identifier, Lease Identifier, Multicast Scope, and List of + Address Ranges options. + + If the server did not want to grant the requested lease extension, it + would have responded with a NAK packet with the Lease Identifier + option. + + The following figure illustrates this exchange. + + Client Server + v v + | | + |\_____________ | + | RENEW \| + | | + | Extends lease + | | + | _____________/| + |/ ACK | + | | + | | + v v + + Figure 4: Timeline diagram of messages exchanged + in Lease Extension example + +4. Address Release + + This is a continuation of the previous example. The client has + already allocated a multicast address and extended its lease for + another two hours. Half an hour later, the client finishes its use of + the multicast address and wants to release it so it can be reused. + + The client unicasts a RELEASE packet to the server from which it + allocated the address. This packet includes the Lease Identifier + option. The Lease Identifier matches the one used for the original + allocation. When the server receives this packet, it cancels the + client's lease on the address and sends an ACK packet to the client + indicating that the lease has been released. This packet includes the + Server Identifier and Lease Identifier options. + + + + + + +Hanna, et al. Standards Track [Page 50] + +RFC 2730 MADCAP December 1999 + + + The following figure illustrates this exchange. + + Client Server + v v + | | + |\_____________ | + | RELEASE \| + | | + | Cancels lease + | | + | _____________/| + |/ ACK | + | | + v v + + Figure 5: Timeline diagram of messages exchanged + in Address Release example + +5. Unicast Address Allocation + + This is a continuation of the previous example. At some later time, + the client decides to allocate another multicast address. Since it + has recently worked with a server, it decides to try sending a + unicast REQUEST to that server. If this doesn't work, it can always + try a multicast DISCOVER, as illustrated in example 2. + + The client unicasts a REQUEST packet to the server from which it + wants to allocate the address. This packet includes the Lease Time, + Lease Identifier, and Multicast Scope options. + + The server responds with an ACK packet containing the Lease Time, + Lease Identifier, and Multicast Scope options from the REQUEST + packet, as well as the Server Identifier option and a List of Address + Ranges option listing the address allocated. + + The client now has a lease on the multicast address. + + If the client had not received an ACK from the server, it would have + retransmitted its REQUEST packet for a while. If it still received no + response, it would start over with a multicast DISCOVER message. + + + + + + + + + + + +Hanna, et al. Standards Track [Page 51] + +RFC 2730 MADCAP December 1999 + + + The following figure illustrates this exchange. + + + Client Server + v v + | | + |\_____________ | + | REQUEST \| + | | + | Allocates address + | | + | _____________/| + |/ ACK | + | | + v v + + Figure 6: Timeline diagram of messages exchanged + in Unicast Address Allocation example + +APPENDIX B: Recommended Constant Values + + Table 6 lists recommended values for constants defined in this + specification. + + Constant Name Recommended Value + ------------- ----------------- + [CLOCK-SKEW-ALLOWANCE] 30 minutes + [DISCOVER-DELAY] current retransmit delay + [EXTRA-ALLOCATION-TIME] 1 hour + [NO-RESPONSE-DELAY] 60 seconds + [OFFER-HOLD] at least 60 seconds + [RESPONSE-CACHE-INTERVAL] at least 60 seconds (5 minutes maximum) + [XID-REUSE-INTERVAL] 10 minutes (required) + + Table 6: Recommended Constant Values + + + + + + + + + + + + + + + + +Hanna, et al. Standards Track [Page 52] + +RFC 2730 MADCAP December 1999 + + +Full Copyright Statement + + Copyright (C) The Internet Society (1999). 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. + + + + + + + + + + + + + + + + + + + +Hanna, et al. Standards Track [Page 53] + |