RFC 8948
Structured Local Address Plan (SLAP) Quadrant Selection Option for DHCPv6
Abstract π
okay so the IEEE originally split up the 48-bit MAC address space so that half of it was set aside for local use π«Ά Then in 2017 they dropped IEEE Std 802c, which adds an optional Structured Local Address Plan (SLAP) that sorts that local space into four regions with different assignment approaches β¨
The IEEE is also building protocols to assign addresses (IEEE P802.1CQ), and over in the IETF there's work on a mechanism that extends DHCPv6 so it can handle these local MAC assignments πΈ
This doc proposes DHCPv6 extensions so a client or a relay can say which SLAP quadrant they'd prefer, and the server can then hand out MAC addresses from that quadrant π A new DHCPv6 option called QUAD is defined for exactly this π
Status of This Memo π
This is an Internet Standards Track document π₯
It's a product of the Internet Engineering Task Force (IETF), it represents the consensus of the IETF community, and it got public review before being approved for publication by the Internet Engineering Steering Group (IESG) β¨ If you want more on Internet Standards, check Section 2 of RFC 7841 π§
Errata, the current status, and how to give feedback are all at https://www.rfc-editor.org/info/rfc8948 π
Copyright Notice π
Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved. π¦
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date. Please read these carefully, because they spell out your rights and restrictions for this document π Any Code Components pulled out of this document must include the Simplified BSD License text described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Simplified BSD License π«Ά
Table of Contents π
1. Introduction
1.1. Problem Statement
1.1.1. Wi-Fi (IEEE 802.11) Devices
1.1.2. Hypervisor: Functions That Are and Are Not Migratable
2. Terminology
3. DHCPv6 Extensions
3.1. Address Assignment from the Preferred SLAP Quadrant
Indicated by the Client
3.2. Address Assignment from the Preferred SLAP Quadrant
Indicated by the Relay
4. DHCPv6 Option Definition
4.1. QUAD Option
5. IANA Considerations
6. Security Considerations
7. References
7.1. Normative References
7.2. Informative References
Appendix A. Example Uses of Quadrant Selection Mechanisms
Acknowledgments
Authors' Addresses
Title Block π
Let's get the basics out of the way first π
- Document: RFC 8948, Structured Local Address Plan (SLAP) Quadrant Selection Option for DHCPv6
- Authors: CJ. Bernardos (UC3M) and A. Mourad (InterDigital) π
- Category: Standards Track β¨
- ISSN: 2070-1721 π¦
- Date: December 2020 π
- Obsoletes / Updates: the title block doesn't list anything this one obsoletes or updates π«Ά
1. Introduction β¨
okay so the IEEE structures the 48-bit MAC address space so that half of it is reserved for local use (that's where the Universal/Local (U/L) bit is set to 1) πΈ In 2017, the IEEE published a new standard [IEEEStd802c] that defines an optional Structured Local Address Plan (SLAP), which splits the local MAC address space into four regions. These four regions are called SLAP quadrants, and here's the quick version (see Figure 1 and Table 1 for the details) π
- In SLAP Quadrant 01, Extended Local Identifier (ELI) MAC addresses are assigned based on a 24-bit Company ID (CID), which is handed out by the IEEE Registration Authority (RA) π The remaining bits are specified as an extension by the CID assignee, or by a protocol the CID assignee designates π§
- In SLAP Quadrant 11, Standard Assigned Identifier (SAI) MAC addresses are assigned based on a protocol specified in an IEEE 802 standard. For 48-bit MAC addresses, 44 bits are available. Several protocols for assigning SAIs may be specified in IEEE standards, and they can coexist by each one getting its own limited subspace to assign from π¦
- In SLAP Quadrant 00, Administratively Assigned Identifier (AAI) MAC addresses are assigned locally by an administrator. Multicast IPv6 packets use a destination address starting in 33-33, so AAI addresses in that range should not be assigned π For 48-bit MAC addresses, 44 bits are available. π
- SLAP Quadrant 10 is "Reserved for future use", where MAC addresses may be assigned using new methods that haven't been defined yet, or until then by an administrator, the same way as in the AAI quadrant. For 48-bit MAC addresses, 44 bits would be available π
LSB MSB
M X Y Z - - - -
| | | |
| | | +------------ SLAP Z-bit
| | +--------------- SLAP Y-bit
| +------------------ X-bit (U/L) = 1 for locally assigned
+--------------------- M-bit (I/G) (unicast/group)
Legend:
LSB: Least Significant Bit
MSB: Most Significant Bit
Figure 1: IEEE 48-Bit MAC Address Structure (in IEEE Representation) π§
+==========+=======+=======+=======================+============+
| Quadrant | Y-bit | Z-bit | Local Identifier Type | Local |
| | | | | Identifier |
+==========+=======+=======+=======================+============+
| 01 | 0 | 1 | Extended Local | ELI |
+----------+-------+-------+-----------------------+------------+
| 11 | 1 | 1 | Standard Assigned | SAI |
+----------+-------+-------+-----------------------+------------+
| 00 | 0 | 0 | Administratively | AAI |
| | | | Assigned | |
+----------+-------+-------+-----------------------+------------+
| 10 | 1 | 0 | Reserved | Reserved |
+----------+-------+-------+-----------------------+------------+
Table 1: SLAP Quadrants π
1.1. Problem Statement π₯
The IEEE is developing mechanisms to assign addresses [IEEE-P802.1CQ-Project] π«Ά And [RFC8947] specifies a new mechanism that extends DHCPv6 operation to handle local MAC address assignments β¨ This document proposes DHCPv6 extensions so a DHCPv6 client or relay can indicate a preferred SLAP quadrant to the server, and the server can then allocate MAC addresses from the quadrant the relay or client asked for π
Next up are two application scenarios where you'd actually need to assign local MAC addresses based on preferred SLAP quadrants π
1.1.1. Wi-Fi (IEEE 802.11) Devices πΆ
Right now, most Wi-Fi devices come with a "burned-in" MAC address that's pulled from the universal address space using a 24-bit Organizationally Unique Identifier (OUI), which is assigned to IEEE 802 interface vendors πΈ But lately the need to assign local MAC addresses (instead of universal ones) has popped up, mainly in these two scenarios:
- IoT (Internet of Things): these are generally made of constrained devices [RFC7228], which have limits on things like power and energy, memory, and processing π Think sensors and actuators for health or home automation. With so many of these devices around, manufacturers might like to give them temporary MAC addresses that only get used at first boot π§ Those temporary addresses would just be used to send the initial DHCP packets to available DHCP servers. IoT devices usually need a single MAC address per network interface. Once the server assigns a MAC address, the device would drop its temporary one π¦ Home automation IoT devices typically don't move (though mobile smart health monitoring devices are on the rise, so keep an eye on that π). For this kind of device, basically any SLAP quadrant would work for assigning addresses, but ELI/SAI might be a better fit in some situations π For example, the device might need an address from the CID assigned to the IoT communication device vendor, which makes the ELI quadrant the pick π
- Privacy: these days MAC addresses let people's locations get exposed, which makes it pretty easy to track where users move π One idea for fixing this is using local random MAC addresses and changing them every time the user connects to a different network π«£ In this scenario devices are usually mobile. Here, AAI is probably the best SLAP quadrant to assign from: it's the best fit for randomizing addresses, and the addresses don't have to survive when the device changes networks π
1.1.2. Hypervisor: Functions That Are and Are Not Migratable π
In big virtualization environments, thousands of virtual machines (VMs) are active at once π₯οΈ These VMs are usually managed by a hypervisor, which is in charge of spawning and stopping VMs as needed. The hypervisor is also usually in charge of assigning new MAC addresses to the VMs π If there's a DHCP solution set up for that, the hypervisor acts as a DHCP client and asks the available DHCP servers to assign one or more MAC addresses (an address block). The hypervisor doesn't use those addresses for itself. It uses them to create new VMs with the right MAC addresses β¨ In very large data-center environments, which are what people typically use nowadays, the data center is expected to be split into different network regions, and each one manages its own local address space π’ In this setup, there are two possible situations that need to be handled π
- Migratable functions: if a VM providing a given function needs to move to another region of the data center (for maintenance, resilience, end-user mobility, and so on), the VM's networking context has to move with it π§³ That includes the VM's MAC address(es). Since assignments from the ELI/SAI SLAP quadrants are governed by the rules in IEEE Std 802c, they're better for keeping MAC addresses globally unique across the data center π
- Functions that are not migratable: if a VM will not be moved to another region of the data center, there are no requirements attached to its MAC address π In this case it's simpler to allocate it from the AAI SLAP quadrant, which doesn't need to be unique across multiple data centers. Each region can manage its own MAC address assignments without checking for duplicates globally πΈ
2. Terminology πβ¨
Okay bestie, first the ground rules π . The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" carry their BCP 14 meaning ([RFC2119] [RFC8174]) only when they're written in all capitals, exactly like that. Lowercase ones are just regular words, so no drama. π«Ά
Where it's relevant, the DHCPv6 terminology from [RFC8415] also applies here. On top of that, these definitions get updated for this doc πΈ
- address: Unless specified otherwise, it's a link-layer (or MAC) address, as specified in [IEEEStd802]. The address is 6 or 8 bytes long. π’
- address block: A bunch of consecutive link-layer addresses. It's written as a first address plus a number for how many extra addresses come after it. A single address can be shown as the address itself with zero extra addresses. π§©
- client: A node that wants to get link-layer addresses. It implements the basic DHCP mechanisms a DHCP client needs, as described in [RFC8415], and it supports the options (IA_LL and LLADDR) specified in [RFC8947] plus the new option (QUAD) specified in this document. The client may or may not support IPv6 address assignment and prefix delegation, as specified in [RFC8415]. π
- IA_LL: Identity Association for Link-Layer Address. It's an identity association (IA) used to request or assign link-layer addresses. Section 11.1 of [RFC8947] has the details on the IA_LL option. π
- LLADDR: The link-layer address option, used to request or assign a block of link-layer addresses. Section 11.2 of [RFC8947] has the details on the LLADDR option. π¦
- relay: A node that acts as a middleman, delivering DHCP messages between clients and servers. Based on local knowledge and policies, a relay may include the preferred SLAP quadrant in a QUAD option sent to the server. It implements basic DHCPv6 relay agent functionality, as described in [RFC8415]. π§
- server: A node that manages link-layer address allocation and can respond to client queries. It implements basic DHCP server functionality, as described in [RFC8415], and supports the options (IA_LL and LLADDR) specified in [RFC8947] plus the new option (QUAD) specified in this document. The server may or may not support IPv6 address assignment and prefix delegation, as specified in [RFC8415]. π
3. DHCPv6 Extensions π
3.1. Address Assignment from the Preferred SLAP Quadrant Indicated by the Client π¦
Next up, we go through how a client picks a preferred SLAP quadrant using the DHCPv6 signaling procedures from [RFC8947] π The whole flow is shown in Figure 2, and it's giving clean choreography π§
+--------+ +--------+
| DHCPv6 | | DHCPv6 |
| client | | server |
+--------+ +--------+
| |
+----1. Solicit(IA_LL(LLADDR,QUAD))--->|
| |
|<--2. Advertise(IA_LL(LLADDR,QUAD))---+
| |
+---3. Request(IA_LL(LLADDR,QUAD))---->|
| |
|<------4. Reply(IA_LL(LLADDR))--------+
| |
. .
. (timer expiring) .
. .
| |
+---5. Renew(IA_LL(LLADDR,QUAD))------>|
| |
|<-----6. Reply(IA_LL(LLADDR))---------+
| |
Figure 2: DHCPv6 Signaling Flow (Client-Server)
Here's the step-by-step tea β
- Link-layer addresses (aka MAC addresses) get handed out in blocks, and the smallest block is a single address. To ask for one, the client sends a Solicit message with an IA_LL option inside it. The IA_LL option MUST contain an LLADDR option. To show its preferred SLAP quadrant(s), the IA_LL option also includes the new OPTION_SLAP_QUAD option in the IA_LL-option field, sitting right alongside the LLADDR option. π
- When the server gets an IA_LL option in a Solicit message, it looks at what's in there. For each entry in the OPTION_SLAP_QUAD, going from highest to lowest preference value, the server checks whether it has a configured MAC address pool that matches the requested quadrant identifier and has an available range of addresses of the requested size. If it finds suitable addresses, it sends back an Advertise message with an IA_LL option holding an LLADDR option that says which addresses it's offering. If the server manages a block of addresses in a requested quadrant, the addresses it offers MUST belong to a requested quadrant. If the server doesn't have a pool that matches the client's request, it SHOULD still return the IA_LL option, with the offered addresses coming from a quadrant the server manages (picked according to local policy from whichever quadrants are available). And if the server has a pool in the right quadrant but no addresses left, it MUST return the IA_LL option containing a Status Code option with the status set to
NoAddrsAvail. πΈ - The client waits for available servers to send their Advertise responses, then picks one server, as defined in Section 18.2.9 of [RFC8415]. The client SHOULD NOT pick a server that doesn't advertise an address in the requested quadrant(s). After that, it sends a Request message with the IA_LL container option, copying the LLADDR option from the Advertise message of the chosen server. It includes the preferred SLAP quadrant(s) in a new QUAD IA_LL option. π
- When the server gets a Request message with an IA_LL container option, it assigns the requested addresses. The server MAY alter the allocation at this point (for example, by reducing the address block). Then it generates and sends a Reply message back to the client. When the client gets that Reply, it parses the IA_LL container option and may start using all of the provided addresses. Heads up: a client that put a Rapid Commit option in its Solicit message may get a Reply in response to the Solicit itself, and skip the Advertise and Request steps above (following standard DHCPv6 procedures). β‘
- The client is expected to periodically renew its link-layer addresses, governed by the T1 and T2 timers. The server can turn this off administratively by sending "infinity" as the T1 and T2 values (see Section 7.7 of [RFC8415]). The client sends a Renew message after T1. It includes the preferred SLAP quadrant(s) in the new QUAD IA_LL option, so if the server can't extend the lifetime on the existing address(es), the preferred quadrants are already known for allocating any "new" (i.e., different) addresses. π
- The server responds with a Reply message whose IA_LL option includes an LLADDR option with an extended lifetime. β¨
After the exchange, the client SHOULD check whether the received MAC address comes from one of the requested quadrants. If it doesn't, it MAY repeat the process and select a different DHCP server. π
3.2. Address Assignment from the Preferred SLAP Quadrant Indicated by the Relay π
Okay bestie, next up is how a relay can pick a preferred SLAP quadrant using the DHCPv6 signaling from [RFC8947] π This is super useful when a DHCPv6 server is running across a massive infrastructure that's split into different network regions, and each region might have its own needs πΈ Here's the signaling flow, Figure 3:
+--------+ +--------+ +--------+
| DHCPv6 | | DHCPv6 | | DHCPv6 |
| client | | relay | | server |
+--------+ +--------+ +--------+
| | |
+-----1. Solicit(IA_LL)----->| |
| +----2. Relay-forward |
| | (Solicit(IA_LL),QUAD)------>|
| | |
| |<---3. Relay-reply |
| | (Advertise(IA_LL(LLADDR)))--+
|<4. Advertise(IA_LL(LLADDR))+ |
|-5. Request(IA_LL(LLADDR))->| |
| +-6. Relay-forward |
| | (Request(IA_LL(LLADDR)),QUAD)->|
| | |
| |<--7. Relay-reply |
| | (Reply(IA_LL(LLADDR)))-------+
|<--8. Reply(IA_LL(LLADDR))--+ |
| | |
. . .
. (timer expiring) .
. . .
| | |
+--9. Renew(IA_LL(LLADDR))-->| |
| |--10. Relay-forward |
| | (Renew(IA_LL(LLADDR)),QUAD)-->|
| | |
| |<---11. Relay-reply |
| | (Reply(IA_LL(LLADDR)))-----+
|<--12. Reply(IA_LL(LLADDR))-+ |
| | |
Figure 3: DHCPv6 Signaling Flow (Client-Relay-Server)
- Link-layer addresses (aka MAC addresses) come in blocks π§ The tiniest block is just one address. To ask for some, the client sends a
Solicitmessage with anIA_LLoption in it. TheIA_LLoption MUST contain anLLADDRoption π₯ - The DHCP relay catches the
Solicitand wraps it up in aRelay-forwardmessage. Based on local knowledge and policies, the relay adds theQUADoption with the preferred quadrant to theRelay-forwardmessage. It might know which quadrant to request from local configuration (e.g., the served network only has IoT devices, so it needsELI/SAI) or from other means. Note that if a client sends multiple instances of theIA_LLoption in the same message, the DHCP relay MAY only add a single instance of theQUADoption. - Once the server gets a relayed message containing an
IA_LLoption, it checks for instances ofOPTION_SLAP_QUADin both theRelay-forwardmessage and the client's message payload π Depending on the server's policy, it picks which instance of the option to process (more on that at the end of this section). For each entry inOPTION_SLAP_QUAD, in order of the preference field (highest to lowest), the server checks whether it has a configured MAC address pool that matches the requested quadrant identifier and an available range of addresses of the requested size. If suitable addresses turn up, the server sends back anAdvertisemessage with anIA_LLoption containing anLLADDRoption that specifies the addresses being offered. This goes to the relay in aRelay-replymessage. If the server supports the semantics of the preferred quadrant included in theQUADoption and manages a block of addresses belonging to a requested quadrant, then the addresses being offered MUST belong to a requested quadrant. The server SHOULD apply the contents of the relay's suppliedQUADoption for all of the client'sIA_LLs, unless it's configured to do otherwise. - The relay passes the received
Advertisemessage along to the client π¬ - The client waits for available servers to send
Advertiseresponses and picks one server, as defined in Section 18.2.9 of [RFC8415]. Then it sends aRequestmessage that includes theIA_LLcontainer option, with theLLADDRoption copied from theAdvertisemessage sent by the chosen server. - The relay forwards the received
Requestin aRelay-forwardmessage. It adds aQUADIA_LL option with the preferred quadrant to theRelay-forward. - When the forwarded
Requestmessage with theIA_LLcontainer option arrives, the server assigns the requested addresses. The server MAY alter the allocation at this time π Then it generates aReplymessage and sends it back to the relay in aRelay-replymessage. - When the client gets a
Replymessage, it parses theIA_LLcontainer option and may start using all of the provided addresses β¨ - The client is expected to periodically renew the link-layer addresses, as governed by the
T1andT2timers. The server can administratively disable this mechanism by sending"infinity"as theT1andT2values (see Section 7.7 of [RFC8415]). The client sends aRenewoption afterT1β° - This message gets forwarded by the relay in a
Relay-forwardmessage, including aQUADIA_LL option with the preferred quadrant. - The server responds with a
Replymessage that includes anLLADDRoption with an extended lifetime. This message is sent in aRelay-replymessage. - The relay sends the
Replymessage back to the client π₯³
The server SHOULD implement a configuration parameter to deal with the case where the client's DHCP message contains an instance of OPTION_SLAP_QUAD and the relay adds a second instance in its Relay-forward message. This parameter tells the server to process either the client's instance or the relay's instance of the QUAD option. It is RECOMMENDED that the default for this parameter is to process the client's instance of the option π
The client MAY check whether the received MAC address belongs to a quadrant it is willing to use or configure, and MAY decide based on that whether to use or configure the received address π«Ά
4. DHCPv6 Option Definition π
4.1. QUAD Option β¨
The QUAD option is used to specify the preferences for the selected quadrants within an IA_LL. The option MUST be encapsulated either in the IA_LL-options field of an IA_LL option or in a Relay-forward message. π§
Here's the format of the QUAD option:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_SLAP_QUAD | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| quadrant-1 | pref-1 | quadrant-2 | pref-2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| quadrant-n-1 | pref-n-1 | quadrant-n | pref-n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: QUAD Option Format
Here's what each field means π
option-code:OPTION_SLAP_QUAD (140).option-len:2 * number of included (quadrant, preference). This is a 2-byte field containing the total length of all (quadrant, preference) pairs included in the option.quadrant-n: Identifier of the quadrant (0: AAI, 1: ELI, 2: Reserved by IEEE [IEEEStd802c], and 3: SAI). Each quadrant MUST only appear once at most in the option. This is a 1-byte field.pref-n: Preference associated with quadrant-n. A higher value means a more preferred quadrant. This is a 1-byte field.
A quadrant identifier value MUST only appear, at most, once in the option. If an option includes more than one occurrence of the same quadrant identifier, only the first occurrence is processed, and the rest MUST be ignored by the server π ββοΈ
If the same preference value is used for more than one quadrant, the server MAY select which quadrant should be preferred (if the server can assign addresses from all or some of the quadrants with the same assigned preference). Note that this is not a simple list of quadrants ordered by preference with no preference value, but a list of quadrants with explicit preference values. This way it can support the case where a client really has no preference between two or three quadrants, leaving the decision to the server π€·ββοΈ
If the client or relay agent provides the OPTION_SLAP_QUAD, the server MUST use the quadrant-n/pref-n values to order the selection of the quadrants. If the server can provide an assignment from one of the specified quadrants, it SHOULD proceed with the assignment. If the server does not have a configured address pool matching any of the specified quadrant-n fields, or 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 of NoAddrsAvail π
There is no requirement that the client or relay agent order the quadrant/pref values in any specific order; hence, servers MUST NOT assume that quadrant-1/pref-1 have the highest preference (except if there is only one set of values) π
For cases where a server may not be configured to have pools for the client or relay quadrant preferences, clients and relays SHOULD specify all quadrants in the QUAD option to make sure the client gets an address (or addresses), if any are available. Specifying all quadrants also means the QUAD option supports a server responding like a non-QUAD option supporting server, i.e., an address (or addresses) from any available quadrants can be returned π
5. IANA Considerations π¦
IANA has assigned the QUAD (140) option code from the "Option Codes" subregistry of the "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)" registry, maintained at <http://www.iana.org/assignments/dhcpv6-parameters>:
Value: 140
Description: OPTION_SLAP_QUAD
Client ORO: No
Singleton Option: Yes
Reference: RFC 8948
- Security Considerations πβ¨
Okay so bestie, security is serious business, but this part is actually pretty chill! π For the DHCPv6 security and privacy stuff, you check out [RFC8415] and [RFC7227]. For the IPv6 security considerations, it's [RFC8200]. π¦
And also, if you care about security for link-layer address assignments using DHCP, go read [RFC8947]. It's giving "read the other doc" energy ππ
- References ππ
7.1. Normative References π
These are the ones you NEED to read, no skipping, periodt π
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
- [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
- [RFC8415] Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A., Richardson, M., Jiang, S., Lemon, T., and T. Winters, "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)", RFC 8415, DOI 10.17487/RFC8415, November 2018, <https://www.rfc-editor.org/info/rfc8415>.
- [RFC8947] Volz, B., Mrugalski, T., and CJ. Bernardos, "Link-Layer Address Assignment Mechanism for DHCPv6", RFC 8947, DOI 10.17487/RFC8947, December 2020, <https://www.rfc-editor.org/info/rfc8947>.
7.2. Informative References πΈ
These ones are extra juicy background reading π§
- [IEEE-P802.1CQ-Project] IEEE, "P802.1CQ - Standard for Local and Metropolitan Area Networks: Multicast and Local Address Assignment", <https://standards.ieee.org/project/802_1CQ.html>.
- [IEEEStd802] IEEE, "IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture", IEEE Std 802-2014, DOI 10.1109/IEEESTD.2014.6847097, June 2014, <https://doi.org/10.1109/IEEESTD.2014.6847097>.
- [IEEEStd802c] IEEE, "IEEE Standard for Local and Metropolitan Area Networks: Overview and Architecture -- Amendment 2: Local Medium Access Control (MAC) Address Usage", IEEE Std 802c-2017, DOI 10.1109/IEEESTD.2017.8016709, August 2017, <https://doi.org/10.1109/IEEESTD.2017.8016709>.
- [RFC7227] Hankins, D., Mrugalski, T., Siodelski, M., Jiang, S., and S. Krishnan, "Guidelines for Creating New DHCPv6 Options", BCP 187, RFC 7227, DOI 10.17487/RFC7227, May 2014, <https://www.rfc-editor.org/info/rfc7227>.
- [RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for Constrained-Node Networks", RFC 7228, DOI 10.17487/RFC7228, May 2014, <https://www.rfc-editor.org/info/rfc7228>.
- [RFC7548] Ersue, M., Ed., Romascanu, D., Schoenwaelder, J., and A. Sehgal, "Management of Networks with Constrained Devices: Use Cases", RFC 7548, DOI 10.17487/RFC7548, May 2015, <https://www.rfc-editor.org/info/rfc7548>.
- [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, July 2017, <https://www.rfc-editor.org/info/rfc8200>.
Appendix A. Example Uses of Quadrant Selection Mechanisms π
This appendix is a whole vibe of examples for how the quadrant preference mechanisms could be used π¦
First, let's take an IoT scenario! An IoT device might decide on its own which SLAP quadrant it wants to use to get a local MAC address, using these details to decide:
- Type of IoT deployment: For example, industrial, domestic, rural, etc. For small deployments like domestic ones, the IoT device itself can pick the AAI quadrant (this might not even involve DHCP, since the device could just configure a random address it computes itself π€―). For big deployments, like industrial or rural ones, where thousands of devices might coexist, the IoT can go with the ELI or SAI quadrants π
- Mobility: If the IoT device can move, it might prefer the SAI or AAI quadrants to keep address collisions low when it moves to another network. If the device is known to stay put, then the ELI is probably the most suitable one π
- Managed/Unmanaged: Depending on whether the IoT device is managed during its lifetime or cannot be reconfigured [RFC7548], the decision of which quadrant is more appropriate might be different. For example, if the IoT device can be managed (e.g., configured) and network topology changes might happen during its lifetime (e.g., due to changes in the deployment, like extensions involving additional devices), this has an impact on the preferred quadrant (e.g., to avoid potential collisions in the future) β
- Operation / Battery Lifetime: Depending on the expected lifetime of the device, a different quadrant might be preferred (as before, to minimize potential address collisions in the future) π
The previous parameters are considerations that the device vendor/administrator may wish to use when defining the IoT device's MAC address request policy (i.e., how to select a given SLAP quadrant). IoT devices are typically very resource constrained, so there may only be a simple decision-making process based on preconfigured preferences π§Έ
Now we take the Wi-Fi device scenario! Say a laptop or smartphone connects to a network using its built-in MAC address. Due to privacy/security concerns, the device might want to configure a local MAC address π΅οΈββοΈ The device might use different parameters and context information to decide not only which SLAP quadrant to use for the local MAC address configuration, but also when to change address (e.g., it might be needed to change address several times). This information includes, but is not limited to:
- Type of network the device is connected to: public, work, home.
- Trusted network: Yes/No.
- First time visited network: Yes/No.
- Network geographical location.
- Mobility: Yes (the device might change its network attachment point) / No (the device is not going to change its network attachment point).
- Operating System (OS) network profile, including security/trust-related parameters: Most modern OSs keep metadata associated with the networks they can attach to, such as the level of trust the user or administrator assigns to the network. This information is used to configure how the device behaves in terms of advertising itself on the network, firewall settings, etc. But this information can also be used to decide whether or not to configure a local MAC address, which SLAP quadrant it should be assigned from, and how often it may be assigned π
- Triggers coming from applications regarding location privacy: An app might request that the OS maximize location privacy (due to the nature of the application), and this might require the OS to force the use of a local MAC address or the local MAC address to be changed π±
This information can be used by the device to select the SLAP quadrant. For example, if the device is moving around (e.g., while connected to a public network in an airport), it is likely to change access points several times; therefore, it is best to minimize the chances of address collision, using the SAI or AAI quadrants βοΈ If the device is not expected to move and is attached to a trusted network (e.g., in some scenarios at work), then it is probably best to select the ELI quadrant πΌ These are just some examples of how to use this information to select the quadrant.
Additionally, the information can also be used to trigger subsequent changes of MAC address to enhance location privacy. Besides, changing the SLAP quadrant might also be used as an additional enhancement to make it harder to track the user's location π«£
Last but not least, let's look at the data-center scenario! A hypervisor might request local MAC addresses be assigned to virtual machines. As in the previous scenarios, the hypervisor might select the preferred SLAP quadrant using information provided by the cloud management system or virtualization infrastructure manager running on top of the hypervisor. This information might include, but is not limited to:
- Migratable VM: If the function implemented by the VM is subject to being moved to another physical server or not, this has an impact on the preference for the SLAP quadrant, as the ELI and SAI quadrants are better suited for supporting migration in a large data center π’
- VM connectivity characteristics: For example, standalone, part of a pool, and part of a service graph/chain. If the connectivity characteristics of the VM are known, the hypervisor can use them to select the best SLAP quadrant π§
Acknowledgments π
The authors would like to thank Bernie Volz for his very valuable comments on this document π«Ά We also want to thank Ian Farrer, Tomek Mrugalski, Γric Vyncke, Tatuya Jinmei, Carl Wallace, Ines Robles, Ted Lemon, Jaime Jimenez, Robert Wilton, Benjamin Kaduk, Barry Leiba, Alvaro Retana, and Murray Kucherawy for their very detailed and helpful reviews π And thanks to Roger Marks and Antonio de la Oliva for comments related to IEEE work and references π
The work in this document has been supported by the H2020 5GROWTH (Grant 856709) and 5G-DIVE projects (Grant 859881) β¨
Authors' Addresses π¦
Carlos J. Bernardos Universidad Carlos III de Madrid Av. Universidad, 30 28911 Leganes, Madrid Spain
Phone: +34 91624 6236 Email: cjbc@it.uc3m.es URI: http://www.it.uc3m.es/cjbc/
Alain Mourad InterDigital Europe
Email: Alain.Mourad@InterDigital.com URI: http://www.InterDigital.com/
π¦ where this page comes from
- ietf: rfc8948 2020-12
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms