Chapter 9: OSPFv3
Cisco Press
By Jeff Doyle and Jennifer Carroll
,
Network World
, 05/01/2007
- Share/Email
- Tweet This
- Print
 |
Excerpt from Routing TCP/IP, Volume 1, 2nd Edition.
|
By Jeff Doyle and Jennifer Carroll Published by Cisco Press ISBN-10: 1-58705-202-4 ISBN-13: 978-1-58705-202-6
|
Check out Jeff Doyle's blog.
More Cisco Press book chapters from new and classic Cisco Press books.
Rate your favorite Cisco Press books.
This chapter covers the following subjects:
-
Operation of OSPFv3
-
Configuring OSPFv3
-
Troubleshooting OSPFv3
As you have seen in previous chapters, routing IPv6 requires modifications to a protocol; primarily, the protocol messages
must be modified to carry addresses four times as long as IPv4 addresses. In theory, this also could be done with Open Shortest
Path First (OSPF), either by modifying the existing Link State Advertisements (LSA) or by defining new LSAs. But development
of OSPF began in the very late 1980s, when router performance was low, latency was high, and memory was expensive. None of
these are valid now, and several characteristics of OSPFv2 that were intended to accommodate or compensate for those early
networking realities are now irrelevant. Further, extensive operational experience with OSPFv2 revealed several areas of inefficiency.
So when extension of OSPF to support IPv6 was first considered, it was recognized that there was an opportunity to improve
the protocol itself. The result is that rather than just extending OSPFv2 for IPv6, a new and improved version of OSPF—OSPF
version 3—has been created.
Operation of OSPFv3
OSPFv3 is specified in RFC 2740. There are some high-level similarities between the relationships of RIPng to RIPv2 and OSPFv3
to OSPFv2. Most important, OSPFv3 uses the same fundamental mechanisms as OSPFv2—the SPF algorithm, flooding, DR election,
areas, and so on. Constants and variables such as timers and metrics are also the same.
Another similarity to the relationship of RIPng to RIPv2 is that OSPFv3 is not backward-compatible with OSPFv2. So if you
want to use OSPF to route both IPv4 and IPv6, you must run both OSPFv2 and OSPFv3. As this chapter is being written, there
is discussion of adding IPv4 support to OSPFv3, but no specifications have yet been completed. I, for one, hope this support
is added, because OSPFv3 is a significantly improved protocol.
It is assumed that you have read the previous chapter and understand the operation of OSPFv2. This section does not repeat
that information, but presents the significant differences—primarily operational and LSA formats—of OSPFv3.
OSPFv3 Differences from OSPFv2
In addition to the changes in LSAs, described in the next section, there are several changes to OSPF procedures themselves.
This section describes the most important of those changes:
-
Per link protocol processing—You have already seen that an interface to a link can have more than one IPv6 address. In fact,
a single link can belong to multiple subnets, and two interfaces attached to the same link but belonging to different IPv6
subnets can still communicate. OSPFv3 changes the OSPFv2 language of "subnet" to "link," and allows the exchange of packets
between two neighbors on the same link but belonging to different IPv6 subnets.
-
Removal of addressing semantics—As you will see in the subsequent sections, OSPFv3 Router and Network LSAs do not carry IP
addresses. A new LSA is defined for that purpose. This has some scaling advantages. However, 32-bit RIDs, AIDs, and LSA IDs
are maintained in IPv6. Keep in mind that although these IDs are written in dotted decimal, and are often derived in OSPFv2
networks from working IPv4 addresses, they are not IPv4 addresses. These OSPFv3 IDs are still expressed in dotted decimal,
allowing easy overlay of an OSPFv3 network on an existing OSPFv2 network.
-
Neighbors are always identified by Router ID—OSPFv2 neighbors on broadcast and NBMA links are identified by their interface
addresses, whereas neighbors on other types of links are identified by RID. OSPFv3 removes this inconsistency, so that all
neighbors on all link types are identified by RID.
-
Addition of a link-local flooding scope—OSPFv3 retains the domain (or AS) and area flooding scopes of OSPFv2, but adds a link-local
flooding scope. You already know—particularly from Chapter 2, "IPv6 Overview"—that IPv6 makes much use of the link-local scope.
As you will see in the subsequent sections, a new LSA—the Link LSA—has been added, for carrying information that is only relevant
to neighbors on a single link. This LSA has link-local flooding scope, meaning it cannot be flooded beyond any attached router.
-
Use of link-local addresses—You already know that OSPFv2 packets have a link-local scope; they are not forwarded by any router.
OSPFv3 uses a router's link-local IPv6 address (recall from Chapter 2 that these addresses always begin with FF80::/10) as
the source address, and as next-hop addresses.
-
Support for multiple instances per link—There are applications in which multiple OSPF routers can be attached to a single
broadcast link but should not form a single adjacency among them. An example of this is a shared Network Access Point (NAP).
For example, suppose four routers are attached to an Ethernet link. Routers 1 and 2 belong to one OSPF domain, and routers
3 and 4 belong to a different OSPF domain. There should be adjacencies between 1 and 2 and between 3 and 4, but not, for instance,
between 1 and 3. You can accomplish this kind of separation of adjacencies with OSPFv2 by manipulating authentication, but
it is not ideal. Among other things, the routers belonging to one adjacency will be continuously logging authentication failures
from the rejected Hellos of the other adjacency. OSPFv3 allows for multiple instances per link by adding an Instance ID to
the OSPF packet header to distinguish instances. An interface assigned to a given Instance ID will drop OSPF packets whose Instance
ID does not match.
-
Removal of OSPF-specific authentication—IPv6 has, using the Authentication extension header, a standard authentication procedure.
Because of this, OSPFv3 has no need for its own authentication of OSPFv3 packets; it just uses IPv6 authentication.
-
More flexible handling of unknown LSA types—Where OSPFv2 always discards unknown LSA types, OSPFv3 can either treat them as
having link-local flooding scope, or store and flood them as if they are understood, while ignoring them in their own SPF
algorithms. This can result in easier network changes and easier integration of new capabilities in OSPFv3 than in OSPFv2.
OSPFv3 Messages
OSPFv2 and OSPFv3 both have the same protocol number of 89, although OSPFv3, being an IPv6 protocol, more accurately has a
Next Header value of 89. And like OSPFv2, OSPFv3 uses multicast whenever possible. The IPv6 AllSPFRouters multicast address is FF02::5,
and the AllDRouters multicast address is FF02::6. Both have link-local scope. You can easily see the similarity in the last
bits with the OSPFv2 addresses of 224.0.0.5 and 224.0.0.6.
OSPFv3 uses the same five message types—Hello, DD, LS Database Request, LS Database Update, and LS Acknowledgment—as OSPFv2,
and numbers them the same. The message header, shown in Figure 9-1, is somewhat different from the OSPFv2 message header. The version number, of course, is 3 rather than 2. But more important,
there are no fields for authentication. As discussed in the previous section, OSPFv3 uses the Authentication extension header
of the IPv6 packet itself rather than its own authentication process. And there is an Instance ID, which allows multiple OSPFv3
instances to run on the same link. The Instance ID has local link significance only, because the OSPFv3 message is not forwarded
beyond the link on which it is originated.
Comments (1)
very helpfulBy oneyoney on August 19, 2009, 5:53 pmThis is a very helpful piece. Precise and detailed. Thanks. It helped me a lot.
Reply | Read entire comment
View all comments