rfc-2730

Multicast Address Dynamic Client Allocation Protocol (MADCAP)

S. Hanna, B. Patel, M. Shah
date1999-12 streamIETF areatsv wgmalloc statusPROPOSED STANDARD pages53 canonicalhttps://www.rfc-editor.org/rfc/rfc2730 doi10.17487/RFC2730
This document defines a protocol, Multicast Address Dynamic Client Allocation Protocol (MADCAP), that allows hosts to request multicast addresses from multicast address allocation servers. [STANDARDS-TRACK]

Extracted elements (28)

design-rationale §2.12

MADCAP uses absolute times rather than relative times for leases because multicast sessions are typically advertised via SAP/SDP, which uses absolute times and may be distributed via email or web. A client with a skewed clock using relative times could advertise a session window outside the server's reserved period, causing simultaneous use of addresses by multiple sessions.

multicast, realtime

design-rationale §1.4

MADCAP was originally based on DHCP but is completely separate with no dependencies between the two, despite some similarities. Code sharing between DHCP and MADCAP implementations may be possible but is not assumed.

multicast

design-rationale §1.5

The DISCOVER/OFFER/REQUEST three-way handshake allows a client to receive competing OFFERs from multiple servers simultaneously, choose the best one, and notify unchosen servers via a multicast REQUEST containing the selected Server Identifier so they can release their temporary address reservations.

multicast

interoperability-note §2.8

In environments using TTL scoping instead of administrative scoping, a client MUST NOT set the TTL of packets sent to an allocated address to a value greater than the maximum TTL indicated in the scope list. Administrative scope boundary routers are not present in such environments to prevent leakage.

multicast, ip

normative-requirement §2.11 MUST NOT

A MADCAP client MUST NOT send any MADCAP message to the MADCAP Server Multicast Address associated with the global scope. Clients SHOULD restrict multicast messages to the IPv4 Local Scope address (or SCOP 3 for IPv6) unless otherwise configured.

multicast

normative-requirement §2.2.4 MUST

A REQUEST message completing a DISCOVER transaction MUST be multicast to the same MADCAP Server Multicast Address used for DISCOVER and MUST include the Server Identifier of the selected server and the same Lease Identifier used in the DISCOVER. A standalone REQUEST MUST be unicast to the chosen server.

multicast

normative-requirement §2.2.5 MUST

ACK responding to a REQUEST MUST include Lease Time, Multicast Scope, and List of Address Ranges options. ACK responding to a RELEASE MUST include only Server Identifier and Lease Identifier. NAK MUST include an Error option with an error code and MUST NOT be retransmitted.

multicast

normative-requirement §2.1.5 MUST

All MADCAP clients and servers MUST recognize all options defined in this document. Unrecognized options MUST be ignored and the rest of the message processed normally. A MADCAP client MUST NOT include more than one option with the same option type in a single message.

multicast

normative-requirement §2.3 MUST

Clients MUST use an exponential backoff retransmission strategy. The recommended algorithm starts with a 4-second delay, doubling up to 16 seconds, with at most 3 retransmissions; if no response by t+60 seconds the client stops retransmitting. Retransmitted messages MUST be identical to the original (same xid and Lease Identifier).

multicast

normative-requirement §2.12 MUST

If a MADCAP server detects clock skew greater than [CLOCK-SKEW-ALLOWANCE] (recommended default 30 minutes), it MUST return an Excessive Clock Skew error. Servers MUST make EXTRA-ALLOCATION-TIME (recommended default 1 hour) and CLOCK-SKEW-ALLOWANCE configurable parameters.

multicast, ntp

normative-requirement §2 MUST

MADCAP server MUST listen on UDP port 2535. When sending a response to a client the server MUST use a destination port matching the source port used by the client in the triggering message.

multicast, udp

normative-requirement §2.1.4 MUST

The combination of xid, msgtype, and Lease Identifier MUST be unique across all messages received by a server within [XID-REUSE-INTERVAL] (10 minutes). A server receiving a message with the same triple within [RESPONSE-CACHE-INTERVAL] MUST treat it as a retransmission and resend the cached response; RESPONSE-CACHE-INTERVAL may range from 0 to 300 seconds but values under 60 seconds are NOT RECOMMENDED.

multicast

normative-requirement §2.1.1 MUST

The version field MUST be zero. Any message with a non-zero version MUST be ignored.

