Structured Local Address Plan (SLAP) Quadrant Selection Option for DHCPv6
Extracted elements (26)
Preference values are included as explicit numeric weights rather than an ordered list so that a client can express equal preference among multiple quadrants, delegating the final selection to the server when the client has no strong preference.
The AAI quadrant is identified as the best fit for privacy-oriented use cases such as randomized MAC addresses for mobile devices, because it does not require uniqueness guarantees across networks and is well-suited to frequent address changes when connecting to different networks.
The ELI and SAI quadrants are preferred for data-center VM migration scenarios because their assignments are governed by IEEE Std 802c rules ensuring MAC address uniqueness globally across the data center, whereas AAI addresses only need to be unique within a single administrative region.
The relay is given the ability to add a QUAD option independently of the client to support large infrastructures split into different network regions, where each region may have different MAC address quadrant requirements unknown to the client (e.g., IoT-only segments requiring ELI/SAI).
If a client sends multiple instances of the IA_LL option in the same message, the DHCP relay MAY add only a single instance of the QUAD option covering all of them. Servers process OPTION_SLAP_QUAD from both the Relay-forward message and the client message payload and select which to apply based on server policy.
Specifying all quadrants in the QUAD option results in a QUAD-option-supporting server behaving like a non-QUAD-option-supporting server, allowing backward-compatible operation by permitting address assignment from any available quadrant.
Clients and relays SHOULD specify all quadrants in the QUAD option to ensure the client gets an address if any are available, especially when server pool configuration for the preferred quadrants is uncertain.
Each quadrant MUST only appear once at most in the QUAD option. If more than one occurrence of the same quadrant identifier appears, only the first occurrence is processed and the rest MUST be ignored by the server.
If a server manages a block of addresses belonging to a requested quadrant, the addresses being offered MUST belong to a requested quadrant. This applies both in direct client-server and relay-mediated scenarios.
If the client or relay agent provides OPTION_SLAP_QUAD, the server MUST use the quadrant-n/pref-n values to order the selection of quadrants. If the server cannot provide an assignment from any specified quadrant, it MUST return the IA_LL option with a status of NoAddrsAvail.
If the server does not have a configured address pool matching the client's quadrant request, it SHOULD return the IA_LL option with addresses belonging to a quadrant managed by the server, following local policy. This applies when the client specifies quadrant preferences.
If the server has a configured address pool of the correct quadrant but no available addresses, it MUST return the IA_LL option containing a Status Code option with status set to NoAddrsAvail.
Servers MUST NOT assume that quadrant-1/pref-1 have the highest preference, since there is no requirement that clients or relay agents order the quadrant/pref values in any specific order.
The client SHOULD check if the received MAC address comes from one of the requested quadrants; if not, it MAY repeat the process selecting a different DHCP server.
The client SHOULD NOT pick a server that does not advertise an address in the requested quadrant(s) when choosing among Advertise responses.
The IA_LL option MUST contain an LLADDR option when a client sends a Solicit message requesting link-layer address assignment.
The server SHOULD apply the contents of the relay's supplied QUAD option for all of the client's IA_LLs, unless configured to do otherwise.
The server SHOULD implement a configuration parameter to determine whether to process the client's or relay's instance of OPTION_SLAP_QUAD when both are present. The RECOMMENDED default is to process the client's instance.
The QUAD option can be used to request MAC addresses from the AAI quadrant to support MAC address randomization, which mitigates user location tracking by enabling devices to use different local random MAC addresses each time they connect to a different network.
The QUAD option (OPTION_SLAP_QUAD, code 140) is a new DHCPv6 option that allows a DHCPv6 client or relay to indicate preferred SLAP quadrants for MAC address allocation. It carries one or more (quadrant, preference) pairs and MUST be encapsulated either in the IA_LL-options field of an IA_LL option or in a Relay-forward message.
The SLAP quadrant structure defines four regions of the local MAC address space distinguished by the Y-bit and Z-bit in the IEEE 48-bit address: Quadrant 00 (AAI, Administratively Assigned), Quadrant 01 (ELI, Extended Local Identifier), Quadrant 10 (Reserved), and Quadrant 11 (SAI, Standard Assigned Identifier).
IANA has assigned option code 140 (OPTION_SLAP_QUAD) in the 'Option Codes' subregistry of the 'Dynamic Host Configuration Protocol for IPv6 (DHCPv6)' registry. The option is designated as a Singleton Option with no Client ORO requirement.
Security and privacy considerations for the QUAD option are inherited from RFC 8415 (DHCPv6), RFC 7227 (DHCPv6 option guidelines), RFC 8200 (IPv6), and RFC 8947 (link-layer address assignment via DHCP). No additional security mechanisms specific to the QUAD option are defined beyond these inherited considerations.
Client-relay-server signaling flow: client sends Solicit(IA_LL) to relay; relay encapsulates in Relay-forward adding QUAD option; server responds in Relay-reply with Advertise; relay forwards to client; client sends Request; relay forwards in Relay-forward with QUAD; server replies in Relay-reply; relay delivers Reply to client. Renew cycle follows the same relay-mediated pattern.
Client-server signaling flow for SLAP quadrant-aware MAC address assignment: (1) client sends Solicit(IA_LL(LLADDR, QUAD)); (2) server responds Advertise(IA_LL(LLADDR, QUAD)); (3) client sends Request(IA_LL(LLADDR, QUAD)); (4) server sends Reply(IA_LL(LLADDR)); then on timer expiry (5) client sends Renew with QUAD option and (6) server responds with Reply extending lifetime.
The QUAD option wire format contains a 2-byte option-code (OPTION_SLAP_QUAD = 140), a 2-byte option-len (2 * number of quadrant/preference pairs), followed by pairs of 1-byte quadrant-n (0=AAI, 1=ELI, 2=Reserved, 3=SAI) and 1-byte pref-n fields. Each quadrant identifier MUST appear at most once in the option.