How to Configure IPv6 Routing on Cisco Routers: Static and Dynamic Routing Setup

How to Configure IPv6 Routing on Cisco Routers

Routing is where IPv6 stops being an addressing exercise and starts being a real network. Once devices have addresses, they need a way to reach networks that aren’t directly connected — and that’s where static routes and dynamic routing protocols come in. This guide covers configuring both static and dynamic IPv6 routing on Cisco routers, with practical labs, verification steps, and the troubleshooting knowledge you need for production networks.

IPv6 Routing Fundamentals

Before touching configuration, it helps to understand how IPv6 routing differs operationally from IPv4:

  • IPv6 routing must be explicitly enabled on Cisco IOS devices with ipv6 unicast-routing. Unlike IPv4, which routes by default once you assign addresses and enable interfaces, IPv6 forwarding is off until you turn it on globally.
  • IPv6 uses link-local addresses (fe80::/10) for next-hop resolution on point-to-point and multi-access links, meaning static routes and routing protocol neighbor relationships often reference link-local next-hops rather than global unicast addresses.
  • The IPv6 Routing Information Base (RIB) coexists with the IPv4 RIB but is entirely separate — show ipv6 route versus show ip route.
  • Route selection still follows administrative distance and metric rules, but AD defaults differ slightly by protocol and Cisco software version, so always verify with show ipv6 protocols.

Step 1: Enable IPv6 Routing Globally

Router(config)# ipv6 unicast-routing

Without this command, the router will not forward IPv6 packets between interfaces even if IPv6 addresses are configured everywhere.

Step 2: Assign IPv6 Addresses to Interfaces

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 address 2001:db8:1:1::1/64
Router(config-if)# no shutdown

Verify:

Router# show ipv6 interface brief
GigabitEthernet0/0    [up/up]
    fe80::1
    2001:DB8:1:1::1

Configuring Static IPv6 Routes

Static routing is straightforward and, for stub networks or default routes, often the right answer regardless of what dynamic protocol you’re running elsewhere.

Basic Static Route Syntax

Router(config)# ipv6 route DESTINATION-PREFIX/LENGTH NEXT-HOP

Example: Static Route via Next-Hop Global Address

Router(config)# ipv6 route 2001:db8:2::/64 2001:db8:1:1::2

Example: Static Route via Exit Interface

For point-to-point links, using the exit interface avoids next-hop resolution issues entirely:

Router(config)# ipv6 route 2001:db8:2::/64 Serial0/0/0

Example: Static Route Using Link-Local Next-Hop

This is common and requires specifying the outgoing interface alongside the link-local address, since link-local addresses aren’t globally unique and need interface context to resolve:

Router(config)# ipv6 route 2001:db8:2::/64 GigabitEthernet0/1 fe80::2

Default Route

Router(config)# ipv6 route ::/0 2001:db8:1:1::2

Floating Static Route for Backup Paths

Router(config)# ipv6 route 2001:db8:2::/64 2001:db8:1:1::3 210

The administrative distance of 210 here ensures this route is only used if the primary (default AD 1) static route or a dynamic route to the same destination becomes unavailable.

Verification of Static Routes

Router# show ipv6 route static
Router# show ipv6 route 2001:db8:2::/64

Sample output:

S   2001:DB8:2::/64 [1/0]
     via 2001:DB8:1:1::2

Dynamic Routing: OSPFv3

OSPFv3 is the IPv6-capable version of OSPF and, unlike OSPFv2, is configured directly under the interface rather than via network statements in most modern deployments (though the process still exists at the global level).

Basic OSPFv3 Configuration

Router(config)# ipv6 router ospf 1
Router(config-rtr)# router-id 1.1.1.1

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 ospf 1 area 0

Note: OSPFv3 requires a manually configured router-id in most cases since there may be no IPv4 addresses to derive one from automatically.

Multi-Area OSPFv3 Lab

Topology: R1 (Area 0) — R2 (ABR, Area 0/Area 1) — R3 (Area 1)

On R1:

ipv6 unicast-routing
ipv6 router ospf 1
 router-id 1.1.1.1
interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::1/64
 ipv6 ospf 1 area 0

On R2:

ipv6 unicast-routing
ipv6 router ospf 1
 router-id 2.2.2.2
interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::2/64
 ipv6 ospf 1 area 0
interface GigabitEthernet0/1
 ipv6 address 2001:db8:23::2/64
 ipv6 ospf 1 area 1

On R3:

ipv6 unicast-routing
ipv6 router ospf 1
 router-id 3.3.3.3
interface GigabitEthernet0/0
 ipv6 address 2001:db8:23::3/64
 ipv6 ospf 1 area 1

Verification

Router# show ipv6 ospf neighbor
Router# show ipv6 ospf interface brief
Router# show ipv6 route ospf

Sample neighbor output:

Neighbor ID     Pri   State           Dead Time   Interface ID   Interface
2.2.2.2           1   FULL/BDR        00:00:39    5              GigabitEthernet0/0

Dynamic Routing: EIGRP for IPv6

EIGRP for IPv6 is configured similarly to EIGRP for IPv4 but uses an address-family style or classic mode configuration depending on IOS version.

Classic Configuration (older IOS)

Router(config)# ipv6 router eigrp 100
Router(config-rtr)# eigrp router-id 1.1.1.1
Router(config-rtr)# no shutdown

Router(config)# interface GigabitEthernet0/0
Router(config-if)# ipv6 eigrp 100

Named Mode (Address-Family) Configuration — Recommended

