🔵 Phase 4 · IP Addressing 🔴 Intermediate+ MODULE 12

IPv6 Addressing

⏱️ 4 hours
📖 7 sections
🧩 10 Questions
📊 Intermediate+
CCNA Module 12 of 1770%
🎯 What you'll learn: Why IPv4 ran out of addresses, IPv6 address representation and the rules for shortening it, address types (GUA, LLA, multicast), static and dynamic configuration (SLAAC, DHCPv6, EUI-64), and how to subnet an IPv6 network.

IPv4 Limitations

IPv4 uses 32-bit addresses, which provides roughly 4.3 billion unique addresses. That sounded enormous in 1981 when IPv4 was designed — but with billions of phones, laptops, servers, and IoT devices online today, the address space ran out years ago. The Internet has worked around the shortage with techniques like NAT and private addressing, but those are workarounds, not a long-term fix.

IPv6 was designed to solve this permanently. It uses 128-bit addresses, providing approximately 340 undecillion addresses (340 followed by 36 zeros) — enough to assign a unique address to every grain of sand on Earth many times over.

32
IPv4 address bits
128
IPv6 address bits
4.3B
IPv4 total addresses
340
undecillion
IPv6 total addresses

IPv6 isn't just bigger — it removes things IPv4 needed as crutches. There is no NAT requirement (every device can have a real, globally routable address), no broadcast (replaced by efficient multicast), and built-in support for autoconfiguration (SLAAC) so devices can self-assign an address without a DHCP server.

IPv4 and IPv6 will coexist for a long time. Common transition mechanisms include dual-stack (running both protocols simultaneously on the same device — the most common and recommended approach), tunneling (encapsulating IPv6 packets inside IPv4 to cross IPv4-only infrastructure), and translation (NAT64, which converts between IPv6 and IPv4 packets at the network edge).

💡
Dual-Stack Is the Recommended Migration Strategy
Most networks today run dual-stack — IPv4 and IPv6 active on the same interfaces simultaneously. This lets a network support both old and new clients without a disruptive flag-day cutover. Devices that support both protocols typically prefer IPv6 when a destination has both an IPv4 and an IPv6 address available.

IPv6 Address Representation

An IPv6 address is written as eight groups of four hexadecimal digits, separated by colons. Each group represents 16 bits, for a total of 128 bits (8 × 16 = 128).

Full IPv6 Address Format
IPv6
Full (unabbreviated) IPv6 address:
2001:0db8:0000:0000:0000:ff00:0042:8329

Each of the 8 groups = 16 bits (4 hex digits)
Total: 8 × 16 = 128 bits

Two rules make IPv6 addresses much shorter to write in practice:

Rule 1
Omit Leading Zeros
Each group's leading zeros can be dropped. 0db8 becomes db8. 0000 becomes 0. Applies per group, independently.
Rule 2
Double Colon (::)
One contiguous run of all-zero groups can be replaced with "::" — but only once per address, since using it twice would make the address ambiguous.
Applying Both Rules
IPv6
Original:    2001:0db8:0000:0000:0000:ff00:0042:8329
Step 1 — drop leading zeros in each group:
             2001:db8:0:0:0:ff00:42:8329
Step 2 — compress the contiguous all-zero run with ::
             2001:db8::ff00:42:8329

! Both addresses below are valid but only one "::" is allowed per address
CORRECT:   2001:db8::1:0:0:1
INVALID:   2001:db8::1::1   (two "::" — ambiguous, cannot be expanded)
⚠️
"::" Can Only Be Used Once
If an address used "::" twice, there would be no way to know how many zero groups belong in each gap. The CCNA exam often tests this exact rule — always check that a compressed address contains at most one "::".

IPv6 Address Types

IPv6 defines three types of communication, similar in concept to IPv4 but with one key difference: IPv6 has no broadcast. Its role is filled by multicast instead.

Unicast
One-to-One
Packet delivered to a single specific interface. The most common traffic type, same as in IPv4.
Multicast
One-to-Many
Delivered to all interfaces in a multicast group. Range FF00::/8. Replaces broadcast entirely in IPv6.
Anycast
One-to-Nearest
Same address assigned to multiple devices; packet delivered to the topologically nearest one. New in IPv6 — not present in IPv4.

Within unicast, there are several important address types to know for the exam:

