IPv6 (Internet Protocol version 6) is the successor to IPv4 - a 128-bit address space (vs IPv4's 32-bit), a streamlined header, native autoconfiguration, and the protocol the internet has been "about to migrate to" for thirty years. The migration is real now: most major content providers, mobile networks, and cloud platforms support IPv6, and an increasing percentage of internet traffic is genuinely v6. For network engineers in 2026, IPv6 is no longer optional knowledge.
This is the cluster overview for the full PingLabz IPv6 series: the 128-bit address format, address types (link-local, global, unique-local), the simplified IPv6 header, ICMPv6 and Neighbor Discovery (the ARP replacement), SLAAC autoconfiguration, IPv6 routing protocols (OSPFv3, BGP for IPv6, EIGRP for IPv6, VRRPv3), and Cisco IOS XE configuration patterns. We will work through what IPv6 is, how it differs from IPv4, why the address format looks the way it does, and the configuration patterns that work in production. Every capture on this page comes from the dual-stack OSPFv2+OSPFv3 PingLabz reference lab - real IOS XE 17.16 output, not synthetic examples.
Why IPv6 Exists
IPv4's 32-bit address space provides 4.3 billion unique addresses. That sounded enormous in 1981; it is utterly inadequate now. The IANA exhausted its IPv4 pool in 2011; regional internet registries (ARIN, RIPE, APNIC, LACNIC, AFRINIC) ran out of fresh allocations between 2015 and 2020. IPv4 transfers and reclamations now drive any new allocation.
IPv6's 128-bit address space provides 340 undecillion (3.4 x 10^38) addresses. Enough that every grain of sand on Earth could have its own subnet. The address shortage is solved permanently.
But IPv6 is not just bigger addresses. The protocol designers used the redesign as an opportunity to fix several IPv4 design issues:
- Streamlined header. Fewer fields; fixed length (40 bytes vs IPv4's variable 20-60 bytes). Routers process IPv6 packets faster.
- No header checksum. Layer 2 (Ethernet) and Layer 4 (TCP/UDP) already have checksums; the IPv6 header drops it to save processing.
- No fragmentation by routers. Only the source can fragment; routers signal too-big errors via ICMPv6 PTB (Packet Too Big).
- Native autoconfiguration. SLAAC (Stateless Address Autoconfiguration) lets hosts assign their own IPv6 address without DHCP.
- Mandatory IPsec support. Originally required (now recommended); every IPv6 stack includes IPsec primitives.
- Built-in mobility, multicast, and extensibility. Mobile IPv6, MLD multicast, extension headers for new features without changing the base header.
The result is a protocol that scales to internet+IoT addresses and forwards faster than IPv4 on equivalent hardware.
The IPv6 Address Format
An IPv6 address is 128 bits, written as eight groups of four hexadecimal digits separated by colons:
2001:0db8:85a3:0000:0000:8a2e:0370:7334Two compression rules make addresses readable:
- Leading zeros in each group can be dropped. 0db8 becomes db8; 0000 becomes 0.
- One run of consecutive all-zero groups can be replaced with ::. Only one :: per address (otherwise ambiguous).
So the address above compresses to 2001:db8:85a3::8a2e:370:7334.
The /64 prefix length is the convention for hosts on a network. The first 64 bits identify the network; the last 64 bits identify the host. This 64/64 split is what enables SLAAC and Neighbor Discovery efficiencies.
The real show ipv6 interface output makes this concrete. On the PingLabz OSPF Reference Lab, R1's Ethernet0/0 has both a link-local FE80::/10 address and an EUI-64-derived global address from the configured /64 prefix:
R1#show ipv6 interface Ethernet0/0
Ethernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::A8BB:CCFF:FE00:300
No Virtual link-local address(es):
Description: To SW1 (Area 0 broadcast LAN)
Global unicast address(es):
2001:DB8:20:0:A8BB:CCFF:FE00:300, subnet is 2001:DB8:20::/64 [EUI]
Joined group address(es):
FF02::1
FF02::2
FF02::5
FF02::1:FF00:300
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND router advertisements are sent every 200 seconds
ND router advertisements live for 1800 seconds
Hosts use stateless autoconfig for addresses.Two things are happening on the same interface. There is a link-local address (FE80::A8BB:CCFF:FE00:300) - mandatory, automatic, never routed off-segment. And there is a global unicast address built from the configured prefix 2001:DB8:20::/64 plus the EUI-64 interface ID A8BB:CCFF:FE00:300, which is derived from R1's MAC address by inserting FF:FE in the middle and flipping the U/L bit. The [EUI] tag tells you exactly how the address was generated.
The "Joined group address(es)" list shows the multicast groups this interface listens to: FF02::1 all-nodes, FF02::2 all-routers, FF02::5 all-OSPFv3-routers, and FF02::1:FF00:300 the solicited-node multicast that replaces ARP. Multicast is fundamental to IPv6 - it is how the protocol replaced broadcast.
For the byte-level walkthrough including the compression rules and worked examples, see IPv6 Address Format Explained.
IPv6 Address Types
Two key observations: every IPv6 interface has a link-local address (FE80::/10) automatically; routing protocols use these as next-hops. Global unicast addresses are not strictly required for inside-AS forwarding; OSPFv3 and EIGRP for IPv6 work entirely over link-locals.
The IPv6 Header
The IPv6 header is 40 bytes, fixed length:
+-Version (4)-+-Traffic Class (8)-+-Flow Label (20)-----+
+-Payload Length (16)-+-Next Header (8)-+-Hop Limit (8)-+
+-Source Address (128 bits)----------------------------+
+-Destination Address (128 bits)-----------------------+
What is NOT in the IPv6 header (compared to IPv4):
- Header checksum (gone)
- Header length (fixed at 40)
- Identification, flags, fragment offset (only in extension headers if fragmenting)
- Options (replaced by extension headers, optional)
The result: more compact, faster to parse, easier to hardware-accelerate.
Neighbor Discovery: The ARP Replacement
IPv6 does not use ARP. Address resolution uses ICMPv6 Neighbor Discovery (NDP, RFC 4861). Five message types matter:
NDP is a strictly link-local protocol; messages have hop limit 255 and are dropped if any router decrements the hop limit (which would happen if they crossed a router). This is the GTSM-like protection against off-link attacks.
The neighbor table is the IPv6 equivalent of the ARP table. On the lab's ABR, three neighbors are visible - all by their link-local addresses, not their global ones:
R2#show ipv6 neighbors
IPv6 Address Age Link-layer Addr State Interface
FE80::A8BB:CCFF:FE00:300 0 aabb.cc00.0300 STALE Et0/0
FE80::A8BB:CCFF:FE00:400 0 aabb.cc00.0400 STALE Et0/0
FE80::A8BB:CCFF:FE00:500 0 aabb.cc00.0500 STALE Et0/1ND uses a state machine very different from ARP. STALE means "I last saw this neighbor more than 30 seconds ago and I have not actively forwarded traffic through it since" - which is normal for the steady state. Active forwarding triggers a transition through DELAY and PROBE; a confirmed-fresh entry sits in REACHABLE. The neighbor entries are always link-local because that is what ND learns from NS/NA exchanges on the segment.
SLAAC: Stateless Address Autoconfiguration
SLAAC is the IPv6 mechanism that lets hosts pick their own global address without DHCP. The flow:
- Host comes up; auto-assigns a link-local FE80:: address using EUI-64 or a random interface ID
- Host sends a Router Solicitation
- Router responds with Router Advertisement carrying the network's /64 prefix
- Host concatenates the prefix with its own interface ID to form a global address (e.g. prefix 2001:db8:1::/64 + interface ID becomes 2001:db8:1:0:abcd:ef01:2345:6789)
- Host runs Duplicate Address Detection (DAD) by sending an NS for its tentative address; if no response, it adopts the address
SLAAC is enabled by default on most IPv6 networks. DHCPv6 (a separate protocol) is used for stateful address assignment when the operator wants control, or for sending DNS server addresses (which RAs can also do via RDNSS option).
The SLAAC capture from the lab. R3's Et0/0 is configured with ipv6 address autoconfig instead of a static address. It heard the unsolicited RAs from R1 and R2, learned the on-link prefix 2001:DB8:20::/64, built an EUI-64 suffix from its own MAC, and assigned itself a global address - complete with the lifetimes the RA advertised:
R3#show ipv6 interface Ethernet0/0
Ethernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::A8BB:CCFF:FE00:400
Description: To SW1 (Area 0 broadcast LAN)
Stateless address autoconfig enabled
Global unicast address(es):
2001:DB8:20:0:A8BB:CCFF:FE00:400, subnet is 2001:DB8:20::/64 [EUI/CAL/PRE]
valid lifetime 2591929 preferred lifetime 604729
Joined group address(es):
FF02::1
FF02::2
FF02::5
FF02::6
FF02::1:FF00:400
MTU is 1500 bytes
Hosts use stateless autoconfig for addresses.The differences from R1's interface are exactly what SLAAC adds: the line "Stateless address autoconfig enabled" appears, the [EUI/CAL/PRE] tag has Calendar-valid and Preferred flags, and the address has explicit valid/preferred lifetimes (here 30 days valid, 7 days preferred - typical RA defaults). When those lifetimes expire, R3 will renew them via subsequent RAs or generate a new address. The forwarding table sees the SLAAC-installed on-link prefix as a route code NDp:
R3#show ipv6 route
NDp 2001:DB8:20::/64 [2/0]
via Ethernet0/0, directly connectedThe NDp code (Neighbor Discovery Prefix) only appears when the prefix was learned via SLAAC. A statically-configured prefix would show as C (Connected).
IPv6 Routing Protocols
OSPFv3 is the dominant IPv6 IGP in enterprise networks. Conceptually it is identical to OSPFv2 (same areas, same DR/BDR election on broadcast media, same SPF), but it runs as a separate protocol instance and uses link-local addresses for everything. The neighbor table on the dual-stack ABR makes both halves visible side by side:
R2#show ipv6 ospf neighbor
OSPFv3 Router with ID (10.255.0.2) (Process ID 100)
Neighbor ID Pri State Dead Time Interface ID Interface
10.255.0.1 1 FULL/DROTHER 00:00:35 1 Ethernet0/0
10.255.0.3 1 FULL/DR 00:00:35 1 Ethernet0/0
10.255.0.4 1 FULL/DR 00:00:38 1 Ethernet0/1OSPFv3 uses the IPv4 router-id (10.255.0.2) for the neighbor identifier - there is no separate v6 router-id space. State columns mirror OSPFv2: FULL is the steady state; DR/BDR/DROTHER apply on broadcast media.
The IPv6 routing table on the same router shows OSPFv3-learned routes. Note that the next-hops are link-local addresses, not the global ones - that is the OSPFv3 convention:
R2#show ipv6 route ospf
IPv6 Routing Table - default - 9 entries
O 2001:DB8:255::1/128 [110/10]
via FE80::A8BB:CCFF:FE00:300, Ethernet0/0
O 2001:DB8:255::3/128 [110/10]
via FE80::A8BB:CCFF:FE00:400, Ethernet0/0
O 2001:DB8:255::4/128 [110/10]
via FE80::A8BB:CCFF:FE00:500, Ethernet0/1Three loopback /128s, all reached through link-local next-hops on either the LAN (Et0/0) or the P2P link to R4 (Et0/1). End-to-end reachability across the dual-stack lab is the proof that everything is wired correctly:
R3#ping 2001:db8:255::4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:255::4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 2/3/8 msFor BGP IPv6, see the BGP cluster pillar and MP-BGP article. For OSPFv3, see the OSPF cluster pillar.
Cisco IOS XE Configuration
Enabling IPv6 globally and on an interface:
! Global enablement
ipv6 unicast-routing
ipv6 cef
! Per-interface (static)
interface Ethernet0/0
ipv6 address 2001:db8:20::2/64
! Per-interface (EUI-64 generated suffix)
interface Ethernet0/0
ipv6 address 2001:db8:20::/64 eui-64
! Per-interface (SLAAC client - learns prefix from RAs)
interface Ethernet0/0
ipv6 address autoconfig
! Link-local only, no global (useful for transit links between routers)
interface Ethernet0/1
ipv6 enableAdding OSPFv3 to make the lab routable is two extra lines per interface plus a protocol-level router-id. From the dual-stack PingLabz reference lab, R2 (the ABR) carries both v4 OSPFv2 and v6 OSPFv3 with parallel area structures - this is the production pattern for enterprises migrating gradually to IPv6:
! Add to each router after the IPv4 OSPF is already working
ipv6 router ospf 100
router-id 10.255.0.2 ! Reuse the IPv4 router-id; no separate v6 ID
! Per-interface enrollment in OSPFv3
interface Ethernet0/0
ipv6 address 2001:db8:20::2/64
ipv6 ospf 100 area 0
interface Ethernet0/1
ipv6 address 2001:db8:30::1/64
ipv6 ospf 100 area 30 ! Different area = ABR
interface Loopback0
ipv6 address 2001:db8:255::2/128
ipv6 ospf 100 area 0That's it. OSPFv3 picks up the configured areas, forms adjacencies on the link-local addresses, and exchanges LSAs. The DR/BDR election runs on broadcast media exactly as OSPFv2 does, but you read it from show ipv6 ospf interface rather than show ip ospf interface:
R3#show ipv6 ospf interface Ethernet0/0
Ethernet0/0 is up, line protocol is up
Link Local Address FE80::A8BB:CCFF:FE00:400, Interface ID 1
Area 0, Process ID 100, Instance ID 0, Router ID 10.255.0.3
Network Type BROADCAST, Cost: 10
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.255.0.3, local address FE80::A8BB:CCFF:FE00:400
Backup Designated router (ID) 10.255.0.2, local address FE80::A8BB:CCFF:FE00:200
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5R3 is DR on this segment (it tied on default priority and won on highest router-id). The local address recorded for the DR is the link-local FE80:: form, not the global - again, OSPFv3 cares about link-locals.
Quick verification commands:
! Show all IPv6-enabled interfaces
Router# show ipv6 interface brief
! Inspect a specific interface (link-local + global + multicast groups)
Router# show ipv6 interface Ethernet0/0
! Show the IPv6 routing table
Router# show ipv6 route
! Show the neighbor (ARP-replacement) table
Router# show ipv6 neighborsIPv6 Deep Dives in This Cluster
- IPv6 Address Format Explained Byte by Byte
- IPv4 vs IPv6: The Real Differences
- IPv6 Address Types: Link-Local, Global, Unique Local
- IPv6 Configuration on Cisco IOS XE
- IPv6 Header Format Explained
FAQ
What does IPv6 stand for?
IPv6 is Internet Protocol version 6, the successor to IPv4 (Internet Protocol version 4). The intermediate version 5 was an experimental streaming protocol that was never deployed; 6 was assigned to the next-generation IP project.
How much bigger is IPv6 than IPv4?
340 undecillion (3.4 x 10^38) IPv6 addresses vs 4.3 billion IPv4. Roughly 10^29 times bigger. Enough for every device on Earth to have many addresses each, and every grain of sand on Earth to have its own /64 subnet.
Is IPv6 actually deployed?
Yes. As of 2026, Google reports that around 45-50 percent of users connect via IPv6. Major content (Google, Facebook, Netflix, AWS, Azure) all support IPv6 natively. Mobile carriers in many countries default to IPv6-only for cellular data. Enterprise IPv6 adoption lags consumer/mobile but is increasing.
Should I disable IPv6 on my hosts?
No. Microsoft, Apple, and the IETF strongly advise against disabling IPv6. Disabled IPv6 causes issues with newer applications and breaks privacy extensions. If you don't want IPv6 routing, leave the protocol enabled but don't deploy IPv6 routing in your network.
Does IPv6 use ARP?
No. IPv6 uses ICMPv6 Neighbor Discovery (NDP) instead of ARP. NDP serves the same purpose (mapping IPv6 addresses to MAC addresses) but uses ICMPv6 messages over multicast rather than ARP's broadcast model. This is more efficient and integrates with the rest of IPv6 (RAs, etc.).
What are the private IPv6 addresses?
Unique Local Addresses (ULAs) in the FC00::/7 range, typically FD00::/8 in practice (the second half of the ULA range). Equivalent to IPv4's RFC 1918 private addresses but with a 40-bit pseudo-random Global ID to prevent collisions if networks are merged.
Hands-on IPv6 - configure addressing and routing
Configure IPv6 with manual and EUI-64 derivation, observe SLAAC, and build end-to-end IPv6 reachability with static routes using link-local next-hops. Real show ipv6 neighbors + ICMPv6 ping output. Open the PingLabz CCNA Labs library.
Key Takeaways
IPv6 is no longer optional knowledge for network engineers in 2026. The address space is 128-bit (340 undecillion addresses), the header is 40 bytes fixed, ARP is replaced by Neighbor Discovery, and SLAAC handles host autoconfiguration without DHCP. Routing protocols (OSPFv3, MP-BGP for IPv6, EIGRP for IPv6, VRRPv3) handle IPv6 with the same conceptual models as their IPv4 counterparts.
Master the address format, the address types, and Neighbor Discovery, and the rest of IPv6 follows naturally. Bookmark this page, work through the cluster articles in order, and lab everything in a controlled environment - IPv6 troubleshooting habits are different from IPv4 and need practice.