Router(config)# router eigrp NAME-STRING
Router(config-router)# address-family ipv6 unicast autonomous-system 100
Router(config-router-af)# af-interface GigabitEthernet0/0
Router(config-router-af-interface)# no shutdown
Router(config-router-af-interface)# exit-af-interface
Router(config-router-af)# eigrp router-id 1.1.1.1

Verification

Router# show ipv6 eigrp neighbors
Router# show ipv6 route eigrp

Dynamic Routing: BGP for IPv6 (Brief Overview)

For networks running BGP, IPv6 routes are exchanged using the address-family ipv6 construct under the BGP process:

Router(config)# router bgp 65001
Router(config-router)# neighbor 2001:db8:1:1::2 remote-as 65002
Router(config-router)# address-family ipv6
Router(config-router-af)# neighbor 2001:db8:1:1::2 activate
Router(config-router-af)# network 2001:db8:100::/48

BGP configuration details, including communities, redistribution, filtering, and authentication, are covered in dedicated companion guides.

Redistribution Between Protocols

Redistributing between OSPFv3, EIGRP, and static routes for IPv6 works much like IPv4, with the same caution around routing loops and metric translation:

Router(config)# ipv6 router ospf 1
Router(config-rtr)# redistribute static metric-type 1 subnets
Router(config-rtr)# redistribute eigrp 100 metric-type 1

Always apply route-maps or distribute lists when redistributing to avoid accidentally injecting unwanted routes into a routing domain.

Performance Tuning Notes

For OSPFv3, tuning hello/dead intervals to match link characteristics matters more than most other knobs — the defaults (10-second hello, 40-second dead on broadcast links) work fine for most enterprise LANs, but WAN links with higher latency or less reliable connectivity may benefit from adjusted timers to avoid unnecessary adjacency flaps. For EIGRP, stuck-in-active (SIA) situations are the classic performance pain point in larger topologies; keeping the query domain bounded through summarization at area/AS boundaries prevents queries from propagating too widely and timing out. On platforms with hardware-based CEFv6 forwarding, route churn in the RIB (frequent adds/withdraws) is the main driver of control-plane CPU load rather than raw route count, so stability of the underlying protocol matters as much as table size.

Common Configuration Mistakes

  • Forgetting ipv6 unicast-routing. This single missing line is the number one cause of “IPv6 addresses are configured but nothing routes” tickets.
  • Mismatched OSPFv3 areas across a link. Both sides must agree on area number, just like OSPFv2.
  • Using a link-local address as a static route next-hop without specifying the exit interface. This fails to resolve because link-local addresses aren’t unique without interface context.
  • Not configuring a router-id for OSPFv3 or EIGRPv6 on a router with no IPv4 addresses configured anywhere, which can prevent the process from starting.
  • Assuming IPv4 and IPv6 share administrative distance defaults identically — always verify with show ipv6 protocols rather than assuming parity.

Best Practices

  1. Enable ipv6 unicast-routing as a standard baseline config item on every router image/template, even before addressing is finalized.
  2. Use named-mode EIGRP for consistency with modern IOS-XE deployments and easier per-address-family tuning.
  3. Explicitly set router-IDs for OSPFv3 and EIGRP rather than relying on auto-derivation.
  4. Summarize routes at area/AS boundaries to keep IPv6 routing tables lean, same discipline as IPv4.
  5. Document static route purpose with descriptions where the platform supports route tagging or comments in configuration management tooling.

Troubleshooting Checklist

  • show ipv6 interface brief — confirm addressing and interface state.
  • show ipv6 route — confirm the route exists and via what protocol/next-hop.
  • show ipv6 ospf neighbor / show ipv6 eigrp neighbors — confirm adjacency formed.
  • show ipv6 protocols — confirm the process is active and administrative distances.
  • ping ipv6 and traceroute ipv6 to validate actual reachability end to end.
  • Check for MTU mismatches on OSPFv3 adjacencies, a common cause of stuck EXSTART/EXCHANGE states.

FAQs

Do I need ipv6 unicast-routing on every router, or just the core? Every router that needs to forward IPv6 traffic between interfaces (i.e., anything beyond a single-homed end host) needs this command.

Can I run OSPFv2 and OSPFv3 simultaneously on the same router? Yes, they are entirely separate processes and can coexist for dual-stack environments.

Is a router-id mandatory for OSPFv3? It’s strongly recommended and often effectively mandatory in environments without IPv4 addressing to derive one from automatically.

Does floating static routing work the same way in IPv6 as IPv4? Yes — specify a higher administrative distance than the primary route, and the router uses it only when the primary route disappears from the RIB.

Summary

IPv6 routing on Cisco routers follows the same conceptual framework as IPv4 — static routes for simplicity and control, dynamic protocols like OSPFv3, EIGRP, and BGP for scale and resilience — but with IPv6-specific syntax, link-local next-hop handling, and the critical ipv6 unicast-routing prerequisite. Getting comfortable with these differences, testing adjacencies methodically, and applying the same redistribution discipline you’d use in IPv4 will get you a stable, scalable dual-stack or IPv6-only routing domain.

References

  • IPv6 Static Routes Configuration Guide: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/ipv6/configuration/xe-16/ip6b-xe-16-book.html
  • Implementing OSPFv3: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/xe-16/iro-xe-16-book.html
  • Implementing EIGRP for IPv6: https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/eigrp/configuration/xe-16/ire-xe-16-book.html
Total
0
Shares

Leave a Reply

Previous Post
How to Set Up IPv6 on Cisco Routers

How to Set Up IPv6 on Cisco Routers: Complete Addressing and Configuration Guide

Next Post
How to Implement IPv6 ACLs on Cisco Routers

How to Implement IPv6 ACLs on Cisco Routers: Traffic Filtering and Security Configuration

Related Posts