GUA
Global Unicast Address
Globally unique and routable on the internet, similar to a public IPv4 address. Range 2000::/3.
LLA
Link-Local Address
Only valid on the local link/segment, never routed. Range FE80::/10. Every IPv6 interface has one — required for NDP.
ULA
Unique Local Address
Range FC00::/7 — similar in purpose to private IPv4 (RFC 1918), but not meant for NAT. Used for internal-only routing.
Loopback
::1
Equivalent of IPv4's 127.0.0.1 — used to test the local TCP/IP stack.
🔗
Every IPv6 Interface Has (at Least) Two Addresses
An IPv6-enabled interface automatically generates a link-local address (FE80::/10) the moment it comes up — this happens even before any global address is configured, and it's required for IPv6 to function (used by NDP for neighbor discovery). A device can then also have one or more global unicast addresses for actual internet communication. This is different from IPv4, where an interface typically has just one address.

GUA and LLA Static Configuration

IPv6 addresses can be configured manually on a Cisco router, just like IPv4 — using ipv6 address instead of ip address. The prefix length is always specified with a slash, never as a separate dotted-decimal mask.

Static GUA and LLA Configuration
Cisco IOS
! Configure a static Global Unicast Address (GUA)
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64
R1(config-if)# no shutdown

! Configure a custom static Link-Local Address (optional — auto-generated by default)
R1(config-if)# ipv6 address FE80::1 link-local

! Enable IPv6 routing globally (required for the router to forward IPv6 packets)
R1(config)# ipv6 unicast-routing

! Verify
R1# show ipv6 interface brief
GigabitEthernet0/0    [up/up]
  FE80::1
  2001:DB8:ACAD:1::1
✨
Don't Forget ipv6 unicast-routing
Cisco routers do not route IPv6 packets between interfaces until ipv6 unicast-routing is enabled globally. This is a one-time global command, not per-interface — easy to forget, and a very common cause of "IPv6 configured but not working" on the exam and in real labs.

Dynamic Addressing for IPv6 GUAs

IPv6 hosts can obtain a Global Unicast Address automatically, without manual configuration, through three different methods — each offering a different balance of automation and control.

Method 1
SLAAC Only
Stateless Address Autoconfiguration. The router's RA message provides the prefix; the host generates its own interface ID (via EUI-64 or randomly). No DHCPv6 server needed.
Method 2
SLAAC + Stateless DHCPv6
SLAAC provides the address as above, but the host also queries a DHCPv6 server for extra info (like DNS server addresses) that SLAAC alone doesn't provide.
Method 3
Stateful DHCPv6
Full DHCPv6 — the server assigns and tracks the entire address, similar to how DHCP works for IPv4. Gives administrators the most control.

The router signals which method to use through flags in its Router Advertisement (RA): the M flag (Managed) tells hosts to use stateful DHCPv6, and the O flag (Other) tells hosts to use stateless DHCPv6 for additional options.

When using SLAAC, the host needs a unique interface ID for the last 64 bits of its address. There are two ways to generate it:

EUI-64 vs Randomly Generated Interface ID
IPv6
EUI-64 Process — derives interface ID from the 48-bit MAC address:
MAC Address:        00:1A:2B:3C:4D:5E
Step 1 — split MAC in half, insert FFFE in the middle:
                     001A:2BFF:FE3C:4D5E
Step 2 — flip the 7th bit of the first byte (Universal/Local bit):
Result:              021A:2BFF:FE3C:4D5E

Randomly Generated — modern OSes (Windows, macOS, Linux) default to this
for privacy: a random 64-bit interface ID, changed periodically, so the
device cannot be tracked across networks by a fixed MAC-derived address.
💡
EUI-64 Makes a Device Trackable — Randomized IDs Fix That
EUI-64 is predictable and tied directly to the NIC's MAC address, which is great for stability but creates a privacy concern — the same device is recognisable everywhere it connects. This is why modern operating systems default to randomly generated, temporary interface IDs (RFC 4941 "privacy extensions") instead of EUI-64 for client devices.

Dynamic Addressing for IPv6 LLAs

Unlike a GUA, a Link-Local Address is generated automatically the instant IPv6 is enabled on an interface — no router, no RA, no configuration required. This is what allows two devices on the same link to communicate using IPv6 even with zero manual setup.

On Windows, the dynamic LLA uses a randomly generated interface ID by default (for privacy). On Cisco routers, the dynamic LLA is generated using the EUI-64 process based on the interface's MAC address, unless manually overridden.

