Representation of IPv6 Addresses by Rick Graziani

IPv6 addresses are 128 bits in length and written as a string of hexadecimal digits. Every 4 bits can be represented by a single hexadecimal digit, for a total of 32 hexadecimal values (016 [00002] through f16 [11112]). You will see later in this section how to possibly reduce the number of digits required to represent an IPv6 address. The alphanumeric characters used in hexadecimal are not case sensitive; therefore, uppercase and lowercase characters are equivalent. Although IPv6 address can be written in lowercase or uppercase, RFC 5952, A Recommendation for IPv6 Address Text Representation, recommends that IPv6 addresses be represented in lowercase.

As described in RFC 4291, the preferred form is x:x:x:x:x:x:x:x. Each x is a 16-bit section that can be represented using up to four hexadecimal digits, with the sections separated by colons. The result is eight 16-bit sections, or hextets, for a total of 128 bits in the address, as shown in Figure 4-1.

The longest representation of the preferred form includes a total of 32 hexadecimal values. Colons separate the groups of 4-bit hexadecimal digits.

The unofficial term for a section of four hexadecimal values is a hextet, similar to the term octet used in IPv4 addressing. An IPv6 address consists of eight hextets separated by colons. As Figure 4-1 illustrates, each hextet, with its four hexadecimal digits, is equivalent to 16 bits. For clarity, the term hextet is used throughout this book when referring to individual 16-bit segments. The following list shows several examples of IPv6 addresses using the longest representation of the preferred form:


At first glance, these addresses can look overwhelming. Don't worry, though. Later in this chapter, you will learn a technique that helps in reading and using IPv6 addresses. RFC 2373 and RFC 5952 provide two helpful rules for reducing the notation involved in the preferred format, which will be discussed next.

Rule 1: Omit Leading 0s

One way to shorten IPv6 addresses is to omit leading 0s in any hextet (that is, 16-bit section). This rule applies only to leading 0s and not to trailing 0s; being able to omit both leading and trailing 0s would cause the address to be ambiguous. Table 4-1 shows a list of preferred IPv6 addresses and how the leading 0s can be removed. The preferred form shows the address using 32 hexadecimal digits.

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0000
Leading 0s omitted 0:0:0:0:0:0:0:0

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0001
Leading 0s omitted 0:0:0:0:0:0:0:1

IPv6 Address ff02:0000:0000:0000:0000:0000:0000:0001
Leading 0s omitted ff02:0:0:0:0:0:0:1

IPv6 Address fe80: 0000: 0000: 0000:a299:9bff:fe18:50d1
Leading 0s omitted fe80:0:0:0:a299:9bff:fe18:50d1

IPv6 Address 2001: 0db8: 1111: 000a:00b0:0000:9000:0200
Leading 0s omitted 2001:db8:1111:a:b0:0:9000:200

IPv6 Address 2001: 0db8: aaaa: 0001:0000:0000:0000:0100
Leading 0s omitted 2001:db8:aaaa:1:0:0:0:100

IPv6 Address 2001: 0db8: aaaa: 0001:0000:0000:0000:0200
Leading 0s omitted 2001: 0db8: aaaa: 0001:0000:0000:0000:0200

It is important to remember that only leading 0s can be removed; if you deleted trailing 0s the address would be incorrect. To ensure that there is only one correct interpretation of an address, only leading 0s can be omitted, as shown in the following example:

0s omitted:


Incorrect (trailing 0s):


Correct (leading 0s):


Rule 2: Omit All-0s Hextets

The second rule for shortening IPv6 addresses is that you can use a double colon (::) to represent any single, contiguous string of two or more hextets (16-bit segments) consisting of all 0s. Table 4-2 illustrates the use of the double colon.

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0000
(::) All-0s segments ::

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0001
(::) All-0s segments ::0001

IPv6 Address ff02:0000:0000:0000:0000:0000:0000:0001
(::) All-0s segments ff02::0001

IPv6 Address fe80:0000:0000:0000:a299:9bff:fe18:50d1
(::) All-0s segments fe80::a299:9bff:fe18:50d1

IPv6 Address 2001:0db8:1111:000a:00b0:0000:0200
(::) All-0s segments 2001:0db8:1111:000a:00b0::0200

IPv6 Address 2001:0db8:0000:0000:abcd:0000:0000:1234
(::) All-0s segments 2001:0db8::abcd:0000:0000:1234

IPv6 Address 2001:0db8:aaaa:0001:0000:0000:0000:0100
(::) All-0s segments 2001:0db8:aaaa:0001::0100

IPv6 Address 2001:0db8:aaaa:0001:0000:0000:0000:0200
(::) All-0s segments 2001:0db8:aaaa:0001::0200

Only a single contiguous string of all-0s segments can be represented with a double colon; otherwise, the address would be ambiguous, as shown in this example:

Incorrect address using two double colons:


Possible ambiguous choices:


