Fact-checked by Grok 2 weeks ago

IPv6 address

An IPv6 address is a 128-bit numerical label assigned to each on a participating in an , serving as the network-layer addressing identifier for routing packets across the version 6 (). Developed by the (IETF) as the successor to the 32-bit IPv4 addressing scheme, IPv6 was created to address the impending exhaustion of the approximately 4.3 billion unique IPv4 addresses available, enabling a vastly larger of about 3.4 × 10^38 possible addresses to support the growth of Internet-connected . The format of an IPv6 address is typically represented as eight groups of four digits separated by colons (e.g., 2001:0db8:85a3:0000:0000:8a2e:0370:7334), with rules for shortening consecutive zeros using double colons (::) to improve readability. IPv6 addresses are categorized into three main types: unicast, which identifies a single network interface and is used for one-to-one communication; multicast, which identifies a group of interfaces and delivers packets to all members of that group; and anycast, which is allocated from the unicast address space but identifies a set of interfaces, with packets routed to the nearest one based on routing metrics. Unlike IPv4, IPv6 eliminates broadcast addressing in favor of multicast and requires interfaces to have at least one link-local unicast address (prefixed with fe80::/10) for local communication, supporting stateless address autoconfiguration for easier network setup. Special addresses include the unspecified address (::/128), used as a source address when no specific address is available, and the loopback address (::1/128), equivalent to IPv4's 127.0.0.1. The addressing architecture promotes hierarchical through global unicast addresses (starting with 2000::/3), facilitating efficient allocation by service providers and regional registries, while also incorporating embedded identifiers for routers and interfaces to simplify management. As of late 2025, global adoption has reached approximately 45% of accessing major services like , with higher rates in regions such as (over 50%) and significant progress in countries like , where active users exceed 800 million. Despite dual-stack implementations allowing coexistence with IPv4, full transition to -only networks is advancing, particularly in mobile and fiber-to-the-home services, driven by the need for scalable connectivity in and environments.

Address Formats

Unicast and Anycast Formats

IPv6 unicast and anycast addresses share a common format that is 128 bits long, providing a vast compared to IPv4. This format is typically divided into three main fields: a global of 48 bits, a subnet ID of 16 bits, and an interface identifier of 64 bits, allowing for hierarchical and unique identification of network interfaces. The global is allocated by internet registries to service providers or organizations, the subnet ID identifies specific subnets within a site, and the interface identifier distinguishes individual interfaces on those subnets, often derived using the Modified EUI-64 format from a device's . For global unicast addresses, which are routable on the public , the format begins with a 3-bit of 001 (corresponding to the 2000::/3 range), followed by the remaining 45 bits of the global , the 16-bit ID, and the 64-bit identifier. This structure ensures aggregation for efficient , as the enables summarization at various levels in the network . Other address types, such as link-local (starting with 1111111010) or unique local (starting with 11111101), follow similar divisions but with different lengths and scopes, though the identifier remains 64 bits for addresses not starting with 000. Anycast addresses utilize the identical binary format as unicast addresses and are syntactically indistinguishable from them in the packet header. They are allocated from the unicast address space but assigned to multiple interfaces—typically on different devices—where the nearest one (by metrics) responds to packets sent to the anycast address, enabling applications like load balancing or . Unlike , which has a distinct format with flags and group IDs, anycast relies on unicast protocols without requiring special flags in the address itself. The 128-bit address is structured as eight contiguous 16-bit groups, each representing a portion of the fields for processing in network hardware and software. A textual breakdown of a typical global unicast address illustrates this division:
| 16 bits | 16 bits | 16 bits | 16 bits | 16 bits | 16 bits | 16 bits | 16 bits |
+---------+---------+---------+---------+---------+---------+---------+---------+
|Global   |Global   |Global   | Subnet  | Interf. | Interf. | Interf. | Interf. |
| Prefix  | Prefix  | Prefix  | ID      | ID      | ID      | ID      | ID      |
|(3-bit   |(16      | (16     | (16     | (16     | (16     | (16     | (16     |
|FP +     | bits)   | bits)   | bits)   | bits)   | bits)   | bits)   | bits)   |
|13 bits) |         |         |         |         |         |         |         |
+---------+---------+---------+---------+---------+---------+---------+---------+
This grouping facilitates alignment with 16-bit boundaries in implementations, though the logical fields span multiple groups as shown (with the first group containing the 3-bit Format of 001 followed by the initial 13 bits of the 45-bit global ).

Multicast Format

IPv6 multicast addresses are 128 bits long and begin with the fixed 8-bit of binary 11111111, distinguishing them from and addresses, which start with binary 11111110 or 11111111 followed by 0000 for global . Following this , the next 4 bits form the field, structured as |0|R|P|T|, where the leading bit is reserved and set to 0 for . The R (bit 10) indicates an embedded rendezvous point () when set to 1, as defined for use in protocols like PIM-SM. The P (bit 11) signifies a -based when set to 1, enabling dynamic allocation based on . The T (bit 12) differentiates between permanent and transient addresses: T=0 denotes a permanently assigned (well-known) managed by IANA, while T=1 indicates a transient that is dynamically created and carries no additional semantics beyond its numerical value. After the , the next 4 bits specify the field, which defines the group's propagation boundary, such as link-local (2) or global (E). The remaining 112 bits constitute the group identifier, which uniquely identifies the group within the given and may incorporate additional structured elements depending on the . The solicited-node multicast address serves as a special case of a permanent, link-local multicast address used in protocols like Neighbor Discovery to efficiently target specific interfaces without flooding all nodes on a link. It is derived by taking the prefix ff02::1:ff00:0/104 and appending the least significant 24 bits of the target unicast or anycast interface identifier, resulting in the format ff02:0:0:0:0:1:ffxx:xxxx, where "xx:xxxx" represents those 24 bits in hexadecimal. For example, for a unicast address ending in fe80::1:2:3:4ff:5b7e, the solicited-node address would be ff02::1:ff5b:7e, allowing nodes to join only the necessary groups for address resolution. Unicast-prefix-based multicast addresses, activated when P=1 and T=1, embed a unicast into the group identifier to support scalable, site-specific allocation. The structure allocates the 112-bit group ID as follows: 8 reserved bits (set to 0), 8 bits for length (plen, indicating the number of bits from the unicast to include), 64 bits for the itself (right-aligned and zero-padded if plen < 64), and 32 bits for a group ID. For instance, given a unicast of 3ffe:ffff:1::/48 and scope 5 (site-local), with plen=48 and group ID=1, the address becomes ff15:0030:3ffe:ffff:0001::1 (where 0030 is the for plen=48). This format facilitates source-specific (SSM) by combining the with the group ID. Embedded-RP multicast addresses, enabled when R=1 (with P=1 and T=1), encode the rendezvous point's unicast address directly into the multicast group address to simplify RP discovery in sparse-mode multicast deployments. The group ID uses a similar subdivision: 4 bits for the RP interface ID (RIID), 8 bits for plen, 64 bits for the unicast prefix of the RP, and 32 bits for the group ID, under the overall prefix ff7x::/12 (where x is the scope). To derive the RP address from such a multicast address, the receiver copies the plen bits from the network prefix field into a new 128-bit address, sets the interface ID to the RIID value, and adjusts for the prefix length. An example is the multicast address ff7e:0020:0000:0000:2001:db8:0000:0000 (scope E=14 hex, plen=32, RIID=0, prefix 2001:db8::/32, group ID=0), which embeds the RP at 2001:db8:: (with interface ID 0). Note that RFC 7371 updates this architecture by redefining the original reserved leading bit in flags as a generic X bit (for future use) and introducing a new 4-bit ff2 field (bits 17-20, initially reserved as 0) after the scope, reducing the effective group ID to 108 bits while maintaining backward compatibility.

