IPv6 Overview for CCNA
Learn IPv6 addressing, notation, address types, SLAAC, DHCPv6, Neighbor Discovery, routing, Cisco IOS configuration, coexistence, and troubleshooting for CCNA.
IPv6 is the Internet Protocol version designed to replace IPv4 over time. It provides 128-bit addresses, efficient autoconfiguration, multicast-based discovery, and a structure that supports continued network growth. This lesson covers the IPv6 concepts and Cisco IOS operations expected at CCNA level.
Why IPv6 Exists
IPv4 uses 32-bit addresses, providing about 4.3 billion possible address values. The growth of mobile devices, cloud services, broadband connections, sensors, and other connected systems made that space insufficient. Techniques such as private addressing and NAT extend IPv4, but they do not create more globally unique IPv4 addresses.
IPv6 uses a 128-bit address. The theoretical address space contains 2128 values, an extremely large increase over IPv4. This allows organizations to assign structured prefixes and globally unique addresses to interfaces without depending on widespread address translation.
IPv6 also improves operations beyond address capacity:
- A simplified base header makes common router processing more predictable.
- End-to-end addressing is easier because globally routable addresses can be assigned without requiring NAT for every connection.
- Stateless Address Autoconfiguration, or SLAAC, lets hosts form addresses from router advertisements.
- Multicast replaces broadcast for many discovery functions, reducing unnecessary traffic.
- Extension headers provide a structured way to add capabilities.
IPv4 and IPv6 coexist during migration. A network may use dual stack, tunneling, or translation. In dual-stack operation, devices maintain separate IPv4 and IPv6 addresses, forwarding decisions, routes, and troubleshooting requirements.
IPv6 Address Format and Notation
An IPv6 address contains 128 bits divided into eight 16-bit sections. Each section is called a hextet and is written using up to four hexadecimal digits. Hexadecimal uses digits 0 through 9 and letters A through F.
The full form contains eight hextets separated by colons:
2001:0DB8:0000:0000:0020:0000:0000:0001A prefix length follows a slash, just as in IPv4 CIDR notation. For example, 2001:db8:10:1::10/64 has a 64-bit network prefix and a 64-bit interface identifier.
Notation Rules
| Rule | What it changes | Valid example | Common error or limitation |
|---|---|---|---|
| Leading-zero suppression | Removes zeros at the beginning of an individual hextet | 0DB8 becomes DB8 | Do not remove meaningful zeros inside a hextet |
| Zero compression | Replaces one or more consecutive all-zero hextets with :: | 2001:db8:0:0:1:0:0:2 becomes 2001:db8::1:0:0:2 | :: can appear only once |
| Slash notation | States the number of prefix bits | 2001:db8:100:1::/64 | The prefix length is not another hextet |
To compress an address, first remove leading zeros from each hextet. Then replace the longest consecutive sequence of all-zero hextets with ::. If two sequences have the same length, compress the first one. An address cannot use double-colon compression twice because the number of omitted hextets would be ambiguous.
To expand a compressed address, count the visible hextets, subtract that number from eight, and replace :: with that many 0000 hextets. For example:
2001:0DB8:0000:0000:0020:0000:0000:0001
2001:DB8:0:0:20:0:0:1
2001:DB8::20:0:0:1The final address is valid because the double colon represents two omitted hextets. An address such as 2001::db8::1 is invalid because it uses compression twice.
An address identifies an interface. A prefix identifies a network range, such as 2001:db8:100:1::/64. The interface identifier is the portion used to distinguish an interface within that prefix.
IPv6 Address Structure
A typical global unicast address is divided into a global routing prefix, a subnet ID, and an interface ID. The exact bit allocation depends on the organization and provider, but a common LAN convention is a /64 prefix.
2001:db8:100:1:0000:0000:0000:0010/64
|--------- global routing prefix and subnet ID ---------| interface ID |Within a typical plan, the organization receives a routed prefix, uses some bits as a subnet ID to create LAN prefixes, and assigns the remaining 64 bits to interfaces. Subnetting commonly occurs within the subnet ID portion so every LAN can retain a /64 while the organization creates many distinct networks.
For example, all devices on one LAN can use 2001:db8:100:1::/64:
- Router:
2001:db8:100:1::1/64 - Host A:
2001:db8:100:1::10/64 - Host B:
2001:db8:100:1::20/64
The routed prefix must match for devices to consider one another on-link, while the interface identifiers must be unique.
IPv6 Address Types and Scopes
| Address type | Typical prefix or address | Scope | Primary purpose | Routable on the public Internet |
|---|---|---|---|---|
| Global unicast | 2000::/3 | Global | Unicast communication across routed networks | Yes |
| Link-local unicast | fe80::/10 | Local link | Neighbor Discovery, next hops, and local communication | No |
| Unique local | fc00::/7, commonly fd00::/8 | Private organization | Internal addressing without public Internet routing | No |
| Loopback | ::1 | Local device | Testing the local IPv6 stack | No |
| Unspecified | :: | None | Indicates that a source address is not yet known | No |
| Multicast | ff00::/8 | Defined by the multicast scope field | One-to-many delivery | Depends on scope and routing |
| Anycast | Uses a unicast-format address | Determined by routing | Same address assigned to multiple interfaces; routing selects a suitable instance | Possible |
Global unicast addresses are intended for routed communication and may be advertised on the public Internet. The documentation prefix 2001:db8::/32 is used in examples and documentation rather than production Internet addressing.
Link-local addresses are automatically present on IPv6-enabled interfaces and remain on the local Layer 2 link. They are essential for Neighbor Discovery and can be used as routing next hops. A link-local address must not be routed beyond its link.
Unique local addresses are private-use addresses for internal networks. They are useful when global addressing is unnecessary, but they are not a replacement for globally reachable addresses.
IPv6 has no broadcast address. Multicast groups provide more targeted alternatives. ff02::1 is the link-local all-nodes group, and ff02::2 is the link-local all-routers group. A solicited-node multicast address is formed for each unicast or anycast address and is used by Neighbor Discovery to ask about a specific neighbor without broadcasting to every host.
Interface ID Assignment Methods
- Manual static addressing: An administrator assigns the complete address and prefix length. This is predictable and common on routers and infrastructure.
- EUI-64: A 48-bit MAC address is split into two 24-bit halves,
FFFEis inserted between them, and the universal/local bit is inverted. The result is a 64-bit interface ID. For example, a MAC beginning021A.2B3C.4D5Eis transformed by insertingFFFEand changing the relevant bit. - Privacy-oriented random IDs: Hosts generate changing, randomized interface IDs to make long-term tracking more difficult.
- SLAAC: The host combines a prefix learned from a Router Advertisement with a locally generated interface ID.
- DHCPv6: A DHCPv6 server can assign addresses statefully or provide supplemental information such as DNS settings.
A host normally creates a link-local address as part of IPv6 initialization. It performs Duplicate Address Detection before using the address. A link-local address can be manually configured when predictable device-to-device operation or a stable routing next hop is required.
Neighbor Discovery Protocol
Neighbor Discovery Protocol, or NDP, is an ICMPv6-based set of functions that replaces several ARP-related IPv4 functions. It uses multicast and unicast rather than broadcast.
| ICMPv6 message | Sender | Purpose | Typical multicast or unicast behavior |
|---|---|---|---|
| Router Solicitation | Host | Requests router information | Usually sent to the all-routers multicast group |
| Router Advertisement | Router | Advertises prefixes, flags, lifetimes, and router information | Sent periodically to hosts or in response to solicitation |
| Neighbor Solicitation | Host or router | Resolves a neighbor's link-layer address, checks reachability, or performs DAD | Usually sent to the target's solicited-node multicast address |
| Neighbor Advertisement | Host or router | Responds with link-layer information or reachability status | Can be multicast or unicast |
| Redirect | Router | Informs a host of a better first hop | Normally unicast to the affected host |
Duplicate Address Detection uses Neighbor Solicitation before an address is assigned for normal use. A device that detects another device using the same address must not use the duplicate address. NDP also maintains neighbor reachability information and resolves IPv6 addresses to local link-layer destinations.
IPv6 Address Configuration
IPv6 routing must be enabled on a Cisco router before the router forwards IPv6 traffic and advertises IPv6 prefixes:
configure terminal
ipv6 unicast-routingA router interface can advertise a /64 prefix for SLAAC:
interface gigabitEthernet 0/0
ipv6 address 2001:db8:100:1::1/64
no shutdownHosts use Router Advertisements to learn the network prefix and the default router. In a normal SLAAC workflow, the default gateway is learned from the Router Advertisement; it is not delivered as an IPv6 gateway address by DHCPv6.
Router Advertisement flags influence host behavior:
- A flag: The host may use SLAAC to form its address.
- O flag: The host uses DHCPv6 for other information, such as DNS, while obtaining its address through SLAAC. This is often called stateless DHCPv6.
- M flag: The host obtains its address from DHCPv6. This is stateful DHCPv6.
| Method | Address source | Other configuration source | Router Advertisement role | Typical use case |
|---|---|---|---|---|
| Static | Administrator | Administrator or separate services | Optional | Routers and infrastructure |
| SLAAC | Host plus advertised prefix | RA and possibly DHCPv6 | Provides prefix and default router | Simple host autoconfiguration |
| Stateless DHCPv6 | SLAAC | DHCPv6 supplies additional settings | A and O flags indicate behavior | Automatic addressing with centralized options |
| Stateful DHCPv6 | DHCPv6 server | DHCPv6 server | M flag indicates managed addressing | Centralized address assignment |
IPv6 Packet and Transport Behavior
The IPv6 base header is simpler than the IPv4 header. Optional capabilities are carried in extension headers, which are placed between the base header and the upper-layer payload.
- Version: Identifies IPv6.
- Traffic Class: Supports traffic marking and quality-of-service treatment.
- Flow Label: Identifies packets belonging to a flow.
- Payload Length: Indicates the length after the base header.
- Next Header: Identifies the following extension header or transport protocol.
- Hop Limit: Decreases at each router and replaces the IPv4 TTL function.
- Source and destination addresses: Identify the communicating interfaces.
The IPv6 base header has no header checksum, reducing router work. Routers do not fragment IPv6 packets. Source hosts use Path MTU Discovery to learn the largest packet size that can traverse a path. ICMPv6 is therefore essential for normal operation, including error reporting, NDP, and Path MTU Discovery. Filtering all ICMPv6 can break an otherwise correctly addressed network.
IPv6 Routing Fundamentals
IPv6 routers can have connected, static, and dynamic routes. Route selection uses longest-prefix match: the route with the most matching prefix bits wins. The IPv6 default route is ::/0.
IPv6 routing commonly uses link-local next-hop addresses because they are stable on a local link. When a static route uses a link-local next hop, the router must also know the exit interface:
ipv6 route 2001:db8:100:2::/64 gigabitEthernet 0/1 fe80::2A global next hop can be used without specifying the interface when the router can resolve it through the routing table:
ipv6 route 2001:db8:100:2::/64 2001:db8:12::2
ipv6 route ::/0 2001:db8:12::2Always provide reciprocal routes. A router may successfully forward toward a destination while the destination's reply cannot return.
IPv4 and IPv6 Comparison
| Feature | IPv4 behavior | IPv6 behavior | Operational impact |
|---|---|---|---|
| Address size | 32 bits | 128 bits | Much larger address space |
| Address resolution | ARP and broadcast | NDP using ICMPv6 and multicast | Essential ICMPv6 must be permitted |
| Broadcast | Supported | Absent | Multicast groups are used instead |
| Fragmentation | Routers may fragment | Source hosts fragment; routers do not | Path MTU Discovery matters |
| Header checksum | Present in the IPv4 header | Absent from the IPv6 base header | Less router processing |
| Default route | 0.0.0.0/0 | ::/0 | Separate routing tables and verification |
IPv4 and IPv6 Coexistence
Dual stack gives hosts and routers both IPv4 and IPv6 configurations. Each protocol has independent addresses, routes, forwarding decisions, and failure modes. Dual stack is common because organizations can introduce IPv6 without immediately removing IPv4.
Tunneling carries IPv6 packets through an IPv4 network by encapsulating them inside IPv4. Translation converts between protocol families. NAT64 is a high-level example that allows IPv6-only clients to access IPv4 services through a translation system. These mechanisms solve different migration problems and introduce separate design and troubleshooting considerations.
Cisco IOS Foundational Operations
Configure a Dual-Stack Interface
configure terminal
ipv6 unicast-routing
interface gigabitEthernet 0/0
ip address 192.0.2.1 255.255.255.0
ipv6 address 2001:db8:100:1::1/64
no shutdownEvery IPv6-enabled interface should have a link-local address. IOS can generate one automatically, or a predictable address can be assigned:
interface gigabitEthernet 0/0
ipv6 address fe80::1 link-localVerify IPv6 State
| Command | What to verify | Expected evidence |
|---|---|---|
show ipv6 interface brief | Interface status and addresses | Interface is up/up and has IPv6 addresses |
show ipv6 interface gigabitEthernet 0/0 | Detailed IPv6 operation and RA information | IPv6 enabled, prefix, link-local address, and multicast groups |
show ipv6 route | Connected, static, dynamic, and default routes | Expected prefixes and next hops appear |
show ipv6 neighbors | NDP cache | Neighbor IPv6 addresses, link-layer addresses, and interfaces |
show running-config | section ipv6 | Configured IPv6 commands | Forwarding, addresses, and routes are present |
ping ipv6 2001:db8:100:2::10 | Reachability | Successful ICMPv6 replies |
traceroute ipv6 2001:db8:100:2::10 | Forwarding path | Intermediate IPv6 hops or the point of failure |
IPv6 Verification and Troubleshooting Workflow
- Check the physical and protocol state with interface commands. Confirm the interface is up/up.
- Verify link-local and global unicast addresses separately. A link-local address alone does not prove that global routing is configured.
- Confirm that devices on the same LAN use the same expected /64 prefix and that interface identifiers are unique.
- For SLAAC, verify that the router has a valid global /64, IPv6 forwarding is enabled, and Router Advertisements are available.
- Check
show ipv6 neighborsto confirm address resolution and neighbor reachability. - Inspect the routing table for connected prefixes, remote routes, and
::/0when a default route is required. - Test in stages: local link, directly connected remote interface, remote network, and finally the end host.
- Use IPv6 traceroute to identify the forwarding hop where traffic stops.
Common Failure Patterns
- Only link-local addresses appear: Check the router's global /64,
ipv6 unicast-routing, interface state, and Router Advertisements. - Same-LAN hosts cannot communicate: Compare prefixes and prefix lengths, check DAD results, inspect neighbor entries, and verify VLAN connectivity.
- Connected networks work but remote networks fail: Check for missing routes, incorrect next hops, a missing exit interface with a link-local next hop, and a missing return route.
- Reachability or name resolution is inconsistent: Check ACLs and firewalls for required ICMPv6, investigate MTU mismatches affecting Path MTU Discovery, and verify DNS or DHCPv6 settings separately from basic forwarding.
Exam-Relevant Notes
- IPv6 addresses have eight hextets and are 128 bits long.
- Use
::only once in an address; expand it by restoring enough zero hextets to reach eight. fe80::/10is link-local,::1is loopback,::is unspecified, andff00::/8is multicast.- IPv6 has no broadcast address.
- SLAAC learns the default router from Router Advertisements.
- Neighbor Discovery uses ICMPv6 multicast messages instead of IPv4 ARP broadcasts.
- IPv6 routers do not fragment packets; source hosts use Path MTU Discovery.
- A link-local static-route next hop requires an exit interface.
- IPv6 forwarding must be enabled on a Cisco router before it can route IPv6 traffic and advertise prefixes.
For related fundamentals, review the OSI Reference Model and Computer Network Explained. IPv6 routing practice also connects to Configure OSPF, while VLAN-based labs may require Configure Trunk Ports or Configure Router on a Stick.