How To Enable IPv6 Routing | Turn On Forwarding Per Platform

IPv6 routing must be turned on explicitly — Cisco IOS requires the ipv6 unicast-routing command, and Oracle Solaris uses routeadm — before any interface forwards IPv6 traffic.

A router with IPv6 addresses configured on its interfaces still will not forward a single IPv6 packet until you flip the global routing switch. The exact command depends on the platform — Cisco needs ipv6 unicast-routing, Oracle Solaris uses routeadm -e ipv6-routing -u, and skipping this step is the single most common mistake in IPv6 routing setup. This guide covers how to enable IPv6 routing on the two most common enterprise platforms with the verified commands and the interface configuration that follows.

Enabling IPv6 Routing: The Exact Commands by Platform

IPv6 routing is never on by default on enterprise routers and hosts. Unlike IPv4, which sometimes routes out of the box on certain hardware, IPv6 requires an explicit enable command before any Layer 3 forwarding happens. The global toggle changes the device from treating IPv6 like a host to acting as a router — and without it, all the per-interface IPv6 addresses in the world will not move a single packet between subnets.

On Cisco IOS, IOS XE, and Layer 3-capable Catalyst switches, the single command that activates IPv6 routing is ipv6 unicast-routing, entered from global configuration mode. Cisco’s official configuration guide lists it as a required prerequisite before any IPv6 static or dynamic routing can function. On Catalyst switches that support Layer 3 forwarding, you also need ip routing enabled first — without IPv4 routing active, the IPv6 routing subsystem stays off.

Oracle Solaris treats IPv6 routing as a service that must be explicitly activated. On Solaris 11 and later, run routeadm -e ipv6-routing -u from a privileged shell to enable both routing and packet forwarding in one step. On older Solaris releases that use the Service Management Facility, the equivalent command is svcadm enable ipv6-forwarding. The Cisco IPv6 unicast routing documentation confirms that both ip routing and ipv6 unicast-routing must be set before any IPv6 static routes take effect, and confirms the same enable-first pattern applies across platforms.

What Does the ipv6 unicast-routing Command Actually Do?

The command enables IPv6 packet forwarding between interfaces at the global level. Without it, a Cisco router will accept IPv6 addresses on its interfaces and respond to pings addressed to itself, but it will never forward a packet arriving on one interface out through another. It is a single toggle — once entered, the device starts acting as an IPv6 router rather than an IPv6 host.

The steps that follow enablement are straightforward:

  • Configure an IPv6 address on each transit interface with ipv6 address prefix/length [eui-64]
  • Bring the interface up with no shutdown
  • Add static routes with ipv6 route prefix next-hop or enable a dynamic routing protocol

The eui-64 option generates the interface identifier from the MAC address, but you can also specify the full 128-bit address manually. Cisco examples commonly use a /64 prefix, and the link-local address is derived automatically on each interface once the IPv6 address is assigned.

How Do You Enable IPv6 Routing on Oracle Solaris?

Oracle Solaris treats IPv6 routing as a service that must be activated through the routing-administration framework. On Solaris 11 and later, the routeadm command controls both routing and forwarding, and the single line routeadm -e ipv6-routing -u enables both at once. The -e flag turns the feature on, and -u applies the change immediately without a reboot.

On older Solaris releases that use the Service Management Facility, the command changes to svcadm enable ipv6-forwarding. Oracle explicitly warns that the recommended command has changed across releases, so confirming the Solaris version before running either command avoids a silent failure where the service stays off. In both cases, the interface must already have an IPv6 address assigned before the router will begin forwarding traffic.

Platform Enable Command What It Does
Cisco IOS / IOS XE ipv6 unicast-routing Turns on global IPv6 forwarding; prerequisite for all IPv6 routing
Cisco Layer 3 switch ip routing + ipv6 unicast-routing IPv4 routing must be active before IPv6 routing starts
Cisco interface (post-enable) ipv6 address 2001:db8::/64 eui-64 Assigns an IPv6 address on a transit interface
Cisco static route ipv6 route 2001:db8:1::/64 GigabitEthernet0/0 FE80::2 Adds a route with next-hop and outgoing interface
Oracle Solaris 11+ routeadm -e ipv6-routing -u Enables routing and forwarding in one command
Oracle Solaris (SMF releases) svcadm enable ipv6-forwarding Enables forwarding through the Service Management Facility
H3C routers ipv6 (global enable) Similar concept to Cisco; exact syntax varies by model and version

Configure Interfaces and Add Static Routes

After enabling IPv6 routing globally, the next step is giving each transit interface an IPv6 address. On Cisco, the address assignment follows a simple pattern:

ipv6 address 2001:0BB9:AABB:1234::/64 eui-64

The eui-64 flag builds the interface identifier from the MAC address automatically, but you can also supply the full 128-bit address manually. Once the address is assigned, the link-local address is derived automatically on Cisco interfaces — no extra configuration needed for it.

For static routes, the two most common syntax forms are:

  • ipv6 route prefix next-hop
  • ipv6 route prefix outgoing-interface next-hop

A concrete example from training sources: ipv6 route 2001:1234:A:2::/64 GigabitEthernet0/0 FE80::2

One critical detail: the next-hop IPv6 address for a static route must be a global unicast address on H3C platforms, and some Cisco configurations also work more reliably with a global address rather than a link-local one. When in doubt, use a global unicast address as the next-hop to avoid silent routing failures.

Common Mistakes That Stop IPv6 Routing Working

The most frequent errors fall into three categories: forgetting the global enable command, skipping the interface address, or using the wrong next-hop type. Each produces a silent failure — the router looks correctly configured but never forwards traffic between subnets.

Mistake Why It Fails The Fix
Configuring IPv6 on interfaces without ipv6 unicast-routing Forwarding stays off at the global level Run ipv6 unicast-routing in global config
Using a link-local address as next-hop on H3C static routes H3C requires a global unicast address for the next-hop Replace the next-hop with a global unicast address
Skipping ip routing on a Cisco Layer 3 switch IPv4 routing is a prerequisite for IPv6 routing Enable both ip routing and ipv6 unicast-routing
Forgetting no shutdown after interface config Interface stays administratively down Apply no shutdown after setting the IPv6 address
Using the wrong Solaris command for the release The command changed across Solaris releases Verify Solaris version, then use routeadm or svcadm
Assuming consumer routers auto-enable IPv6 Many keep IPv6 forwarding off in the firmware Log into the admin panel and check the IPv6 enable setting
Adding static routes before enabling routing globally The routes are accepted but never actioned Enable routing globally first, then add static routes

Final Enable Sequence Across Platforms

The pattern stays the same regardless of the platform — enable globally, configure interfaces, then add routes. For Cisco hardware, the order: ip routing (on switches) → ipv6 unicast-routing → interface IPv6 address → no shutdown → static or dynamic route. For Oracle Solaris, the order: routeadm -e ipv6-routing -u → interface IPv6 configuration → static route or dynamic routing protocol.

That single global enable step is the one that catches most setups. Once it is in place, the rest of the configuration follows the same logic as IPv4 — just with longer addresses and a different command prefix. Verify that traffic can reach a destination beyond the local subnet, and the setup is complete.

References & Sources