Textual Representation

General Notation

IPv6 addresses are represented in textual form using hexadecimal notation, consisting of 128 bits divided into eight 16-bit groups, each expressed as four hexadecimal digits and separated by colons. This format yields addresses like 2001:0db8:85a3:0000:0000:8a2e:0370:7334, where each group represents a 16-bit hexadecimal field, and the full address spans 32 hexadecimal digits (nibbles). To enhance readability, several abbreviation rules apply. Leading zeros within each 16-bit group may be omitted, reducing 2001:0db8:85a3:0000:0000:8a2e:0370:7334 to 2001:db8:85a3:0:0:8a2e:370:7334. Additionally, one or more consecutive groups of all zeros can be replaced by a ::, but this compression is permitted only once per address to avoid ambiguity. For instance, the abbreviated form of the previous example becomes 2001:db8:85a3::8a2e:370:7334. When using ::, the address must still expand to exactly eight groups; for the unspecified address, it is simply ::, and the loopback address is ::1. Hexadecimal digits from A to F are case-insensitive in IPv6 notation, allowing both uppercase and lowercase representations. However, for consistency and representation, lowercase letters are recommended. In the compression of zero sequences, the longest run of consecutive zero groups should be selected; if multiple runs of equal length exist, the leftmost one is chosen. A single zero group should not be compressed with ::, as in 2001:db8:0:1:: rather than 2001:db8::1::. Full expansion of addresses, without abbreviations, is required in specific contexts such as certain comparisons or when explicit clarity is needed, though the compressed form is generally preferred for human readability. The canonical textual form prioritizes these rules to ensure uniform representation across implementations.

Scoped and Literal Addresses

In and representations, literal addresses are enclosed in square brackets to distinguish them from other components, such as numbers, allowing the colon character to be used without ambiguity. This format supports the standard textual notation, including zero with double colons (::). For example, the 2001:db8::1 is represented as http://[2001:db8::1]/ in a . For scoped IPv6 addresses, such as link-local addresses, a zone identifier is appended to specify the or , using a (%) followed by the zone ID, which can be an interface name or numeric . In URI contexts, the must be percent-encoded as %25 to comply with syntax rules, resulting in forms like http://[fe80::1%25eth0]/. Outside of URIs, the unencoded form fe80::1%eth0 is used for address literals in configurations or command lines. The zone ID is local to the host and uses ASCII unreserved characters or percent-encoded equivalents. In Windows UNC (Universal Naming Convention) paths, IPv6 literal addresses require transcription because colons are invalid characters in path names. Microsoft defines a method to convert the address by replacing colons with dashes, percent signs (for zones) with the letter "s", and appending .ipv6-literal.net, which resolves locally without DNS queries. For instance, the address fe80::1%eth0 becomes \[fe80--1-seth0].ipv6-literal.net\share. This notation supports embedded zone identifiers in the same manner. Mixed IPv4/IPv6 literals, such as IPv4-mapped or embedded IPv4 addresses (e.g., ::ffff:192.0.2.1), follow the same enclosure rules in URIs and paths, using brackets for the full IPv6 form and allowing the dotted-decimal notation for the IPv4 portion within the address. An example in a is http://[::192.9.5.5]/, where the IPv4 address is embedded at the end. In UNC paths, the transcription applies to the entire address, treating the embedded IPv4 as part of the hexadecimal sequence.

Address Blocks and Networks

IPv6 address blocks and networks are represented using (CIDR) notation, which appends a slash followed by the prefix length to an IPv6 address, indicating the number of significant leading bits that define the portion. For example, the notation 2001:db8::/32 specifies a block where the first 32 bits (the prefix 2001:db8) identify the , leaving the remaining 96 bits for addressing within that block. This prefix length, a from 0 to 128, allows flexible subnetting by delineating the boundary between the fixed identifier and the variable portion of the . Within an IPv6 network, the subnet prefix serves as the primary identifier for the link or subnet, with the first address in the block—formed by appending an all-zero interface identifier to the prefix—functioning as the network address equivalent, often used as the subnet-router anycast address to reach any router on the subnet. Unlike IPv4, IPv6 does not employ a dedicated broadcast address at the end of the block (such as prefix followed by all ones in the host portion); instead, broadcast functionality is handled through multicast addresses to avoid unnecessary traffic flooding. This design promotes efficiency in large-scale networks by eliminating broadcast storms while maintaining clear network boundaries. Address aggregation in leverages hierarchical prefix allocation to simplify tables and enhance , with end sites typically receiving a /48 block that provides /64 for internal subdivision. This structure enables organizations to assign unique /64 prefixes to individual links or VLANs, supporting autoconfiguration via Stateless Address Autoconfiguration (SLAAC) without overlapping addresses, and facilitates renumbering when changing providers by keeping identifiers consistent across prefixes. Such aggregation reduces the size compared to fragmented allocations, promoting efficient inter-domain . In comparison to IPv4 subnetting, IPv6's vast (128 bits versus 32 bits) allows for much larger default sizes, such as the standard /64 with approximately 1.8 × 10¹⁹ addresses per , dwarfing typical IPv4 /24 subnets (256 addresses) and eliminating the need for techniques like () in most scenarios. This scale supports direct end-to-end connectivity and simplifies address management, though it requires careful planning to avoid underutilization of prefixes.

Address Scopes

Unicast Scope

