IPv6 Routed Prefix vs Link Prefix: Technical Differences, Wireshark Analysis, and NDP Behavior


2 views

In IPv6 networking, a routed prefix (typically /48 to /64) represents a block of addresses delegated to an entire network for hierarchical routing, while a link prefix (always /64) is strictly bound to a specific network segment. The key difference manifests in three dimensions:

  1. Scope: Routed prefixes span multiple hops, link prefixes are layer-2 bound
  2. Delegation: Routed via DHCPv6-PD, link via RA announcements
  3. Lifetime: Routed prefixes have longer valid/preferred times

When capturing NDP traffic:

# Routed prefix host (shows global scope)
Src: 2001:db8:1:2::1/64
Dst: ff02::1 (All Nodes)
ICMPv6 Router Advertisement:
    Prefix: 2001:db8:1:2::/64 (L=1,A=1)
    Route Information: 2001:db8::/48 (Prf=Medium)

# Link-local only host
Src: fe80::1:2:3:4%eth0
Dst: ff02::2 (All Routers)
ICMPv6 Router Solicitation:
    No global prefix present

The Neighbor Discovery Protocol handles these prefixes differently:

Feature Routed Prefix Link Prefix
Address Autoconfig SLAAC + DHCPv6 SLAAC only
Router Advertisements Includes Route Info Option Basic Prefix Option
DAD (Duplicate Addr Detect) Global scope NS/NA Link-local scope

These prefixes work together in enterprise deployments:

# Example Linux networkd configuration
[Network]
DHCP=yes
IPv6Token=prefixstable
# For routed prefix
[DHCPv6]
UseDelegatedPrefix=yes
# For link prefix
[IPv6AcceptRA]
UseAutonomousPrefix=yes

The routed prefix provides external reachability while the link prefix handles intra-segment communication. This dual-stack approach appears in traceroutes where initial hops use link-local addresses before transitioning to routed prefixes.

When debugging prefix issues:

# Check assigned prefixes
ip -6 addr show
# 1: lo:  
#    inet6 2001:db8:1:2::1/64 scope global 
#       valid_lft 2592000 preferred_lft 604800
#    inet6 fe80::1/64 scope link 
#       valid_lft forever preferred_lft forever

# Verify NDP cache
ip -6 neigh show
# fe80::260:3ff:fe11:6770 dev eth0 lladdr 00:60:03:11:67:70 router REACHABLE
# 2001:db8:1:2::3 dev eth0 lladdr 00:16:3e:ab:cd:ef STALE

In IPv6 networking, routed prefixes and link prefixes serve distinct purposes. A routed prefix (typically /48 to /64) is assigned by ISPs or network administrators for routing across multiple network segments. Link prefixes (always /64) are used for communication within a single network segment.

When observing traffic in Wireshark:

# Example of a packet with routed prefix (global scope)
Source: 2001:db8:1234:5678::1
Destination: 2001:db8:abcd:ef12::2

# Example of a packet with link prefix (local scope)  
Source: fe80::1a2b:3c4d:5e6f:1a2b
Destination: ff02::1

Key differentiators:

  • Routed prefixes appear in global unicast addresses (2000::/3)
  • Link prefixes appear in link-local addresses (fe80::/10) or multicast
  • Routed prefix traffic shows full end-to-end routing headers

The Neighbor Discovery Protocol (NDP) handles these prefixes differently:

// Example NDP Router Advertisement with both prefix types
ICMPv6 Option (Prefix information - Global): 2001:db8:1234::/64
ICMPv6 Option (Prefix information - Link-local): fe80::/64

Observable differences:

  • Routed prefixes trigger global address autoconfiguration
  • Link prefixes are used for Duplicate Address Detection (DAD)
  • External hosts see routed prefixes in routing tables but not link prefixes

The two prefix types work in tandem:

# Linux example showing both address types
$ ip -6 addr show
1: lo:  
   inet6 ::1/128 scope host
2: eth0: 
   inet6 2001:db8:1234::1/64 scope global
   inet6 fe80::1a2b:3c4d:5e6f:1a2b/64 scope link

Key coordination points:

  • Link prefixes enable local communication before global routing is established
  • Routed prefixes depend on link-local addresses for NDP operations
  • Hosts maintain separate neighbor caches for each prefix type

Common issues and their signatures:

// Wireshark filter for NDP problems
icmpv6.type == 135 || icmpv6.type == 136 || icmpv6.type == 137

// Linux command to check prefix assignments
$ sysctl net.ipv6.conf.all.accept_ra

Diagnostic patterns:

  • Missing routed prefixes indicate DHCPv6 or RA configuration issues
  • Duplicate link prefixes suggest misconfigured routers
  • Mismatched prefix lifetimes cause intermittent connectivity