Network Working Group J. Moy
Request for Comments: 2178 Cascade Communications Corp.
Obsoletes: 1583 July 1997
Category: Standards Track
OSPF Version 2
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Abstract
This memo documents version 2 of the OSPF protocol. OSPF is a link-
state routing protocol. It is designed to be run internal to a
single Autonomous System. Each OSPF router maintains an identical
database describing the Autonomous System's topology. From this
database, a routing table is calculated by constructing a shortest-
path tree.
OSPF recalculates routes quickly in the face of topological changes,
utilizing a minimum of routing protocol traffic. OSPF provides
support for equal-cost multipath. An area routing capability is
provided, enabling an additional level of routing protection and a
reduction in routing protocol traffic. In addition, all OSPF routing
protocol exchanges are authenticated.
The differences between this memo and RFC 1583 are explained in
Appendix G. All differences are backward-compatible in nature.
Implementations of this memo and of RFC 1583 will interoperate.
Please send comments to ospf@gated.cornell.edu.
Table of Contents
1 Introduction ........................................... 5
1.1 Protocol Overview ...................................... 5
1.2 Definitions of commonly used terms ..................... 6
1.3 Brief history of link-state routing technology ........ 9
1.4 Organization of this document ......................... 10
1.5 Acknowledgments ....................................... 11
2 The link-state database: organization and calculations 11
2.1 Representation of routers and networks ................ 11
Moy Standards Track [Page 1]
RFC 2178 OSPF Version 2 July 1997
2.1.1 Representation of non-broadcast networks .............. 13
2.1.2 An example link-state database ........................ 14
2.2 The shortest-path tree ................................ 18
2.3 Use of external routing information ................... 20
2.4 Equal-cost multipath .................................. 22
3 Splitting the AS into Areas ........................... 22
3.1 The backbone of the Autonomous System ................. 23
3.2 Inter-area routing .................................... 23
3.3 Classification of routers ............................. 24
3.4 A sample area configuration ........................... 25
3.5 IP subnetting support ................................. 31
3.6 Supporting stub areas ................................. 32
3.7 Partitions of areas ................................... 33
4 Functional Summary .................................... 34
4.1 Inter-area routing .................................... 35
4.2 AS external routes .................................... 35
4.3 Routing protocol packets .............................. 35
4.4 Basic implementation requirements ..................... 38
4.5 Optional OSPF capabilities ............................ 39
5 Protocol data structures .............................. 40
6 The Area Data Structure ............................... 42
7 Bringing Up Adjacencies ............................... 44
7.1 The Hello Protocol .................................... 44
7.2 The Synchronization of Databases ...................... 45
7.3 The Designated Router ................................. 46
7.4 The Backup Designated Router .......................... 47
7.5 The graph of adjacencies .............................. 48
8 Protocol Packet Processing ............................ 49
8.1 Sending protocol packets .............................. 49
8.2 Receiving protocol packets ............................ 51
9 The Interface Data Structure .......................... 54
9.1 Interface states ...................................... 57
9.2 Events causing interface state changes ................ 59
9.3 The Interface state machine ........................... 61
9.4 Electing the Designated Router ........................ 64
9.5 Sending Hello packets ................................. 66
9.5.1 Sending Hello packets on NBMA networks ................ 67
10 The Neighbor Data Structure ........................... 68
10.1 Neighbor states ....................................... 70
10.2 Events causing neighbor state changes ................. 75
10.3 The Neighbor state machine ............................ 76
10.4 Whether tocome adjacent ............................ 82
10.5 Receiving Hello Packets ............................... 83
10.6 Receiving Database Description Packets ................ 85
10.7 Receiving Link State Request Packets .................. 88
10.8 Sending Database Description Packets .................. 89
10.9 Sending Link State Request Packets .................... 90
10.10 An Example ............................................ 91
Moy Standards Track [Page 2]
RFC 2178 OSPF Version 2 July 1997
11 The Routing Table Structure ........................... 93
11.1 Routing table lookup .................................. 96
11.2 Sample routing table, without areas ................... 97
11.3 Sample routing table, with areas ...................... 97
12 Link State Advertisements (LSAs) ......................100
12.1 The LSA Header ........................................100
12.1.1 LS age ............................................... 101
12.1.2 Options .............................................. 101
12.1.3 LS type .............................................. 102
12.1.4 Link State ID ........................................ 102
12.1.5 Advertising Router ................................... 104
12.1.6 LS sequence number ................................... 104
12.1.7 LS checksum .......................................... 105
12.2 The link state database .............................. 105
12.3 Representation of TOS ................................ 106
12.4 Originating LSAs ..................................... 107
12.4.1 Router-LSAs .......................................... 110
12.4.1.1 Describing point-to-point interfaces ................. 112
12.4.1.2 Describing broadcast and NBMA interfaces ............. 113
12.4.1.3 Describing virtual links ............................. 113
12.4.1.4 Describing Point-to-MultiPoint interfaces ............ 114
12.4.1.5 Examples of router-LSAs .............................. 114
12.4.2 Network-LSAs ......................................... 116
12.4.2.1 Examples of network-LSAs ............................. 116
12.4.3 Summary-LSAs ......................................... 117
12.4.3.1 Originating summary-LSAs into stub areas ............. 119
12.4.3.2 Examples of summary-LSAs ............................. 119
12.4.4 AS-external-LSAs ..................................... 120
12.4.4.1 Examples of AS-external-LSAs ......................... 121
13 The Flooding Procedure ............................... 122
13.1 Determining which LSA is newer ....................... 126
13.2 Installing LSAs in the database ...................... 127
13.3 Next step in the flooding procedure .................. 128
13.4 Receiving self-originated LSAs ....................... 130
13.5 Sending Link State Acknowledgment packets ............ 131
13.6 Retransmitting LSAs .................................. 133
13.7 Receiving link state acknowledgments ................. 134
14 Aging The Link State Database ........................ 134
14.1 Premature aging of LSAs .............................. 135
15 Virtual Links ........................................ 135
16 Calculation of the routing table ..................... 137
16.1 Calculating the shortest-path tree for an area ....... 138
16.1.1 The next hop calculation ............................. 144
16.2 Calculating the inter-area routes .................... 145
16.3 Examining transit areas' summary-LSAs ................ 146
16.4 Calculating AS external routes ....................... 149
16.4.1 External path preferences ............................ 151
16.5 Incremental updates -- summary-LSAs .................. 151
Moy Standards Track [Page 3]
RFC 2178 OSPF Version 2 July 1997
16.6 Incremental updates -- AS-external-LSAs .............. 152
16.7 Events generated as a result of routing table changes 153
16.8 Equal-cost multipath ................................. 154
Footnotes ............................................ 155
References ........................................... 158
A OSPF data formats .................................... 160
A.1 Encapsulation of OSPF packets ........................ 160
A.2 The Options field .................................... 162
A.3 OSPF Packet Formats .................................. 163
A.3.1 The OSPF packet header ............................... 164
A.3.2 The Hello packet ..................................... 166
A.3.3 The Database Description packet ...................... 168
A.3.4 The Link State Request packet ........................ 170
A.3.5 The Link State Update packet ......................... 171
A.3.6 The Link State Acknowledgment packet ................. 172
A.4 LSA formats .......................................... 173
A.4.1 The LSA header ....................................... 174
A.4.2 Router-LSAs .......................................... 176
A.4.3 Network-LSAs ......................................... 179
A.4.4 Summary-LSAs ......................................... 180
A.4.5 AS-external-LSAs ..................................... 182
B Architectural Constants .............................. 184
C Configurable Constants ............................... 186
C.1 Global parameters .................................... 186
C.2 Area parameters ...................................... 187
C.3 Router interface parameters .......................... 188
C.4 Virtual link parameters .............................. 190
C.5 NBMA network parameters .............................. 191
C.6 Point-to-MultiPoint network parameters ............... 191
C.7 Host route parameters ................................ 192
D Authentication ....................................... 193
D.1 Null authentication .................................. 193
D.2 Simple password authentication ....................... 193
D.3 Cryptographic authentication ......................... 194
D.4 Message generation ................................... 196
D.4.1 Generating Null authentication ....................... 196
D.4.2 Generating Simple password authentication ............ 197
D.4.3 Generating Cryptographic authentication .............. 197
D.5 Message verification ................................. 198
D.5.1 Verifying Null authentication ........................ 199
D.5.2 Verifying Simple password authentication ............. 199
D.5.3 Verifying Cryptographic authentication ............... 199
E An algorithm for assigning Link State IDs ............ 201
F Multiple interfaces to the same network/subnet ....... 203
G Differences from RFC 1583 ............................ 204
G.1 Enhancements to OSPF authentication .................. 204
G.2 Addition of Point-to-MultiPoint interface ............ 204
G.3 Support for overlapping area ranges .................. 205
Moy Standards Track [Page 4]
RFC 2178 OSPF Version 2 July 1997
G.4 A modification to the flooding algorithm ............. 206
G.5 Introduction of the MinLSArrival constant ............ 206
G.6 Optionally advertising point-to-point links as subnets 207
G.7 Advertising same external route from multiple areas .. 207
G.8 Retransmission of initial Database Description packets 209
G.9 Detecting interface MTU mismatches ................... 209
G.10 Deleting the TOS routing option ...................... 209
Security Considerations .............................. 210
Author's Address ..................................... 211
1. Introduction
This document is a specification of the Open Shortest Path First
(OSPF) TCP/IP internet routing protocol. OSPF is classified as an
Interior Gateway Protocol (IGP). This means that it distributes
routing information between routers belonging to a single Autonomous
System. The OSPF protocol is based on link-state or SPF technology.
This is a departure from the Bellman-Ford base used by traditional
TCP/IP internet routing protocols.
The OSPF protocol was developed by the OSPF working group of the
Internet Engineering Task Force. It has been designed expressly for
the TCP/IP internet environment, including explicit support for CIDR
and the tagging of externally-derived routing information. OSPF also
provides for the authentication of routing updates, and utilizes IP
multicast when sending/receiving the updates. In addition, much work
has been done to produce a protocol that responds quickly to topology
changes, yet involves small amounts of routing protocol traffic.
1.1. Protocol overview
OSPF routes IP packets based solely on the destination IP address
found in the IP packet header. IP packets are routed "as is" -- they
are not encapsulated in any further protocol headers as they transit
the Autonomous System. OSPF is a dynamic routing protocol. It
quickly detects topological changes in the AS (such as router
interface failures) and calculates new loop-free routes after a
period of convergence. This period of convergence is short and
involves a minimum of routing traffic.
In a link-state routing protocol, each router maintains a database
describing the Autonomous System's topology. This database is
referred to as the link-state database. Each participating router has
an identical database. Each individual piece of this database is a
particular router's local state (e.g., the router's usable interfaces
and reachable neighbors). The router distributes its local state
throughout the Autonomous System by flooding.
Moy Standards Track [Page 5]
RFC 2178 OSPF Version 2 July 1997
All routers run the exact same algorithm, in parallel. From the
link-state database, each router constructs a tree of shortest paths
with itself as root. This shortest-path tree gives the route to each
destination in the Autonomous System. Externally derived routing
information appears on the tree as leaves.
When several equal-cost routes to a destination exist, traffic is
distributed equally among them. The cost of a route is described by
a single dimensionless metric.
OSPF allows sets of networks to be grouped together. Such a grouping
is called an area. The topology of an area is hidden from the rest
of the Autonomous System. This information hiding enables a
significant reduction in routing traffic. Also, routing within the
area is determined only by the area's own topology, lending the area
protection from bad routing data. An area is a generalization of an
IP subnetted network.
OSPF enables the flexible configuration of IP subnets. Each route
distributed by OSPF has a destination and mask. Two different
subnets of the same IP network number may have different sizes (i.e.,
different masks). This is commonly referred to as variable length
subnetting. A packet is routed to the best (i.e., longest or most
specific) match. Host routes are considered to be subnets whose
masks are "all ones" (0xffffffff).
All OSPF protocol exchanges are authenticated. This means that only
trusted routers can participate in the Autonomous System's routing.
A variety of authentication schemes can be used; in fact, separate
authentication schemes can be configured for each IP subnet.
Externally derived routing data (e.g., routes learned from an
Exterior Gateway Protocol such as BGP; see [Ref23]) is advertised
throughout the Autonomous System. This externally derived data is
kept separate from the OSPF protocol's link state data. Each
external route can also be tagged by the advertising router, enabling
the passing of additional information between routers on the boundary
of the Autonomous System.
1.2. Definitions of commonly used terms
This section provides definitions for terms that have a specific
meaning to the OSPF protocol and that are used throughout the text.
The reader unfamiliar with the Internet Protocol Suite is referred to
[Ref13] for an introduction to IP.
Moy Standards Track [Page 6]
RFC 2178 OSPF Version 2 July 1997
Router
A level three Internet Protocol packet switch. Formerly called a
gateway in much of the IP literature.
Autonomous System
A group of routers exchanging routing information via a common
routing protocol. Abbreviated as AS.
Interior Gateway Protocol
The routing protocol spoken by the routers belonging to an
Autonomous system. Abbreviated as IGP. Each Autonomous System has
a single IGP. Separate Autonomous Systems may be running
different IGPs.
Router ID
A 32-bit number assigned to each router running the OSPF protocol.
This number uniquely identifies the router within an Autonomous
System.
Network
In this memo, an IP network/subnet/supernet. It is possible for
one physical network to be assigned multiple IP network/subnet
numbers. We consider these to be separate networks. Point-to-
point physical networks are an exception - they are considered a
single network no matter how many (if any at all) IP
network/subnet numbers are assigned to them.
Network mask
A 32-bit number indicating the range of IP addresses residing on a
single IP network/subnet/supernet. This specification displays
network masks as hexadecimal numbers. For example, the network
mask for a class C IP network is displayed as 0xffffff00. Such a
mask is often displayed elsewhere in the literature as
255.255.255.0.
Point-to-point networks
A network that joins a single pair of routers. A 56Kb serial line
is an example of a point-to-point network.
Moy Standards Track [Page 7]
RFC 2178 OSPF Version 2 July 1997
Broadcast networks
Networks supporting many (more than two) attached routers,
together with the capability to address a single physical message
to all of the attached routers (broadcast). Neighboring routers
are discovered dynamically on these nets using OSPF's Hello
Protocol. The Hello Protocol itself takes advantage of the
broadcast capability. The OSPF protocol makes further use of
multicast capabilities, if they exist. Each pair of routers on a
broadcast network is assumed to be able to communicate directly.
An ethernet is an example of a broadcast network.
Non-broadcast networks
Networks supporting many (more than two) routers, but having no
broadcast capability. Neighboring routers are maintained on these
nets using OSPF's Hello Protocol. However, due to the lack of
broadcast capability, some configuration information may be
necessary to aid in the discovery of neighbors. On non-broadcast
networks, OSPF protocol packets that are normally multicast need
to be sent to each neighboring router, in turn. An X.25 Public
Data Network (PDN) is an example of a non-broadcast network.
OSPF runs in one of two modes over non-broadcast networks. The
first mode, called non-broadcast multi-access or NBMA, simulates
the operation of OSPF on a broadcast network. The second mode,
called Point-to-MultiPoint, treats the non-broadcast network as a
collection of point-to-point links. Non-broadcast networks are
referred to as NBMA networks or Point-to-MultiPoint networks,
depending on OSPF's mode of operation over the network.
Interface
The connection between a router and one of its attached networks.
An interface has state information associated with it, which is
obtained from the underlying lower level protocols and the routing
protocol itself. An interface to a network has associated with it
a single IP address and mask (unless the network is an unnumbered
point-to-point network). An interface is sometimes also referred
to as a link.
Neighboring routers
Two routers that have interfaces to a common network. Neighbor
relationships are maintained by, and usually dynamically
discovered by, OSPF's Hello Protocol.
Adjacency
A relationship formed between selected neighboring routers for the
purpose of exchanging routing information. Not every pair of
neighboring routers become adjacent.
Moy Standards Track [Page 8]
RFC 2178 OSPF Version 2 July 1997
Link state advertisement
Unit of data describing the local state of a router or network.
For a router, this includes the state of the router's interfaces
and adjacencies. Each link state advertisement is flooded
throughout the routing domain. The collected link state
advertisements of all routers and networks forms the protocol's
link state database. Throughout this memo, link state
advertisement is abbreviated as LSA.
Hello Protocol
The part of the OSPF protocol used to establish and maintain
neighbor relationships. On broadcast networks the Hello Protocol
can also dynamically discover neighboring routers.
Flooding
The part of the OSPF protocol that distributes and synchronizes
the link-state database between OSPF routers.
Designated Router
Each broadcast and NBMA network that has at least two attached
routers has a Designated Router. The Designated Router generates
an LSA for the network and has other special responsibilities in
the running of the protocol. The Designated Router is elected by
the Hello Protocol.
The Designated Router concept enables a reduction in the number of
adjacencies required on a broadcast or NBMA network. This in turn
reduces the amount of routing protocol traffic and the size of the
link-state database.
Lower-level protocols
The underlying network access protocols that provide services to
the Internet Protocol and in turn the OSPF protocol. Examples of
these are the X.25 packet and frame levels for X.25 PDNs, and the
ethernet data link layer for ethernets.
1.3. Brief history of link-state routing technology
OSPF is a link state routing protocol. Such protocols are also
referred to in the literature as SPF-based or distributed-database
protocols. This section gives a brief description of the
developments in link-state technology that have influenced the OSPF
protocol.
The first link-state routing protocol was developed for use in the
ARPANET packet switching network. This protocol is described in
[Ref3]. It has formed the starting point for all other link-state
protocols. The homogeneous ARPANET environment, i.e., single-vendor
Moy Standards Track [Page 9]
RFC 2178 OSPF Version 2 July 1997
packet switches connected by synchronous serial lines, simplified the
design and implementation of the original protocol.
Modifications to this protocol were proposed in [Ref4]. These
modifications dealt with increasing the fault tolerance of the
routing protocol through, among other things, adding a checksum to
the LSAs (thereby detecting database corruption). The paper also
included means for reducing the routing traffic overhead in a link-
state protocol. This was accomplished by introducing mechanisms
which enabled the interval between LSA originations to be increased
by an order of magnitude.
A link-state algorithm has also been proposed for use as an ISO IS-IS
routing protocol. This protocol is described in [Ref2]. The
protocol includes methods for data and routing traffic reduction when
operating over broadcast networks. This is accomplished by election
of a Designated Router for each broadcast network, which then
originates an LSA for the network.
The OSPF Working Group of the IETF has extended this work in
developing the OSPF protocol. The Designated Router concept has been
greatly enhanced to further reduce the amount of routing traffic
required. Multicast capabilities are utilized for additional routing
bandwidth reduction. An area routing scheme has been developed
enabling information hiding/protection/reduction. Finally, the
algorithms have been tailored for efficient operation in TCP/IP
internets.
1.4. Organization of this document
The first three sections of this specification give a general
overview of the protocol's capabilities and functions. Sections 4-16
explain the protocol's mechanisms in detail. Packet formats,
protocol constants and configuration items are specified in the
appendices.
Labels such as HelloInterval encountered in the text refer to
protocol constants. They may or may not be configurable.
Architectural constants are summarized in Appendix B. Configurable
constants are summarized in Appendix C.
The detailed specification of the protocol is presented in terms of
data structures. This is done in order to make the explanation more
precise. Implementations of the protocol are required to support the
functionality described, but need not use the precise data structures
that appear in this memo.
Moy Standards Track [Page 10]
RFC 2178 OSPF Version 2 July 1997
1.5. Acknowledgments
The author would like to thank Ran Atkinson, Fred Baker, Jeffrey
Burgan, Rob Coltun, Dino Farinacci, Vince Fuller, Phanindra
Jujjavarapu, Milo Medin, Tom Pusateri, Kannan Varadhan, Zhaohui Zhang
and the rest of the OSPF Working Group for the ideas and support they
have given to this project.
The OSPF Point-to-MultiPoint interface is based on work done by Fred
Baker.
The OSPF Cryptographic Authentication option was developed by Fred
Baker and Ran Atkinson.
2. The Link-state Database: organization and calculations
The following subsections describe the organization of OSPF's link-
state database, and the routing calculations that are performed on
the database in order to produce a router's routing table.
2.1. Representation of routers and networks
The Autonomous System's link-state database describes a directed
graph. The vertices of the graph consist of routers and networks. A
graph edge connects two routers when they are attached via a physical
point-to-point network. An edge connecting a router to a network
indicates that the router has an interface on the network. Networks
can be either transit or stub networks. Transit networks are those
capable of carrying data traffic that is neither locally originated
nor locally destined. A transit network is represented by a graph
vertex having both incoming and outgoing edges. A stub network's
vertex has only incoming edges.
The neighborhood of each network node in the graph depends on the
network's type (point-to-point, broadcast, NBMA or Point-to-
MultiPoint) and the number of routers having an interface to the
network. Three cases are depicted in Figure 1a. Rectangles indicate
routers. Circles and oblongs indicate networks. Router names are
prefixed with the letters RT and network names with the letter N.
Router interface names are prefixed by the letter I. Lines between
routers indicate point-to-point networks. The left side of the
figure shows networks with their connected routers, with the
resulting graphs shown on the right.
Moy Standards Track [Page 11]
RFC 2178 OSPF Version 2 July 1997
**FROM**
* |RT1|RT2|
+---+Ia +---+ * ------------
|RT1|------|RT2| T RT1| | X |
+---+ Ib+---+ O RT2| X | |
* Ia| | X |
* Ib| X | |
Physical point-to-point networks
**FROM**
+---+ *
|RT7| * |RT7| N3|
+---+ T ------------
| O RT7| | |
+----------------------+ * N3| X | |
N3 *
Stub networks
+---+ +---+
|RT3| |RT4| |RT3|RT4|RT5|RT6|N2 |
+---+ +---+ * ------------------------
| N2 | * RT3| | | | | X |
+----------------------+ T RT4| | | | | X |
| | O RT5| | | | | X |
+---+ +---+ * RT6| | | | | X |
|RT5| |RT6| * N2| X | X | X | X | |
+---+ +---+
Broadcast or NBMA networks
Figure 1a: Network map components
Networks and routers are represented by vertices. An edge connects
Vertex A to Vertex B iff the intersection of Column A and Row B is
marked with an X.
The top of Figure 1a shows two routers connected by a point-to-point
link. In the resulting link-state database graph, the two router
vertices are directly connected by a pair of edges, one in each
direction. Interfaces to point-to-point networks need not be assigned
IP addresses. When interface addresses are assigned, they are
modelled as stub links, with each router advertising a stub
connection to the other router's interface address. Optionally, an IP
Moy Standards Track [Page 12]
RFC 2178 OSPF Version 2 July 1997
subnet can be assigned to the point-to-point network. In this case,
both routers advertise a stub link to the IP subnet, instead of
advertising each others' IP interface addresses.
The middle of Figure 1a shows a network with only one attached router
(i.e., a stub network). In this case, the network appears on the end
of a stub connection in the link-state database's graph.
When multiple routers are attached to a broadcast network, the link-
state database graph shows all routers bidirectionally connected to
the network vertex. This is pictured at the bottom of Figure 1a.
Each network (stub or transit) in the graph has an IP address and
associated network mask. The mask indicates the number of nodes on
the network. Hosts attached directly to routers (referred to as host
routes) appear on the graph as stub networks. The network mask for a
host route is always 0xffffffff, which indicates the presence of a
single node.
2.1.1. Representation of non-broadcast networks
As mentioned previously, OSPF can run over non-broadcast networks in
one of two modes: NBMA or Point-to-MultiPoint. The choice of mode
determines the way that the Hello protocol and flooding work over the
non-broadcast network, and the way that the network is represented in
the link-state database.
In NBMA mode, OSPF emulates operation over a broadcast network: a
Designated Router is elected for the NBMA network, and the Designated
Router originates an LSA for the network. The graph representation
for broadcast networks and NBMA networks is identical. This
representation is pictured in the middle of Figure 1a.
NBMA mode is the most efficient way to run OSPF over non-broadcast
networks, both in terms of link-state database size and in terms of
the amount of routing protocol traffic. However, it has one
significant restriction: it requires all routers attached to the NBMA
network to be able to communicate directly. This restriction may be
met on some non-broadcast networks, such as an ATM subnet utilizing
SVCs. But it is often not met on other non-broadcast networks, such
as PVC-only Frame Relay networks. On non-broadcast networks where not
all routers can communicate directly you can break the non-broadcast
network into logical subnets, with the routers on each subnet being
able to communicate directly, and then run each separate subnet as an
NBMA network (see [Ref15]). This however requires quite a bit of
administrative overhead, and is prone to misconfiguration. It is
probably better to run such a non-broadcast network in Point-to-
Multipoint mode.
Moy Standards Track [Page 13]
RFC 2178 OSPF Version 2 July 1997
In Point-to-MultiPoint mode, OSPF treats all router-to-router
connections over the non-broadcast network as if they were point-to-
point links. No Designated Router is elected for the network, nor is
there an LSA generated for the network. In fact, a vertex for the
Point-to-MultiPoint network does not appear in the graph of the
link-state database.
Figure 1b illustrates the link-state database representation of a
Point-to-MultiPoint network. On the left side of the figure, a
Point-to-MultiPoint network is pictured. It is assumed that all
routers can communicate directly, except for routers RT4 and RT5. I3
though I6 indicate the routers' IP interface addresses on the Point-
to-MultiPoint network. In the graphical representation of the link-
state database, routers that can communicate directly over the
Point-to-MultiPoint network are joined by bidirectional edges, and
each router also has a stub connection to its own IP interface
address (which is in contrast to the representation of real point-
to-point links; see Figure 1a).
On some non-broadcast networks, use of Point-to-MultiPoint mode and
data-link protocols such as Inverse ARP (see [Ref14]) will allow
autodiscovery of OSPF neighbors even though broadcast support is not
available.
2.1.2. An example link-state database
Figure 2 shows a sample map of an Autonomous System. The rectangle
labelled H1 indicates a host, which has a SLIP connection to Router
RT12. Router RT12 is therefore advertising a host route. Lines
between routers indicate physical point-to-point networks. The only
point-to-point network that has been assigned interface addresses is
the one joining Routers RT6 and RT10. Routers RT5 and RT7 have BGP
connections to other Autonomous Systems. A set of BGP-learned routes
have been displayed for both of these routers.
A cost is associated with the output side of each router interface.
This cost is configurable by the system administrator. The lower the
cost,the more likely the interface is to be used to forward data
traffic. Costs are also associated with the externally derived
routing data (e.g., the BGP-learned routes).
The directed graph resulting from the map in Figure 2 is depicted in
Figure 3. Arcs are labelled with the cost of the corresponding
router output interface. Arcs having no labelled cost have a cost of
0. Note that arcs leading from networks to routers always have cost
0; they are significant nonetheless. Note also that the externally
derived routing data appears on the graph as stubs.
Moy Standards Track [Page 14]
RFC 2178 OSPF Version 2 July 1997
**FROM**
+---+ +---+
|RT3| |RT4| |RT3|RT4|RT5|RT6|
+---+ +---+ * --------------------
I3| N2 |I4 * RT3| | X | X | X |
+----------------------+ T RT4| X | | | X |
I5| |I6 O RT5| X | | | X |
+---+ +---+ * RT6| X | X | X | |
|RT5| |RT6| * I3| X | | | |
+---+ +---+ I4| | X | | |
I5| | | X | |
I6| | | | X |
Figure 1b: Network map components
Point-to-MultiPoint networks
All routers can communicate directly over N2, except
routers RT4 and RT5. I3 through I6 indicate IP
interface addresses
Moy Standards Track [Page 15]
RFC 2178 OSPF Version 2 July 1997
+
| 3+---+ N12 N14
N1|--|RT1|\ 1 \ N13 /
| +---+ \ 8\ |8/8
+ \ ____ \|/
/ \ 1+---+8 8+---+6
* N3 *---|RT4|------|RT5|--------+
\____/ +---+ +---+ |
+ / | |7 |
| 3+---+ / | | |
N2|--|RT2|/1 |1 |6 |
| +---+ +---+8 6+---+ |
+ |RT3|--------------|RT6| |
+---+ +---+ |
|2 Ia|7 |
| | |
+---------+ | |
N4 | |
| |
| |
N11 | |
+---------+ | |
| | | N12
|3 | |6 2/
+---+ | +---+/
|RT9| | |RT7|---N15
+---+ | +---+ 9
|1 + | |1
_|__ | Ib|5 __|_
/ \ 1+----+2 | 3+----+1 / \
* N9 *------|RT11|----|---|RT10|---* N6 *
\____/ +----+ | +----+ \____/
| | |
|1 + |1
+--+ 10+----+ N8 +---+
|H1|-----|RT12| |RT8|
+--+SLIP +----+ +---+
|2 |4
| |
+---------+ +--------+
N10 N7
Figure 2: A sample Autonomous System
Moy Standards Track [Page 16]
RFC 2178 OSPF Version 2 July 1997
**FROM**
|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|RT|
|1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|N3|N6|N8|N9|
----- ---------------------------------------------
RT1| | | | | | | | | | | | |0 | | | |
RT2| | | | | | | | | | | | |0 | | | |
RT3| | | | | |6 | | | | | | |0 | | | |
RT4| | | | |8 | | | | | | | |0 | | | |
RT5| | | |8 | |6 |6 | | | | | | | | | |
RT6| | |8 | |7 | | | | |5 | | | | | | |
RT7| | | | |6 | | | | | | | | |0 | | |
* RT8| | | | | | | | | | | | | |0 | | |
* RT9| | | | | | | | | | | | | | | |0 |
T RT10| | | | | |7 | | | | | | | |0 |0 | |
O RT11| | | | | | | | | | | | | | |0 |0 |
* RT12| | | | | | | | | | | | | | | |0 |
* N1|3 | | | | | | | | | | | | | | | |
N2| |3 | | | | | | | | | | | | | | |
N3|1 |1 |1 |1 | | | | | | | | | | | | |
N4| | |2 | | | | | | | | | | | | | |
N6| | | | | | |1 |1 | |1 | | | | | | |
N7| | | | | | | |4 | | | | | | | | |
N8| | | | | | | | | |3 |2 | | | | | |
N9| | | | | | | | |1 | |1 |1 | | | | |
N10| | | | | | | | | | | |2 | | | | |
N11| | | | | | | | |3 | | | | | | | |
N12| | | | |8 | |2 | | | | | | | | | |
N13| | | | |8 | | | | | | | | | | | |
N14| | | | |8 | | | | | | | | | | | |
N15| | | | | | |9 | | | | | | | | | |
H1| | | | | | | | | | | |10| | | | |
Figure 3: The resulting directed graph
Networks and routers are represented by vertices.
An edge of cost X connects Vertex A to Vertex B iff
the intersection of Column A and Row B is marked
with an X.
The link-state database is pieced together from LSAs generated by the
routers. In the associated graphical representation, the
neighborhood of each router or transit network is represented in a
single, separate LSA. Figure 4 shows these LSAs graphically. Router
RT12 has an interface to two broadcast networks and a SLIP line to a
host. Network N6 is a broadcast network with three attached routers.
The cost of all links from Network N6 to its attached routers is 0.
Moy Standards Track [Page 17]
RFC 2178 OSPF Version 2 July 1997
Note that the LSA for Network N6 is actually generated by one of the
network's attached routers: the router that has been elected
Designated Router for the network.
2.2. The shortest-path tree
When no OSPF areas are configured, each router in the Autonomous
System has an identical link-state database, leading to an identical
graphical representation. A router generates its routing table from
this graph by calculating a tree of shortest paths with the router
itself as root. Obviously, the shortest- path tree depends on the
router doing the calculation. The shortest-path tree for Router RT6
in our example is depicted in Figure 5.
The tree gives the entire path to any destination network or host.
However, only the next hop to the destination is used in the
forwarding process. Note also that the best route to any router has
also been calculated. For the processing of external data, we note
the next hop and distance to any router advertising external routes.
The resulting routing table for Router RT6 is pictured in Table 2.
Note that there is a separate route for each end of a numbered
point-to-point network (in this case, the serial line between Routers
RT6 and RT10).
**FROM** **FROM**
|RT12|N9|N10|H1| |RT9|RT11|RT12|N9|
* -------------------- * ----------------------
* RT12| | | | | * RT9| | | |0 |
T N9|1 | | | | T RT11| | | |0 |
O N10|2 | | | | O RT12| | | |0 |
* H1|10 | | | | * N9| | | | |
* *
RT12's router-LSA N9's network-LSA
Figure 4: Individual link state components
Networks and routers are represented by vertices.
An edge of cost X connects Vertex A to Vertex B iff
the intersection of Column A and Row B is marked
with an X.
Moy Standards Track [Page 18]
RFC 2178 OSPF Version 2 July 1997
RT6(origin)
RT5 o------------o-----------o Ib
/|\ 6 |\ 7
8/8|8\ | \
/ | \ 6| \
o | o | \7
N12 o N14 | \
N13 2 | \
N4 o-----o RT3 \
/ \ 5
1/ RT10 o-------o Ia
/ |\
RT4 o-----o N3 3| \1
/| | \ N6 RT7
/ | N8 o o---------o
/ | | | /|
RT2 o o RT1 | | 2/ |9
/ | | |RT8 / |
/3 |3 RT11 o o o o
/ | | | N12 N15
N2 o o N1 1| |4
| |
N9 o o N7
/|
/ |
N11 RT9 / |RT12
o--------o-------o o--------o H1
3 | 10
|2
|
o N10
Figure 5: The SPF tree for Router RT6
Edges that are not marked with a cost have a cost of of zero (these
are network-to-router links). Routes to networks N12-N15 are external
information that is considered in Section 2.3
Moy Standards Track [Page 19]
RFC 2178 OSPF Version 2 July 1997
Destination Next Hop Distance
__________________________________
N1 RT3 10
N2 RT3 10
N3 RT3 7
N4 RT3 8
Ib * 7
Ia RT10 12
N6 RT10 8
N7 RT10 12
N8 RT10 10
N9 RT10 11
N10 RT10 13
N11 RT10 14
H1 RT10 21
__________________________________
RT5 RT5 6
RT7 RT10 8
Table 2: The portion of Router RT6's routing table listing local
destinations.
Routes to networks belonging to other AS'es (such as N12) appear as
dashed lines on the shortest path tree in Figure 5. Use of this
externally derived routing information is considered in the next
section.
2.3. Use of external routing information
After the tree is created the external routing information is
examined. This external routing information may originate from
another routing protocol such as BGP, or be statically configured
(static routes). Default routes can also be included as part of the
Autonomous System's external routing information.
External routing information is flooded unaltered throughout the AS.
In our example, all the routers in the Autonomous System know that
Router RT7 has two external routes, with metrics 2 and 9.
OSPF supports two types of external metrics. Type 1 external metrics
are expressed in the same units as OSPF interface cost (i.e., in
terms of the link state metric). Type 2 external metrics are an
order of magnitude larger; any Type 2 metric is considered greater
than the cost of any path internal to the AS. Use of Type 2 external
metrics assumes that routing between AS'es is the major cost of
routing a packet, and eliminates the need for conversion of external
costs to internal link state metrics.
Moy Standards Track [Page 20]
RFC 2178 OSPF Version 2 July 1997
As an example of Type 1 external metric processing, suppose that the
Routers RT7 and RT5 in Figure 2 are advertising Type 1 external
metrics. For each advertised external route, the total cost from
Router RT6 is calculated as the sum of the external route's
advertised cost and the distance from Router RT6 to the advertising
router. When two routers are advertising the same external
destination, RT6 picks the advertising router providing the minimum
total cost. RT6 then sets the next hop to the external destination
equal to the next hop that would be used when routing packets to the
chosen advertising router.
In Figure 2, both Router RT5 and RT7 are advertising an external
route to destination Network N12. Router RT7 is preferred since it
is advertising N12 at a distance of 10 (8+2) to Router RT6, which is
better than Router RT5's 14 (6+8). Table 3 shows the entries that
are added to the routing table when external routes are examined:
Destination Next Hop Distance
__________________________________
N12 RT10 10
N13 RT5 14
N14 RT5 14
N15 RT10 17
Table 3: The portion of Router RT6's routing table
listing external destinations.
Processing of Type 2 external metrics is simpler. The AS boundary
router advertising the smallest external metric is chosen, regardless
of the internal distance to the AS boundary router. Suppose in our
example both Router RT5 and Router RT7 were advertising Type 2
external routes. Then all traffic destined for Network N12 would be
forwarded to Router RT7, since 2 < 8. When several equal-cost Type 2
routes exist, the internal distance to the advertising routers is
used to break the tie.
Both Type 1 and Type 2 external metrics can be present in the AS at
the same time. In that event, Type 1 external metrics always take
precedence.
This section has assumed that packets destined for external
destinations are always routed through the advertising AS boundary
router. This is not always desirable. For example, suppose in
Figure 2 there is an additional router attached to Network N6, called
Router RTX. Suppose further that RTX does not participate in OSPF
Moy Standards Track [Page 21]
RFC 2178 OSPF Version 2 July 1997
routing, but does exchange BGP information with the AS boundary
router RT7. Then, Router RT7 would end up advertising OSPF external
routes for all destinations that should be routed to RTX. An extra
hop will sometimes be introduced if packets for these destinations
need always be routed first to Router RT7 (the advertising router).
To deal with this situation, the OSPF protocol allows an AS boundary
router to specify a "forwarding address" in its AS- external-LSAs. In
the above example, Router RT7 would specify RTX's IP address as the
"forwarding address" for all those destinations whose packets should
be routed directly to RTX.
The "forwarding address" has one other application. It enables
routers in the Autonomous System's interior to function as "route
servers". For example, in Figure 2 the router RT6 could become a
route server, gaining external routing information through a
combination of static configuration and external routing protocols.
RT6 would then start advertising itself as an AS boundary router, and
would originate a collection of OSPF AS-external-LSAs. In each AS-
external-LSA, Router RT6 would specify the correct Autonomous System
exit point to use for the destination through appropriate setting of
the LSA's "forwarding address" field.
2.4. Equal-cost multipath
The above discussion has been simplified by considering only a single
route to any destination. In reality, if multiple equal-cost routes
to a destination exist, they are all discovered and used. This
requires no conceptual changes to the algorithm, and its discussion
is postponed until we consider the tree-building process in more
detail.
With equal cost multipath, a router potentially has several available
next hops towards any given destination.
3. Splitting the AS into Areas
OSPF allows collections of contiguous networks and hosts to be
grouped together. Such a group, together with the routers having
interfaces to any one of the included networks, is called an area.
Each area runs a separate copy of the basic link-state routing
algorithm. This means that each area has its own link-state database
and corresponding graph, as explained in the previous section.
The topology of an area is invisible from the outside of the area.
Conversely, routers internal to a given area know nothing of the
detailed topology external to the area. This isolation of knowledge
enables the protocol to effect a marked reduction in routing traffic
Moy Standards Track [Page 22]
RFC 2178 OSPF Version 2 July 1997
as compared to treating the entire Autonomous System as a single
link-state domain.
With the introduction of areas, it is no longer true that all routers
in the AS have an identical link-state database. A router actually
has a separate link-state database for each area it is connected to.
(Routers connected to multiple areas are called area border routers).
Two routers belonging to the same area have, for that area, identical
area link-state databases.
Routing in the Autonomous System takes place on two levels, depending
on whether the source and destination of a packet reside in the same
area (intra-area routing is used) or different areas (inter-area
routing is used). In intra-area routing, the packet is routed solely
on information obtained within the area; no routing information
obtained from outside the area can be used. This protects intra-area
routing from the injection of bad routing information. We discuss
inter-area routing in Section 3.2.
3.1. The backbone of the Autonomous System
The OSPF backbone is the special OSPF Area 0 (often written as Area
0.0.0.0, since OSPF Area ID's are typically formatted as IP
addresses). The OSPF backbone always contains all area border
routers. The backbone is responsible for distributing routing
information between non-backbone areas. The backbone must be
contiguous. However, it need not be physically contiguous; backbone
connectivity can be established/maintained through the configuration
of virtual links.
Virtual links can be configured between any two backbone routers that
have an interface to a common non-backbone area. Virtual links
belong to the backbone. The protocol treats two routers joined by a
virtual link as if they were connected by an unnumbered point-to-
point backbone network. On the graph of the backbone, two such
routers are joined by arcs whose costs are the intra-area distances
between the two routers. The routing protocol traffic that flows
along the virtual link uses intra-area routing only.
3.2. Inter-area routing
When routing a packet between two non-backbone areas the backbone is
used. The path that the packet will travel can be broken up into
three contiguous pieces: an intra-area path from the source to an
area border router, a backbone path between the source and
destination areas, and then another intra-area path to the
destination. The algorithm finds the set of such paths that have the
smallest cost.
Moy Standards Track [Page 23]
RFC 2178 OSPF Version 2 July 1997
Looking at this another way, inter-area routing can be pictured as
forcing a star configuration on the Autonomous System, with the
backbone as hub and each of the non-backbone areas as spokes.
The topology of the backbone dictates the backbone paths used between
areas. The topology of the backbone can be enhanced by adding
virtual links. This gives the system administrator some control over
the routes taken by inter-area traffic.
The correct area border router to use as the packet exits the source
area is chosen in exactly the same way routers advertising external
routes are chosen. Each area border router in an area summarizes for
the area its cost to all networks external to the area. After the
SPF tree is calculated for the area, routes to all inter-area
destinations are calculated by examining the summaries of the area
border routers.
3.3. Classification of routers
Before the introduction of areas, the only OSPF routers having a
specialized function were those advertising external routing
information, such as Router RT5 in Figure 2. When the AS is split
into OSPF areas, the routers are further divided according to
function into the following four overlapping categories:
Internal routers
A router with all directly connected networks belonging to the
same area. These routers run a single copy of the basic routing
algorithm.
Area border routers
A router that attaches to multiple areas. Area border routers run
multiple copies of the basic algorithm, one copy for each attached
area. Area border routers condense the topological information of
their attached areas for distribution to the backbone. The
backbone in turn distributes the information to the other areas.
Backbone routers
A router that has an interface to the backbone area. This
includes all routers that interface to more than one area (i.e.,
area border routers). However, backbone routers do not have to be
area border routers. Routers with all interfaces connecting to
the backbone area are supported.
Moy Standards Track [Page 24]
RFC 2178 OSPF Version 2 July 1997
AS boundary routers
A router that exchanges routing information with routers belonging
to other Autonomous Systems. Such a router advertises AS external
routing information throughout the Autonomous System. The paths
to each AS boundary router are known by every router in the AS.
This classification is completely independent of the previous
classifications: AS boundary routers may be internal or area
border routers, and may or may not participate in the backbone.
3.4. A sample area configuration
Figure 6 shows a sample area configuration. The first area consists
of networks N1-N4, along with their attached routers RT1-RT4. The
second area consists of networks N6-N8, along with their attached
routers RT7, RT8, RT10 and RT11. The third area consists of networks
N9-N11 and Host H1, along with their attached routers RT9, RT11 and
RT12. The third area has been configured so that networks N9-N11 and
Host H1 will all be grouped into a single route, when advertised
external to the area (see Section 3.5 for more details).
In Figure 6, Routers RT1, RT2, RT5, RT6, RT8, RT9 and RT12 are
internal routers. Routers RT3, RT4, RT7, RT10 and RT11 are area
border routers. Finally, as before, Routers RT5 and RT7 are AS
boundary routers.
Figure 7 shows the resulting link-state database for the Area 1. The
figure completely describes that area's intra-area routing.
Moy Standards Track [Page 25]
RFC 2178 OSPF Version 2 July 1997
...........................
. + .
. | 3+---+ . N12 N14
. N1|--|RT1|\ 1 . \ N13 /
. | +---+ \ . 8\ |8/8
. + \ ____ . \|/
. / \ 1+---+8 8+---+6
. * N3 *---|RT4|------|RT5|--------+
. \____/ +---+ +---+ |
. + / \ . |7 |
. | 3+---+ / \ . | |
. N2|--|RT2|/1 1\ . |6 |
. | +---+ +---+8 6+---+ |
. + |RT3|------|RT6| |
. +---+ +---+ |
. 2/ . Ia|7 |
. / . | |
. +---------+ . | |
.Area 1 N4 . | |
........................... | |
.......................... | |
. N11 . | |
. +---------+ . | |
. | . | | N12
. |3 . Ib|5 |6 2/
. +---+ . +----+ +---+/
. |RT9| . .........|RT10|.....|RT7|---N15.
. +---+ . . +----+ +---+ 9 .
. |1 . . + /3 1\ |1 .
. _|__ . . | / \ __|_ .
. / \ 1+----+2 |/ \ / \ .
. * N9 *------|RT11|----| * N6 * .
. \____/ +----+ | \____/ .
. | . . | | .
. |1 . . + |1 .
. +--+ 10+----+ . . N8 +---+ .
. |H1|-----|RT12| . . |RT8| .
. +--+SLIP +----+ . . +---+ .
. |2 . . |4 .
. | . . | .
. +---------+ . . +--------+ .
. N10 . . N7 .
. . .Area 2 .
.Area 3 . ................................
..........................
Figure 6: A sample OSPF area configuration
Moy Standards Track [Page 26]
RFC 2178 OSPF Version 2 July 1997
It also shows the complete view of the internet for the two internal
routers RT1 and RT2. It is the job of the area border routers, RT3
and RT4, to advertise into Area 1 the distances to all destinations
external to the area. These are indicated in Figure 7 by the dashed
stub routes. Also, RT3 and RT4 must advertise into Area 1 the
location of the AS boundary routers RT5 and RT7. Finally, AS-
external-LSAs from RT5 and RT7 are flooded throughout the entire AS,
and in particular throughout Area 1. These LSAs are included in Area
1's database, and yield routes to Networks N12-N15.
Routers RT3 and RT4 must also summarize Area 1's topology for
distribution to the backbone. Their backbone LSAs are shown in Table
4. These summaries show which networks are contained in Area 1
(i.e., Networks N1-N4), and the distance to these networks from the
routers RT3 and RT4 respectively.
The link-state database for the backbone is shown in Figure 8. The
set of routers pictured are the backbone routers. Router RT11 is a
backbone router because it belongs to two areas. In order to make
the backbone connected, a virtual link has been configured between
Routers R10 and R11.
The area border routers RT3, RT4, RT7, RT10 and RT11 condense the
routing information of their attached non-backbone areas for
distribution via the backbone; these are the dashed stubs that appear
in Figure 8. Remember that the third area has been configured to
condense Networks N9-N11 and Host H1 into a single route. This
yields a single dashed line for networks N9-N11 and Host H1 in Figure
8. Routers RT5 and RT7 are AS boundary routers; their externally
derived information also appears on the graph in Figure 8 as stubs.
Network RT3 adv. RT4 adv.
_____________________________
N1 4 4
N2 4 4
N3 1 1
N4 2 3
Table 4: Networks advertised to the backbone
by Routers RT3 and RT4.
Moy Standards Track [Page 27]
RFC 2178 OSPF Version 2 July 1997
|RT|RT|RT|RT|RT|RT|
|1 |2 |3 |4 |5 |7 |N3|
----- -------------------
RT1| | | | | | |0 |
RT2| | | | | | |0 |
RT3| | | | | | |0 |
* RT4| | | | | | |0 |
* RT5| | |14|8 | | | |
T RT7| | |20|14| | | |
O N1|3 | | | | | | |
* N2| |3 | | | | | |
* N3|1 |1 |1 |1 | | | |
N4| | |2 | | | | |
Ia,Ib| | |20|27| | | |
N6| | |16|15| | | |
N7| | |20|19| | | |
N8| | |18|18| | | |
N9-N11,H1| | |29|36| | | |
N12| | | | |8 |2 | |
N13| | | | |8 | | |
N14| | | | |8 | | |
N15| | | | | |9 | |
Figure 7: Area 1's Database.
Networks and routers are represented by vertices.
An edge of cost X connects Vertex A to Vertex B iff
the intersection of Column A and Row B is marked
with an X.
Moy Standards Track [Page 28]
RFC 2178 OSPF Version 2 July 1997
**FROM**
|RT|RT|RT|RT|RT|RT|RT
|3 |4 |5 |6 |7 |10|11|
------------------------
RT3| | | |6 | | | |
RT4| | |8 | | | | |
RT5| |8 | |6 |6 | | |
RT6|8 | |7 | | |5 | |
RT7| | |6 | | | | |
* RT10| | | |7 | | |2 |
* RT11| | | | | |3 | |
T N1|4 |4 | | | | | |
O N2|4 |4 | | | | | |
* N3|1 |1 | | | | | |
* N4|2 |3 | | | | | |
Ia| | | | | |5 | |
Ib| | | |7 | | | |
N6| | | | |1 |1 |3 |
N7| | | | |5 |5 |7 |
N8| | | | |4 |3 |2 |
N9-N11,H1| | | | | | |11|
N12| | |8 | |2 | | |
N13| | |8 | | | | |
N14| | |8 | | | | |
N15| | | | |9 | | |
Figure 8: The backbone's database.
Networks and routers are represented by vertices.
An edge of cost X connects Vertex A to Vertex B iff
the intersection of Column A and Row B is marked
with an X.
The backbone enables the exchange of summary information between area
border routers. Every area border router hears the area summaries
from all other area border routers. It then forms a picture of the
distance to all networks outside of its area by examining the
collected LSAs, and adding in the backbone distance to each
advertising router.
Again using Routers RT3 and RT4 as an example, the procedure goes as
follows: They first calculate the SPF tree for the backbone. This
gives the distances to all other area border routers. Also noted are
the distances to networks (Ia and Ib) and AS boundary routers (RT5
and RT7) that belong to the backbone. This calculation is shown in
Table 5.
Moy Standards Track [Page 29]
RFC 2178 OSPF Version 2 July 1997
Next, by looking at the area summaries from these area border
routers, RT3 and RT4 can determine the distance to all networks
outside their area. These distances are then advertised internally
to the area by RT3 and RT4. The advertisements that Router RT3 and
RT4 will make into Area 1 are shown in Table 6. Note that Table 6
assumes that an area range has been configured for the backbone which
groups Ia and Ib into a single LSA.
The information imported into Area 1 by Routers RT3 and RT4 enables
an internal router, such as RT1, to choose an area border router
intelligently. Router RT1 would use RT4 for traffic to Network N6,
RT3 for traffic to Network N10, and would load share between the two
for traffic to Network N8.
dist from dist from
RT3 RT4
__________________________________
to RT3 * 21
to RT4 22 *
to RT7 20 14
to RT10 15 22
to RT11 18 25
__________________________________
to Ia 20 27
to Ib 15 22
__________________________________
to RT5 14 8
to RT7 20 14
Table 5: Backbone distances calculated
by Routers RT3 and RT4.
Destination RT3 adv. RT4 adv.
_________________________________
Ia,Ib 20 27
N6 16 15
N7 20 19
N8 18 18
N9-N11,H1 29 36
_________________________________
RT5 14 8
RT7 20 14
Table 6: Destinations advertised into Area 1
by Routers RT3 and RT4.
Moy Standards Track [Page 30]
RFC 2178 OSPF Version 2 July 1997
Router RT1 can also determine in this manner the shortest path to the
AS boundary routers RT5 and RT7. Then, by looking at RT5 and RT7's
AS-external-LSAs, Router RT1 can decide between RT5 or RT7 when
sending to a destination in another Autonomous System (one of the
networks N12-N15).
Note that a failure of the line between Routers RT6 and RT10 will
cause the backbone to become disconnected. Configuring a virtual
link between Routers RT7 and RT10 will give the backbone more
connectivity and more resistance to such failures.
3.5. IP subnetting support
OSPF attaches an IP address mask to each advertised route. The mask
indicates the range of addresses being described by the particular
route. For example, a summary-LSA for the destination 128.185.0.0
with a mask of 0xffff0000 actually is describing a single route to
the collection of destinations 128.185.0.0 - 128.185.255.255.
Similarly, host routes are always advertised with a mask of
0xffffffff, indicating the presence of only a single destination.
Including the mask with each advertised destination enables the
implementation of what is commonly referred to as variable-length
subnetting. This means that a single IP class A, B, or C network
number can be broken up into many subnets of various sizes. For
example, the network 128.185.0.0 could be broken up into 62
variable-sized subnets: 15 subnets of size 4K, 15 subnets of size
256, and 32 subnets of size 8. Table 7 shows some of the resulting
network addresses together with their masks.
Network address IP address mask Subnet size
_______________________________________________
128.185.16.0 0xfffff000 4K
128.185.1.0 0xffffff00 256
128.185.0.8 0xfffffff8 8
Table 7: Some sample subnet sizes.
There are many possible ways of dividing up a class A, B, and C
network into variable sized subnets. The precise procedure for doing
so is beyond the scope of this specification. This specification
however establishes the following guideline: When an IP packet is
forwarded, it is always forwarded to the network that is the best
match for the packet's destination. Here best match is synonymous
with the longest or most specific match. For example, the default
Moy Standards Track [Page 31]
RFC 2178 OSPF Version 2 July 1997
route with destination of 0.0.0.0 and mask 0x00000000 is always a
match for every IP destination. Yet it is always less specific than
any other match. Subnet masks must be assigned so that the best
match for any IP destination is unambiguous.
Attaching an address mask to each route also enables the support of
IP supernetting. For example, a single physical network segment could
be assigned the [address,mask] pair [192.9.4.0,0xfffffc00]. The
segment would then be single IP network, containing addresses from
the four consecutive class C network numbers 192.9.4.0 through
192.9.7.0. Such addressing is now becoming commonplace with the
advent of CIDR (see [Ref10]).
In order to get better aggregation at area boundaries, area address
ranges can be employed (see Section C.2 for more details). Each
address range is defined as an [address,mask] pair. Many separate
networks may then be contained in a single address range, just as a
subnetted network is composed of many separate subnets. Area border
routers then summarize the area contents (for distribution to the
backbone) by advertising a single route for each address range. The
cost of the route is the maximum cost to any of the networks falling
in the specified range.
For example, an IP subnetted network might be configured as a single
OSPF area. In that case, a single address range could be configured:
a class A, B, or C network number along with its natural IP mask.
Inside the area, any number of variable sized subnets could be
defined. However, external to the area a single route for the entire
subnetted network would be distributed, hiding even the fact that the
network is subnetted at all. The cost of this route is the maximum
of the set of costs to the component subnets.
3.6. Supporting stub areas
In some Autonomous Systems, the majority of the link-state database
may consist of AS-external-LSAs. An OSPF AS-external-LSA is usually
flooded throughout the entire AS. However, OSPF allows certain areas
to be configured as "stub areas". AS-external-LSAs are not flooded
into/throughout stub areas; routing to AS external destinations in
these areas is based on a (per-area) default only. This reduces the
link-state database size, and therefore the memory requirements, for
a stub area's internal routers.
In order to take advantage of the OSPF stub area support, default
routing must be used in the stub area. This is accomplished as
follows. One or more of the stub area's area border routers must
advertise a default route into the stub area via summary-LSAs. These
summary defaults are flooded throughout the stub area, but no
Moy Standards Track [Page 32]
RFC 2178 OSPF Version 2 July 1997
further. (For this reason these defaults pertain only to the
particular stub area). These summary default routes will be used for
any destination that is not explicitly reachable by an intra-area or
inter-area path (i.e., AS external destinations).
An area can be configured as a stub when there is a single exit point
from the area, or when the choice of exit point need not be made on a
per-external-destination basis. For example, Area 3 in Figure 6
could be configured as a stub area, because all external traffic must
travel though its single area border router RT11. If Area 3 were
configured as a stub, Router RT11 would advertise a default route for
distribution inside Area 3 (in a summary-LSA), instead of flooding
the AS-external-LSAs for Networks N12-N15 into/throughout the area.
The OSPF protocol ensures that all routers belonging to an area agree
on whether the area has been configured as a stub. This guarantees
that no confusion will arise in the flooding of AS-external-LSAs.
There are a couple of restrictions on the use of stub areas. Virtual
links cannot be configured through stub areas. In addition, AS
boundary routers cannot be placed internal to stub areas.
3.7. Partitions of areas
OSPF does not actively attempt to repair area partitions. When an
area becomes partitioned, each component simply becomes a separate
area. The backbone then performs routing between the new areas.
Some destinations reachable via intra-area routing before the
partition will now require inter-area routing.
However, in order to maintain full routing after the partition, an
address range must not be split across multiple components of the
area partition. Also, the backbone itself must not partition. If it
does, parts of the Autonomous System will become unreachable.
Backbone partitions can be repaired by configuring virtual links (see
Section 15).
Another way to think about area partitions is to look at the
Autonomous System graph that was introduced in Section 2. Area IDs
can be viewed as colors for the graph's edges.[1] Each edge of the
graph connects to a network, or is itself a point-to-point network.
In either case, the edge is colored with the network's Area ID.
A group of edges, all having the same color, and interconnected by
vertices, represents an area. If the topology of the Autonomous
System is intact, the graph will have several regions of color, each
color being a distinct Area ID.
Moy Standards Track [Page 33]
RFC 2178 OSPF Version 2 July 1997
When the AS topology changes, one of the areas may become
partitioned. The graph of the AS will then have multiple regions of
the same color (Area ID). The routing in the Autonomous System will
continue to function as long as these regions of same color are
connected by the single backbone region.
4. Functional Summary
A separate copy of OSPF's basic routing algorithm runs in each area.
Routers having interfaces to multiple areas run multiple copies of
the algorithm. A brief summary of the routing algorithm follows.
When a router starts, it first initializes the routing protocol data
structures. The router then waits for indications from the lower-
level protocols that its interfaces are functional.
A router then uses the OSPF's Hello Protocol to acquire neighbors.
The router sends Hello packets to its neighbors, and in turn receives
their Hello packets. On broadcast and point-to-point networks, the
router dynamically detects its neighboring routers by sending its
Hello packets to the multicast address AllSPFRouters. On non-
broadcast networks, some configuration information may be necessary
in order to discover neighbors. On broadcast and NBMA networks the
Hello Protocol also elects a Designated router for the network.
The router will attempt to form adjacencies with some of its newly
acquired neighbors. Link-state databases are synchronized between
pairs of adjacent routers. On broadcast and NBMA networks, the
Designated Router determines which routers should become adjacent.
Adjacencies control the distribution of routing information. Routing
updates are sent and received only on adjacencies.
A router periodically advertises its state, which is also called link
state. Link state is also advertised when a router's state changes.
A router's adjacencies are reflected in the contents of its LSAs.
This relationship between adjacencies and link state allows the
protocol to detect dead routers in a timely fashion.
LSAs are flooded throughout the area. The flooding algorithm is
reliable, ensuring that all routers in an area have exactly the same
link-state database. This database consists of the collection of
LSAs originated by each router belonging to the area. From this
database each router calculates a shortest-path tree, with itself as
root. This shortest-path tree in turn yields a routing table for the
protocol.
Moy Standards Track [Page 34]
RFC 2178 OSPF Version 2 July 1997
4.1. Inter-area routing
The previous section described the operation of the protocol within a
single area. For intra-area routing, no other routing information is
pertinent. In order to be able to route to destinations outside of
the area, the area border routers inject additional routing
information into the area. This additional information is a
distillation of the rest of the Autonomous System's topology.
This distillation is accomplished as follows: Each area border router
is by definition connected to the backbone. Each area border router
summarizes the topology of its attached non-backbone areas for
transmission on the backbone, and hence to all other area border
routers. An area border router then has complete topological
information concerning the backbone, and the area summaries from each
of the other area border routers. From this information, the router
calculates paths to all inter-area destinations. The router then
advertises these paths into its attached areas. This enables the
area's internal routers to pick the best exit router when forwarding
traffic inter-area destinations.
4.2. AS external routes
Routers that have information regarding other Autonomous Systems can
flood this information throughout the AS. This external routing
information is distributed verbatim to every participating router.
There is one exception: external routing information is not flooded
into "stub" areas (see Section 3.6).
To utilize external routing information, the path to all routers
advertising external information must be known throughout the AS
(excepting the stub areas). For that reason, the locations of these
AS boundary routers are summarized by the (non-stub) area border
routers.
4.3. Routing protocol packets
The OSPF protocol runs directly over IP, using IP protocol 89. OSPF
does not provide any explicit fragmentation/reassembly support. When
fragmentation is necessary, IP fragmentation/reassembly is used.
OSPF protocol packets have been designed so that large protocol
packets can generally be split into several smaller protocol packets.
This practice is recommended; IP fragmentation should be avoided
whenever possible.
Routing protocol packets should always be sent with the IP TOS field
set to 0. If at all possible, routing protocol packets should be
given preference over regular IP data traffic, both when being sent
Moy Standards Track [Page 35]
RFC 2178 OSPF Version 2 July 1997
and received. As an aid to accomplishing this, OSPF protocol packets
should have their IP precedence field set to the value Internetwork
Control (see [Ref5]).
All OSPF protocol packets share a common protocol header that is
described in Appendix A. The OSPF packet types are listed below in
Table 8. Their formats are also described in Appendix A.
Type Packet name
Protocol function
__________________________________________________________
1 Hello Discover/maintain neighbors
2 Database Description Summarize database contents
3 Link State Request Database download
4 Link State Update Database update
5 Link State Ack Flooding acknowledgment
Table 8: OSPF packet types.
OSPF's Hello protocol uses Hello packets to discover and maintain
neighbor relationships. The Database Description and Link State
Request packets are used in the forming of adjacencies. OSPF's
reliable update mechanism is implemented by the Link State Update and
Link State Acknowledgment packets.
Each Link State Update packet carries a set of new link state
advertisements (LSAs) one hop further away from their point of
origination. A single Link State Update packet may contain the LSAs
of several routers. Each LSA is tagged with the ID of the
originating router and a checksum of its link state contents. Each
LSA also has a type field; the different types of OSPF LSAs are
listed below in Table 9.
OSPF routing packets (with the exception of Hellos) are sent only
over adjacencies. This means that all OSPF protocol packets travel a
single IP hop, except those that are sent over virtual adjacencies.
The IP source address of an OSPF protocol packet is one end of a
router adjacency, and the IP destination address is either the other
end of the adjacency or an IP multicast address.
Moy Standards Track [Page 36]
RFC 2178 OSPF Version 2 July 1997
LS LSA LSA description
type name
________________________________________________________
1 Router-LSAs Originated by all routers.
This LSA describes
the collected states of the
router's interfaces to an
area. Flooded throughout a
single area only.
________________________________________________________
2 Network-LSAs Originated for broadcast
and NBMA networks by
the Designated Router. This
LSA contains the
list of routers connected
to the network. Flooded
throughout a single area only.
________________________________________________________
3,4 Summary-LSAs Originated by area border
routers, and flooded through-
out the LSA's associated
area. Each summary-LSA
describes a route to a
destination outside the area,
yet still inside the AS
(i.e., an inter-area route).
Type 3 summary-LSAs describe
routes to networks. Type 4
summary-LSAs describe
routes to AS boundary routers.
________________________________________________________
5 AS-external-LSAs Originated by AS boundary
routers, and flooded through-
out the AS. Each
AS-external-LSA describes
a route to a destination in
another Autonomous System.
Default routes for the AS can
also be described by
AS-external-LSAs.
Table 9: OSPF link state advertisements (LSAs).
Moy Standards Track [Page 37]
RFC 2178 OSPF Version 2 July 1997
4.4. Basic implementation requirements
An implementation of OSPF requires the following pieces of system
support:
Timers
Two different kind of timers are required. The first kind, called
"single shot timers", fire once and cause a protocol event to be
processed. The second kind, called "interval timers", fire at
continuous intervals. These are used for the sending of packets
at regular intervals. A good example of this is the regular
broadcast of Hello packets. The granularity of both kinds of
timers is one second.
Interval timers should be implemented to avoid drift. In some
router implementations, packet processing can affect timer
execution. When multiple routers are attached to a single
network, all doing broadcasts, this can lead to the
synchronization of routing packets (which should be avoided). If
timers cannot be implemented to avoid drift, small random amounts
should be added to/subtracted from the interval timer at each
firing.
IP multicast
Certain OSPF packets take the form of IP multicast datagrams.
Support for receiving and sending IP multicast datagrams, along
with the appropriate lower-level protocol support, is required.
The IP multicast datagrams used by OSPF never travel more than one
hop. For this reason, the ability to forward IP multicast
datagrams is not required. For information on IP multicast, see
[Ref7].
Variable-length subnet support
The router's IP protocol support must include the ability to
divide a single IP class A, B, or C network number into many
subnets of various sizes. This is commonly called variable-length
subnetting; see Section 3.5 for details.
IP supernetting support
The router's IP protocol support must include the ability to
aggregate contiguous collections of IP class A, B, and C networks
into larger quantities called supernets. Supernetting has been
proposed as one way to improve the scaling of IP routing in the
worldwide Internet. For more information on IP supernetting, see
[Ref10].
Moy Standards Track [Page 38]
RFC 2178 OSPF Version 2 July 1997
Lower-level protocol support
The lower level protocols referred to here are the network access
protocols, such as the Ethernet data link layer. Indications must
be passed from these protocols to OSPF as the network interface
goes up and down. For example, on an ethernet it would be
valuable to know when the ethernet transceiver cable becomes
unplugged.
Non-broadcast lower-level protocol support
On non-broadcast networks, the OSPF Hello Protocol can be aided by
providing an indication when an attempt is made to send a packet
to a dead or non-existent router. For example, on an X.25 PDN a
dead neighboring router may be indicated by the reception of a
X.25 clear with an appropriate cause and diagnostic, and this
information would be passed to OSPF.
List manipulation primitives
Much of the OSPF functionality is described in terms of its
operation on lists of LSAs. For example, the collection of LSAs
that will be retransmitted to an adjacent router until
acknowledged are described as a list. Any particular LSA may be
on many such lists. An OSPF implementation needs to be able to
manipulate these lists, adding and deleting constituent LSAs as
necessary.
Tasking support
Certain procedures described in this specification invoke other
procedures. At times, these other procedures should be executed
in-line, that is, before the current procedure is finished. This
is indicated in the text by instructions to execute a procedure.
At other times, the other procedures are to be executed only when
the current procedure has finished. This is indicated by
instructions to schedule a task.
4.5. Optional OSPF capabilities
The OSPF protocol defines several optional capabilities. A router
indicates the optional capabilities that it supports in its OSPF
Hello packets, Database Description packets and in its LSAs. This
enables routers supporting a mix of optional capabilities to coexist
in a single Autonomous System.
Some capabilities must be supported by all routers attached to a
specific area. In this case, a router will not accept a neighbor's
Hello Packet unless there is a match in reported capabilities (i.e.,
a capability mismatch prevents a neighbor relationship from forming).
An example of this is the ExternalRoutingCapability (see below).
Moy Standards Track [Page 39]
RFC 2178 OSPF Version 2 July 1997
Other capabilities can be negotiated during the Database Exchange
process. This is accomplished by specifying the optional
capabilities in Database Description packets. A capability mismatch
with a neighbor in this case will result in only a subset of the link
state database being exchanged between the two neighbors.
The routing table build process can also be affected by the
presence/absence of optional capabilities. For example, since the
optional capabilities are reported in LSAs, routers incapable of
certain functions can be avoided when building the shortest path
tree.
The OSPF optional capabilities defined in this memo are listed below.
See Section A.2 for more information.
ExternalRoutingCapability
Entire OSPF areas can be configured as "stubs" (see Section 3.6).
AS-external-LSAs will not be flooded into stub areas. This
capability is represented by the E-bit in the OSPF Options field
(see Section A.2). In order to ensure consistent configuration of
stub areas, all routers interfacing to such an area must have the
E-bit clear in their Hello packets (see Sections 9.5 and 10.5).
5. Protocol Data Structures
The OSPF protocol is described herein in terms of its operation on
various protocol data structures. The following list comprises the
top-level OSPF data structures. Any initialization that needs to be
done is noted. OSPF areas, interfaces and neighbors also have
associated data structures that are described later in this
specification.
Router ID
A 32-bit number that uniquely identifies this router in the AS.
One possible implementation strategy would be to use the smallest
IP interface address belonging to the router. If a router's OSPF
Router ID is changed, the router's OSPF software should be
restarted before the new Router ID takes effect. In this case the
router should flush its self-originated LSAs from the routing
domain (see Section 14.1) before restarting, or they will persist
for up to MaxAge minutes.
Area structures
Each one of the areas to which the router is connected has its own
data structure. This data structure describes the working of the
basic OSPF algorithm. Remember that each area runs a separate
copy of the basic OSPF algorithm.
Moy Standards Track [Page 40]
RFC 2178 OSPF Version 2 July 1997
Backbone (area) structure
The OSPF backbone area is responsible for the dissemination of
inter-area routing information.
Virtual links configured
The virtual links configured with this router as one endpoint. In
order to have configured virtual links, the router itself must be
an area border router. Virtual links are identified by the Router
ID of the other endpoint -- which is another area border router.
These two endpoint routers must be attached to a common area,
called the virtual link's Transit area. Virtual links are part of
the backbone, and behave as if they were unnumbered point-to-point
networks between the two routers. A virtual link uses the intra-
area routing of its Transit area to forward packets. Virtual
links are brought up and down through the building of the
shortest-path trees for the Transit area.
List of external routes
These are routes to destinations external to the Autonomous
System, that have been gained either through direct experience
with another routing protocol (such as BGP), or through
configuration information, or through a combination of the two
(e.g., dynamic external information to be advertised by OSPF with
configured metric). Any router having these external routes is
called an AS boundary router. These routes are advertised by the
router into the OSPF routing domain via AS-external-LSAs.
List of AS-external-LSAs
Part of the link-state database. These have originated from the
AS boundary routers. They comprise routes to destinations
external to the Autonomous System. Note that, if the router is
itself an AS boundary router, some of these AS-external-LSAs have
been self-originated.
The routing table
Derived from the link-state database. Each entry in the routing
table is indexed by a destination, and contains the destination's
cost and a set of paths to use in forwarding packets to the
destination. A path is described by its type and next hop. For
more information, see Section 11.
Moy Standards Track [Page 41]
RFC 2178 OSPF Version 2 July 1997
Figure 9 shows the collection of data structures present in a typical
router. The router pictured is RT10, from the map in Figure 6. Note
that Router RT10 has a virtual link configured to Router RT11, with
Area 2 as the link's Transit area. This is indicated by the dashed
line in Figure 9. When the virtual link becomes active, through the
building of the shortest path tree for Area 2, it becomes an
interface to the backbone (see the two backbone interfaces depicted
in Figure 9).
+----+
|RT10|------+
+----+ \+-------------+
/ \ |Routing Table|
/ \ +-------------+
/ \
+------+ / \ +--------+
|Area 2|---+ +---|Backbone|
+------+***********+ +--------+
/ \ * / \
/ \ * / \
+---------+ +---------+ +------------+ +------------+
|Interface| |Interface| |Virtual Link| |Interface Ib|
| to N6 | | to N8 | | to RT11 | +------------+
+---------+ +---------+ +------------+ |
/ \ | | |
/ \ | | |
+--------+ +--------+ | +-------------+ +------------+
|Neighbor| |Neighbor| | |Neighbor RT11| |Neighbor RT6|
| RT8 | | RT7 | | +-------------+ +------------+
+--------+ +--------+ |
|
+-------------+
|Neighbor RT11|
+-------------+
Figure 9: Router RT10's Data structures
6. The Area Data Structure
The area data structure contains all the information used to run the
basic OSPF routing algorithm. Each area maintains its own link-state
database. A network belongs to a single area, and a router interface
connects to a single area. Each router adjacency also belongs to a
single area.
Moy Standards Track [Page 42]
RFC 2178 OSPF Version 2 July 1997
The OSPF backbone is the special OSPF area responsible for
disseminating inter-area routing information.
The area link-state database consists of the collection of router-
LSAs, network-LSAs and summary-LSAs that have originated from the
area's routers. This information is flooded throughout a single area
only. The list of AS-external-LSAs (see Section 5) is also considered
to be part of each area's link-state database.
Area ID
A 32-bit number identifying the area. The Area ID of 0.0.0.0 is
reserved for the backbone.
List of area address ranges
In order to aggregate routing information at area boundaries, area
address ranges can be employed. Each address range is specified by
an [address,mask] pair and a status indication of either Advertise
or DoNotAdvertise (see Section 12.4.3).
Associated router interfaces
This router's interfaces connecting to the area. A router
interface belongs to one and only one area (or the backbone). For
the backbone area this list includes all the virtual links. A
virtual link is identified by the Router ID of its other endpoint;
its cost is the cost of the shortest intra-area path through the
Transit area that exists between the two routers.
List of router-LSAs
A router-LSA is generated by each router in the area. It
describes the state of the router's interfaces to the area.
List of network-LSAs
One network-LSA is generated for each transit broadcast and NBMA
network in the area. A network-LSA describes the set of routers
currently connected to the network.
List of summary-LSAs
Summary-LSAs originate from the area's area border routers. They
describe routes to destinations internal to the Autonomous System,
yet external to the area (i.e., inter-area destinations).
Shortest-path tree
The shortest-path tree for the area, with this router itself as
root. Derived from the collected router-LSAs and network-LSAs by
the Dijkstra algorithm (see Section 16.1).
Moy Standards Track [Page 43]
RFC 2178 OSPF Version 2 July 1997
TransitCapability
This parameter indicates whether the area can carry data traffic
that neither originates nor terminates in the area itself. This
parameter is calculated when the area's shortest-path tree is
built (see Section 16.1, where TransitCapability is set to TRUE if
and only if there are one or more fully adjacent virtual links
using the area as Transit area), and is used as an input to a
subsequent step of the routing table build process (see Section
16.3). When an area's TransitCapability is set to TRUE, the area
is said to be a "transit area".
ExternalRoutingCapability
Whether AS-external-LSAs will be flooded into/throughout the area.
This is a configurable parameter. If AS-external-LSAs are
excluded from the area, the area is called a "stub". Within stub
areas, routing to AS external destinations will be based solely on
a default summary route. The backbone cannot be configured as a
stub area. Also, virtual links cannot be configured through stub
areas. For more information, see Section 3.6.
StubDefaultCost
If the area has been configured as a stub area, and the router
itself is an area border router, then the StubDefaultCost
indicates the cost of the default summary-LSA that the router
should advertise into the area. See Section 12.4.3 for more
information.
Unless otherwise specified, the remaining sections of this document
refer to the operation of the OSPF protocol within a single area.
7. Bringing Up Adjacencies
OSPF creates adjacencies between neighboring routers for the purpose
of exchanging routing information. Not every two neighboring routers
will become adjacent. This section covers the generalities involved
in creating adjacencies. For further details consult Section 10.
7.1. The Hello Protocol
The Hello Protocol is responsible for establishing and maintaining
neighbor relationships. It also ensures that communication between
neighbors is bidirectional. Hello packets are sent periodically out
all router interfaces. Bidirectional communication is indicated when
the router sees itself listed in the neighbor's Hello Packet. On
broadcast and NBMA networks, the Hello Protocol elects a Designated
Router for the network.
Moy Standards Track [Page 44]
RFC 2178 OSPF Version 2 July 1997
The Hello Protocol works differently on broadcast networks, NBMA
networks and Point-to-MultiPoint networks. On broadcast networks,
each router advertises itself by periodically multicasting Hello
Packets. This allows neighbors to be discovered dynamically. These
Hello Packets contain the router's view of the Designated Router's
identity, and the list of routers whose Hello Packets have been seen
recently.
On NBMA networks some configuration information may be necessary for
the operation of the Hello Protocol. Each router that may
potentially become Designated Router has a list of all other routers
attached to the network. A router, having Designated Router
potential, sends Hello Packets to all other potential Designated
Routers when its interface to the NBMA network first becomes
operational. This is an attempt to find the Designated Router for
the network. If the router itself is elected Designated Router, it
begins sending Hello Packets to all other routers attached to the
network.
On Point-to-MultiPoint networks, a router sends Hello Packets to all
neighbors with which it can communicate directly. These neighbors may
be discovered dynamically through a protocol such as Inverse ARP (see
[Ref14]), or they may be configured.
After a neighbor has been discovered, bidirectional communication
ensured, and (if on a broadcast or NBMA network) a Designated Router
elected, a decision is made regarding whether or not an adjacency
should be formed with the neighbor (see Section 10.4). If an
adjacency is to be formed, the first step is to synchronize the
neighbors' link-state databases. This is covered in the next
section.
7.2. The Synchronization of Databases
In a link-state routing algorithm, it is very important for all
routers' link-state databases to stay synchronized. OSPF simplifies
this by requiring only adjacent routers to remain synchronized. The
synchronization process begins as soon as the routers attempt to
bring up the adjacency. Each router describes its database by
sending a sequence of Database Description packets to its neighbor.
Each Database Description Packet describes a set of LSAs belonging to
the router's database. When the neighbor sees an LSA that is more
recent than its own database copy, it makes a note that this newer
LSA should be requested.
This sending and receiving of Database Description packets is called
the "Database Exchange Process". During this process, the two
routers form a master/slave relationship. Each Database Description
Moy Standards Track [Page 45]
RFC 2178 OSPF Version 2 July 1997
Packet has a sequence number. Database Description Packets sent by
the master (polls) are acknowledged by the slave through echoing of
the sequence number. Both polls and their responses contain
summaries of link state data. The master is the only one allowed to
retransmit Database Description Packets. It does so only at fixed
intervals, the length of which is the configured per-interface
constant RxmtInterval.
Each Database Description contains an indication that there are more
packets to follow --- the M-bit. The Database Exchange Process is
over when a router has received and sent Database Description Packets
with the M-bit off.
During and after the Database Exchange Process, each router has a
list of those LSAs for which the neighbor has more up-to-date
instances. These LSAs are requested in Link State Request Packets.
Link State Request packets that are not satisfied are retransmitted
at fixed intervals of time RxmtInterval. When the Database
Description Process has completed and all Link State Requests have
been satisfied, the databases are deemed synchronized and the routers
are marked fully adjacent. At this time the adjacency is fully
functional and is advertised in the two routers' router-LSAs.
The adjacency is used by the flooding procedure as soon as the
Database Exchange Process begins. This simplifies database
synchronization, and guarantees that it finishes in a predictable
period of time.
7.3. The Designated Router
Every broadcast and NBMA network has a Designated Router. The
Designated Router performs two main functions for the routing
protocol:
o The Designated Router originates a network-LSA on behalf of
the network. This LSA lists the set of routers (including
the Designated Router itself) currently attached to the
network. The Link State ID for this LSA (see Section
12.1.4) is the IP interface address of the Designated
Router. The IP network number can then be obtained by using
the network's subnet/network mask.
o The Designated Router becomes adjacent to all other routers
on the network. Since the link state databases are
synchronized across adjacencies (through adjacency bring-up
and then the flooding procedure), the Designated Router
plays a central part in the synchronization process.
Moy Standards Track [Page 46]
RFC 2178 OSPF Version 2 July 1997
The Designated Router is elected by the Hello Protocol. A router's
Hello Packet contains its Router Priority, which is configurable on a
per-interface basis. In general, when a router's interface to a
network first becomes functional, it checks to see whether there is
currently a Designated Router for the network. If there is, it
accepts that Designated Router, regardless of its Router Priority.
(This makes it harder to predict the identity of the Designated
Router, but ensures that the Designated Router changes less often.
See below.) Otherwise, the router itself becomes Designated Router
if it has the highest Router Priority on the network. A more
detailed (and more accurate) description of Designated Router
election is presented in Section 9.4.
The Designated Router is the endpoint of many adjacencies. In order
to optimize the flooding procedure on broadcast networks, the
Designated Router multicasts its Link State Update Packets to the
address AllSPFRouters, rather than sending separate packets over each
adjacency.
Section 2 of this document discusses the directed graph
representation of an area. Router nodes are labelled with their
Router ID. Transit network nodes are actually labelled with the IP
address of their Designated Router. It follows that when the
Designated Router changes, it appears as if the network node on the
graph is replaced by an entirely new node. This will cause the
network and all its attached routers to originate new LSAs. Until
the link-state databases again converge, some temporary loss of
connectivity may result. This may result in ICMP unreachable
messages being sent in response to data traffic. For that reason,
the Designated Router should change only infrequently. Router
Priorities should be configured so that the most dependable router on
a network eventually becomes Designated Router.
7.4. The Backup Designated Router
In order to make the transition to a new Designated Router smoother,
there is a Backup Designated Router for each broadcast and NBMA
network. The Backup Designated Router is also adjacent to all
routers on the network, and becomes Designated Router when the
previous Designated Router fails. If there were no Backup Designated
Router, when a new Designated Router became necessary, new
adjacencies would have to be formed between the new Designated Router
and all other routers attached to the network. Part of the adjacency
forming process is the synchronizing of link-state databases, which
can potentially take quite a long time. During this time, the
network would not be available for transit data traffic. The Backup
Designated obviates the need to form these adjacencies, since they
already exist. This means the period of disruption in transit
Moy Standards Track [Page 47]
RFC 2178 OSPF Version 2 July 1997
traffic lasts only as long as it takes to flood the new LSAs (which
announce the new Designated Router).
The Backup Designated Router does not generate a network-LSA for the
network. (If it did, the transition to a new Designated Router would
be even faster. However, this is a tradeoff between database size
and speed of convergence when the Designated Router disappears.)
The Backup Designated Router is also elected by the Hello Protocol.
Each Hello Packet has a field that specifies the Backup Designated
Router for the network.
In some steps of the flooding procedure, the Backup Designated Router
plays a passive role, letting the Designated Router do more of the
work. This cuts down on the amount of local routing traffic. See
Section 13.3 for more information.
7.5. The graph of adjacencies
An adjacency is bound to the network that the two routers have in
common. If two routers have multiple networks in common, they may
have multiple adjacencies between them.
One can picture the collection of adjacencies on a network as forming
an undirected graph. The vertices consist of routers, with an edge
joining two routers if they are adjacent. The graph of adjacencies
describes the flow of routing protocol packets, and in particular
Link State Update Packets, through the Autonomous System.
Two graphs are possible, depending on whether a Designated Router is
elected for the network. On physical point-to-point networks,
Point-to-MultiPoint networks and virtual links, neighboring routers
become adjacent whenever they can communicate directly. In contrast,
on broadcast and NBMA networks only the Designated Router and the
Backup Designated Router become adjacent to all other routers
attached to the network.
These graphs are shown in Figure 10. It is assumed that Router RT7
has become the Designated Router, and Router RT3 the Backup
Designated Router, for the Network N2. The Backup Designated Router
performs a lesser function during the flooding procedure than the
Designated Router (see Section 13.3). This is the reason for the
dashed lines connecting the Backup Designated Router RT3.
Moy Standards Track [Page 48]
RFC 2178 OSPF Version 2 July 1997
+---+ +---+
|RT1|------------|RT2| o---------------o
+---+ N1 +---+ RT1 RT2
RT7
o---------+
+---+ +---+ +---+ /|\ |
|RT7| |RT3| |RT4| / | \ |
+---+ +---+ +---+ / | \ |
| | | / | \ |
+-----------------------+ RT5o RT6o oRT4 |
| | N2 * * * |
+---+ +---+ * * * |
|RT5| |RT6| * * * |
+---+ +---+ *** |
o---------+
RT3
Figure 10: The graph of adjacencies
8. Protocol Packet Processing
This section discusses the general processing of OSPF routing
protocol packets. It is very important that the router link-state
databases remain synchronized. For this reason, routing protocol
packets should get preferential treatment over ordinary data packets,
both in sending and receiving.
Routing protocol packets are sent along adjacencies only (with the
exception of Hello packets, which are used to discover the
adjacencies). This means that all routing protocol packets travel a
single IP hop, except those sent over virtual links.
All routing protocol packets begin with a standard header. The
sections below provide details on how to fill in and verify this
standard header. Then, for each packet type, the section giving more
details on that particular packet type's processing is listed.
8.1. Sending protocol packets
When a router sends a routing protocol packet, it fills in the fields
of the standard OSPF packet header as follows. For more details on
the header format consult Section A.3.1:
Moy Standards Track [Page 49]
RFC 2178 OSPF Version 2 July 1997
Version #
Set to 2, the version number of the protocol as documented in this
specification.
Packet type
The type of OSPF packet, such as Link state Update or Hello
Packet.
Packet length
The length of the entire OSPF packet in bytes, including the
standard OSPF packet header.
Router ID
The identity of the router itself (who is originating the packet).
Area ID
The OSPF area that the packet is being sent into.
Checksum
The standard IP 16-bit one's complement checksum of the entire
OSPF packet, excluding the 64-bit authentication field. This
checksum is calculated as part of the appropriate authentication
procedure; for some OSPF authentication types, the checksum
calculation is omitted. See Section D.4 for details.
AuType and Authentication
Each OSPF packet exchange is authenticated. Authentication types
are assigned by the protocol and are documented in Appendix D. A
different authentication procedure can be used for each IP
network/subnet. Autype indicates the type of authentication
procedure in use. The 64-bit authentication field is then for use
by the chosen authentication procedure. This procedure should be
the last called when forming the packet to be sent. See Section
D.4 for details.
Moy Standards Track [Page 50]
RFC 2178 OSPF Version 2 July 1997
The IP destination address for the packet is selected as follows. On
physical point-to-point networks, the IP destination is always set to
the address AllSPFRouters. On all other network types (including
virtual links), the majority of OSPF packets are sent as unicasts,
i.e., sent directly to the other end of the adjacency. In this case,
the IP destination is just the Neighbor IP address associated with
the other end of the adjacency (see Section 10). The only packets
not sent as unicasts are on broadcast networks; on these networks
Hello packets are sent to the multicast destination AllSPFRouters,
the Designated Router and its Backup send both Link State Update
Packets and Link State Acknowledgment Packets to the multicast
address AllSPFRouters, while all other routers send both their Link
State Update and Link State Acknowledgment Packets to the multicast
address AllDRouters.
Retransmissions of Link State Update packets are ALWAYS sent as
unicasts.
The IP source address should be set to the IP address of the sending
interface. Interfaces to unnumbered point-to-point networks have no
associated IP address. On these interfaces, the IP source should be
set to any of the other IP addresses belonging to the router. For
this reason, there must be at least one IP address assigned to the
router.[2] Note that, for most purposes, virtual links act precisely
the same as unnumbered point-to-point networks. However, each
virtual link does have an IP interface address (discovered during the
routing table build process) which is used as the IP source when
sending packets over the virtual link.
For more information on the format of specific OSPF packet types,
consult the sections listed in Table 10.
Type Packet name detailed section (transmit)
_________________________________________________________
1 Hello Section 9.5
2 Database description Section 10.8
3 Link state request Section 10.9
4 Link state update Section 13.3
5 Link state ack Section 13.5
Table 10: Sections describing OSPF protocol packet transmission.
8.2. Receiving protocol packets
Whenever a protocol packet is received by the router it is marked
with the interface it was received on. For routers that have virtual
links