addresses in are designed for one-to-one communication, where packets destined for a are delivered to a single identified by that . This delivery semantics ensures that the uniquely identifies one within its defined , preventing ambiguity in packet and processing. The scopes for addresses establish the topological extent over which an is unique and routable, forming a from the smallest to the largest domains. The defined scope levels include interface-local (scope ID 1), which is limited to a single on a , such as the ::1/128; -local (scope ID 2), confined to a single and prefixed with FE80::/10; realm-local (scope ID 3), spanning a realm larger than a but smaller than a ; admin-local (scope ID 4), defined by administrative configuration within an organization's ; -local (scope ID 5), originally intended for a single but now deprecated in favor of unique local addresses; organization-local (scope ID 8), covering multiple sites within an ; and (scope ID E), extending across the entire . This ensures that addresses in smaller scopes are subsets of larger ones, allowing scoped decisions based on the intended . Unlike multicast addresses, where the scope is explicitly encoded in the 4 low-order bits of the fourth octet, unicast address scopes are not embedded in the address itself but are instead determined by the address or contextual , such as the outgoing interface. For example, the FE80::/10 inherently identifies link-local , while unicast addresses typically fall within the 2000::/3 range. Global addresses play a central role in routing, as they are allocated with a hierarchical structure—including a global routing , ID, and ID—enabling efficient aggregation and forwarding across the . Routers forward packets to global unicast destinations without restrictions, supporting end-to-end connectivity worldwide, while addresses in narrower scopes, like link-local, are not forwarded beyond their boundary. The of site-local addresses (FEC0::/10) was formalized to address ambiguities in multi-homed environments and promote the use of unique local addresses (FC00::/7) for local communications.

Anycast Scope

In IPv6, an anycast address is syntactically indistinguishable from a address and is allocated from the unicast address space, allowing the same address to be assigned to multiple —typically on different nodes—such that packets destined for it are routed to the nearest interface based on the protocol's of . This behavior enables efficient load distribution and , commonly used in services like DNS root servers, where multiple geographically distributed servers share the address to direct queries to the closest instance. Anycast addresses do not have a dedicated prefix or separate ; instead, they inherit the scope properties of addresses, such as or , ensuring they are confined to the same topological regions defined for routing. Within a given , anycast addresses require explicit configuration on nodes to be recognized, and routers must maintain separate entries for them to avoid forwarding packets to multiple destinations simultaneously. Two specific reserved anycast addresses are defined within the unicast space. The subnet-router anycast address, formed by appending the subnet prefix with all zeros in the interface identifier portion, is assigned to all routers on a subnet and routes packets to the nearest one, facilitating subnet-wide router . The Mobile IPv6 Home-Agent anycast address, identified by a reserved identifier of 0x7E (126 in decimal) appended to the home subnet prefix, allows mobile nodes to discover available home agents on their by sending requests to this shared address, which is routed to the nearest home agent. Anycast addresses have inherent limitations to ensure reliable operation. They are unsuitable for point-to-point communications, particularly stateful protocols like , as route changes to different endpoints can disrupt sessions. Additionally, routers are prohibited from forwarding packets to multiple interfaces, and global-scale anycast deployments may face routing table scalability issues, often restricting their use to well-defined, infrastructure-specific applications.

Multicast Scope

In IPv6 multicast addresses, the 4-bit scope field, positioned after the flags field in the address format, specifies the operational of the multicast group, thereby controlling the propagation boundaries of multicast packets to prevent unintended delivery beyond designated limits. This field ensures that multicast traffic is confined to appropriate realms, enhancing efficiency and by aligning delivery with the intended audience. The scope values are encoded as digits from 0 to F, with specific assignments defining distinct delivery ranges. The defined scope values and their meanings are as follows:
Scope Value (Hex)NameDescription
0ReservedNot used for transmission or delivery.
1Interface-LocalLimited to a single interface on the originating ; packets do not leave the interface.
2Link-LocalConfined to the local link; routers do not forward such packets beyond the link.
3Realm-LocalEncompasses a logical , such as a (PAN) identified by a PAN ID in ; independent across network technologies and not forwarded between realms.
4Admin-LocalDefined by administration, typically the smallest administratively scoped region; requires configuration for boundaries.
5Site-LocalRestricted to a single site or organization ; packets are not routed outside the site.
8Organization-LocalLimited to an organization spanning multiple sites; boundaries are administratively set.
EGlobalNo inherent boundary; packets can traverse the entire internet.
FReservedNot used for transmission or delivery.
Values 6, 7, and 9 through D remain unassigned for future use. Delivery semantics for packets are directly governed by the field, ensuring packets are only delivered to interfaces within the specified boundary. For instance, interface-local ( 1) and link-local ( 2) packets are inherently non-routable and confined to the originating interface or link, respectively, while site-local ( 5) traffic stops at site boundaries to avoid inter-site propagation without explicit . Realm-local ( 3) delivery is automatically derived from the underlying , such as shared identifiers in low-power networks, and routers must not forward across boundaries. Larger scopes like organization-local (8) or (E) permit broader dissemination but require protocols for efficient delivery beyond the local link. Nodes are prohibited from originating or delivering packets with reserved scopes 0 or F. The field interacts with the flags in the header, particularly the P flag, which indicates -based allocation. When the P flag is set (P=1), the embeds a , and the value must not exceed the of that to maintain consistent limits. This ensures that -derived groups adhere to the same boundary rules as the underlying . Representative examples illustrate practical application: the address ff02::1 identifies all IPv6 nodes on the local link (link-local scope), enabling discovery protocols like neighbor solicitation without routing. Similarly, ff05::1 targets all nodes within a site (site-local scope), useful for site-wide announcements while preventing external leakage. These well-known addresses demonstrate how scope enforces controlled multicast delivery in real deployments.

Address Space Allocation

Global and General Allocation

The IPv6 address space consists of 2^{128} unique addresses, equivalent to approximately 3.4 \times 10^{38} possible addresses, providing an immense capacity far exceeding the needs of networking. This vast space is structured into major blocks to support different address types and scopes, with the (IANA) overseeing the top-level allocations. The primary block for unicast addresses, which are routable on the public , is 2000::/3, encompassing one-eighth of the total and serving as the foundation for worldwide connectivity. In contrast, the fc00::/7 block is designated for unique local unicast addresses, intended for private, site-internal use without reachability. addresses, used for one-to-many communications, occupy the ff00::/8 block, enabling efficient group-based data distribution across networks. These divisions ensure organized partitioning of the while reserving ample room for future expansion. IANA allocates IPv6 space to the five Regional Internet Registries (RIRs) in /12 units from the global unicast block, with the size of each allocation based on demonstrated need to support regional demand for at least . The RIRs, in turn, assign /32 prefixes to local registries (LIRs) or service providers (ISPs) as initial allocations, enabling them to subdivide space for downstream users. End-site organizations, such as enterprises or campuses, typically receive /48 assignments from RIRs or ISPs, providing 65,536 /64 subnets each—sufficient for extensive internal networking without hierarchical constraints. Due to the abundance of IPv6 addresses, conservation practices emphasize generous allocations over scarcity-driven micro-assignments, as outlined in RFC 6177, which obsoletes earlier restrictive guidelines and recommends against allocations smaller than /56 for most end sites to simplify deployment and avoid fragmentation. This approach prioritizes ease of management and scalability, eliminating the need for techniques like prevalent in IPv4.

Special and Reserved Allocations

