The creation of an IPv6 network consists of multiple IPv6 subnets interconnected by IPv6 routers. To provide reachability to any arbitrary location on the IPv6 network, routes must exist on sending hosts and routers to forward the traffic to the desired destination. These routes can either be general routes, such as a default route that summarizes all locations, or specific routes, such as subnet routes that summarize all locations on a specific subnet.
Hosts typically use directly attached network routes to reach neighboring nodes and a default route to reach all other locations. Routers typically use specific routes to reach all locations within their site, and summary routes to reach other sites or the Internet. Although the configuration of hosts with directly attached or remote network routes and a default route is done automatically with a Router Advertisement message, configuration of routers is more complex. A router can have routes statically configured or dynamically configured through the use of routing protocols.
Static routing is based on routing table entries that are manually configured and do not change with changing network topology. A router with manually configured routing tables is known as a static router. A network administrator, with knowledge of the network topology, manually builds and updates the routing table, entering all routes in the routing table. Static routers can work well for small networks but do not scale well to large or dynamically changing networks due to their requirement for manual administration.
Static routers are not fault tolerant. The lifetime of a manually configured static route is infinite and, therefore, static routers do not sense and recover from downed routers or downed links.
A computer running the IPv6 protocol for the Windows .NET Server 2003 family or Windows XP can be configured as a static IPv6 router.
Dynamic routing is the automatic updating of routing table entries for changes in network topology. A router with dynamically configured routing tables is known as a dynamic router. The routing tables of dynamic routers are built and maintained automatically through ongoing communication between routers. This communication is facilitated by a routing protocol, which employs a series of periodic or on-demand messages containing routing information that is exchanged between routers. Except for their initial configuration, typical dynamic routers require little ongoing maintenance, and therefore can scale to larger networks.
The ability to scale and recover from network faults makes dynamic routing the better choice for medium, large, and very large networks.
Dynamic routers use routing protocols to facilitate the ongoing communication and dynamic updating of routing tables. Routing protocols are used between routers and represent additional network traffic overhead on the network. This additional traffic can become an important factor in planning WAN link usage.
Some widely used routing protocols for IPv4 are Routing Information Protocol (RIP), Open Shortest Path First (OSPF), and Border Gateway Protocol (BGP).
An important element of a routing protocol implementation is its ability to sense and recover from network faults. How quickly it can recover is determined by the type of fault, how it is sensed, and how the routing information is propagated through the network. When all the routers on the network have the correct routing information in their routing tables, the network has converged. When convergence is achieved, the network is in a stable state and all routing occurs along optimal paths.
When a link or router fails, the network must reconfigure itself to reflect the new topology. Information in routing tables must be updated. Until the network reconverges, it is in an unstable state in which routing loops and black holes can occur. The time it takes for the network to reconverge is known as the convergence time. The convergence time varies based on the routing protocol and the type of failure (downed link or downed router).
Windows XP and the Windows .NET Server 2003 family do not include any IPv6 routing protocols.
Routing protocols are based either on a distance vector, link state, or path vector technology.
The following is a brief explanation of routing protocol technologies. For more details, see the Internetworking Guide volume of the Microsoft Windows 2000 Server Resource Kit.
Distance vector routing protocols propagate routing information in the form of a network ID and its "distance" (hop count). Routers use distance vector-based routing protocols to periodically advertise the routes in their routing tables. Routing information exchanged between typical distance vector-based routers is unsynchronized and unacknowledged. The advantages of distance vector-based routing protocols include simplicity and ease of configuration. The disadvantages of distance vector-based routing protocols include relatively high network traffic, a long convergence time, and inability to scale to a large or very large network.
Routers using link state-based routing protocols exchange link state advertisements (LSAs) throughout the network to update routing tables. LSAs consist of a router's attached network prefixes and their assigned costs and are advertised upon startup and when changes in the network topology are detected. Link state updates are sent using unicast or multicast traffic rather than broadcasting. Link state routers build a database of link state advertisements and use the database to calculate the optimal routes to add to the routing table. Routing information exchanged between link state-based routers is synchronized and acknowledged.
The advantages of link state-based routing protocols are low network overhead, low convergence time, and the ability to scale to large and very large networks. The disadvantages of link state-based routing protocols are that they can be more complex and difficult to configure.
Routers use path vector-based routing protocols to exchange sequences of hop numbers, for example autonomous system numbers, indicating the path for a route. An autonomous system is a portion of the network under the same administrative authority. Autonomous systems are assigned a unique, autonomous system identifier. Routing information exchanged between path vector-based routers is synchronized and acknowledged. The advantages of path vector-based routing protocols are low network overhead, low convergence time, and the ability to scale to very large networks containing multiple autonomous systems. The disadvantages of path vector-based routing protocols are that they can be complex and difficult to configure.
As of the writing of this book, the following routing protocols are defined for IPv6:
RIP Next Generation (RIPng) is a distance vector routing protocol for IPv6 that is defined in RFC 2080. RIPng for IPv6 is an adaptation of the RIPv2 protocol—defined in RFC 1723—to advertise IPv6 network prefixes. RIPng for IPv6 has a simple packet structure and uses UDP port 521 to periodically advertise its routes, respond to requests for routes, and asynchronously advertise route changes.
RIPng for IPv6 has a maximum distance of 15, where 15 is the accumulated cost (hop count). Locations that are a distance of 16 or further are considered unreachable. RIPng for IPv6 is a simple routing protocol with a periodic route-advertising mechanism designed for use in small- to medium-sized IPv6 networks. RIPng for IPv6 does not scale well to a large or very large IPv6 network.
When a RIPng for IPv6 router is initialized, it announces the appropriate routes in its routing table on all interfaces. The RIPng for IPv6 router also sends a General Request message on all interfaces. All neighboring routers send the contents of their routing tables in response; those responses build the initial routing table. Learned routes are given a 3-minute lifetime (by default) before being removed from the IPv6 routing table by RIPng for IPv6.
After initialization, the RIPng for IPv6 router periodically announces (every 30 seconds, by default) the appropriate routes in its routing table for each interface. The exact set of routes being announced depends on whether the RIPng for IPv6 router is implementing split horizon (where routes are not announced over the interfaces on which they were learned) or split horizon with poison reverse (where routes are announced as unreachable over the interfaces on which they were learned).
Fault tolerance for RIP networks is based on the timeout of RIPng for IPv6-learned routes. If a change occurs in the network topology, RIPng for IPv6 routers can send a triggered update—a routing update, sent immediately—rather than waiting for a scheduled announcement.
For a detailed explanation of RIPng for IPv6, see RFC 2080.
OSPF for IPv6 is a link state routing protocol defined in RFC 2740. It is designed to be run as a routing protocol for a single autonomous system. OSPF for IPv6 is an adaptation of the OSPF routing protocol version 2 for IPv4 defined in RFC 2328. The OSPF cost of each router link is a unitless number that the network administrator assigns, and it can include delay, bandwidth, and monetary cost factors. The accumulated cost between network segments in an OSPF network must be less than 65,535. OSPF messages are sent as an upper layer PDU using the next header value of 89.
OSPF for IPv6 has the following changes from OSPF version 2:
Each router has an LSA that describes its current state. The LSA of each OSPF for IPv6 router is efficiently propagated throughout the OSPF network through logical relationships between neighboring routers called adjacencies. When the propagation of all current router LSAs is complete, the OSPF network has converged.
Based on the collection of OSPF LSAs—known as the link state database (LSDB)—OSPF calculates the lowest-cost path to each route, and those paths become OSPF routes in the IPv6 routing table. To reduce the size of the LSDB, OSPF allows the creation of areas. An OSPF area is a grouping of contiguous network segments. In all OSPF networks, there is at least one area called the backbone area. OSPF areas allow the summarization or aggregation of routing information at the boundaries of an OSPF area. A router at the boundary of an OSPF area is known as an area border router (ABR).
A detailed explanation of OSPF for IPv6 is beyond the scope of this book. For more information, see RFC 2740.
Integrated IS-IS, also known as dual IS, is a link state routing protocol very similar to OSPF that is defined in International Standards Organization (ISO) document 10589. IS-IS supports both IPv4 and Connectionless Network Protocol (CLNP), the Network layer of the OSI protocol suite. IS-IS allows two levels of hierarchical scaling, whereas OSPF allows only one (areas). Integrated IS-IS for IPv6 is described in the Internet draft titled "Routing IPv6 with IS-IS."
A detailed explanation of Integrated IS-IS for IPv6 is beyond the scope of this book. For more information, see ISO 10589 and the Internet draft titled "Routing IPv6 with IS-IS."
Border Gateway Protocol version 4 (BGP-4) is a path vector routing protocol defined in RFC 1771. Unlike RIPng for IPv6 and OSPF for IPv6, which are used within an autonomous system, BGP-4 is designed to exchange information between autonomous systems. BGP-4 routing information is used to create a logical path tree, which describes all the connections between autonomous systems. The path tree information is then used to create loop-free routes in the routing tables of BGP-4 routers. BGP-4 messages are sent using TCP port 179. BGP-4 is the primary inter-domain protocol used to maintain routing tables on the IPv4 Internet.
BGP-4 has been defined to be independent of the address family for which routing information is being propagated. For IPv6, BGP-4 has been extended to support IPv6 address prefixes as described in RFCs 2545 and 2858. A detailed explanation of BGP-4 for IPv6 is beyond the scope of this book. For more information, see RFCs 1771, 2545, and 2858.
Inter-Domain Routing Protocol (IDRP) is a path vector routing protocol defined in ISO document 10747. IDRP was originally created for CLNP. Like BGP-4, IDRP is designed to be used between autonomous systems, known as routing domains in IDRP.
The version of IDRP suitable for IPv6 is IDRP version 2 (IDRPv2). IDRPv2 is a better routing protocol for IPv6 than BGP-4 because, rather than using additional autonomous system identifiers (as are used on the IPv4 Internet and for BGP-4), routing domains in IDRP are identified by an IPv6 prefix. Additionally, routing domains can be grouped into routing domain confederations, also identified by prefix, to create an arbitrary hierarchical structure to summarize routing.
A detailed explanation of IDRPv2 is beyond the scope of this book. For more information, see ISO 10747.