As you can see, if two double colons are used, there are multiple possible interpretations, and you don't know which address is the correct one.

What happens if you have an address with more than one contiguous string of all-0s hextets-for example, 2001:0db8:0000:0000:abcd:0000:0000:1234? In that case, where should you use the single double colon (::)?

RFC 5952 states that the double colon should represent:

The longest string of all-0s hextets. If the strings are of equal length, the first string should use the double colon (::) notation.

Therefore, 2001:0db8:0000:0000:abcd:0000:0000:1234 would be written 2001:0db8:: abcd:0000:0000:1234. Applying both Rules 1 and 2, the address would be written 2001:db8::abcd:0:0:1234.

Combining Rule 1 and Rule 2

You can combine the two rules just discussed to reduce an address even further. Table 4-3 illustrates how this works, showing the preferred address, application of rule 1, and application of rule 2. Again, spaces are left so you can better visualize where the 0s have been removed.

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0000
Compressed Format ::

IPv6 Address 0000:0000:0000:0000:0000:0000:0000:0001
Compressed Format ::1

IPv6 Address ff02:0000:0000:0000:0000:0000:0000:0001
Compressed Format ff02::1

IPv6 Address fe80:0000:0000:0000:a299:9bff:fe18:50d1
Compressed Format fe80::a299:9bff:fe18:50d1

IPv6 Address 2001:0db8:1111:000a:00b0:0000:0000:0200
Compressed Format 2001:db8:1111:a:b0::200

IPv6 Address 2001:0db8:0000:0000:abcd:0000:0000:1234
Compressed Format 2001:db8::abcd:0:0:1234

IPv6 Address 2001:0db8:aaaa:0001:0000:0000:0000:0100
Compressed Format 2001:db8:aaaa:1::100

IPv6 Address 2001:0db8:aaaa:0001:0000:0000:0000:0200
Compressed Format 2001:db8:aaaa:1::200

Even after applying the two rules to compress the format, an IPv6 address can still look unwieldy. Don't worry! Chapter 5, in IPv6 Fundamentals shows a technique that Rick Graziani calls the 3-1-4 rule. Using that rule makes IPv6 global unicast addresses (GUAs) easier to read than an IPv4 address and helps you recognize the parts of a GUA address.

About the Author

Rick Graziani has been an instructor of computer networking and computer science courses at Cabrillo College in Aptos, California since 1994. Rick also teaches networking courses in the Computer Engineering department at the University of California, Santa Cruz and is on the Curriculum Engineering team for Cisco Networking Academy.

Organizations are increasingly transitioning to IPv6, the next generation protocol for defining how devices of all kinds communicate over networks. Now fully updated, IPv6 Fundamentals offers a thorough, friendly, and easy-to-understand introduction to the knowledge and skills you need to deploy and operate IPv6 networks.

Leading networking instructor Rick Graziani explains all the basics simply and clearly, step-by-step, providing all the details you'll need to succeed. You'll learn why IPv6 is necessary, how it was created, how it works, and how it has become the protocol of choice in environments ranging from cloud to mobile and IoT.

Graziani thoroughly introduces IPv6 addressing, configuration options, and routing protocols, including EIGRP for IPv6, and OSPFv3 (traditional configuration and with address families). Building on this coverage, he then includes more in-depth information involving these protocols and processes.

This edition contains a completely revamped discussion of deploying IPv6 in your network, including IPv6/IPv4 integration, dynamic address allocation, and understanding IPv6 from the perspective of the network and host. You'll also find improved coverage of key topics such as Stateless Address Autoconfiguration (SLAAC), DHCPv6, and the advantages of the solicited node multicast address.

Throughout, Graziani presents command syntax for Cisco IOS, Windows, Linux, and Mac OS, as well as many examples, diagrams, configuration tips, and updated links to white papers and official RFCs for even deeper understanding.

Learn how IPv6 supports modern networks encompassing the cloud, mobile, IoT, and gaming devices
Compare IPv6 with IPv4 to see what has changed and what hasn't
Understand and represent IPv6 addresses for unicast, multicast, and anycast environments
Master all facets of dynamic IPv6 address allocation with SLAAC, stateless DHCPv6, and stateful DHCPv6
Understand all the features of deploying IPv6 addresses in the network including temporary addresses and the privacy extension
Improve operations by leveraging major enhancements built into ICMPv6 and ICMPv6 Neighbor Discovery Protocol
Configure IPv6 addressing and Access Control Lists using a common topology
Implement routing of IPv6 packets via static routing, EIGRP for IPv6, and OSPFv3
Walk step-by-step through deploying IPv6 in existing networks, and coexisting with or transitioning from IPv4

Reader Lucas Schultz says, "If you are looking to take the CCNA and IPv6 is not clear to you after Cisco material, this is the book you. This is the best in depth discuss about IPv6 how it works and the mechanisms to make it work. Author made it very easy to read and understand. Highly recommend this book to IT personnel or CCNA certification."