multicast

protocol-element §2.2

MADCAP defines 8 message types: DISCOVER (1), OFFER (2), REQUEST (3), RENEW (4), ACK (5), NAK (6), RELEASE (7), GETINFO (8). DISCOVER, REQUEST, RENEW, RELEASE, and GETINFO are client-only; OFFER, ACK, and NAK are server-only.

multicast

protocol-element §2.10

The MADCAP Server Multicast Address for each scope is the address at relative offset -1 from the last address of that scope, reserved by IANA. Clients SHOULD default to the address for IPv4 Local Scope (or SCOP 3 for IPv6) with maximum TTL of 16 when no configuration is present.

multicast, registry

protocol-element §2.13

Three optional feature codes: Server Mobility (0) allows renew/release on a different server than the one that allocated; Retry After (1) lets servers defer large allocations; Shared Lease Identifier (2) allows any client knowing the Lease Identifier to modify the lease, intended for conferencing.

multicast

protocol-element §2.4

Two Lease Identifier types: type 0 (Random) uses at least 16 octets of random data; type 1 (Address-Specific) uses a 2-octet address family number, an address from that family, and a client-specific identifier such as a sequence number. Clients without a globally unique address SHOULD use type 0.

multicast

registry §5

This document establishes IANA registries for MADCAP message type codes (values 1–8 defined; new values require IETF Consensus), option codes (values 0–16 defined; new values require IETF Consensus), feature codes (values 0–2 defined; new values require IETF Consensus), and Lease Identifier types (values 0–1 defined; new values require IETF Consensus). UDP port 2535 is assigned to MADCAP.

multicast, registry

security-consideration §4

MADCAP security (authentication) is not effective without admission control in the multicast routing infrastructure. Without such control, authenticated allocation does not prevent unauthorized use of multicast addresses. Authentication is a prerequisite for policy enforcement such as limiting addresses per client.

multicast, security

security-consideration §2.4 MUST

When using the Shared Lease Identifier feature with MADCAP security, the confidentiality of the Lease Identifier MUST be maintained by encrypting all messages containing it. The Lease Identifier MUST include at least 8 cryptographically random octets to resist guessing attacks.

multicast, security, crypto

wire-format §3.12

Current Time option (code 11, length 4): 32-bit unsigned integer giving seconds since 00:00 UTC 1 January 1970. MUST accompany any Start Time or Maximum Start Time option; convertible to NTP timestamp by adding 2208988800.

multicast, ntp

wire-format §3.2

Lease Time option (code 1, length 4): 32-bit unsigned integer specifying lease duration in seconds. Used in client DISCOVER/REQUEST/RENEW to request a duration and in server OFFER/ACK to specify the granted duration.

multicast

wire-format §3.11

List of Address Ranges option (code 10, minimum length 0): list of (StartAddress, BlockSize) pairs encoding contiguous ranges of allocated multicast addresses. Address family is determined by the addrfamily header field.

multicast

wire-format §2.1

MADCAP fixed header: version (1 octet, always 0), msgtype (1 octet), addrfamily (2 octets, IANA address family number), xid (4 octets, transaction ID). Options field follows as variable-length TLV list. All multi-octet quantities are in network byte order. Messages shorter than 12 bytes MUST be ignored.

multicast

wire-format §3.10

Multicast Scope List option (code 9): variable-length list of scope tuples each containing Scope ID (first multicast address), Last Address, TTL, Name Count, and encoded names. Each encoded name includes a Name Flags octet, RFC 1766 Language Tag, and a UTF-8 zone name string.

multicast

wire-format §3.8

Number of Addresses Requested option (code 7, length 4): two 16-bit unsigned integers (minimum, desired). The minimum MUST be less than or equal to desired; violation triggers an Invalid Request error. Servers MUST allocate between minimum and desired addresses in their response.

multicast

wire-format §2.1.5

Options are encoded as a 2-octet option code followed by a 2-octet option length, followed by the specified number of octets. The options field MUST end with the End option (code 0, length 0). Any message whose options field does not conform to this syntax MUST be ignored.

multicast

wire-format §3.3

Server Identifier option (code 2, minimum length 3): 2-octet IANA address family number followed by the server's IP address. MUST be included in all server-originated messages and in multicast REQUEST messages from clients to indicate which OFFER was accepted.

multicast