IPv6 AddressesIPv6 address formatting may appear difficult, but here is a non-exhaustive list of guides and tools to make it easier.
IPv6 Address Tutorials
Address Management for IPv6Software to help with IP address management (IPAM) has long been available for IPv4, and now IPv6 versions are becoming available. IPAM tools are important in IPv6 as networks have larger address pools, different subnetting techniques, and more complex 128-bit hexadecimal numbers. Here are links to some open source and commercial IPAM packages. IPv6Now does not guarantee any of these packages, links are supplied for information purposes only.
Note this important article from ERNW on security aspects of some commercial IPAM packages: Evaluation of (Security-related) IPv6 Capabilities of Commercial IPAM Solutions.
Free IPv6 IPAM Packages
- GestióIP: automated, Web based IPv4/IPv6 address management software. The online subnet calculator includes a hierarchical IPv6 addressing plan builder for creation of organization-specific IPv6 allocation schemes. It features powerful network discovery functions, search and filter functions and an automated VLAN management system.
- NIPAP - Neat IP Address Planner: challenges classical IP address management (IPAM) systems in many areas. Developed at a European service provider, NIPAP is well suited for large organisations with massive amounts of IP addresses, as well as smaller enterprises with simple needs. The intuitive web interface lowers the barrier of entry for beginner users, while also offering advanced search by regexp and IPv4/IPv6 prefix.
- TeamIp: a robust Open Source web 2.0 solution that enables professional IP Management activity within IT departments of all size. A simple and powerful user interface will allow network administrators to manage their IPv4 and IPv6 Plans, subnet space and IPs in accordance with best in class IP Management practices.
- NOC Project: scalable, high-performance and open-source OSS system for ISP, service and content providers, with a mature open-source IP Address Management (IPAM) solution, organizing the process of IP address space tracking, including IPv4 and IPv6 management.
- NetDot: an open source tool to help network administrators collect, organise and maintain information. Features IPv4 and IPv6 address space management including hierarchical organization, address block visualization and IP and MAC address location and tracking. Also provides device discovery via SNMP, Layer 2 topology discovery and graphing, generates zone files for ISC BIND and ISC DHCPD configurations.
- HaCi: an IP address/network administration tool with IPv6 support. It stores data efficiently in a relational database and uses a treelike structure to illustrate supernets and subnets. Manage network trees ordered by roots, add IPv4 and IPv6 networks, show subnets, split, copy, move, delete etc, import networks from other sources, language localization.
- IPplan: a free (GPL), web based, multilingual, TCP/IP address management and tracking tool written in php 4. Also includes DNS administration, configuration file management, circuit management and storing of hardware information. Support for IPv6 (currently in BETA from version 6.00-BETA1).
- 6Connect/IPAM Automation: Commercial product, but free version is available. IPv4 and IPv6 subnet calculations for tracking of assignments and unassigned space, supports IPv4 and IPv6 through single dynamic interface, integrated with ARIN and RIPE APIs for IP assignments, ties reverse DNS records to IP assignments automatically, DNSSEC support built-in, including signed zone management and DS key generation.
- Infoblox IPAM Express: Freeware - unified solution to manage, control and report your IP address space. Automatically identify used, unused and conflicting addresses in minutes. Simple, one-look view of all IP assignments. Supports IPv6, up and running in minutes!
Commercial IPv6 IPAM Packages
- Infoblox IP Address Management: The Trinzic IPAM product family includes the base IPAM product (part of the Trinzic DDI bundle), a freeware version, and add-ons for VMware virtualization and Microsoft server environments. IPAM automates and simplifies IP address management for a more resilient network while yielding significant savings in labor and bother.
- BlueCat Address Manager: BlueCat Address Manager is a powerful IP Address Management (IPAM) solution to take control of complex and dynamic networks. With integrated core services, workflow and automation, it can centrally manage every connected device on a network from a single pane of glass. It provides network intelligence and insight into the relationship between devices, users and IP addresses that can be put into action to improve security and ensure reliable, always-on business connectivity.
- SolarWinds IP Address Manager: helps you plan your IPv4 to IPv6 migration by creating and testing multiple scenarios before implementation. Add, edit, and delete IPv6 addresses and subnets; search for IPv4 or IPv6 addresses and find the "other side" address on dual-stack devices; create and edit IPv6 groups for organizing network components; easily view IPv4 and IPv6 addresses in dual-stack devices; add, delete, or edit individual or ranges of IPv6 addresses, edit IPv6 prefixes.
- Crypton/Easy-IP: an IP Address Management solution designed to help you understand, plan and manage IP Address space across your entire network infrastructure. Control IP address assignment, migrate seamlessly from IPv4 to IPv6, discover existing network devices, find out your subnet utilization, document IP address plans. Using a powerful SNMP auto-discovery engine, Easy-IP maintains an accurate, up-to-date inventory for all subnets, IP addresses and network devices.
- BTDiamondIP: cohesive and simplified management of IP address space, subnets, individual address assignment, DNS and DHCP in one integrated solution. Available as a software application or pre-installed on appliances. Provides centralized, full lifecycle management of IP management functions, including IPv4 and IPv6 address space assignment, allocation/reallocation, monitoring, tracking and deployment of multi-vendor DNS and DHCP configurations.
- Icognito Software/Address Commander: uses robust Java APIs to incorporate IP address allocations and reclaims into your OSS. Manages IPv4 and IPv6 dynamic scopes and static IP assignments through a single interface. Maintains data validity and detects problematic configurations and duplicate assignments. Easily generates comprehensive reports detailing IP address allocations. Integrates multiple regional DHCP deployments.
- EfficientIP/SOLIDserver™ Appliance: IPv6 address management through an appliance and a centralised, web-based interface. Detects IPv4 and IPv6 addresses on your network and centralises all the data in the interface. Helps implement Dual Stack configurations to maintain communication between IPv4 and IPv6 devices. Supports DNS AAAA and PTR (DNAME) records for IPv6 DNS resolution, as well as ip6.int and ip6.arpa domains.
- Men and Mice/IP Address Management Module: Licence free for 6 months for IPv6 migration purposes only. Part of Men & Mice Suite Management Modules: DNS Management, DHCP Management, IP Address Management, DNS Expert and DNS Expert AD Monitor. Working together, the modules provide a unique management solution that enables organizations to keep track of their IP address space, individual hosts on the network, and their associations in DNS and DHCP.
An Internet Protocol Version 6 address (IPv6 address) is a numerical label that is used to identify a network interface of a computer or other network node participating in an IPv6computer network.
An IP address serves the purpose of uniquely identifying an individual network interface of a host, locating it on the network, and thus permitting the routing of IP packets between hosts. For routing, IP addresses are present in fields of the packet header where they indicate source and destination of the packet.
IPv6 is the successor to the first addressing infrastructure of the Internet, Internet Protocol version 4 (IPv4). In contrast to IPv4, which defined an IP address as a 32-bit value, IPv6 addresses have a size of 128 bits. Therefore, IPv6 has a vastly enlarged address space compared to IPv4.
IPv6 addresses are classified by the primary addressing and routing methodologies common in networking: unicast addressing, anycast addressing, and multicast addressing.
A unicast address identifies a single network interface. The Internet Protocol delivers packets sent to a unicast address to that specific interface.
An anycast address is assigned to a group of interfaces, usually belonging to different nodes. A packet sent to an anycast address is delivered to just one of the member interfaces, typically the nearest host, according to the routing protocol's definition of distance. Anycast addresses cannot be identified easily, they have the same format as unicast addresses, and differ only by their presence in the network at multiple points. Almost any unicast address can be employed as an anycast address.
A multicast address is also used by multiple hosts, which acquire the multicast address destination by participating in the multicast distribution protocol among the network routers. A packet that is sent to a multicast address is delivered to all interfaces that have joined the corresponding multicast group. IPv6 does not implement broadcast addressing. Broadcast's traditional role is subsumed by multicast addressing to the all-nodes link-local multicast group ff02::1. However, the use of the all-nodes group is not recommended, and most IPv6 protocols use a dedicated link-local multicast group to avoid disturbing every interface in the network.
An IPv6 address consists of 128 bits. For each of the major addressing and routing methodologies, various address formats are recognized by logically dividing the 128 address bits into bit groups and establishing rules for associating the values of these bit groups with special addressing features.
Unicast and anycast address format
Unicast and anycast addresses are typically composed of two logical parts: a 64-bit network prefix used for routing, and a 64-bit interface identifier used to identify a host's network interface.
bits 48 (or more) 16 (or fewer) 64 field routing prefix subnet id interface identifier
The network prefix (the routing prefix combined with the subnet id) is contained in the most significant 64 bits of the address. The size of the routing prefix may vary; a larger prefix size means a smaller subnet id size. The bits of the subnet id(entifier) field are available to the network administrator to define subnets within the given network. The 64-bit interface identifier is either automatically generated from the interface's MAC address using the modified EUI-64 format, obtained from a DHCPv6 server, automatically established randomly, or assigned manually.
A link-local address is also based on the interface identifier, but uses a different format for the network prefix.
bits 10 54 64 field prefix zeroes interface identifier
The prefix field contains the binary value 1111111010. The 54 zeroes that follow make the total network prefix the same for all link-local addresses (fe80::/64 link-local address prefix), rendering them non-routable.
Multicast address format
Further information: Multicast address § IPv6
Multicast addresses are formed according to several specific formatting rules, depending on the application.
bits 8 4 4 112 field prefix flg sc group ID
The prefix holds the binary value 11111111 for any multicast address.
Currently, 3 of the 4 flag bits in the flg field are defined; the most-significant flag bit is reserved for future use.
bit flag Meaning when 0 Meaning when 1 8 reserved reserved reserved 9 R (Rendezvous) Rendezvous point not embedded Rendezvous point embedded 10 P (Prefix) Without prefix information Address based on network prefix 11 T (Transient) Well-known multicast address Dynamically assigned multicast address
The 4-bit scope field (sc) is used to indicate where the address is valid and unique.
There are special multicast addresses, like Solicited Node.
The sc(ope) field holds the binary value 0010 (link-local). Solicited-node multicast addresses are computed as a function of a node's unicast or anycast addresses. A solicited-node multicast address is created by copying the last 24 bits of a unicast or anycast address to the last 24 bits of the multicast address.
bits 8 4 4 4 4 8 64 32 field prefix flg sc res riid plen network prefix group ID
Link-scoped multicast addresses use a comparable format.
An IPv6 address is represented as eight groups of four hexadecimal digits, each group representing 16 bits (two octets, a group sometimes also called a hextet). The groups are separated by colons (:). An example of an IPv6 address is:
The hexadecimal digits are case-insensitive, but IETF recommendations suggest the use of lower case letters. The full representation of eight 4-digit groups may be simplified by several techniques, eliminating parts of the representation.
Leading zeroes in a group may be omitted, but each group must retain at least one hexadecimal digit. Thus, the example address may be written as:
One or more consecutive groups containing zeros only may be replaced with a single empty group, using two consecutive colons (::). The substitution may only be applied once in the address, however, because multiple occurrences would create an ambiguous representation. Thus, the example address can be further simplified:
The localhost (loopback) address, 0:0:0:0:0:0:0:1, and the IPv6 unspecified address, 0:0:0:0:0:0:0:0, are reduced to ::1 and ::, respectively.
During the transition of the Internet from IPv4 to IPv6, it is typical to operate in a mixed addressing environment. For such use cases, a special notation has been introduced, which expresses IPv4-mapped and IPv4-compatible IPv6 addresses by writing the least-significant 32 bits of an address in the familiar IPv4 dot-decimal notation, whereas the other 96 (most significant) bits are written in IPv6 format. For example, the IPv4-mapped IPv6 address ::ffff:c000:0280 is written as ::ffff:192.0.2.128, thus expressing clearly the original IPv4 address that was mapped to IPv6.
Recommended representation as text
In an attempt to simplify IPv6 addresses, the standards provide flexibility in their representation. However, this also complicates several common operations: searching for a specific address in a text file or stream, and comparing two addresses to determine their equivalence. To mitigate these problems, the IETF has proposed a standard in RFC 5952 for a canonical format for rendering IPv6 addresses in text. Its specific recommendations are:
- Leading zeros in each 16-bit field are suppressed. For example, 2001:0db8::0001 is rendered as 2001:db8::1, though any all-zero field that is explicitly presented is rendered as 0.
- "::" is not used to shorten just a single 0 field. For example, 2001:db8:0:0:0:0:2:1 is shortened to 2001:db8::2:1, but 2001:db8:0000:1:1:1:1:1 is rendered as 2001:db8:0:1:1:1:1:1.
- Representations are shortened as much as possible. The longest sequence of consecutive all-zero fields is replaced by double-colon. If there are multiple longest runs of all-zero fields, then it is the leftmost that is compressed. E.g., 2001:db8:0:0:1:0:0:1 is rendered as 2001:db8::1:0:0:1 rather than as 2001:db8:0:0:1::1.
- Hexadecimal digits are expressed as lower-case letters. For example, 2001:db8::1 is preferred over 2001:DB8::1.
An IPv6 network uses an address block that is a contiguous group of IPv6 addresses of a size that is a power of two. The leading set of bits of the addresses are identical for all hosts in a given network, and are called the network's address or routing prefix.
Network address ranges are written in CIDR notation. A network is denoted by the first address in the block (ending in all zeroes), a slash (/), and a decimal value equal to the size in bits of the prefix. For example, the network written as 2001:db8:1234::/48 starts at address 2001:db8:1234:0000:0000:0000:0000:0000 and ends at 2001:db8:1234:ffff:ffff:ffff:ffff:ffff.
The routing prefix of an interface address may be directly indicated with the address by CIDR notation. For example, the configuration of an interface with address 2001:db8:a::123 connected to subnet 2001:db8:a::/64 is written as 2001:db8:a::123/64.
Address block sizes
The size of a block of addresses is specified by writing a slash (/) followed by a number in decimal whose value is the length of the network prefix in bits, rather than by explicitly specifying which addresses are in the block. For example, an address block with 48 bits in the prefix is indicated by /48. Such a block contains 2128 − 48 = 280 addresses. The smaller the value of the network prefix, the larger the block: a /21 block is 8 times larger than a /24 block.
Literal IPv6 addresses in network resource identifiers
Colon (:) characters in IPv6 addresses may conflict with the established syntax of resource identifiers, such as URIs and URLs. The colon has traditionally been used to terminate the host path before a port number. To alleviate this conflict, literal IPv6 addresses are enclosed in square brackets in such resource identifiers, for example:
When the URL also contains a port number the notation is:
Scoped literal IPv6 addresses
For addresses with other than global scope (as described below), and in particular for link-local addresses, the choice of the network interface for sending a packet may depend on which zone the address belongs to: the same address may be valid in different zones, and be in use by a different host in each of those zones. Even if a single address is not in use in different zones, the address prefixes for addresses in those zones may still be identical, which makes the operating system unable to select an outgoing interface based on the information in the routing table (which is prefix-based).
In order to resolve the ambiguity in textual addresses, a zone index must be appended to the address, the two separated by a percent sign (%). The syntax of zone indices is an implementation-dependent string, although numeric zone indices must be universally supported as well. The following link-local address:
could become for instance:
The former (using an interface name) is customary on most Unix-like operating systems (e.g., BSD, Linux, OS X). The latter (using an interface number) is the standard syntax on Microsoft Windows, but as support for this syntax is mandatory, it is also available on other operating systems.
BSD-based operating systems (including OS X) also support an alternative, non-standard syntax, where a numeric zone index is encoded in the second 16-bit word of the address. E.g.:
In all operating systems mentioned above, the zone index for link-local addresses actually refers to an interface, not to a zone. As multiple interfaces may belong to the same zone (e.g. when connected to the same switch), in practice two addresses with different zone-ids may actually be equivalent, and refer to the same host on the same link.
Use of zone indices in URIs
When used in uniform resource identifiers (URI), the use of the percent sign causes a syntax conflict, therefore it must be escaped via percent-encoding: E.g.:
Literal IPv6 addresses in UNC path names
In Microsoft Windows operating systems, IPv4 addresses are valid location identifiers in Uniform Naming Convention (UNC) path names. However, the colon is an illegal character in a UNC path name. Thus, the use of IPv6 addresses is also illegal in UNC names. For this reason, Microsoft implemented a transcription algorithm to represent an IPv6 address in the form of a domain name that can be used in UNC paths. For this purpose, Microsoft registered and reserved the second-level domainipv6-literal.net on the Internet (although they gave up the domain in January 2014). IPv6 addresses are transcribed as a hostname or subdomain name within this name space, in the following fashion:
is written as
This notation is automatically resolved by Microsoft software without any queries to DNS name servers.
If the IPv6 address contains a zone index, it is appended to the address portion after an 's' character:
is written as
Every IPv6 address, except the unspecified address (::), has a "scope", which specifies in which part of the network it is valid.
For unicast addresses, two scopes are defined: link-local and global.
Link-local addresses and the loopback address have link-local scope, which means they can only be used on a single directly attached network (link). All other addresses (including Unique local addresses) have global (or universal) scope, which means they are (or could be) globally routable, and can be used to connect to addresses with global scope anywhere, or to addresses with link-local scope on the directly attached network.[note 1]
Even though Unique local addresses have global scope, they are not globally administered. As a result, only other hosts inside the same administrative domain (e.g. an organisation), or inside a cooperating administrative domain will be able to reach such addresses (i.e. have a route to them). As their scope is global, these addresses are valid as a source address when communicating with any other global-scope address, even though it may be impossible to route packets from the destination back to the source.
Anycast addresses are syntactically identical to and indistinguishable from unicast addresses. Their only difference is administrative. Scopes for anycast addresses are therefore the same as for unicast addresses.
For multicast addresses, the four least-significant bits of the second address octet (ff0s::) identify the address scope, i.e. the domain in which the multicast packet should be propagated. Predefined and reserved scopes are:
Value Scope name Notes reserved interface-local Interface-local scope spans only a single interface on a node, and is useful only for loopback transmission of multicast. link-local Link-local scope spans the same topological region as the corresponding unicast scope. realm-local Realm-local scope is defined as larger than link-local, automatically determined by network topology and must not be larger than the following scopes. admin-local Admin-local scope is the smallest scope that must be administratively configured, i.e., not automatically derived from physical connectivity or other, non-multicast-related configuration. site-local Site-local scope is intended to span a single site belonging to an organisation. organization-local Organization-local scope is intended to span all sites belonging to a single organization. global Global scope spans all reachable nodes on the internet - it is unbounded. reserved
All other scopes are unassigned, and available to administrators for defining additional regions.
The management of IPv6 address allocation process is delegated to the Internet Assigned Numbers Authority (IANA) by the Internet Architecture Board and the Internet Engineering Steering Group. Its main function is the assignment of large address blocks to the regional Internet registries (RIRs), which have the delegated task of allocation to network service providers and other local registries. The IANA has maintained the official list of allocations of the IPv6 address space since December 1995.
Only one eighth of the total address space is currently allocated for use on the Internet, 2000::/3, in order to provide efficient route aggregation, thereby reducing the size of the Internet routing tables; the rest of the IPv6 address space is reserved for future use or for special purposes. The address space is assigned to the RIRs in large blocks of /23 up to /12.
The RIRs assign smaller blocks to local Internet registries that distributes them to users. These are typically in sizes from /19 to /32. The addresses are typically distributed in /48 to /56 sized blocks to the end users.
Global unicast assignment records can be found at the various RIRs or other websites.
IPv6 addresses are assigned to organizations in much larger blocks as compared to IPv4 address assignments—the recommended allocation is a /48 block which contains 280 addresses, being 248 or about 7014279999999999999♠2.8×1014 times larger than the entire IPv4 address space of 232 addresses and about 7016720000000000000♠7.2×1016 times larger than the /8 blocks of IPv4 addresses, which are the largest allocations of IPv4 addresses. The total pool, however, is sufficient for the foreseeable future, because there are 2128 (exactly 340,282,366,920,938,463,463,374,607,431,768,211,456) or about 7038340000000000000♠3.4×1038 (340 trillion trillion trillion) unique IPv6 addresses.
Each RIR can divide each of its multiple /23 blocks into 512 /32 blocks, typically one for each ISP; an ISP can divide its /32 block into 65536 /48 blocks, typically one for each customer; customers can create 65536 /64 networks from their assigned /48 block, each having 264 (18,446,744,073,709,551,616) addresses. In contrast, the entire IPv4 address space has only 232 (exactly 4,294,967,296 or about 7009430000000000000♠4.3×109) addresses.
By design, only a very small fraction of the address space will actually be used. The large address space ensures that addresses are almost always available, which makes the use of network address translation (NAT) for the purposes of address conservation completely unnecessary. NAT has been increasingly used for IPv4 networks to help alleviate IPv4 address exhaustion.
To allow for provider changes without renumbering, provider-independent address space – assigned directly to the end user by the RIRs – is taken from the special range 2001:678::/29.
Internet Exchange Points (IXPs) are assigned special addresses from the range 2001:7f8::/29 for communication with their connected ISPs.Root name servers have been assigned addresses from the same range.
Reserved anycast addresses
The lowest address within each subnet prefix (the interface identifier set to all zeroes) is reserved as the "subnet-router" anycast address. Applications may use this address when talking to any one of the available routers, as packets sent to this address are delivered to just one router.
The 128 highest addresses within each /64 subnet prefix are reserved to be used as anycast addresses. These addresses usually have the 57 first bits of the interface identifier set to 1, followed by the 7-bit anycast ID. Prefixes for the network, including subnets, are required to have a length of 64 bits, in which case the universal/local bit must be set to 0 to indicate the address is not globally unique. The address with value 0x7e in the 7 least-significant bits is defined as a mobile IPv6 home agents anycast address. The address with value 0x7f (all bits 1) is reserved and may not be used. No more assignments from this range are made, so values 0x00 through 0x7d are reserved as well.
See also: Reserved IP addresses § IPv6
There are a number of addresses with special meaning in IPv6:
- ::/128 — The address with all zero bits is called the unspecified address (corresponding to 0.0.0.0/32 in IPv4).
This address must never be assigned to an interface and is to be used only in software before the application has learned its host's source address appropriate for a pending connection. Routers must not forward packets with the unspecified address.
Applications may be listening on one or more specific interfaces for incoming connections, which are shown in listings of active internet connections by a specific IP address (and a port number, separated by a colon). When the unspecified address is shown it means that an application is listening for incoming connections on all available interfaces.
- ::/0 — The default route address (corresponding to 0.0.0.0/0 in IPv4) covering all addresses (unicast, multicast and others).
- ::1/128 — The loopback address is a unicast localhost address. If an application in a host sends packets to this address, the IPv6 stack will loop these packets back on the same virtual interface (corresponding to 127.0.0.1/8 in IPv4).
- fe80::/10 — Addresses in the link-local prefix are only valid and unique on a single link. Within this prefix only one subnet is allocated (54 zero bits), yielding an effective format of fe80::/64. The least significant 64 bits are usually chosen as the interface hardware address constructed in modified EUI-64 format. A link-local address is required on every IPv6-enabled interface—in other words, applications may rely on the existence of a link-local address even when there is no IPv6 routing. These addresses are comparable to the auto-configuration addresses 169.254.0.0/16 of IPv4.
Unique local addresses
Main article: Unique local address
- fc00::/7 — Unique local addresses (ULAs) are intended for local communication. They are routable only within a set of cooperating sites. The block is split into two halves. The lower half of the block (fc00::/8) was intended for globally allocated prefixes, but an allocation method has yet to be defined. The upper half (fd00::/8) is used for "probabilistically unique" addresses in which the /8 prefix is combined with a 40-bit locally-generated pseudorandom number to obtain a /48 private prefix. The fd00::/8 addresses are comparable to IPv4 private addresses (10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16), except that there is only a neglegible chance that two sites that wish to merge or communicate with each other, will have conflicting ULA addresses.
Transition from IPv4
Main article: IPv6 transition mechanisms
- ::ffff:0:0/96 — This prefix is designated as an IPv4-mapped IPv6 address. With a few exceptions, this address type allows the transparent use of the Transport Layer protocols over IPv4 through the IPv6 networking application programming interface. Server applications only need to open a single listening socket to handle connections from clients using IPv6 or IPv4 protocols. IPv6 clients will be handled natively by default, and IPv4 clients appear as IPv6 clients at their IPv4-mapped IPv6 address. Transmission is handled similarly; established sockets may be used to transmit IPv4 or IPv6 datagram, based on the binding to an IPv6 address, or an IPv4-mapped address. (See also Transition mechanisms.)
- ::ffff:0:0:0/96 — A prefix used for IPv4-translated addresses which are used by the Stateless IP/ICMP Translation (SIIT) protocol.
- 64:ff9b::/96 — The "Well-Known" Prefix. Addresses with this prefix are used for automatic IPv4/IPv6 translation.
Main article: 6to4
- 2002::/16 — This prefix is used for 6to4 addressing. Here, an address from the IPv4 network 18.104.22.168/24 is also used.
Main article: Teredo tunneling
- IANA has reserved a so-called 'Sub-TLA ID' address block for special assignments which consists of 64 network prefixes in the range 2001:0000::/29 through 2001:01f8::/29. Three assignments from this block have been made:
- 2001::/32 — Used for Teredo tunneling (which also falls into the category of IPv6 transition mechanisms).
- 2001:2::/48 — Assigned to the Benchmarking Methodology Working Group (BMWG) for benchmarking IPv6 (corresponding to 198.18.0.0/15 for benchmarking IPv4). Note: RFC 5180 specified the prefix 2001:0200::/48, which is not part of the RFC 4773 pool.
- 2001:20::/28 — ORCHIDv2 (Overlay Routable Cryptographic Hash Identifiers). These are non-routed IPv6 addresses used for Cryptographic Hash Identifiers.
- 2001:db8::/32 — This prefix is used in documentation. The addresses should be used anywhere an example IPv6 address is given or model networking scenarios are described (corresponding to 192.0.2.0/24, 198.51.100.0/24, and 203.0.113.0/24 in IPv4.)
- 0100::/64 — This prefix is used for discarding traffic.
Deprecated and obsolete addresses
Further information: § Historical notes
The multicast addresses ff0X:: where X is any hexadecimal value are reserved and should not be assigned to any multicast group. The Internet Assigned Numbers Authority (IANA) manages address reservations.
Some common IPv6 multicast addresses are the following:
Address Description Available Scopes All nodes address, identify the group of all IPv6 nodes Available in scope 1 (interface-local) and 2 (link-local):
- → All nodes in the interface-local
- → All nodes in the link-local
All routers Available in scope 1 (interface-local), 2 (link-local) and 5 (site-local):
- → All routers in the interface-local
- → All routers in the link-local
- → All routers in the site-local
OSPFIGP 2 (link-local) OSPFIGP designated routers 2 (link-local) RIP routers 2 (link-local) EIGRP routers 2 (link-local) All PIM routers 2 (link-local) All RPL routers 2 (link-local) mDNSv6 Available in all scopes All Network Time Protocol (NTP) servers Available in all scopes Link name 2 (link-local) All-dhcp-agents 2 (link-local) Link-local multicast name resolution 2 (link-local) All-dhcp-servers 5 (site-local) Solicited-node multicast address. See below 2 (link-local) Node information queries 2 (link-local)
Solicited-node multicast address
The least significant 24 bits of the solicited-node multicast address group ID are filled with the least significant 24 bits of the interface's unicast or anycast address. These addresses allow link layer address resolution via Neighbor Discovery Protocol (NDP) on the link without disturbing all nodes on the local network. A host is required to join a solicited-node multicast group for each of its configured unicast or anycast addresses.
Stateless address autoconfiguration
On system startup, a node automatically creates a link-local address on each IPv6-enabled interface, even if globally routable addresses are manually configured or obtained through "configuration protocols" (see below). It does so independently and without any prior configuration by stateless address autoconfiguration (SLAAC), using a component of the Neighbor Discovery Protocol. This address is selected with the prefix fe80::/64.
In IPv4, typical "configuration protocols" include DHCP or PPP. Although DHCPv6 exists, IPv6 hosts normally use the Neighbor Discovery Protocol to create a globally routable unicast address: the host sends router solicitation requests and an IPv6 router responds with a prefix assignment.
The lower 64 bits of these addresses are populated with a 64-bit interface identifier in modified EUI-64 format. This identifier is usually shared by all automatically configured addresses of that interface, which has the advantage that only one multicast group needs to be joined for neighbor discovery. For this, a multicast address is used, formed from the network prefix ff02::1:ff00:0/104 and the 24 least significant bits of the address.
A 64-bit interface identifier is most commonly derived from its 48-bit MAC address. A MAC address 00:0C:29:0C:47:D5 is turned into a 64-bit EUI-64 by inserting FF:FE in the middle: 00:0C:29:FF:FE:0C:47:D5. When this EUI-64 is used to form an IPv6 address it is modified: the meaning of the Universal/Local bit (the 7th most significant bit of the EUI-64, starting from 1) is inverted, so that a 1 now means Universal. To create an IPv6 address with the network prefix 2001:db8:1:2::/64 it yields the address 2001:db8:1:2:020c:29ff:fe0c:47d5 (with the underlined U/L (=Universal/Local) bit inverted to a 1, because the MAC address is universally unique).
Duplicate address detection
The assignment of a unicast IPv6 address to an interface involves an internal test for the uniqueness of that address using Neighbor Solicitation and Neighbor Advertisement (ICMPv6 type 135 and 136) messages. While in the process of establishing uniqueness an address has a tentative state.
The node joins the solicited-node multicast address for the tentative address (if not already done so) and sends neighbor solicitations, with the tentative address as target address and the unspecified address (::/128) as source address. The node also joins the all-hosts multicast address ff02::1, so it will be able to receive Neighbor Advertisements.
If a node receives a neighbor solicitation with its own tentative address as the target address, then that address is not unique. The same is true if the node receives a neighbor advertisement with the tentative address as the source of the advertisement. Only after having successfully established that an address is unique may it be assigned and used by an interface.
Each IPv6 address that is bound to an interface has a fixed lifetime. Lifetimes are infinite, unless configured to a shorter period. There are two lifetimes that govern the state of an address: the preferred lifetime and the valid lifetime. Lifetimes can be configured in routers that provide the values used for autoconfiguration, or specified when manually configuring addresses on interfaces.
When an address is assigned to an interface it gets the status "preferred", which it holds during its preferred-lifetime. After that lifetime expires the status becomes "deprecated" and no new connections should be made using this address. The address becomes "invalid" after its valid-lifetime also expires; the address is removed from the interface and may be assigned somewhere else on the Internet.
Note: In most cases, the lifetime does not expire because new Router Advertisements (RAs) refresh the timers. But if there are no more RAs, eventually the preferred lifetime elapses and the address becomes "deprecated".
The globally unique and static MAC addresses, used by stateless address autoconfiguration to create interface identifiers, offer an opportunity to track user equipment—across time and IPv6 network prefix changes—and so users. To reduce the prospect of a user identity being permanently tied to an IPv6 address portion, a node may create temporary addresses with interface identifiers based on time-varying random bit strings and relatively short lifetimes (hours to days), after which they are replaced with new addresses.
Temporary addresses may be used as source address for originating connections, while external hosts use a public address by querying the Domain Name System.
Network interfaces configured for IPv6 use temporary addresses by default in OS X Lion and later Apple systems as well as in Windows Vista, Windows 2008 Server and later Microsoft systems.
Default address selection
IPv6-enabled network interfaces usually have more than one IPv6 address, for example, a link-local and a global address, and permanent versus temporary addresses. IPv6 introduces the concepts of address scope and selection preference, yielding multiple choices for source and destination address selections in communication with another host.
The preference selection algorithm, which selects the most appropriate address to use in communications with a particular destination (including the use of IPv4-mapped addresses in dual-stack implementations), is based on a user-customizable preference table that associates each routing prefix with a precedence level. The default table is as follows:
Prefix Precedence Label Usage 50 0 Localhost 40 1 Default unicast 35 4 IPv4-mapped IPv6 address 30 2 6to4 5 5 Teredo tunneling 3 13 Unique local address 1 3 IPv4-compatible addresses (deprecated) 1 11 Site-local address (deprecated) 1 12 6bone (returned)
The default configuration places preference on IPv6, rather than IPv4, and on destination addresses within the smallest possible scope, so that link-local communication is preferred over globally routed paths when otherwise equally suitable. The prefix policy table is similar to a routing table, with the precedence value serving as the role of a link cost, where higher preference is expressed as a larger value. Source addresses are preferred to have the same label value as the destination address. Addresses are matched to prefixes based on the longest matching most-significant bit-sequence. Candidate source addresses are obtained from the operating system and candidate destination addresses may be queried via the Domain Name System (DNS).
Domain Name System
In the Domain Name System, hostnames are mapped to IPv6 addresses by AAAA resource records, so-called quad-A records. For reverse lookup the IETF reserved the domain ip6.arpa, where the name space is hierarchically divided by the 1-digit hexadecimal representation of nibble units (4 bits) of the IPv6 address. This scheme is defined in RFC 3596.
As in IPv4, each host is represented in the DNS by two DNS records: an address record and a reverse mapping pointer record. For example, a host computer named derrick in zone example.com has the Unique Local Address fdda:5cc1:23:4::1f. Its quad-A address record isderrick.example.com. IN AAAA fdda:5cc1:23:4::1f
and its IPv6 pointer record isf.22.214.171.124.0.0.0.0.0.0.0.0.0.0.0.4.0.0.0.3.126.96.36.199.c.c.5.a.d.d.f.ip6.arpa. IN PTR derrick.example.com.
This pointer record may be defined in a number of zones, depending on the chain of delegation of authority in the zone d.f.ip6.arpa.
The DNS protocol is independent of its Transport Layer protocol. Queries and replies may be transmitted over IPv6 or IPv4 transports regardless of the address family of the data requested.
|TTL||Time to live in seconds|
|RDLENGTH||Length of RDATA field|
|RDATA||128-bit IPv6 address, network byte order|
As of 2009, many DNS resolvers in home-networking NAT devices and routers still handle AAAA records improperly. Some of these simply drop DNS requests for such records, instead of properly returning the appropriate negative DNS response. Because the request is dropped, the host sending the request has to wait for a timeout to trigger. This often causes a slow-down when connecting to dual-stack IPv6/IPv4 hosts, as the client software will wait for the IPv6 connection to fail before trying IPv4. Use of the Happy Eyeballs algorithm by client software can mitigate this problem, by trying both IPv6 and IPv4 connections simultaneously, then using whichever connects first.
Deprecated and obsolete addresses
- The site-local prefix fec0::/10 specifies that the address is valid only within the site network of an organization. It was part of the original addressing architecture in December 1995, but its use was deprecated in September 2004 because the definition of the term site was ambiguous, which led to confusing routing rules. New networks must not support this special type of address. In October 2005, a new specification replaced this address type with unique local addresses.
- The address block 0200::/7 was defined as an OSI NSAP-mapped prefix set in August 1996, but was deprecated in December 2004.
- The 96-bit zero-value prefix ::/96, originally known as IPv4-compatible addresses, was mentioned in 1995 but first described in 1998. This range of addresses was used to represent IPv4 addresses within an IPv6 transition technology. Such an IPv6 address has its first (most significant) 96 bits set to zero, while its last 32 bits are the IPv4 address that is represented. In February 2006, the Internet Engineering Task Force (IETF) deprecated the use of IPv4-compatible addresses. The only remaining use of this address format is to represent an IPv4 address in a table or database with fixed size members that must also be able to store an IPv6 address.
- Address block 3ffe::/16 was allocated for test purposes for the 6bone network in December 1998. Prior to that, the address block 5f00::/8 was used for this purpose. Both address blocks were returned to the address pool in June 2006.
- For reverse DNS lookup, IPv6 addresses were originally registered in the DNS zone ip6.int, because it was expected that the top-level domain arpa would be retired. In 2000, the Internet Architecture Board (IAB) reverted this intention, and decided in 2001 that arpa should retain its original function. Domains in ip6.int were moved to ip6.arpa and zone ip6.int was officially removed on 6 June 2006.
- In March 2011, the IETF refined the recommendations for allocation of address blocks to end sites. Instead of assigning either a /48, /64, or /128 (according to IAB's and IESG's views of 2001), Internet service providers should consider assigning smaller blocks (for example a /56) to end users. The ARIN, RIPE & APNIC regional registries' policies encourage /56 assignments where appropriate.
- Originally, two proposals existed for translating domain names to IPv6 addresses: one using AAAA records, the other using A6 records. AAAA records, the method that prevailed, are comparable to A records for IPv4, providing a simple mapping from hostname to IPv6 address. The method using A6 records used a hierarchical scheme, in which the mapping of subsequent groups of address bits was specified by additional A6 records, providing the possibility to renumber all hosts in a network by changing a single A6 record. As the perceived benefits of the A6 format were not deemed to outweigh the perceived costs, the method was moved to experimental status in 2002, and finally to historic status in 2012.
- ^ abcdefghijkRFC 4291, IP Version 6 Addressing Architecture, R. Hinden, S. Deering (February 2006)
- ^Silvia Hagen (May 2006). IPv6 Essentials (Second ed.). O'Reilly. ISBN 978-0-596-10058-2.
- ^ abRFC 3956, Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address P. Savola, B. Haberman (November 2004)
- ^ abRFC 3306, Unicast-Prefix-based IPv6 Multicast Addresses, B. Haberman, D. Thaler (August 2002)
- ^RFC 4489, A Method for Generating Link-Scoped IPv6 Multicast Addresses, J-S. Park, M-K. Shin; H-J. Kim (April 2006)
- ^Graziani, Rick (2012). IPv6 Fundamentals: A Straightforward Approach to Understanding IPv6. Cisco Press. p. 55. ISBN 978-0-13-303347-2.
- ^Coffeen, Tom (2014). IPv6 Address Planning: Designing an Address Plan for the Future. O'Reilly Media. p. 170. ISBN 978-1-4919-0326-1.
- ^RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, T. Berners-Lee, R. Fielding, L. Masinter (January 2005)
- ^ abRFC 4007, IPv6 Scoped Address Architecture, S.Deering, B. Haberman, T. Jinmei, E. Nordmark, B. Zill (March 2005)
- ^Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers. Tools.ietf.org. Retrieved on 2013-07-09.
- ^"ipv6-literal.net Domain History". who.is. Retrieved 20 October 2014.
- ^RFC 7346, IPv6 Multicast Address Scopes, R Droms (August 2014)
- ^RFC 1881, IPv6 Address Allocation Management, Internet Architecture Board (December 1995)
- ^IPv6 address space at IANA. Iana.org (2010-10-29). Retrieved on 2011-09-28.
- ^IPv6 unicast address assignments, IANA
- ^DE-TELEKOM-20050113. Db.ripe.net. Retrieved on 2011-09-28.
- ^"ARIN Number Resource Policy Manual: Initial allocation to ISPs".
- ^"RIPE NCC IPv6 Address Allocation and Assignment Policy: Minimum allocation".
- ^ abcRFC 6177, IPv6 Address Assignment to End Sites, T. Narten, G. Houston, L. Roberts, IETF Trust,(March 2011).
- ^It is not mandatory for the source and destination address of a packet to have the same scope.