Internet-Draft | IPv6 Unique Local Addressing Deployment | January 2023 |
Buraglio & White | Expires 22 July 2023 | [Page] |
Use of unique local addressing (ULA) as an addressing practice brings with it distinctive and specialized use cases that may be counter to more widely deployed use cases using Global Unicast Addressing (GUA) in some operational scenarios.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 22 July 2023.¶
Copyright (c) 2023 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) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Because of the perceived similarities between Unique Local Addressing and [RFC1918], there may emerge a desire to deploy ULA as an analog to private (non-glocally routable) IPv4 addressing within networking domains attempting to model an IPv4/IPv6 dual-stacked environment with private addressing. As detailed in draft-ietf-v6ops-ula, however, by default he process to choose between using IPv4 or IPv6 addresses is different when deploying ULA or GUA IPv6 address spaces.¶
This document outlines use cases where IPv6 ULA address space may be used with IPv4 addressing, describing the results of each of these use cases in address slection.¶
Per [RFC6724], the definition is incomplete for ULA precedence if a host is operating in a dual-stack environment. As written, [RFC6724] section 10.3 states:¶
The default policy table gives IPv6 addresses higher precedence than IPv4 addresses. The practical result of this is that applications reliant on the default operating system address selection mechanism will use IPv6 in preference to IPv4 when the two are equally suitable. An administrator may change the policy table to prefer IPv4 addresses by giving the ::ffff:0.0.0.0/96 prefix a higher precedence.¶
Based on this text, operators may expect ULA address space be preferred over legacy IPv4; however this is not the case. This presents an acute issue with any environment that will use ULA addressing along side any legacy IPv4 addressing and does not have the capability or knowledge of the requirement of adjusting the policy table, and is counter to the standard expectations for legacy IPv4 / IPv6 dual-stack behavior of preferring IPv6, as is performed in the prevailing deployment model of GUA addressing.¶
Further, [RFC6724] Section 10.6 states that this is resolvable by adding a site-specific policy to cause ULAs within a site to be preferred over global addresses. While theoretically possible, this presents significant issues on devices with inaccessable configuration files, or large-scale deployments as detailed below.¶
Based on the known considerations in address selection, it is only advisable to deploy ULA addressing in select scenarios. Each of these scenarios has specific use cases and should not be considered a prototypical IPv6 deployment, having special use cases that are defined by distinct needs and requirements for their respective environments.¶
Single stacked, IPv6-only networks. Most of the deployment models center around the absense of legacy addressing due to the described difficulty in adjusting the address selection criteria at scale and across platforms. However, ULA addressing is perfectly suited for single stacked networks requiring, or precluding external connectivity such as:¶
Management networks Networks designed and depoloyed as single-stacked IPv6 networks with the putpose of providing tightly controlled access for management of a given system. Access may come in the form of bastion hosts, dual or single (GUA) stacked VPN concentrators, or multi-homed routers providing no external access for the management network in question. These networks may be isolated by their respective access devices, or may have limited or tightly controlled access for the ULA single-stacked hosts or devices via application layer gateways. In all cases the ULA addressed devices are not available outside of their well known management plane and access mechanisms.¶
Air-gapped or externally isolated networks. Air-Gapped networks are similar in nature to management networks but exist in a totally air-gapped system with no non-physical access mechanism. Examples of these networks are speciality networks existing in locations such as highly secure enclaves, control systems, or networks such that may exist on submarines, aircraft, or other vessels or facilities requiring highly comparmentalized, access controlled networked systems. Sensor networks may also fall into this category, with an example being power, water or other utility or highly specialized metering devices.¶
Dual-stacked networks with highly automated hosts. These networks may also be configured with legacy IPv4, but are specifically built with homogonous systems that enable highly automated workflows and management of all endpoints. In this use case, it is required that the address selection mechanism be available and easily changed en-masse to allow for ULA to be preferred and used over legacy IPv4. Another version of this type of deployment is one in which DNS is utilized and only contains AAAA records thus forcing a given host to resolve a ULA address and forego connectivity via legacy IPv4. A similar deployment model using ULA addressing is one that simply has no expectation of IPv6 utilization without user or programmatic intervention.¶
There are demonstrated and easily repeatible uses cases of ULA not being preferred in many commercially available and open source operating systems and network equipment over legacy IPv4 that necessitate the immediate update to [RFC6724] to better reflect the original intent of the RFC. As with most adjustments to standards, and using [RFC6724] itself as a measurment, this update will likely take between 8-20 years to become pervasive enough for consistent behavior within operating systems. As a reference, as of the time of this writing, it has been 10 years since [RFC6724] has been published but we continue to see existing commercial and open source operating systems exhibiting [RFC3484] behavior. While it should be noted that [RFC6724] defines a solution that is academically functional, operationally the solution of adjusting the address preference selection table is both operating system dependent and currently unable to be signalled by any network mechanism such as within a router advertisement, DHCPv6 option, or the like. This lack of an intra-protocol or network-based ability to adjust address selection preference, along with the inability to adjust a notable number of operating systems either programmatically or manually renders operational scalability of such a mechanism functionally untenable.¶
Based on the history of address selection standards, it is anticipated that any update of [RFC6724]would require an additional 8-20 years to be fully realized and properly implemented in a majority of network connected systems. In addition, in the current versions of Linux, the priority table (gai.conf) still makes reference to [RFC3484], further demonstrating the long timeframe to have updates reflected in a current, modern operating system. Examples of such out-of-date behavior can be found in printers, cameras, fixed devices, IoT sensors, and longer lifecycle equipment such as operational technology devices. It is especially important to note this behavior in the long lifecycle equipment that exists in industrial control and operational techology environments due to their very long mean time to replacement. The core issue is the stated interpretation from gai.conf that has the following default:¶
Notice that the current interpretationm of the the legacy IPv4 address range as "scopev4" and the prefix ::ffff:0.0.0.0/96 has a higher precedence (35) in [RFC6724] than the ULA prefix of fc00::/7 (3). This results in legacy IPv4 being preferred over IPv6 ULA.¶
The operational outcome is the move to dual-stack with ULA is inconsistent and imparts unnecessary difficulty for both troubleshooting and creating the baseline expected behavior which are both requirements for long-term, supportable deployments. This results in operational and engineering teams not gaining IPv6 experience as limited traffic is actually using IPv6, and security baseline expectations are inconsistent at best and haphazard at worst.¶
In practice, [RFC6724] imposes several operational shortcomings preventing both consistent and desired behavior. If we define "desired behavior" as IPv6 preference over legacy IPv4 for address and protocol selection, then the resulting implemented behavior, based on [RFC6724] , will fall short of that intent. Based on the current verbiage, dual-stacked hosts configured with both a legacy IPv4 address and an IPv6 ULA address, the resulting behavior will manifest as a host choosing IPv4 over ULA IPv6. This behavior deviates from the current goal of a host with legacy IPv4 address and also with an IPv6 GUA address preferring IPv6 over IPv4. Operationally and strategically, this manifests as an impediment to deployment of IPv6 for many non-service provider and mobile networks phasing in dual-stacked (both legacy IPv4 and IPv6) networking with the expectation of consistent behavior (alway use IPv6 before legacy IPv4).¶
Other operational considerations are the use of the policy table detailed in section 2.1 of [RFC6724] . While conceptually the intent was for a configurable, longest-match table to be adjusted as-needed. In practice, modifying the prefix policy table remains difficult across platforms, and in some cases impossible. Embedded, proprietary, closed source, and IoT devices are especially difficult to adjust and are, in many cases, incapable of any adjustment whatsoever. Large scale manipulation of the policy table also remains out of the realm of realistic support for small and medium scale operators due to lack of ability to manipulate all the hosts and systems, or a lack of tooling and access.¶
Below is an example of a gai.conf file from a modern Linux installation as of 03 April 2022:¶
Several assumptions are made here and are largely based on interpretations of [RFC6724] but are not operationally relevant in modern networks. As this file or an equivalent structure within a given operating system is referenced, it dictates the behavior of the getaddrinfo() or analogous process. More specifically, where getaddrinfo() or comparable API is used, the sorting behavior should take into account both the source address of the requesting host as well as the destination addresses returned and sort according to both source and destination addressing, i.e, when a ULA address is returned, the source address selection should return and use a ULA address if available. Similarly, if a GUA address is returned the source address selection should return a GUA source address if available.¶
Here are some example failure modes:¶
Per number 3, even a host choosing a destination with A and AAAA DNS records, the host in question will choose the A record to get an legacy IPv4 address for the destination, meaning ULA IPv6 is rendered completely unused. It is also notable that Happy Eyeballs ([RFC8305] ) will not change the source address selection process on a host. Happy Eyeballs will only modify the destination sorting process.¶
As a direct result of the described failure modes, and in addition to the aforementioned operational implications, use of ULA is not a viable option for dual-stack \ networking transition planning, large scale network modeling, network lab environments or other modes of emulating a large scale networking that runs both IPv4 and IPv6 concurrently.¶
None at this time.¶
Such unexpected behavior can result in unexpected operational outcomes which can result in serious security and compliance issues and could, in some cases, result in disabling of IPv6 to acheive compliance and consistency, as we have seen in the past. .¶
The authors acknowledge the work of Brian Carpenter, XiPeng Xiao, David Farmer, Bob Hinden, Mark Andrews, Vasilenko Eduardand, and Mark Smith for participation in the technical discussions leading to this finding and Michael Ackermann, Tom Coffeen, Kevin Myers, and Ed Horley for providing further testing and operational input.¶