Verifying IPv6 Address Configuration
Cisco IOS
R1# show ipv6 interface GigabitEthernet0/0
GigabitEthernet0/0 is up, line protocol is up
  IPv6 is enabled, link-local address is FE80::21A:2BFF:FE3C:4D5E
  Global unicast address(es):
    2001:DB8:ACAD:1::1, subnet is 2001:DB8:ACAD:1::/64
  Joined group address(es):
    FF02::1     (all-nodes multicast)
    FF02::2     (all-routers multicast)
    FF02::1:FF3C:4D5E  (solicited-node multicast)

! Quick brief view, same idea as "show ip interface brief"
R1# show ipv6 interface brief
✨
LLA Is Required, GUA Is Optional
A device cannot run IPv6 at all without a link-local address — it's used for the entire neighbor discovery process, including finding routers via RA/RS. A GUA is optional and only needed when the device must communicate beyond its local link. This is the opposite priority from IPv4, where a working address is assumed to be globally meaningful.

Subnet an IPv6 Network

IPv6 subnetting is conceptually simpler than IPv4 because address space is no longer scarce. Most organizations are assigned a /48 prefix and use the next 16 bits — bits 49 through 64 — as the Subnet ID, leaving the remaining 64 bits as the Interface ID for hosts.

Standard IPv6 Address Structure
IPv6
2001 : 0DB8 : ACAD : 0001 : 0000 : 0000 : 0000 : 0001
└──────── Global Routing Prefix ────────┘ └ Subnet ID ┘ └──────── Interface ID ────────┘
              (48 bits, assigned by ISP)      (16 bits)              (64 bits, host portion)

Example: 2001:db8:acad:0001::/64 — this whole block is one subnet for one VLAN

With 16 bits available for the Subnet ID, an organization with a /48 can create up to 65,536 subnets (2^16), each one a full /64 — far more than any IPv4 allocation would ever allow, and with no need to calculate usable host ranges, since 2^64 addresses per subnet is effectively limitless.

Allocating /64 Subnets from a /48
IPv6
Assigned prefix: 2001:db8:acad::/48

VLAN 10 (Sales):      2001:db8:acad:10::/64
VLAN 20 (Engineering): 2001:db8:acad:20::/64
VLAN 30 (Management):  2001:db8:acad:30::/64
WAN link 1:            2001:db8:acad:100::/64

! Each /64 subnet's Subnet ID is just the hex value in the 4th group
! No subnet-mask math required — every subnet is uniformly /64
🟦
/64 Is the Standard — Don't Subnet Smaller
Best practice is to always use a /64 prefix length for end-user subnets, even though that leaves 2^64 addresses on a single LAN — orders of magnitude more than will ever be needed. This is intentional: SLAAC, EUI-64, and several IPv6 features assume a 64-bit Interface ID and break if the prefix is longer than /64.
🔬
Challenge — Compress and Expand IPv6 Addresses
Apply both compression rules correctly
Task 1 — Compress: Write the shortest valid form of 2001:0db8:0000:0000:0008:0800:200c:417a

Task 2 — Expand: Write the full (uncompressed) form of fe80::42:acff:fe11:2

Task 3 — Identify: Is 2001:db8::1::1 a valid IPv6 address? Why or why not?
💡 Show answers
  • Task 1: 2001:db8::8:800:200c:417a — drop leading zeros, then compress the single all-zero run
  • Task 2: fe80:0000:0000:0000:0042:acff:fe11:0002 — expand "::" to the correct number of zero groups, then pad each group to 4 hex digits
  • Task 3: Invalid — it contains two "::" occurrences, which is never allowed since the address becomes ambiguous (impossible to know how many zero groups go in each gap)
🧩 Knowledge Check
10 questions — IPv6 Addressing
1. How many bits are in an IPv6 address?
2. How many times can "::" appear in a single IPv6 address?
3. Which prefix range identifies a Link-Local Address (LLA)?
4. Which IPv6 communication type replaces broadcast entirely?
5. Which command must be enabled globally on a Cisco router before it will route IPv6 packets between interfaces?
6. SLAAC allows a host to obtain a GUA without:
7. In the EUI-64 process, what value is inserted in the middle of the split MAC address?
8. What is the standard prefix length recommended for an IPv6 end-user LAN subnet?
9. With a 16-bit Subnet ID borrowed from a /48 prefix, how many /64 subnets can be created?
10. Which migration strategy runs IPv4 and IPv6 simultaneously on the same device?
Finished this module?
Mark it complete to track your CCNA progress.
🎉
Module 12 Complete!
You've mastered IPv6 — address representation, GUA/LLA/multicast, SLAAC, EUI-64, and subnetting. Next up: ICMP!
← Course Home
Phase 4 · CCNAModule 12 of 17
🗒 Cheat Sheet 📝 Worksheet