The IPv6 address space includes several blocks reserved by the (IANA) for specific functions distinct from the general allocation in 2000::/3. These reservations ensure that certain addresses are used consistently across implementations for , unspecified sources, communications, and services, preventing conflicts in and protocol operations. Among the reserved unicast addresses, the address ::1/128 is designated for local communication back to the originating interface, equivalent to 127.0.0.1 in IPv4, and is not routable on any . Similarly, the unspecified address ::/128 serves as a for source addresses in certain contexts, such as during initialization when no valid address is yet assigned, and it cannot be used as a destination. These allocations are defined in the IPv6 addressing to maintain compatibility and avoid global of non-forwardable traffic. The entire multicast address space is reserved as ff00::/8, where the leading ff bytes identify multicast packets, enabling one-to-many delivery for applications like service discovery and routing protocols. Within this block, ff0x::/12 is allocated for well-known multicast addresses with variable scopes (x representing the scope field), allowing assignments for predefined groups such as all-nodes (ff02::1 for link-local) or all-routers (ff02::2 for link-local), which are essential for neighbor discovery and network management without requiring dynamic allocation. These reservations support scoped multicast transmission, limiting propagation to interfaces, links, sites, or global domains as needed. For , which provides redundancy by assigning the same address to multiple typically on routers, reservations are embedded within rather than global blocks. The -router address, formed by appending :: (all zeros) to the , identifies the set of routers on a and is allocated implicitly in every /64 for nearest-router selection in like Neighbor Discovery. Additionally, within each , the address formed by appending fe80::7e ( 0x7e in the identifier) serves as the Mobile IPv6 home-agent , allowing mobile nodes to reach the nearest home agent for binding updates; this is one of several reserved low-numbered identifiers (00 to ff, with specific values defined) to accommodate future needs without conflicts. Other notable reserved blocks include 2002::/16, originally allocated for transition mechanisms to embed IPv4 addresses in for automatic tunneling, though its use has been deprecated in favor of more secure alternatives due to operational challenges. Likewise, fec0::/10 was reserved for site-local addresses in early deployments but deprecated following the of unique local addresses in fc00::/7, which provide similar non-globally routable functionality with better prefix generation methods. These deprecations reflect evolving standards to enhance and scalability in addressing.

Recent Allocations and Updates

In 2024, the (IETF) published RFC 9637, which reserves the IPv6 prefix 3fff::/20 exclusively for use in documentation examples, thereby expanding the available space for illustrative purposes and complementing the longstanding 2001:db8::/32 prefix defined in RFC 3849. This addition addresses the growing need for diverse documentation scenarios in IPv6 deployments, such as testing configurations and educational materials, without risking conflicts with production addresses. Also in 2024, RFC 9602 designated the prefix 5f00::/16 for Segment Routing over IPv6 (SRv6) Segment Identifiers (SIDs), marking it as a special-purpose block within the IPv6 addressing architecture to support network programming functions. This allocation signals non-compliance with standard IPv6 unicast rules under RFC 4291 and is intended for use inside SRv6 domains, facilitating advanced traffic engineering while preserving the integrity of global routing tables. Regarding global unicast address space, the (IANA) made no large-scale expansions to the 2000::/3 range in 2023 or 2024 beyond routine sub-allocations to Regional Internet Registries (RIRs); however, in November 2024, IANA allocated the 2410::/12 block to the (APNIC) to accommodate regional demand for emerging technologies and services. In October 2025, RFC 9812 was published as a Best Current Practice, clarifying aspects of address allocation policy, including provisions for occasional allocations outside routine RIR processes. These targeted updates emphasize sub-allocations for specialized applications rather than broad releases, reflecting a strategic approach to IPv6 space management. Collectively, these recent developments enhance 's flexibility for , innovative paradigms, and scalable growth, allowing operators to implement advanced features and testing without encroaching on address pools.

Special-Purpose Addresses

Unspecified, Loopback, and Local Addresses

The unspecified in is represented as :: or 0:0:0:0:0:0:0:0, with a of ::/128. It signifies the absence of an address and is primarily used in the source address field of packets during protocol initialization, such as when a node has not yet configured an . Routers must not forward packets with the unspecified as the destination, and it cannot appear as a destination in any packet. The address, denoted as ::1 or 0:0:0:0:0:0:0:1, uses the prefix ::1/128. It functions similarly to the IPv4 loopback address 127.0.0.1, enabling a to send packets to itself for testing or communication. This address has link-local scope and must not be used as a source address outside the originating or forwarded by routers. Link-local addresses begin with the prefix fe80::/10 (binary: 1111111010 followed by 54 zero bits and a 64-bit interface identifier). They are automatically generated for communication on a single local link, supporting protocols like Neighbor Discovery without requiring global routing. Due to their link-specific nature, link-local addresses are not routable beyond the local link and require a zone index (specifying the interface) when referenced to disambiguate usage on multi-homed nodes. All IPv6-capable interfaces must be assigned at least one link-local address, making it a foundational requirement for basic node operation. These addresses fall within the unicast scope but are confined to link-local visibility.

Unique Local Addresses

Unique Local Addresses (ULAs) are a type of IPv6 address designed for use in local communications within a site or between sites under common administration, providing a private addressing scheme that is not intended to be routed on the global . They offer an alternative to global unicast addresses for internal networks, ensuring and avoiding the need for public address allocation. Unlike link-local addresses, which are limited to a single network segment, ULAs can be routed across multiple subnets within an organization. The structure of a ULA follows the fc00::/7 , where the first 7 bits are fixed as 1111110, and the 8th bit (the flag) is set to 1 to indicate locally assigned addresses, resulting in the fd00::/8 range for active use (with fc00::/8 reserved for future definition). This is followed by a 40-bit global ID, a 16-bit ID for distinguishing internal networks, and a 64-bit identifier, yielding a standard /64 for end hosts. The full allocation uses a /48 , comprising the 8-bit (including the bit) and the 40-bit global ID. The 40-bit global ID is generated pseudo-randomly to maximize the probability of uniqueness across independent sites, using a specified such as a hash of a and an EUI-64 identifier, with the highest bit set to 0 to avoid certain patterns. This randomization helps prevent address collisions if networks merge or if addresses inadvertently leak to the , without requiring central coordination. Each site is recommended to use a single /48 block, with subnet IDs assigned as needed for internal organization. Compared to the deprecated site-local addresses (fec0::/10), ULAs provide advantages such as intrinsic global uniqueness without central assignment, improved prefix aggregation for efficiency, independence from service providers, and reduced risk of conflicts during network mergers. These properties make ULAs suitable for stable, long-term internal deployments. ULAs are commonly used for internal routing within an organization, site-to-site VPN connections where routes are explicitly configured, and other scenarios requiring private, non-globally routable addressing. As locally administered addresses, they support flexible network design while maintaining separation from public infrastructure.

IPv4 Addresses

