IPv6 is the next generation Internet Protocol [IP] address standard intended to supplement and eventually replace IPv4, the protocol many Internet services still use today. Every computer, mobile phone, home automation component, IoT sensor and any other device connected to the Internet needs a numerical IP address to communicate between other devices. The original IP address scheme, called IPv4, is running out of addresses due to its widespread usage from the proliferation of
so many connected devices. IPv4 stands for Internet Protocol version 4. It is the underlying technology that makes it possible for us to connect our devices to the web. Whenever a device accesses the Internet, it is assigned a unique, numerical IP address such as 99.48.227.227. To send data from one computer to another through the web, a data packet must be transferred across the network containing the IP addresses of both devices. IPv6 [Internet Protocol version 6] is the sixth revision to the Internet Protocol and the successor to IPv4. It functions similarly to IPv4 in that it provides the unique IP addresses necessary for Internet-enabled devices to communicate. However, it does have one significant difference: it utilizes a 128-bit IP address. Key benefits to IPv6 include: IPv4 uses a 32-bit address for its Internet addresses. That means it can provide support for 2^32 IP addresses in total â around 4.29 billion. That may seem like a
lot, but all 4.29 billion IP addresses have now been assigned, leading to the address shortage issues we face today. IPv6 utilizes 128-bit Internet addresses. Therefore, it can support 2^128 Internet addresses—340,282,366,920,938,463,463,374,607,431,768,211,456 of them to be exact. The number of IPv6 addresses is 1028 times larger than the number of IPv4 addresses. So there are more than enough IPv6 addresses to allow for Internet devices to expand for a very long time. The text form
of the IPv6 address is xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx, where each x is a hexadecimal digit, representing 4 bits. Leading zeros can be omitted. The double colon [::] can be used once in the text form of an address, to designate any number of 0 bits. With Dual-IP stacks, your computers, routers, switches, and other devices run both protocols, but IPv6 is the preferred protocol. A typical procedure for businesses is to start by enabling both TCP/IP protocol stacks on the wide area
network [WAN] core routers, then perimeter routers and firewalls, followed by data-center routers and finally the desktop access routers. With IPv6 becoming more prevalent in cloud provider and consumer access networks, you may already be on the path to IPv6 deployment with your network and applications. If you are looking to understand IPv6 in your environment there are three things you should be monitoring: ThousandEyes has support for IPv6 so that organizations can utilize IPv6 across all of their test types [web, network, voice, routing] and agent types [cloud, enterprise, endpoint]. ThousandEyes Cloud Agent support for IPv6 is provided on six continents allowing global coverage for organizations. ThousandEyes also supports the use of dual-stack IPv4 and IPv6 Enterprise Agents. Enterprise Agents can have both addresses
assigned and executes tests based on a user-defined preference for only IPv4, only IPv6 or a preference for IPv6.What is IPv4?
Why Support IPv6? What are
the benefits of IPv6?
ThousandEyes Support for IPv6
IPv6 Address Formats
An IPv6 address is 128 bits long and is written as eight groups of four hexadecimal digits [base 16 digits represented by the numbers 0-9 and the letters A-F]. Each group is separated by a colon [:]. For example, FC00:0000:130F:0000:0000:09C0:876A:130B is a complete and valid IPv6 address.
For convenience, IPv6 addresses can be written in a compressed format. Taking the IPv6 address FC00:0000:130F:0000:0000:09C0:876A:130B as an example:
- Any leading zeroes in a group can be omitted. The example address now becomes FC00:0:130F:0:0:9C0:876A:130B.
- A double colon [::] can be used when two or more consecutive groups contain all zeros. The example address now becomes FC00:0:130F::9C0:876A:130B.
An IPv6 address can contain only one double colon [::]. Otherwise, a computer cannot determine the number of zeros in a group when restoring the compressed address to the original 128-bit address.
IPv6 Address Structure
IPv6 addresses have two parts:
Network prefix: Corresponds to the network ID of an IPv4 address. It is comprised of n bits.
Interface identifier [interface ID]: Corresponds to the host ID of an IPv4 address. It is comprised of 128-n bits.
You can manually configure the interface ID, generate it through system software, or generate it in IEEE 64-bit Extended Unique Identifier [EUI-64] format. Generating an interface ID in EUI-64 format is the most common practice.
The 64-bit interface ID in an IPv6 address identifies a unique interface on a link. This address is derived from the link-layer address [such as a MAC address] of the interface. The 64-bit IPv6 interface ID is translated from a 48-bit MAC address by inserting a hexadecimal number into the MAC address, and then setting the U/L bit [the leftmost seventh bit] to 1.
If the interface has been configured with a MAC address, the EUI-64 address is generated based on the MAC address of the interface, with FFFE added in the middle.
If the interface has not been configured with a MAC address, the EUI-64 address is generated based on the following rules:
- Different Layer 3 physical interfaces may have the same MAC address. To address stacking conflicts, the EUI-64 address of a Layer 3 physical interface or a Layer 3 sub-interface is generated based on the MAC address of the physical interface, with the last two bytes following the interface index added in the middle.
- For loopback interfaces, VBDIF interfaces, and tunnel interfaces, the EUI-64 address is generated based on the MAC address of an interface, with the last two bytes following the interface index added in the middle.
- For Eth-Trunk interfaces and its sub-interfaces and VLANIF interfaces, the EUI-64 address is generated based on the MAC address of an interface, with FFFE added in the middle.
Taking the insertion of a hexadecimal number FFFE [1111 1111 1111 1110] into the middle of a MAC address as an example, see Figure 7-1 for the detailed conversion procedure.
For example, if the MAC address is 000E-0C82-C4D4, the interface ID is 020E:0CFF:FE82:C4D4 after the conversion.
Converting MAC addresses into IPv6 interface IDs reduces the configuration workload. When using stateless address autoconfiguration, you only need an IPv6 network prefix to obtain an IPv6 address. One defect of this method, however, is that an IPv6 address is easily calculable based on a MAC address, and could therefore be used for malicious attacks.
IPv6 Address Types
IPv6 addresses can be classified as unicast, multicast, or a new class called anycast. Unlike IPv4, there is no broadcast IPv6 address. Instead, a multicast address can be used as a broadcast address.
IPv6 Unicast Address
An IPv6 unicast address identifies an interface. Since each interface belongs to a node, the IPv6 unicast address of any interface can identify the relevant node. Packets sent to an IPv6 unicast address are delivered to the interface identified by that address.
A global unicast address cannot be the same as its network prefix because an IPv6 address which is the same as its network prefix is a subnet-router anycast address reserved for a device. However, this rule does not apply to an IPv6 address with a 127-bit network prefix.
IPv6 defines multiple types of unicast addresses, including the unspecified address, loopback address, global unicast address, link-local address, and unique local address.
Unspecified address
The IPv6 unspecified address is 0:0:0:0:0:0:0:0/128 or ::/128, indicating that an interface or a node does not have an IP address. It can be used as the source IP address of some packets, such as Neighbor Solicitation [NS] messages, in duplicate address detection. Devices do not forward packets with an unspecified address as the source IP address.
Loopback address
The IPv6 loopback address is 0:0:0:0:0:0:0:1/128 or ::1/128. Similar to the IPv4 loopback address 127.0.0.1, the IPv6 loopback address is used when a node needs to send IPv6 packets to itself. This IPv6 loopback address is usually used as the IP address of a virtual interface, such as a loopback interface. The loopback address cannot be used as the source or destination IP address of packets needing to be forwarded.
Global unicast address
An IPv6 global unicast address is an IPv6 address with a global unicast prefix, which is similar to an IPv4 public address. IPv6 global unicast addresses support route prefix summarization, helping limit the number of global routing entries.
Figure 7-2 shows a global unicast address consisting of a global routing prefix, subnet ID, and interface ID.
Figure 7-2 Global unicast address format
These components are described as follows:
Global routing prefix: is assigned by a service provider to an organization. A global routing prefix is comprised of at least 48 bits. Currently, the first 3 bits of every assigned global routing prefix is 001.
Subnet ID: is used by organizations to construct a local network [site]. Similar to an IPv4 subnet number, there are a maximum of 64 bits for both the global routing prefix and subnet ID.
Interface ID: identifies a device [host].
Link-local address
Link-local addresses are used only in communication between nodes on the same local link. A link-local address uses a link-local prefix of FE80::/10 as the first 10 bits [1111111010 in binary] and an interface ID as the last 64 bits.
When IPv6 runs on a node, a link-local address that consists of a fixed prefix and an interface ID in EUI-64 format is automatically assigned to each interface of the node. This mechanism enables two IPv6 nodes on the same link to communicate without any configuration, making link-local addresses widely used in neighbor discovery and stateless address configuration.
Devices do not forward IPv6 packets with the link-local address as a source or destination address to devices on different links.
Figure 7-3 shows the link-local address format.
Figure 7-3 Link-local address format
Unique local address
Unique local addresses are used only within a site. Site-local addresses have been replaced by unique local addresses.
Unique local addresses are similar to IPv4 private addresses. Any organization that does not obtain a global unicast address from a service provider can use a unique local address. However, they are routable only within a local network, not the Internet as a whole.
Figure 7-4 shows the unique local address format.
Figure 7-4 Unique local address format
These components are described as follows:
Prefix: is fixed as FC00::/7.
L: is set to 1 if the address is valid within a local network. The value 0 is reserved for future expansion.
Global ID: indicates a globally unique prefix, which is pseudo-randomly allocated.
Subnet ID: identifies a subnet within the site.
Interface ID: identifies an interface.
A unique local address has the following features:
- Has a globally unique prefix that is pseudo-randomly allocated with a high probability of uniqueness.
- Allows private connections between sites without creating address conflicts.
- Has a well-known prefix [FC00::/7] that allows for easy route filtering at site boundaries.
- Does not conflict with any other addresses if it is accidentally routed offsite.
- Functions as a global unicast address to applications.
- Is independent of Internet Service Providers [ISPs].
IPv6 Multicast Address
Like IPv4 multicast addresses, IPv6 multicast addresses identify groups of interfaces, which usually belong to different nodes. A node may belong to any number of multicast groups. Packets sent to an IPv6 multicast address are delivered to all the interfaces identified by the multicast address. For example, the multicast address FF02::1 indicates all nodes within the link-local scope, and FF02::2 indicates all routers within the link-local scope.
An IPv6 multicast address is composed of a prefix, a flag, a scope, and a group ID [global ID].
- Prefix: is fixed as FF00::/8.
- Flag: is 4 bits long. The high-order 3 bits are reserved and must be set to 0s. The last bit 0 indicates a permanently-assigned, well-known multicast address allocated by the Internet Assigned Numbers Authority [IANA]. The last bit 1 indicates a non-permanently-assigned [transient] multicast address.
- Scope: is 4 bits long. It limits the scope where multicast data flows are sent on the network. Figure 7-5 shows the field values and meanings.
- Group ID [global ID]: is 112 bits long. It identifies a multicast group. RFC does not define all the 112 bits as a group ID but recommends using the low-order 32 bits as the group ID and setting all of the remaining 80 bits to 0s. In this case, each multicast group ID maps to a unique Ethernet multicast MAC address.
Figure 7-5 shows the IPv6 multicast address format.
Figure 7-5 IPv6 multicast address format
Solicited-node Multicast Address
A solicited-node multicast address is generated using an IPv6 unicast or anycast address of a node. When a node has an IPv6 unicast or anycast address, a solicited-node multicast address is generated for the node, and the node joins the multicast group that corresponds to its IPv6 unicast or anycast address. Each unicast or anycast address corresponds to a single solicited-node multicast address, which is often used in neighbor discovery and duplicate address detection.
IPv6 does not support broadcast addresses or Address Resolution Protocol [ARP]. In IPv6, Neighbor Solicitation [NS] packets are used to resolve IP addresses to MAC addresses. When a node needs to resolve an IPv6 address to a MAC address, it sends an NS packet in which the destination IP address is the solicited-node multicast address corresponding to the IPv6 address.
The solicited-node multicast address consists of the prefix FF02::1:FF00:0/104 and the last 24 bits of the corresponding unicast address.
IPv6 Anycast Address
An anycast address identifies a group of network interfaces, which usually belong to different nodes. Packets sent to an anycast address are delivered to the nearest interface that is identified by the anycast address, depending on the routing protocols.
Application scenario: When a mobile host communicates with the mobile agent on the home subnet, it uses the anycast address of the subnet device.
Addresses specifications: Anycast addresses do not have independent address space. They can use the format of any unicast address. Syntax is required to differentiate an anycast address from a unicast address.
As IPv6 defines, an IPv6 address with the interface identifier of all 0s is a subnet-router anycast address. As shown in Figure 7-6, the subnet prefix is an IPv6 unicast address prefix which is specified during configuration of an IPv6 unicast address.
Figure 7-6 Format of a subnet-router anycast address
An anycast address is not necessarily a subnet-router anycast address and can also be a global unicast address.