On a Cisco router, what does ipv6 unicast-routing do, and why does an IPv6 interface get two addresses?
ipv6 unicast-routing turns on IPv6 routing/forwarding (off by default); each interface then carries both a global address for routed traffic and an fe80:: link-local address for on-link signalling.
By default a Cisco router will configure IPv6 addresses but won't route IPv6 or act as a router (no Router Advertisements) until you enable it globally:
R1(config)# ipv6 unicast-routing
R1(config)# interface gig0/1
R1(config-if)# ipv6 address 2001:db8:acad:a::1/64 ! global unicast
R1(config-if)# ipv6 address fe80::1 link-local ! link-local
R1(config-if)# no shutdown
Every IPv6 interface ends up with two addresses:
- a global address (
2001:…) used as source/destination for routed, internet-bound traffic - a link-local address (
fe80::…) used for Neighbor Discovery, Router Advertisements, and as the next-hop in routing — it never leaves the link
Setting the link-local manually (e.g. fe80::1) just makes it human-readable; otherwise the router derives one automatically.
Tip: Forgetting ipv6 unicast-routing is the classic "my SLAAC clients get no address" bug — without it the router never sends Router Advertisements.