IPv4 transition addresses facilitate the gradual migration from IPv4 to by embedding IPv4 information within addresses, enabling tunneling and translation mechanisms during coexistence periods. These addresses are allocated specific prefixes in the space to support automatic configuration and interoperability without requiring immediate full adoption. The mechanism uses the prefix 2002::/16 to create addresses that embed a 32-bit IPv4 address in hexadecimal format within the next 32 bits of the prefix, forming a /48 site prefix. For example, an IPv4 address of 192.0.2.1 (c000:0201 in ) results in the prefix 2002:c000:0201::/. routers encapsulate IPv6 packets in IPv4 for transmission across IPv4 networks and decapsulate them upon reaching a , which connects to the native domain; relays often use the IPv4 192.88.99.1 from the reserved prefix 192.88.99.0/24 to simplify routing to the nearest . ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) employs the link-local prefix fe80::/64 for addresses within IPv4-dominant sites, embedding the host's 32-bit IPv4 address in the interface identifier using a modified EUI-64 format: the identifier begins with 00-00-5E-FE (indicating potential global uniqueness), followed by the IPv4 address in network byte order. This allows dual-stack nodes to tunnel over IPv4 infrastructure using IPv6 Neighbor Discovery adapted for IPv4 underlays, treating the IPv4 network as a virtual link. Teredo provides IPv6 connectivity for nodes behind IPv4 NATs by using the prefix 2001::/32 for addresses that embed both the Teredo server's 32-bit IPv4 address and the client's obfuscated IPv4 address and UDP port (with 16-bit flags indicating NAT type). Packets are tunneled over UDP port 3544, enabling traversal of NAT devices that block direct ICMP-based tunnels; the client's IPv4 and port are XOR-obfuscated in the address to prevent interference. For NAT64 translation, which enables IPv6 hosts to access IPv4 services, the well-known prefix 64:ff9b::/96 is used to embed a 32-bit IPv4 address directly in the low-order bits, creating an IPv6 address like 64:ff9b::192.0.2.1 for the IPv4 destination 192.0.2.1. This prefix supports both stateful and stateless translation scenarios, mapping IPv6 traffic to IPv4 without requiring embedded client information. The IPv4-compatible prefix ::/96, which embeds an IPv4 address in the least significant 32 bits (e.g., ::192.0.2.1), was an early transition format but has been deprecated in favor of modern mechanisms. Many of these transition addresses, including the relay prefix for , are now deprecated as native has become preferred, reducing reliance on tunneling.

Documentation and Other Special Addresses

IPv6 documentation addresses are specifically reserved for use in technical documentation, educational materials, and examples, ensuring that such addresses do not conflict with production networks. The prefix 2001:db8::/32 was designated for this purpose to provide a well-known range that can be safely used in illustrations without risking routing issues in real deployments. These addresses must not be assigned to actual interfaces or routed on the public Internet, as doing so could lead to unintended traffic disruptions. For instance, an example address like 2001:db8:85a3::8a2e:370:7334 might appear in a configuration guide, but it remains isolated from live traffic. To address the growing need for larger documentation spaces amid increasing IPv6 adoption, the 3fff::/20 was added in as an expansion of the . This /20 block offers significantly more addresses than the original /32, accommodating complex examples such as subnetted networks or simulations without reusing production . Like the 2001:db8::/ range, addresses from 3fff::/20 are strictly for illustrative purposes and should never be routed or used in operational environments. This expansion helps prevent the misuse of globally routable addresses in , promoting better network hygiene. The prefix 5f00::/16 is reserved for Segment Routing over (SRv6) Segment Identifiers (SIDs), which are used in network programming and service chaining within SRv6 deployments. This allocation, defined in RFC 9602 (October 2024), supports the integration of SRv6 with the addressing architecture without using global unicast space. Addresses in this block are not globally routable and are intended for specific behaviors in SRv6 endpoints. The discard-only prefix 100::/64 serves as a designated blackhole for traffic, primarily for testing and remote triggered blackholing (RTBH) configurations to mitigate denial-of-service attacks or erroneous . Packets destined to this are intended to be dropped silently by routers without further processing or delivery, providing a standardized for non-production testing. For example, network operators might route suspicious traffic to 100::1 to null-route it, ensuring it does not reach legitimate endpoints. This is globally reserved and must not be used for any other purpose, including assignment to hosts or forwarding in production paths. Additionally, the block 2001:0000::/23 is reserved by the (IANA) for special-purpose assignments, managed under IETF protocols to support experimental or protocol-specific needs without encroaching on general space. This /23 range allows for targeted allocations, such as those for or IETF-designated uses, but sub-prefixes within it are administered carefully to avoid global . Usage of addresses from this block requires adherence to IANA guidelines, ensuring they remain non-routable in the public unless explicitly authorized.

Deprecated Addresses

Several types of IPv6 addresses that were initially defined for specific uses have been deprecated due to operational issues, concerns, and the evolution of better alternatives that promote scalability and native . These deprecations aim to simplify and reduce ambiguity in usage across the . Site-local unicast addresses, using the fec0::/10, were originally intended for communication within a single or but have been formally deprecated since September 2004. This (binary 1111111011) allowed addresses like fec0::1 to exist in multiple sites without clear boundaries, leading to ambiguity in and . The ill-defined concept of a "site"—which could vary by administrative, , or criteria—caused operational challenges, including address leaks between networks and increased complexity for developers and routers. As a result, new implementations are prohibited from supporting fec0::/10, though existing uses may continue until replacements are fully adopted; unique local addresses (fc00::/7) now serve similar private networking needs without these issues. The anycast prefix, 192.88.99.0/24 (specifically 192.88.99.1 for relay routers), was deprecated in May 2015 to address severe operational problems in IPv6-to-IPv4 transition mechanisms. Introduced in RFC 3068 for simplifying router configuration, it suffered from high failure rates due to unreliable , often causing users to disable entirely. vulnerabilities and unsuitability for broad Internet-scale deployment further justified the deprecation, with recommendations to obsolete related specifications and disable support in new products. Existing deployments are advised to be reviewed and phased out in favor of native or more secure transition methods. IPv4-compatible IPv6 addresses, formatted as ::/96 followed by a 32-bit IPv4 address (e.g., ::192.0.2.1), were deprecated in February 2006 as part of the IPv6 addressing architecture update. These addresses, previously used for dual-stack transitions, are no longer needed because modern IPv6 transition mechanisms rely on alternatives like IPv4-mapped addresses (::ffff:0:0/96). Their deprecation helps avoid confusion in address and , ensuring cleaner separation between IPv4 and IPv6 spaces. New or updated implementations are not required to support them. Some early well-known IPv6 multicast groups, particularly those tied to deprecated unicast scopes or legacy transition embeddings, have also been discouraged to align with updated addressing standards and reduce legacy dependencies. Overall, these deprecations emphasize enhancements, improved through aggregatable addressing, and encouragement of native adoption over transitional workarounds.

Stateless Address Autoconfiguration

