Skip to main content
Your first session is free. Claim mine
PacketMentor logo
Open menu
Home
Training
CCNA Library (74)
Browse all CCNA topics →
Network (13)
Device Operations (5)
Network Access (12)
Wireless (6)
IP Connectivity (10)
IP Services (11)
Security (10)
Automation (7)
CCNP Library (15)
LabsPricing
Contact 📞 +1 (860) 556-3010 Book a Call
← All topics
Network Fundamentals Foundational

IPv6 Basics

128-bit addresses, hex notation, the :: shortcut, address types (global, link-local, multicast), SLAAC, and why IPv6 is finally happening 25 years after it was supposed to.

TL;DR
  • IPv6 is 128 bits, written as 8 groups of 4 hex digits. The :: shortcut collapses one run of zero groups.
  • Three address types matter most: Global Unicast (public, like IPv4 public), Link-Local (fe80::/10, always present), and Multicast (ff00::/8).
  • SLAAC (Stateless Address Autoconfiguration) lets hosts pick their own IPv6 address from the prefix the router advertises — no DHCP needed.

Mental model

IPv4 has ~4 billion addresses, which is much less than the number of devices that want to be online. IPv6 has 128 bits of address space — 340 undecillion addresses (3.4 × 10³⁸). For practical purposes, infinite.

The pain: 128-bit addresses are unreadable in binary or decimal. IPv6 uses hex notation in 8 groups of 4 digits, separated by colons:

2001:0db8:acad:0001:0000:0000:0000:0005

That’s a lot to type. Two shortcuts make it bearable:

  1. Drop leading zeros within a group: 0db8db8, 00011.
  2. One :: per address collapses a run of zero groups: 0000:0000:0000:0005::5.

Final compressed form:

2001:db8:acad:1::5

The standard split: /64 prefix + /64 interface ID

By convention (and protocol requirement for SLAAC), every IPv6 subnet is /64:

  • First 64 bits = network prefix
  • Last 64 bits = host (interface ID)

That gives every subnet 2⁶⁴ ≈ 18 quintillion hosts — wildly excessive, by design. The math is simple. Don’t overthink it.

Three address types you need to know

TypeRangePurpose
Global Unicast2000::/3 (mostly 2001::/16)Routable on the public internet. Like IPv4 public.
Link-Localfe80::/10Only valid on a single link. Auto-assigned. Every IPv6 interface has one.
Unique Local (ULA)fc00::/7Internal use, not routed on the public internet. Like IPv4 private (RFC 1918).
Multicastff00::/8Groups. IPv6 has no broadcast — multicast replaces it.
Loopback::1/128localhost. Same role as 127.0.0.1.
Unspecified::/128”I don’t have an address yet.” Like 0.0.0.0.

For CCNA: focus on Global Unicast, Link-Local, and Multicast. ULA is the IPv6 RFC 1918 equivalent — not used as widely as you’d expect.

Every IPv6 interface generates a link-local address as soon as it comes up — without configuration. Format: fe80:: + a 64-bit interface identifier (often derived from the MAC).

It’s only valid on the local link (one switch / one cable). Routers don’t forward link-local traffic between subnets.

Why it matters: routing protocols (OSPFv3, EIGRPv6) and Neighbor Discovery use link-local addresses for peering — not the global ones. This trips up engineers who configure global IPv6 but forget link-local will be present too.

SLAAC — hosts pick their own address

In IPv4, hosts almost always get their IP from DHCP. In IPv6, there’s a built-in alternative: SLAAC (Stateless Address Autoconfiguration).

How it works:

  1. Router periodically advertises the /64 prefix on the link.
  2. Host hears it, takes the prefix, and generates its own /64 interface ID (random or based on MAC).
  3. Host checks no one else is using that full address (Duplicate Address Detection).
  4. Done — host has a unique IPv6, no DHCP server involved.

SLAAC doesn’t hand out DNS or domain info. For that, you either use DHCPv6 in parallel or rely on RDNSS options in Router Advertisements.

Commands

Enable IPv6 + assign addresses

R1(config)# ipv6 unicast-routing                      ! enable IPv6 globally

R1(config)# interface GigabitEthernet0/0
R1(config-if)# ipv6 address 2001:db8:acad:1::1/64    ! global unicast
R1(config-if)# ipv6 address autoconfig                ! or let SLAAC do it
R1(config-if)# ipv6 enable                            ! creates link-local even without a global

Verify

R1# show ipv6 interface brief
R1# show ipv6 interface GigabitEthernet0/0
R1# show ipv6 neighbors        ! IPv6 equivalent of ARP table
R1# show ipv6 route

Common mistakes

  1. Forgetting ipv6 unicast-routing. Without it, the router has IPv6 addresses but won’t route between them. Always enable globally.

  2. Using :: twice in one address. RFC says one :: per address only. 2001::1::5 is ambiguous (couldn’t tell how many zero groups each side has).

  3. Confusing IPv6 link-local with IPv4 APIPA. APIPA (169.254.x.x) means “DHCP failed, here’s a self-assigned address.” IPv6 link-local (fe80::/10) is always present, always valid, and used by routing protocols. Different beasts.

  4. Treating IPv6 like a larger IPv4. Some IPv4 reflexes don’t apply. There’s no broadcast in IPv6 (use multicast). There’s no NAT in standard IPv6 (every device has a globally unique address). ARP is replaced by Neighbor Discovery.

  5. Forgetting that 2001:db8::/32 is reserved for documentation. Never use it in production — it’s the equivalent of 192.0.2.0/24 in examples. Picking it for a real network → public internet doesn’t route it.

  6. Skipping IPv6 because “we’re not there yet.” Most cellular networks are IPv6-primary today. Major cloud providers, content delivery networks, and ISP backbones run IPv6 heavily. CCNA tests IPv6; production runs it. Time to learn.

Lab to try tonight

  1. Take any IPv6 address in long form. Practice compressing it to short form by hand. Verify with a calculator.
  2. On a router, enable ipv6 unicast-routing. Configure ipv6 address 2001:db8:acad:1::1/64 on an interface. Confirm with show ipv6 interface brief.
  3. Connect a PC. Set it to “Auto” for IPv6. Observe it pick up an address via SLAAC.
  4. Run ping 2001:db8:acad:1::1 from the PC. Verify reachability.
  5. show ipv6 neighbors on the router — should show the PC’s MAC and IPv6.
  6. Bonus: configure OSPFv3 between two routers on a /64 link. Note that neighbor adjacencies form using link-local (fe80::) addresses, not the global ones you configured.

Cheat strip

ConceptPlain English
128 bits8 hex groups, 4 digits each
::Collapse one run of all-zero groups. Once per address.
/64Standard subnet prefix length
Global Unicast2000::/3 — routable, like IPv4 public
Link-Localfe80::/10 — local-link only, always present
Multicastff00::/8 — groups. Replaces IPv4 broadcast.
SLAACHosts auto-generate IPv6 from router advertisements
ipv6 unicast-routingMust be on for the router to forward IPv6
2001:db8::/32Reserved for examples / documentation. Never production.
Master this on a real network

Want this drilled into reflex?

1:1 weekly sessions, live feedback on your labs, and US interview prep — built around the CCNA® exam blueprint. Free first session. No card on file until you decide.

Claim my free session →

One topic per email, every fortnight

VLANs, OSPF, ACLs, subnetting, automation — written like this. Unsubscribe in one click.

We respect your inbox. One email per week, max. Unsubscribe any time.

Start typing — or browse popular topics below.

↑↓ navigate open Searches topics · labs · programs · pages