IPv6 Routing (TechRef)
Updated: January 7, 2009
Applies To: Windows Server 2008
Similar to IPv4, IPv6 nodes use local routing tables to determine how to forward packets. IPv6 routing table entries are created by default when IPv6 initializes, and either a system administrator adds entries manually or communication with routers adds them automatically.
A routing table is present on each IPv6 node that is running Windows Server® 2008. The routing table stores information about IPv6 network prefixes and how they can be reached (either directly or indirectly). Routing tables are not exclusive to IPv6 routers. IPv6 hosts that are running Windows Server 2008 also have IPv6 routing tables. Before a routing table is used, the destination cache is checked for an entry matching the destination address in the packet being forwarded. If the destination cache does not contain an entry for the destination address, the routing table is used to determine:
The next-hop address
For a direct delivery (in which the destination is on a local link), the next-hop address is the destination address in the packet. For an indirect delivery (in which the destination is not on a local link), the next-hop address is the address of a router.
The next-hop interface
The interface identifies the physical or logical interface that is used to forward the packet either to its destination or to the next router.
After the next-hop address and interface are determined, the destination cache is updated. Subsequent packets forwarded to the destination use the destination cache entry, rather than the routing table.
Entries in IPv6 routing tables store the following types of routes:
Directly attached network routes
Routes for network prefixes that are directly attached and typically have prefixes that are 64 bits long.
Remote network routes
Routes for network prefixes that are not directly attached but are available across other routers. Remote network routes can be subnet network prefixes or prefixes for address spaces.
Routes to specific IPv6 addresses. Host routes allow routing to occur for each IPv6 address. For host routes, the route prefix is a specific IPv6 address with a prefix length of 128 bits. Prefixes for both types of network routes are shorter than 128 bits.
The default route is used when a more specific network route or host route is not found. The default route prefix is ::/0.
IPv6 uses the following process to determine which routing table entry is used for the forwarding decision:
For each entry in a routing table, IPv6 compares the bits in the network prefix to the same bits in the destination IPv6 address for the number of bits in the prefix length in the route. If all the bits in the network prefix match all the bits in the destination IPv6 address for the number of bits in the prefix length for the route, the route is a match for the destination.
The list of matching routes is compiled. The route that has the largest prefix length (the route that matched the most high-order bits with the destination IPv6 address) is chosen. The longest matching route is the most specific route to the destination. If multiple entries with the longest match are found (multiple routes to the same network prefix, for example), the router uses the lowest metric to identify the best route. If multiple entries exist that are the longest match and the lowest metric, IPv6 can choose which routing table entry to use.
The match for any given destination finds routes in the following order:
A route that matches the entire destination IPv6 address (a host route with a 128-bit prefix length).
A route with the longest prefix length that matches the destination.
The default route (the network prefix ::/0).
The end result of the route determination process is the selection of a single route in the routing table. The selected route yields a next-hop address and an interface. If the route determination process on the sending host fails to find a route, IPv6 assumes that the destination is locally reachable. If the route determination process on a router fails to find a route, IPv6 sends an ICMPv6 Destination Unreachable-No Route Found message to the sending host and discards the packet.