Interface Identifier Generation

In Stateless Address Autoconfiguration (SLAAC) for , the 64-bit interface identifier (IID) forms the lower portion of the IPv6 address and is generated using various methods to ensure uniqueness and, in some cases, privacy. The primary method derives the IID from the device's link-layer address, while privacy-focused approaches use randomization or cryptographic techniques to avoid exposing stable identifiers across networks. The Extended Unique Identifier (EUI-64) method generates the IID from a 48-bit MAC address by expanding it to 64 bits. This involves inserting the fixed sequence ff:fe between the organization's unique identifier (first 24 bits) and the manufacturer-assigned portion (last 24 bits), then flipping the universal/ (u/l) bit—the second-least significant bit in the first octet—from 0 () to 1 (). For example, the MAC address 00:50:56:c0:00:02 becomes 02:50:56:ff:fe:c0:00:02 after flipping the u/l bit to yield first octet 02, inserting ff:fe, and representing it in colon-separated notation as 0250:56ff:fec0:0002. This approach ensures to the hardware but raises concerns due to its stability. To mitigate privacy risks from stable IIDs like EUI-64, RFC 8981 defines temporary addresses generated with randomized interface identifiers. These use a cryptographically secure pseudorandom function, such as HMAC-SHA-256 or BLAKE3, to derive the IID from inputs including a random secret key, the current time or sequence number, and the prefix, ensuring resistance to attacks and better than the obsoleted MD5-based method in RFC 4941. The IID is generated to be opaque and randomized, followed by a uniqueness check via Duplicate Address Detection (DAD). Temporary IIDs rotate periodically—default preferred lifetime of one day and valid lifetime of two days, with randomization in timing via a desynchronization factor—to limit tracking. For more secure and stable privacy without frequent rotation, RFC 7217 defines a deterministic method using a cryptographic hash to generate semantically opaque IIDs. The IID is derived as the least significant 64 bits of a pseudorandom output, such as SHA-256, computed from inputs including the IPv6 , a stable secret key (at least 128 bits), the interface identifier, a identifier, and a DAD counter to handle collisions. This ensures the IID remains consistent within the same and interface but varies across , providing without the overhead of randomization. RFC 8064 recommends this approach for stable IIDs in SLAAC implementations.

Duplicate Address Detection

Duplicate Address Detection (DAD) is a mechanism in IPv6 Stateless Address Autoconfiguration (SLAAC) that allows a host to verify whether a newly generated tentative is already in use on the local link before assigning it to an interface. This process helps prevent address conflicts that could disrupt network communication. DAD is performed using messages from the (NDP), specifically (NS) and (NA). The DAD procedure begins after the host generates a tentative IPv6 but before it is considered valid. The host sends an message with the unspecified address (::) as the source, the tentative as the target, and the destination set to the corresponding to the tentative address's lower 24 bits. This is derived by taking the last 24 bits of the target and appending them to the prefix ff02::1:ff00:0/104. The host then waits for any messages that might indicate another node is using the . If no such is received, the is deemed unique and can be assigned. To minimize simultaneous transmissions that could cause collisions, the host introduces a random delay of 0 to 1 second before sending the initial and joining the relevant solicited-node group. The number of NS messages sent is determined by the DupAddrDetectTransmits parameter (default: 1), with retransmissions occurring at intervals defined by the RetransTimer (default: 1 second). If configured for multiple transmissions, the process may extend up to approximately 1 minute, though defaults typically complete in under 2 seconds. During DAD, the tentative address is marked as such, and the host discards any non-DAD packets sent to it. If a conflict is detected—such as receiving an NA claiming the address or observing unexpected NS messages—the host must not assign the tentative address and should generate a new interface identifier to form another tentative address, repeating the DAD process. mandatory for all , which are formed by prefixing fe80::/64 to an interface identifier; a conflict on a link-local address requires disabling IP operation on the affected interface to prevent further issues. This ensures reliable autoconfiguration even in environments with potential address overlaps, such as those using modified EUI-64 interface identifiers.

Address Lifetimes and Privacy Extensions

In Stateless Address Autoconfiguration (SLAAC), addresses are assigned that determine their usability over time. Each address has a preferred lifetime, during which it can be used for unrestricted new communications, and a valid lifetime, which must be at least as long as the preferred lifetime and defines the total period the address remains usable. These are derived from the Prefix Information Option in Router Advertisements () sent by routers, where the option specifies the preferred and valid for the advertised prefix in seconds, with a value of 0xffffffff indicating . Link-local addresses generated via SLAAC have infinite preferred and valid and are never deprecated or invalidated. Manually configured static addresses also typically have infinite , as they are not bound to RA prefixes. The Prefix Information Option in RAs includes flags that influence address : the L indicates whether the prefix is on-link for forwarding, and the A enables autonomous stateless autoconfiguration when set. Additionally, the RA message itself contains M and O ; the M (Managed) , when set, signals hosts to acquire addresses via stateful instead of or alongside SLAAC, while the O (Other) indicates that should be used for non-address like DNS servers. When a prefix's lifetimes are set via these options, hosts generate addresses accordingly and track the timers from the moment of receipt. Address deprecation occurs gradually when the preferred lifetime expires: the address becomes deprecated, meaning it can still be used for existing communications but is discouraged for initiating new ones to encourage to fresher addresses. The address is fully invalidated only upon valid lifetime expiry, at which point it must no longer be used, and the host removes it from its . Routers can facilitate deprecation by advertising decreasing lifetimes in subsequent , such as reducing the valid lifetime to zero over time during network renumbering. As of November 2025, an IETF proposes updates to RFC 4861 and RFC 4862 to improve SLAAC robustness to flash renumbering events, including recommendations for shorter default lifetimes (e.g., 2700 seconds preferred and 3600 seconds valid) and more timely RA retransmissions upon prefix changes. To enhance privacy in SLAAC, hosts implement temporary address extensions that generate randomized interface identifiers for outgoing connections, reducing the risk of address-based tracking across sessions. These temporary addresses have short preferred lifetimes (defaulting to one day) and valid lifetimes (defaulting to two days), after which they are deprecated and replaced with new randomized ones. In contrast, stable non-temporary addresses, generated with consistent interface identifiers, are preferred for inbound connections, such as those to servers, to ensure reliable reachability. This approach, defined in RFC 8981—which obsoletes the earlier RFC 4941 by fixing cryptographic weaknesses and shortening lifetimes—allows hosts to use only temporary addresses if configured, prioritizing outbound while maintaining inbound stability.

Address Selection and Integration

Default Address Selection

