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
IP Connectivity Intermediate

IPv6 Routing — Static & OSPFv3

How routing works in an IPv6-only or dual-stack network. Covers IPv6 static routes, OSPFv3 (OSPF for IPv6), default routes, and the differences from IPv4 routing you need to know.

TL;DR
  • IPv6 routing follows the same logic as IPv4 — longest match → AD → metric — just with IPv6 addresses.
  • OSPFv3 is OSPF for IPv6. Neighbors peer via link-local (fe80::) addresses, not the global ones.
  • Default route in IPv6: `::/0` (the all-zeros equivalent of 0.0.0.0/0).

Mental model

IPv6 routing works like IPv4 routing. Same decision process (longest prefix match → administrative distance → metric, see Routing Decision Process). Same routing protocols (OSPF, EIGRP, BGP — each has an IPv6 variant). Same forwarding behavior at L3.

Three things to know that differ from IPv4:

  1. Routing protocols use link-local addresses for peering, not the global ones you configured.
  2. ipv6 unicast-routing must be enabled globally to forward IPv6.
  3. The default route is ::/0 (not 0.0.0.0/0).

Everything else is just longer hex addresses.

Enable IPv6 routing

Step zero on every IPv6-routing router:

R1(config)# ipv6 unicast-routing

Without this, the router accepts IPv6 addresses on interfaces but doesn’t actually route IPv6 between them. Easy to forget.

IPv6 static routing

Syntax mirrors IPv4 — different commands, same shape.

! Specific subnet via next-hop
R1(config)# ipv6 route 2001:db8:2::/64 2001:db8:12::2

! Same, with explicit exit interface (point-to-point recommended)
R1(config)# ipv6 route 2001:db8:2::/64 GigabitEthernet0/1

! Default route
R1(config)# ipv6 route ::/0 2001:db8:99::1

! Floating static — higher AD makes it a backup
R1(config)# ipv6 route 2001:db8:2::/64 2001:db8:99::2 200

Verify

R1# show ipv6 route
R1# show ipv6 route static
R1# show ipv6 route 2001:db8:2::1

show ipv6 route 2001:db8:2::1 (with a specific destination) returns the exact route the router would use — same as show ip route X for IPv4.

OSPFv3 — OSPF for IPv6

OSPFv3 is OSPF rewritten for IPv6. Same algorithm (link-state, Dijkstra/SPF), same area concept, same LSA-based propagation. Differences worth knowing:

OSPFv2 (IPv4)OSPFv3 (IPv6)
Network statementnetwork X.X.X.X 0.0.0.X area Nipv6 ospf N area M on the interface
Neighbor adjacencyUses configured IPv4Uses link-local (fe80::)
Router ID32-bit (looks like IPv4)32-bit (still looks like IPv4 — even though there’s no IPv4 in OSPFv3)
AuthenticationMD5, SHA-256Uses IPsec
LSA typesSame as OSPFv2 conceptuallyRenamed (Type 8 Link LSA, Type 9 Intra-Area Prefix LSA)

Minimal OSPFv3 config

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

! Configure router ID — required in OSPFv3 even if no IPv4 exists
R1(config)# ipv6 router ospf 1
R1(config-rtr)# router-id 1.1.1.1

! Enable OSPFv3 per-interface
R1(config)# interface GigabitEthernet0/0
R1(config-if)# ipv6 address 2001:db8:12::1/64
R1(config-if)# ipv6 ospf 1 area 0

R1(config)# interface GigabitEthernet0/1
R1(config-if)# ipv6 address 2001:db8:13::1/64
R1(config-if)# ipv6 ospf 1 area 0

The big difference: no network statement under the OSPF process. Per-interface enablement only. Cleaner.

Verify OSPFv3

R1# show ipv6 ospf neighbor
R1# show ipv6 ospf interface brief
R1# show ipv6 route ospf
R1# show ipv6 protocols

show ipv6 ospf neighbor confirms the peering. Neighbor addresses shown will be link-local (fe80::…) — not the global addresses you configured. This is expected.

Default route ::/0

The IPv4 default route is 0.0.0.0/0. The IPv6 equivalent:

R1(config)# ipv6 route ::/0 2001:db8:99::1

When OSPFv3 has a default to share:

R1(config)# ipv6 router ospf 1
R1(config-rtr)# default-information originate

(Same command as OSPFv2.)

Dual-stack — running IPv4 and IPv6 together

Most production networks run both IPv4 and IPv6 simultaneously. Each protocol runs independently — separate routing tables, separate routing protocols, separate ACLs.

R1(config)# interface GigabitEthernet0/0
R1(config-if)# ip address 10.0.0.1 255.255.255.0
R1(config-if)# ipv6 address 2001:db8:1::1/64

Both protocols active on the same interface. Hosts decide per-application (or per-connection) which one to use. IPv6 is generally preferred when available (Happy Eyeballs algorithm in modern OSes).

Common mistakes

  1. Forgetting ipv6 unicast-routing. Configured IPv6 addresses look fine but the router won’t route between them. The most common day-1 IPv6 mistake.

  2. Wondering why OSPFv3 neighbors show fe80:: addresses. That’s correct — OSPFv3 peers via link-local. Not a bug.

  3. Trying to use network ::/0 area 0-style statements. OSPFv3 enables per-interface. Different config style from OSPFv2.

  4. Not hard-coding router ID. OSPFv3 picks the router ID from an interface IP if you don’t set one — and if there’s no IPv4 anywhere, it refuses to start. Always router-id X.X.X.X.

  5. Mixing OSPFv2 and OSPFv3 expectations. They’re separate processes, separate configs, separate tables. Don’t expect show ip ospf to show OSPFv3 info. Use show ipv6 ospf.

  6. Forgetting separate ACLs for IPv6. ACLs are protocol-specific. An IPv4 ACL doesn’t affect IPv6 traffic. Configure both: ip access-list ... and ipv6 access-list ....

Lab to try tonight

  1. Three routers in a triangle. Each with one loopback (1::1, 2::2, 3::3) and /64 links between them.
  2. Enable ipv6 unicast-routing on all three.
  3. Configure OSPFv3 area 0 on all routers, per-interface.
  4. Set router IDs to 1.1.1.1, 2.2.2.2, 3.3.3.3.
  5. Verify neighbor relationships form: show ipv6 ospf neighbor. Note the fe80:: addresses.
  6. Verify routes: show ipv6 route ospf. Should see loopbacks of other routers.
  7. Break a link. Watch OSPFv3 re-converge.
  8. Bonus: add a static IPv6 route on one router as a backup with higher AD. Test failover.

Cheat strip

ConceptPlain English
ipv6 unicast-routingRequired globally to forward IPv6
::/0IPv6 default route
ipv6 route X via YStatic IPv6 route
OSPFv3OSPF for IPv6. Per-interface enablement.
Link-local peeringOSPFv3 neighbors are at fe80:: addresses
Router IDHardcode it. Looks like IPv4 (32-bit).
Dual stackIPv4 and IPv6 side-by-side, independent
Separate ACLsip access-list vs ipv6 access-list — different things
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 CCNP® 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