Default address selection in enables hosts with multiple configured to systematically choose the optimal source for outgoing packets and destination from a set of possibilities, ensuring efficient communication and adherence to network policies. This is crucial in environments where interfaces may have global unicast, link-local, unique local, and temporary simultaneously, preventing suboptimal routing or privacy leaks. The algorithms promote interoperability by standardizing choices across diverse scenarios, such as dual-stack IPv4/IPv6 deployments or mobile with home and care-of . The foundation of default address selection is outlined in RFC 6724, which obsoletes the earlier RFC 3484 and defines separate algorithms for source and destination selection, supported by a configurable policy table. The policy table assigns a precedence value (higher is preferred) and a label (for tie-breaking based on destination type) to prefixes, guiding selections to favor certain types. For instance, global unicast addresses (::/0) receive a high precedence of 40 and label 1, while link-local addresses (::/96) have a low precedence of 1 and label 3, ensuring global addresses are prioritized over link-local ones in most cases. Unique local addresses (fc00::/7) are assigned precedence 3 and label 13, and IPv4-mapped addresses (::ffff:0:0/96) get precedence 35 and label 4 to support transition mechanisms. addresses in IPv6 scenarios are preferred over care-of addresses through explicit rules, reflecting their role in maintaining session continuity. Temporary addresses, used for , are favored in source selection to obscure host identifiers from external trackers. Source selection follows a deterministic set of eight rules, applied sequentially to candidate addresses on the outgoing . The primary criteria include preferring an in the same as the destination (rule 2), such as link-local for link-local destinations, to avoid unnecessary . The algorithm then favors the longest matching between the source and destination addresses (rule 8), maximizing route efficiency by aligning with the most specific network path. For , rule 7 prefers temporary addresses over stable (public) ones when both are available and non-deprecated, aligning with mechanisms like temporary address generation in stateless autoconfiguration. Additional rules prioritize home addresses over care-of addresses (rule 4) in contexts and avoid deprecated addresses (rule 3), ensuring reliable and secure selections. Destination address selection employs ten rules to order a list of potential destinations, such as those returned by name resolution. It first avoids unusable destinations (rule 1), then prefers those matching the source address's scope (rule 2) to keep traffic local when possible. Policy labels come into play in rule 5, selecting destinations with labels matching the source's for consistency, while rule 6 favors higher-precedence destinations from the policy table, reinforcing preferences like global over link-local. In cases of ties, the algorithm uses the longest matching (rule 9) or smaller scopes (rule 8) to resolve ambiguities. This ordered list guides applications in choosing destinations, with home addresses again preferred (rule 4) to support . Implementations of these algorithms are operating system-specific but adhere to RFC 6724 for standardization, promoting interoperability across hosts and networks. For example, the specification recommends that systems cache address orderings for no more than one second and perform selections in the network layer when possible, such as by sorting destination lists based on available sources via system calls like getaddrinfo(). This approach allows vendors to customize policy tables for local needs while maintaining consistent behavior, as verified in deployments on major platforms. As of November 2025, an update to 6724 (draft-ietf-6man-rfc6724-update) is in the RFC Editor's queue, introducing enhancements for prioritizing known-local ULAs.
PrefixPrecedenceLabel
::1/128500
::/0401
::ffff:0:0/96354
2002::/16302
2001::/3255
fc00::/7313
::/9613
fec0::/10*111
3ffe::/16*112
*Deprecated or historical prefixes.

Domain Name System Support

The Domain Name System (DNS) supports IPv6 addresses through specific resource record types that enable forward and reverse lookups, facilitating seamless integration with existing IPv4 infrastructure in dual-stack environments. The primary forward lookup mechanism for IPv6 is the AAAA resource record, which serves as the IPv6 equivalent of the IPv4 A record, storing a single 128-bit IPv6 address in binary format. Defined in RFC 3596, the AAAA record has a type value of 28 and uses the same syntax as A records but with hexadecimal notation for the address, allowing DNS resolvers to map domain names to IPv6 addresses efficiently. In dual-stack networks, both A and AAAA records coexist for the same domain, enabling applications to query for both address families and select the appropriate one based on connectivity. For reverse DNS lookups, IPv6 employs the ip6.arpa domain under the Address and Routing Parameter Area (), where addresses are represented in nibble-reversed form to support PTR records. This delegation, established in RFC 3152, replaces the deprecated ip6.int domain and ensures hierarchical reverse resolution by breaking the 128-bit address into 32 nibbles, separated by dots, appended to ip6.arpa. For example, the IPv6 address 2001:db8::1 reverses to 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa, allowing PTR records to map back to the corresponding . This structure supports efficient delegation for network administrators, particularly in large-scale deployments. In dual-stack scenarios, rapid connection establishment is crucial to minimize user-perceived delays when both IPv4 and IPv6 are available. The algorithm, specified in RFC 8305, addresses this by concurrently attempting connections to addresses from both A and queries, preferring the fastest successful connection while racing IPv6 slightly ahead to encourage its adoption. A Version 3 update is in draft form as of November 2025 (draft-ietf-happy-happyeyeballs-v3). This approach reduces latency in environments where IPv6 might be slower or unavailable, ensuring better overall connectivity. IPv6 DNS introduces operational considerations, such as larger response sizes due to the 128-bit addresses in records and potential additional data in responses, which can exceed standard packet limits. To mitigate this, implementations often use (EDNS0) to support larger payloads, though fallback to may be required if responses are truncated. For IPv6-only clients accessing IPv4 resources, DNS64 synthesizes records from A records by embedding IPv4 addresses into an prefix, enabling communication via translators without modifying applications. This mechanism, detailed in RFC 6147, is particularly useful in transition environments but requires careful configuration to avoid conflicts with native addresses.

Modern Applications and Developments

IPv6 in IoT and 5G

In the (IoT), addressing facilitates seamless integration of low-power, resource-constrained devices into IP networks, particularly over wireless s (WPANs) like IEEE 802.15.4. The protocol, specified in RFC 4944, introduces header compression to transmit packets efficiently within the 127-byte maximum frame size of these networks, reducing the standard 40-byte header to as few as 2 bytes by eliding fields such as the 64-bit interface identifier and prefix when contextual knowledge is shared among nodes. This compression is stateless and relies on common assumptions, like link-local scoping or zero values for traffic class and flow label, enabling IoT devices to operate without the overhead of full headers. WPANs typically employ /64 es to support stateless address autoconfiguration (SLAAC), where the 64-bit interface identifier is generated from the device's EUI-64 , ensuring unique addressing within the . In 5G systems, 3GPP specifications mandate as the foundational protocol, with IPv6-only core network deployments preferred to leverage its expansive address space for ultra-reliable low-latency communications and massive machine-type communications. According to TS 23.501, each () is allocated a /64 prefix per () session via SLAAC, allowing the to generate multiple addresses from this prefix for its internal interfaces. For advanced scenarios like network slicing, via (often termed PDHCPv6) enables the Session Management Function (SMF) to assign shorter prefixes (e.g., /56 or /48) to UEs, which can then subdivide them across slices for isolation, QoS differentiation, and efficient in virtualized network environments. This approach supports 5G's emphasis on end-to-end , avoiding IPv4's limitations in handling the scale of connected devices. IPv6 addresses key challenges in and by providing an abundant address pool—approximately 3.4 × 10^38 unique addresses—eliminating the scarcity that plagued IPv4 deployments and enabling one-to-one addressing without (). In constrained environments, this abundance supports dense deployments of sensors and actuators without address exhaustion, while in , it accommodates billions of simultaneous connections per cell. Security is bolstered through native support, which was originally specified as mandatory in IPv6 to provide end-to-end , , and , though implementations may vary; this contrasts with IPv4's optional add-on nature and helps mitigate vulnerabilities in exposed endpoints. Adoption of in and has accelerated, with global connected devices surpassing 21 billion by 2025, many leveraging for direct internet access that bypasses complexities and enables interactions essential for applications like smart grids and autonomous systems. In networks, this shift supports scalable, NAT-free architectures, as highlighted in industry analyses projecting 's role in handling the explosive growth of machine-type communications. For private setups, unique local addresses (ULAs) from the fc00::/7 range offer site-local addressing without global routing.

Segment Routing and Other Advances

Segment Routing over IPv6 (SRv6), defined in the Segment Routing architecture, utilizes the data plane to enable source-based through a list of segments encoded in a new Segment Routing Header (SRH). Each segment is represented by an IPv6 address called a Segment Identifier (), which is placed in the IPv6 destination address field and processed by endpoint nodes. This approach allows explicit path steering without requiring per-flow state in the network core, as the path is fully specified at the source. The IPv6 addressing architecture for SRv6 SIDs was further clarified and updated, with IANA allocating the special-purpose 5f00::/16 exclusively for SRv6 SIDs. This block ensures that SRv6 traffic can be readily identified and filtered at boundaries for , while SIDs follow a structured format of locator (LOC), (FUNCT), and arguments () bits to encode behaviors. The is not globally routable but supports forwarding within SRv6 . SRv6 introduces network programming, where SIDs encode specific packet processing instructions at endpoints. For instance, the End function instantiates a Prefix SID, delivering packets to a specific node for local processing of the next header. The End.X function extends this with Layer-3 cross-connect, forwarding traffic to a designated adjacency (e.g., a specific interface or neighbor), which supports transit behaviors like traffic engineering paths. These functions allow programmable overlays, combining topological instructions (e.g., via End and End.X) with service chaining. Other advances in SRv6 addressing include bit-string labels to enable between MPLS and IPv6 environments, facilitating hybrid deployments. Enhancements to the Flow Label further support SRv6 by providing a 20-bit for in load balancing, allowing efficient Equal Cost Multi-Path (ECMP) routing across parallel paths without . These developments offer key benefits, such as simplified network state by eliminating intermediate node signaling and enabling scalable in data centers and SD-WANs, where long segment lists can be compressed and policies enforced centrally.

Historical Notes

Development from IPv4

The exhaustion of IPv4 addresses, stemming from its 32-bit format that provided only approximately 4.3 billion unique addresses, became a pressing concern by the early 1990s as internet growth accelerated. To mitigate this limitation without immediate replacement, Network Address Translation (NAT) was introduced in the mid-1990s, allowing multiple devices to share a single public IPv4 address, though it compromised the original end-to-end connectivity model of the internet. In response, IPv6 was developed as a successor protocol, with its development beginning with the Internet Protocol Next Generation (IPng) effort in 1994, as outlined in RFC 1752, leading to the experimental specification in RFC 1883 in December 1995, and its core specification outlined in RFC 2460, published in December 1998 by the Internet Engineering Task Force (IETF), to restore direct end-to-end addressing through a vastly expanded 128-bit address space. IPv6 introduced several key architectural changes to address IPv4's shortcomings and enhance efficiency. The protocol eliminates broadcast addressing, replacing it with for group communications to reduce network overhead. Its header is simplified to a fixed 40-byte , removing checksums and fragmentation fields from the base header to speed up processing, while extension headers handle optional features. Built-in stateless address autoconfiguration (SLAAC) enables devices to generate their own addresses automatically using router advertisements, and support is mandatory for IPv6 implementations, integrating security capabilities at the IP layer, in contrast to IPv4's optional implementation. These modifications prioritize and for future expansion. Deployment of IPv6 gained momentum through IETF initiatives in the 2000s, including the formation of working groups for transition mechanisms and the release of updated standards like RFC 8200 in 2017, which formalized as an . By the 2020s, global adoption had reached over 45%, driven by major ISPs and content providers enabling native IPv6 support, marking a shift toward widespread dual-stack implementations. The evolution of IP addressing progressed from IPv4's initial classful system, which rigidly divided the into fixed classes (A through E) as defined in RFC 791, to (CIDR) introduced in RFC 1519 in 1993, allowing flexible prefix lengths for more efficient allocation and routing aggregation. builds on this with a hierarchical structure, allocating addresses via global routing prefixes (typically /48 for end sites) followed by IDs and interface identifiers, enabling scalable provider-independent assignments and route summarization across the .

Deprecated Features

Site-local unicast addresses, prefixed with fec0::/10, were originally intended for communication within a single site but were formally deprecated in September 2004 due to operational issues such as administrative partitioning and routing ambiguities that complicated network management. These addresses led to problems in multi-homed environments where sites could unintentionally overlap, causing connectivity failures. As a replacement, unique local addresses (fc00::/7) were introduced to provide similar private addressing without the same scoping flaws. The transition mechanism, which embeds IPv4 addresses into IPv6 prefixes under 2002::/16, faced deprecation of its anycast relay prefix (192.88.99.1) in May 2015 owing to vulnerabilities including spoofing risks and unreliable in relay operations. Similarly, , an IPv6-over-IPv4 designed to bypass restrictions, has been discouraged for new deployments due to comparable concerns like potential for amplification attacks and dependency on external relays, with implementations such as Microsoft's disabling it by default since version 1803. These deprecations stem from broader efforts to favor native connectivity over transitional tunnels that introduce complexity and risks. The use of EUI-64 for generating interface identifiers in IPv6 addresses, which derives the lower 64 bits from a device's , is strongly discouraged primarily due to implications, as it enables persistent tracking of devices across networks by exposing hardware identifiers. This method facilitates correlation of network activity and location inference, raising security concerns in an era of increased surveillance. It has been replaced by privacy extensions generating randomized identifiers or cryptographically generated addresses (CGA) to mitigate these risks. Other features, such as the IPv6 flow label field, experienced initial underuse following its specification in 2001, as implementations often set it to zero, limiting its potential for flow-based processing like load balancing; however, updates in 2011 revived its adoption by clarifying requirements for consistent handling. Additionally, certain multicast address scopes, including the deprecated site-local scope (FF05::/16), remain largely unused due to alignment with unicast deprecations and shifts toward more granular scoping in modern deployments. Overall, these deprecations aim to streamline IPv6 architecture, enhance security, and promote native adoption by eliminating legacy complexities.