diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2178.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2178.txt')
-rw-r--r-- | doc/rfc/rfc2178.txt | 11819 |
1 files changed, 11819 insertions, 0 deletions
diff --git a/doc/rfc/rfc2178.txt b/doc/rfc/rfc2178.txt new file mode 100644 index 0000000..67fe708 --- /dev/null +++ b/doc/rfc/rfc2178.txt @@ -0,0 +1,11819 @@ + + + + + + +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 configured, it may not be immediately obvious which interface + + + +Moy Standards Track [Page 51] + +RFC 2178 OSPF Version 2 July 1997 + + + to associate the packet with. For example, consider the Router RT11 + depicted in Figure 6. If RT11 receives an OSPF protocol packet on + its interface to Network N8, it may want to associate the packet with + the interface to Area 2, or with the virtual link to Router RT10 + (which is part of the backbone). In the following, we assume that + the packet is initially associated with the non-virtual link.[3] + + In order for the packet to be accepted at the IP level, it must pass + a number of tests, even before the packet is passed to OSPF for + processing: + + o The IP checksum must be correct. + + o The packet's IP destination address must be the IP address + of the receiving interface, or one of the IP multicast + addresses AllSPFRouters or AllDRouters. + + o The IP protocol specified must be OSPF (89). + + o Locally originated packets should not be passed on to OSPF. + That is, the source IP address should be examined to make + sure this is not a multicast packet that the router itself + generated. + + Next, the OSPF packet header is verified. The fields specified + in the header must match those configured for the receiving + interface. If they do not, the packet should be discarded: + + + o The version number field must specify protocol version 2. + + o The Area ID found in the OSPF header must be verified. If + both of the following cases fail, the packet should be + discarded. The Area ID specified in the header must either: + + (1) Match the Area ID of the receiving interface. In this + case, the packet has been sent over a single hop. + Therefore, the packet's IP source address is required to + be on the same network as the receiving interface. This + can be verified by comparing the packet's IP source + address to the interface's IP address, after masking + both addresses with the interface mask. This comparison + should not be performed on point-to-point networks. On + point-to-point networks, the interface addresses of each + end of the link are assigned independently, if they are + assigned at all. + + + + + +Moy Standards Track [Page 52] + +RFC 2178 OSPF Version 2 July 1997 + + + (2) Indicate the backbone. In this case, the packet has + been sent over a virtual link. The receiving router + must be an area border router, and the Router ID + specified in the packet (the source router) must be the + other end of a configured virtual link. The receiving + interface must also attach to the virtual link's + configured Transit area. If all of these checks + succeed, the packet is accepted and is from now on + associated with the virtual link (and the backbone + area). + + o Packets whose IP destination is AllDRouters should only be + accepted if the state of the receiving interface is DR or + Backup (see Section 9.1). + + o The AuType specified in the packet must match the AuType + specified for the associated area. + + o The packet must be authenticated. The authentication + procedure is indicated by the setting of AuType (see + Appendix D). The authentication procedure may use one or + more Authentication keys, which can be configured on a per- + interface basis. The authentication procedure may also + verify the checksum field in the OSPF packet header (which, + when used, is set to the standard IP 16-bit one's complement + checksum of the OSPF packet's contents after excluding the + 64-bit authentication field). If the authentication + procedure fails, the packet should be discarded. + + If the packet type is Hello, it should then be further processed by + the Hello Protocol (see Section 10.5). All other packet types are + sent/received only on adjacencies. This means that the packet must + have been sent by one of the router's active neighbors. If the + receiving interface connects to a broadcast network, Point-to- + MultiPoint network or NBMA network the sender is identified by the IP + source address found in the packet's IP header. If the receiving + interface connects to a point-to-point network or a virtual link, the + sender is identified by the Router ID (source router) found in the + packet's OSPF header. The data structure associated with the + receiving interface contains the list of active neighbors. Packets + not matching any active neighbor are discarded. + + At this point all received protocol packets are associated with an + active neighbor. For the further input processing of specific packet + types, consult the sections listed in Table 11. + + + + + + +Moy Standards Track [Page 53] + +RFC 2178 OSPF Version 2 July 1997 + + + Type Packet name detailed section (receive) + ________________________________________________________ + 1 Hello Section 10.5 + 2 Database description Section 10.6 + 3 Link state request Section 10.7 + 4 Link state update Section 13 + 5 Link state ack Section 13.7 + + Table 11: Sections describing OSPF protocol packet reception. + +9. The Interface Data Structure + + An OSPF interface is the connection between a router and a network. + We assume a single OSPF interface to each attached network/subnet, + although supporting multiple interfaces on a single network is + considered in Appendix F. Each interface structure has at most one IP + interface address. + + An OSPF interface can be considered to belong to the area that + contains the attached network. All routing protocol packets + originated by the router over this interface are labelled with the + interface's Area ID. One or more router adjacencies may develop over + an interface. A router's LSAs reflect the state of its interfaces and + their associated adjacencies. + + The following data items are associated with an interface. Note that + a number of these items are actually configuration for the attached + network; such items must be the same for all routers connected to the + network. + + Type + The OSPF interface type is either point-to-point, broadcast, NBMA, + Point-to-MultiPoint or virtual link. + + State + The functional level of an interface. State determines whether or + not full adjacencies are allowed to form over the interface. + State is also reflected in the router's LSAs. + + IP interface address + The IP address associated with the interface. This appears as the + IP source address in all routing protocol packets originated over + this interface. Interfaces to unnumbered point-to-point networks + do not have an associated IP address. + + IP interface mask + Also referred to as the subnet mask, this indicates the portion of + the IP interface address that identifies the attached network. + + + +Moy Standards Track [Page 54] + +RFC 2178 OSPF Version 2 July 1997 + + + Masking the IP interface address with the IP interface mask yields + the IP network number of the attached network. On point-to-point + networks and virtual links, the IP interface mask is not defined. + On these networks, the link itself is not assigned an IP network + number, and so the addresses of each side of the link are assigned + independently, if they are assigned at all. + + Area ID + The Area ID of the area to which the attached network belongs. + All routing protocol packets originating from the interface are + labelled with this Area ID. + + HelloInterval + The length of time, in seconds, between the Hello packets that the + router sends on the interface. Advertised in Hello packets sent + out this interface. + + RouterDeadInterval + The number of seconds before the router's neighbors will declare + it down, when they stop hearing the router's Hello Packets. + Advertised in Hello packets sent out this interface. + + InfTransDelay + The estimated number of seconds it takes to transmit a Link State + Update Packet over this interface. LSAs contained in the Link + State Update packet will have their age incremented by this amount + before transmission. This value should take into account + transmission and propagation delays; it must be greater than zero. + + Router Priority + An 8-bit unsigned integer. When two routers attached to a network + both attempt to become Designated Router, the one with the highest + Router Priority takes precedence. A router whose Router Priority + is set to 0 is ineligible to become Designated Router on the + attached network. Advertised in Hello packets sent out this + interface. + + Hello Timer + An interval timer that causes the interface to send a Hello + packet. This timer fires every HelloInterval seconds. Note that + on non-broadcast networks a separate Hello packet is sent to each + qualified neighbor. + + Wait Timer + A single shot timer that causes the interface to exit the Waiting + state, and as a consequence select a Designated Router on the + network. The length of the timer is RouterDeadInterval seconds. + + + + +Moy Standards Track [Page 55] + +RFC 2178 OSPF Version 2 July 1997 + + + List of neighboring routers + The other routers attached to this network. This list is formed + by the Hello Protocol. Adjacencies will be formed to some of + these neighbors. The set of adjacent neighbors can be determined + by an examination of all of the neighbors' states. + + Designated Router + The Designated Router selected for the attached network. The + Designated Router is selected on all broadcast and NBMA networks + by the Hello Protocol. Two pieces of identification are kept for + the Designated Router: its Router ID and its IP interface address + on the network. The Designated Router advertises link state for + the network; this network-LSA is labelled with the Designated + Router's IP address. The Designated Router is initialized to + 0.0.0.0, which indicates the lack of a Designated Router. + + Backup Designated Router + The Backup Designated Router is also selected on all broadcast and + NBMA networks by the Hello Protocol. All routers on the attached + network become adjacent to both the Designated Router and the + Backup Designated Router. The Backup Designated Router becomes + Designated Router when the current Designated Router fails. The + Backup Designated Router is initialized to 0.0.0.0, indicating the + lack of a Backup Designated Router. + + Interface output cost(s) + The cost of sending a data packet on the interface, expressed in + the link state metric. This is advertised as the link cost for + this interface in the router-LSA. The cost of an interface must be + greater than zero. + + RxmtInterval + The number of seconds between LSA retransmissions, for adjacencies + belonging to this interface. Also used when retransmitting + Database Description and Link State Request Packets. + + AuType + The type of authentication used on the attached network/subnet. + Authentication types are defined in Appendix D. All OSPF packet + exchanges are authenticated. Different authentication schemes may + be used on different networks/subnets. + + + + + + + + + + +Moy Standards Track [Page 56] + +RFC 2178 OSPF Version 2 July 1997 + + + Authentication key + This configured data allows the authentication procedure to + generate and/or verify OSPF protocol packets. The Authentication + key can be configured on a per-interface basis. For example, if + the AuType indicates simple password, the Authentication key would + be a 64-bit clear password which is inserted into the OSPF packet + header. If instead Autype indicates Cryptographic authentication, + then the Authentication key is a shared secret which enables the + generation/verification of message digests which are appended to + the OSPF protocol packets. When Cryptographic authentication is + used, multiple simultaneous keys are supported in order to achieve + smooth key transition (see Section D.3). + +9.1. Interface states + + The various states that router interfaces may attain is documented in + this section. The states are listed in order of progressing + functionality. For example, the inoperative state is listed first, + followed by a list of intermediate states before the final, fully + functional state is achieved. The specification makes use of this + ordering by sometimes making references such as "those interfaces in + state greater than X". Figure 11 shows the graph of interface state + changes. The arcs of the graph are labelled with the event causing + the state change. These events are documented in Section 9.2. The + interface state machine is described in more detail in Section 9.3. + + Down + This is the initial interface state. In this state, the lower- + level protocols have indicated that the interface is unusable. No + protocol traffic at all will be sent or received on such a + interface. In this state, interface parameters should be set to + their initial values. + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 57] + +RFC 2178 OSPF Version 2 July 1997 + + + +----+ UnloopInd +--------+ + |Down|<--------------|Loopback| + +----+ +--------+ + | + |InterfaceUp + +-------+ | +--------------+ + |Waiting|<-+-------------->|Point-to-point| + +-------+ +--------------+ + | + WaitTimer|BackupSeen + | + | + | NeighborChange + +------+ +-+<---------------- +-------+ + |Backup|<----------|?|----------------->|DROther| + +------+---------->+-+<-----+ +-------+ + Neighbor | | + Change | |Neighbor + | |Change + | +--+ + +---->|DR| + +--+ + + Figure 11: Interface State changes + + In addition to the state transitions pictured, + Event InterfaceDown always forces Down State, and + Event LoopInd always forces Loopback State + + All interface timers should be disabled, and there should be no + adjacencies associated with the interface. + + Loopback + In this state, the router's interface to the network is looped + back. The interface may be looped back in hardware or software. + The interface will be unavailable for regular data traffic. + However, it may still be desirable to gain information on the + quality of this interface, either through sending ICMP pings to + the interface or through something like a bit error test. For + this reason, IP packets may still be addressed to an interface in + Loopback state. To facilitate this, such interfaces are + advertised in router-LSAs as single host routes, whose destination + is the IP interface address.[4] + + + + + + + + +Moy Standards Track [Page 58] + +RFC 2178 OSPF Version 2 July 1997 + + + Waiting + In this state, the router is trying to determine the identity of + the (Backup) Designated Router for the network. To do this, the + router monitors the Hello Packets it receives. The router is not + allowed to elect a Backup Designated Router nor a Designated + Router until it transitions out of Waiting state. This prevents + unnecessary changes of (Backup) Designated Router. + + Point-to-point + In this state, the interface is operational, and connects either + to a physical point-to-point network or to a virtual link. Upon + entering this state, the router attempts to form an adjacency with + the neighboring router. Hello Packets are sent to the neighbor + every HelloInterval seconds. + + DR Other + The interface is to a broadcast or NBMA network on which another + router has been selected to be the Designated Router. In this + state, the router itself has not been selected Backup Designated + Router either. The router forms adjacencies to both the + Designated Router and the Backup Designated Router (if they + exist). + + Backup + In this state, the router itself is the Backup Designated Router + on the attached network. It will be promoted to Designated Router + when the present Designated Router fails. The router establishes + adjacencies to all other routers attached to the network. The + Backup Designated Router performs slightly different functions + during the Flooding Procedure, as compared to the Designated + Router (see Section 13.3). See Section 7.4 for more details on + the functions performed by the Backup Designated Router. + + DR In this state, this router itself is the Designated Router + on the attached network. Adjacencies are established to all other + routers attached to the network. The router must also originate a + network-LSA for the network node. The network-LSA will contain + links to all routers (including the Designated Router itself) + attached to the network. See Section 7.3 for more details on the + functions performed by the Designated Router. + +9.2. Events causing interface state changes + + State changes can be effected by a number of events. These events + are pictured as the labelled arcs in Figure 11. The label + definitions are listed below. For a detailed explanation of the + effect of these events on OSPF protocol operation, consult Section + 9.3. + + + +Moy Standards Track [Page 59] + +RFC 2178 OSPF Version 2 July 1997 + + + InterfaceUp + Lower-level protocols have indicated that the network interface is + operational. This enables the interface to transition out of Down + state. On virtual links, the interface operational indication is + actually a result of the shortest path calculation (see Section + 16.7). + + WaitTimer + The Wait Timer has fired, indicating the end of the waiting period + that is required before electing a (Backup) Designated Router. + + BackupSeen + The router has detected the existence or non-existence of a Backup + Designated Router for the network. This is done in one of two + ways. First, an Hello Packet may be received from a neighbor + claiming to be itself the Backup Designated Router. + Alternatively, an Hello Packet may be received from a neighbor + claiming to be itself the Designated Router, and indicating that + there is no Backup Designated Router. In either case there must + be bidirectional communication with the neighbor, i.e., the router + must also appear in the neighbor's Hello Packet. This event + signals an end to the Waiting state. + + NeighborChange + There has been a change in the set of bidirectional neighbors + associated with the interface. The (Backup) Designated Router + needs to be recalculated. The following neighbor changes lead to + the NeighborChange event. For an explanation of neighbor states, + see Section 10.1. + + o Bidirectional communication has been established to a + neighbor. In other words, the state of the neighbor has + transitioned to 2-Way or higher. + + o There is no longer bidirectional communication with a + neighbor. In other words, the state of the neighbor has + transitioned to Init or lower. + + o One of the bidirectional neighbors is newly declaring + itself as either Designated Router or Backup Designated + Router. This is detected through examination of that + neighbor's Hello Packets. + + o One of the bidirectional neighbors is no longer + declaring itself as Designated Router, or is no longer + declaring itself as Backup Designated Router. This is + again detected through examination of that neighbor's + Hello Packets. + + + +Moy Standards Track [Page 60] + +RFC 2178 OSPF Version 2 July 1997 + + + o The advertised Router Priority for a bidirectional + neighbor has changed. This is again detected through + examination of that neighbor's Hello Packets. + + LoopInd + An indication has been received that the interface is now looped + back to itself. This indication can be received either from + network management or from the lower level protocols. + + UnloopInd + An indication has been received that the interface is no longer + looped back. As with the LoopInd event, this indication can be + received either from network management or from the lower level + protocols. + + InterfaceDown + Lower-level protocols indicate that this interface is no longer + functional. No matter what the current interface state is, the new + interface state will be Down. + +9.3. The Interface state machine + + A detailed description of the interface state changes follows. Each + state change is invoked by an event (Section 9.2). This event may + produce different effects, depending on the current state of the + interface. For this reason, the state machine below is organized by + current interface state and received event. Each entry in the state + machine describes the resulting new interface state and the required + set of additional actions. + + When an interface's state changes, it may be necessary to originate a + new router-LSA. See Section 12.4 for more details. + + Some of the required actions below involve generating events for the + neighbor state machine. For example, when an interface becomes + inoperative, all neighbor connections associated with the interface + must be destroyed. For more information on the neighbor state + machine, see Section 10.3. + + + + + + + + + + + + + +Moy Standards Track [Page 61] + +RFC 2178 OSPF Version 2 July 1997 + + + State(s): Down + + Event: InterfaceUp + + New state: Depends upon action routine + + Action: Start the interval Hello Timer, enabling the + periodic sending of Hello packets out the interface. + If the attached network is a physical point-to-point + network, Point-to-MultiPoint network or virtual + link, the interface state transitions to Point-to- + Point. Else, if the router is not eligible to + become Designated Router the interface state + transitions to DR Other. + + Otherwise, the attached network is a broadcast or + NBMA network and the router is eligible to become + Designated Router. In this case, in an attempt to + discover the attached network's Designated Router + the interface state is set to Waiting and the single + shot Wait Timer is started. Additionally, if the + network is an NBMA network examine the configured + list of neighbors for this interface and generate + the neighbor event Start for each neighbor that is + also eligible to become Designated Router. + + State(s): Waiting + + Event: BackupSeen + + New state: Depends upon action routine. + + Action: Calculate the attached network's Backup Designated + Router and Designated Router, as shown in Section + 9.4. As a result of this calculation, the new state + of the interface will be either DR Other, Backup or + DR. + + + State(s): Waiting + + Event: WaitTimer + + New state: Depends upon action routine. + + + + + + + +Moy Standards Track [Page 62] + +RFC 2178 OSPF Version 2 July 1997 + + + Action: Calculate the attached network's Backup Designated + Router and Designated Router, as shown in Section + 9.4. As a result of this calculation, the new state + of the interface will be either DR Other, Backup or + DR. + + + State(s): DR Other, Backup or DR + + Event: NeighborChange + + New state: Depends upon action routine. + + Action: Recalculate the attached network's Backup Designated + Router and Designated Router, as shown in Section + 9.4. As a result of this calculation, the new state + of the interface will be either DR Other, Backup or + DR. + + + State(s): Any State + + Event: InterfaceDown + + New state: Down + + Action: All interface variables are reset, and interface + timers disabled. Also, all neighbor connections + associated with the interface are destroyed. This + is done by generating the event KillNbr on all + associated neighbors (see Section 10.2). + + + State(s): Any State + + Event: LoopInd + + New state: Loopback + + Action: Since this interface is no longer connected to the + attached network the actions associated with the + above InterfaceDown event are executed. + + + State(s): Loopback + + Event: UnloopInd + + + + +Moy Standards Track [Page 63] + +RFC 2178 OSPF Version 2 July 1997 + + + New state: Down + + Action: No actions are necessary. For example, the + interface variables have already been reset upon + entering the Loopback state. Note that reception of + an InterfaceUp event is necessary before the + interface again becomes fully functional. + +9.4. Electing the Designated Router + + This section describes the algorithm used for calculating a network's + Designated Router and Backup Designated Router. This algorithm is + invoked by the Interface state machine. The initial time a router + runs the election algorithm for a network, the network's Designated + Router and Backup Designated Router are initialized to 0.0.0.0. This + indicates the lack of both a Designated Router and a Backup + Designated Router. + + The Designated Router election algorithm proceeds as follows: Call + the router doing the calculation Router X. The list of neighbors + attached to the network and having established bidirectional + communication with Router X is examined. This list is precisely the + collection of Router X's neighbors (on this network) whose state is + greater than or equal to 2-Way (see Section 10.1). Router X itself + is also considered to be on the list. Discard all routers from the + list that are ineligible to become Designated Router. (Routers + having Router Priority of 0 are ineligible to become Designated + Router.) The following steps are then executed, considering only + those routers that remain on the list: + + (1) Note the current values for the network's Designated Router + and Backup Designated Router. This is used later for + comparison purposes. + + (2) Calculate the new Backup Designated Router for the network + as follows. Only those routers on the list that have not + declared themselves to be Designated Router are eligible to + become Backup Designated Router. If one or more of these + routers have declared themselves Backup Designated Router + (i.e., they are currently listing themselves as Backup + Designated Router, but not as Designated Router, in their + Hello Packets) the one having highest Router Priority is + declared to be Backup Designated Router. In case of a tie, + the one having the highest Router ID is chosen. If no + routers have declared themselves Backup Designated Router, + + + + + + +Moy Standards Track [Page 64] + +RFC 2178 OSPF Version 2 July 1997 + + + choose the router having highest Router Priority, (again + excluding those routers who have declared themselves + Designated Router), and again use the Router ID to break + ties. + + (3) Calculate the new Designated Router for the network as + follows. If one or more of the routers have declared + themselves Designated Router (i.e., they are currently + listing themselves as Designated Router in their Hello + Packets) the one having highest Router Priority is declared + to be Designated Router. In case of a tie, the one having + the highest Router ID is chosen. If no routers have + declared themselves Designated Router, assign the Designated + Router to be the same as the newly elected Backup Designated + Router. + + (4) If Router X is now newly the Designated Router or newly the + Backup Designated Router, or is now no longer the Designated + Router or no longer the Backup Designated Router, repeat + steps 2 and 3, and then proceed to step 5. For example, if + Router X is now the Designated Router, when step 2 is + repeated X will no longer be eligible for Backup Designated + Router election. Among other things, this will ensure that + no router will declare itself both Backup Designated Router + and Designated Router.[5] + + (5) As a result of these calculations, the router itself may now + be Designated Router or Backup Designated Router. See + Sections 7.3 and 7.4 for the additional duties this would + entail. The router's interface state should be set + accordingly. If the router itself is now Designated Router, + the new interface state is DR. If the router itself is now + Backup Designated Router, the new interface state is Backup. + Otherwise, the new interface state is DR Other. + + (6) If the attached network is an NBMA network, and the router + itself has just become either Designated Router or Backup + Designated Router, it must start sending Hello Packets to + those neighbors that are not eligible to become Designated + Router (see Section 9.5.1). This is done by invoking the + neighbor event Start for each neighbor having a Router + Priority of 0. + + (7) If the above calculations have caused the identity of either + the Designated Router or Backup Designated Router to change, + the set of adjacencies associated with this interface will + need to be modified. Some adjacencies may need to be + formed, and others may need to be broken. To accomplish + + + +Moy Standards Track [Page 65] + +RFC 2178 OSPF Version 2 July 1997 + + + this, invoke the event AdjOK? on all neighbors whose state + is at least 2-Way. This will cause their eligibility for + adjacency to be reexamined (see Sections 10.3 and 10.4). + + + The reason behind the election algorithm's complexity is the desire + for an orderly transition from Backup Designated Router to Designated + Router, when the current Designated Router fails. This orderly + transition is ensured through the introduction of hysteresis: no new + Backup Designated Router can be chosen until the old Backup accepts + its new Designated Router responsibilities. + + The above procedure may elect the same router to be both Designated + Router and Backup Designated Router, although that router will never + be the calculating router (Router X) itself. The elected Designated + Router may not be the router having the highest Router Priority, nor + will the Backup Designated Router necessarily have the second highest + Router Priority. If Router X is not itself eligible to become + Designated Router, it is possible that neither a Backup Designated + Router nor a Designated Router will be selected in the above + procedure. Note also that if Router X is the only attached router + that is eligible to become Designated Router, it will select itself + as Designated Router and there will be no Backup Designated Router + for the network. + +9.5. Sending Hello packets + + Hello packets are sent out each functioning router interface. They + are used to discover and maintain neighbor relationships.[6] On + broadcast and NBMA networks, Hello Packets are also used to elect the + Designated Router and Backup Designated Router. + + The format of an Hello packet is detailed in Section A.3.2. The + Hello Packet contains the router's Router Priority (used in choosing + the Designated Router), and the interval between Hello Packets sent + out the interface (HelloInterval). The Hello Packet also indicates + how often a neighbor must be heard from to remain active + (RouterDeadInterval). Both HelloInterval and RouterDeadInterval must + be the same for all routers attached to a common network. The Hello + packet also contains the IP address mask of the attached network + (Network Mask). On unnumbered point-to-point networks and on virtual + links this field should be set to 0.0.0.0. + + The Hello packet's Options field describes the router's optional OSPF + capabilities. One optional capability is defined in this + specification (see Sections 4.5 and A.2). The E-bit of the Options + field should be set if and only if the attached area is capable of + processing AS-external-LSAs (i.e., it is not a stub area). If the E- + + + +Moy Standards Track [Page 66] + +RFC 2178 OSPF Version 2 July 1997 + + + bit is set incorrectly the neighboring routers will refuse to accept + the Hello Packet (see Section 10.5). Unrecognized bits in the Hello + Packet's Options field should be set to zero. + + In order to ensure two-way communication between adjacent routers, + the Hello packet contains the list of all routers on the network from + which Hello Packets have been seen recently. The Hello packet also + contains the router's current choice for Designated Router and Backup + Designated Router. A value of 0.0.0.0 in these fields means that one + has not yet been selected. + + On broadcast networks and physical point-to-point networks, Hello + packets are sent every HelloInterval seconds to the IP multicast + address AllSPFRouters. On virtual links, Hello packets are sent as + unicasts (addressed directly to the other end of the virtual link) + every HelloInterval seconds. On Point-to-MultiPoint networks, + separate Hello packets are sent to each attached neighbor every + HelloInterval seconds. Sending of Hello packets on NBMA networks is + covered in the next section. + +9.5.1. Sending Hello packets on NBMA networks + + Static configuration information may be necessary in order for the + Hello Protocol to function on non-broadcast networks (see Sections + C.5 and C.6). On NBMA networks, every attached router which is + eligible to become Designated Router becomes aware of all of its + neighbors on the network (either through configuration or by some + unspecified mechanism). Each neighbor is labelled with the + neighbor's Designated Router eligibility. + + The interface state must be at least Waiting for any Hello Packets to + be sent out the NBMA interface. Hello Packets are then sent directly + (as unicasts) to some subset of a router's neighbors. Sometimes an + Hello Packet is sent periodically on a timer; at other times it is + sent as a response to a received Hello Packet. A router's hello- + sending behavior varies depending on whether the router itself is + eligible to become Designated Router. + + If the router is eligible to become Designated Router, it must + periodically send Hello Packets to all neighbors that are also + eligible. In addition, if the router is itself the Designated Router + or Backup Designated Router, it must also send periodic Hello Packets + to all other neighbors. This means that any two eligible routers are + always exchanging Hello Packets, which is necessary for the correct + operation of the Designated Router election algorithm. To minimize + the number of Hello Packets sent, the number of eligible routers on + an NBMA network should be kept small. + + + + +Moy Standards Track [Page 67] + +RFC 2178 OSPF Version 2 July 1997 + + + If the router is not eligible to become Designated Router, it must + periodically send Hello Packets to both the Designated Router and the + Backup Designated Router (if they exist). It must also send an Hello + Packet in reply to an Hello Packet received from any eligible + neighbor (other than the current Designated Router and Backup + Designated Router). This is needed to establish an initial + bidirectional relationship with any potential Designated Router. + + When sending Hello packets periodically to any neighbor, the interval + between Hello Packets is determined by the neighbor's state. If the + neighbor is in state Down, Hello Packets are sent every PollInterval + seconds. Otherwise, Hello Packets are sent every HelloInterval + seconds. + +10. The Neighbor Data Structure + + An OSPF router converses with its neighboring routers. Each separate + conversation is described by a "neighbor data structure". Each + conversation is bound to a particular OSPF router interface, and is + identified either by the neighboring router's OSPF Router ID or by + its Neighbor IP address (see below). Thus if the OSPF router and + another router have multiple attached networks in common, multiple + conversations ensue, each described by a unique neighbor data + structure. Each separate conversation is loosely referred to in the + text as being a separate "neighbor". + + The neighbor data structure contains all information pertinent to the + forming or formed adjacency between the two neighbors. (However, + remember that not all neighbors become adjacent.) An adjacency can + be viewed as a highly developed conversation between two routers. + + State + The functional level of the neighbor conversation. This is + described in more detail in Section 10.1. + + Inactivity Timer + A single shot timer whose firing indicates that no Hello Packet + has been seen from this neighbor recently. The length of the + timer is RouterDeadInterval seconds. + + Master/Slave + When the two neighbors are exchanging databases, they form a + master/slave relationship. The master sends the first Database + Description Packet, and is the only part that is allowed to + retransmit. The slave can only respond to the master's Database + Description Packets. The master/slave relationship is negotiated + in state ExStart. + + + + +Moy Standards Track [Page 68] + +RFC 2178 OSPF Version 2 July 1997 + + + DD Sequence Number + The DD Sequence number of the Database Description packet that is + currently being sent to the neighbor. + + Last received Database Description packet + The initialize(I), more (M) and master(MS) bits, Options field, + and DD sequence number contained in the last Database Description + packet received from the neighbor. Used to determine whether the + next Database Description packet received from the neighbor is a + duplicate. + + Neighbor ID + The OSPF Router ID of the neighboring router. The Neighbor ID is + learned when Hello packets are received from the neighbor, or is + configured if this is a virtual adjacency (see Section C.4). + + Neighbor Priority + The Router Priority of the neighboring router. Contained in the + neighbor's Hello packets, this item is used when selecting the + Designated Router for the attached network. + + Neighbor IP address + The IP address of the neighboring router's interface to the + attached network. Used as the Destination IP address when + protocol packets are sent as unicasts along this adjacency. Also + used in router-LSAs as the Link ID for the attached network if the + neighboring router is selected to be Designated Router (see + Section 12.4.1). The Neighbor IP address is learned when Hello + packets are received from the neighbor. For virtual links, the + Neighbor IP address is learned during the routing table build + process (see Section 15). + + Neighbor Options + The optional OSPF capabilities supported by the neighbor. Learned + during the Database Exchange process (see Section 10.6). The + neighbor's optional OSPF capabilities are also listed in its Hello + packets. This enables received Hello Packets to be rejected (i.e., + neighbor relationships will not even start to form) if there is a + mismatch in certain crucial OSPF capabilities (see Section 10.5). + The optional OSPF capabilities are documented in Section 4.5. + + Neighbor's Designated Router + The neighbor's idea of the Designated Router. If this is the + neighbor itself, this is important in the local calculation of the + Designated Router. Defined only on broadcast and NBMA networks. + + + + + + +Moy Standards Track [Page 69] + +RFC 2178 OSPF Version 2 July 1997 + + + Neighbor's Backup Designated Router + The neighbor's idea of the Backup Designated Router. If this is + the neighbor itself, this is important in the local calculation of + the Backup Designated Router. Defined only on broadcast and NBMA + networks. + + The next set of variables are lists of LSAs. These lists describe + subsets of the area link-state database. This memo defines five + distinct types of LSAs, all of which may be present in an area link- + state database: router-LSAs, network-LSAs, and Type 3 and 4 summary- + LSAs (all stored in the area data structure), and AS- external-LSAs + (stored in the global data structure). + + Link state retransmission list + The list of LSAs that have been flooded but not acknowledged on + this adjacency. These will be retransmitted at intervals until + they are acknowledged, or until the adjacency is destroyed. + + Database summary list + The complete list of LSAs that make up the area link-state + database, at the moment the neighbor goes into Database Exchange + state. This list is sent to the neighbor in Database Description + packets. + + Link state request list + The list of LSAs that need to be received from this neighbor in + order to synchronize the two neighbors' link-state databases. + This list is created as Database Description packets are received, + and is then sent to the neighbor in Link State Request packets. + The list is depleted as appropriate Link State Update packets are + received. + +10.1. Neighbor states + + The state of a neighbor (really, the state of a conversation being + held with a neighboring router) is documented in the following + sections. The states are listed in order of progressing + functionality. For example, the inoperative state is listed first, + followed by a list of intermediate states before the final, fully + functional state is achieved. The specification makes use of this + ordering by sometimes making references such as "those + neighbors/adjacencies in state greater than X". Figures 12 and 13 + show the graph of neighbor state changes. The arcs of the graphs are + labelled with the event causing the state change. The neighbor + events are documented in Section 10.2. + + + + + + +Moy Standards Track [Page 70] + +RFC 2178 OSPF Version 2 July 1997 + + + The graph in Figure 12 shows the state changes effected by the Hello + Protocol. The Hello Protocol is responsible for neighbor acquisition + and maintenance, and for ensuring two way communication between + neighbors. + + The graph in Figure 13 shows the forming of an adjacency. Not every + two neighboring routers become adjacent (see Section 10.4). The + adjacency starts to form when the neighbor is in state ExStart. + After the two routers discover their master/slave status, the state + transitions to Exchange. At this point the neighbor starts to be + used in the flooding procedure, and the two neighboring routers begin + synchronizing their databases. When this synchronization is + finished, the neighbor is in state Full and we say that the two + routers are fully adjacent. At this point the adjacency is listed in + LSAs. + + For a more detailed description of neighbor state changes, together + with the additional actions involved in each change, see Section + 10.3. + + Down + This is the initial state of a neighbor conversation. It + indicates that there has been no recent information received from + the neighbor. On NBMA networks, Hello packets may still be sent to + "Down" neighbors, although at a reduced frequency (see Section + 9.5.1). + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 71] + +RFC 2178 OSPF Version 2 July 1997 + + + +----+ + |Down| + +----+ + |\ + | \Start + | \ +-------+ + Hello | +---->|Attempt| + Received | +-------+ + | | + +----+<-+ |HelloReceived + |Init|<---------------+ + +----+<--------+ + | | + |2-Way |1-Way + |Received |Received + | | + +-------+ | +-----+ + |ExStart|<--------+------->|2-Way| + +-------+ +-----+ + + Figure 12: Neighbor state changes (Hello Protocol) + + In addition to the state transitions pictured, + Event KillNbr always forces Down State, + Event Inactivity Timer always forces Down State, + Event LLDown always forces Down State + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 72] + +RFC 2178 OSPF Version 2 July 1997 + + + +-------+ + |ExStart| + +-------+ + | + NegotiationDone| + +->+--------+ + |Exchange| + +--+--------+ + | + Exchange| + Done | + +----+ | +-------+ + |Full|<---------+----->|Loading| + +----+<-+ +-------+ + | LoadingDone | + +------------------+ + + Figure 13: Neighbor state changes (Database Exchange) + + In addition to the state transitions pictured, + Event SeqNumberMismatch forces ExStart state, + Event BadLSReq forces ExStart state, + Event 1-Way forces Init state, + Event KillNbr always forces Down State, + Event InactivityTimer always forces Down State, + Event LLDown always forces Down State, + Event AdjOK? leads to adjacency forming/breaking + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 73] + +RFC 2178 OSPF Version 2 July 1997 + + + Attempt + This state is only valid for neighbors attached to NBMA networks. + It indicates that no recent information has been received from the + neighbor, but that a more concerted effort should be made to + contact the neighbor. This is done by sending the neighbor Hello + packets at intervals of HelloInterval (see Section 9.5.1). + + Init + In this state, an Hello packet has recently been seen from the + neighbor. However, bidirectional communication has not yet been + established with the neighbor (i.e., the router itself did not + appear in the neighbor's Hello packet). All neighbors in this + state (or higher) are listed in the Hello packets sent from the + associated interface. + + 2-Way + In this state, communication between the two routers is + bidirectional. This has been assured by the operation of the + Hello Protocol. This is the most advanced state short of + beginning adjacency establishment. The (Backup) Designated Router + is selected from the set of neighbors in state 2-Way or greater. + + ExStart + This is the first step in creating an adjacency between the two + neighboring routers. The goal of this step is to decide which + router is the master, and to decide upon the initial DD sequence + number. Neighbor conversations in this state or greater are + called adjacencies. + + Exchange + In this state the router is describing its entire link state + database by sending Database Description packets to the neighbor. + Each Database Description Packet has a DD sequence number, and is + explicitly acknowledged. Only one Database Description Packet is + allowed outstanding at any one time. In this state, Link State + Request Packets may also be sent asking for the neighbor's more + recent LSAs. All adjacencies in Exchange state or greater are + used by the flooding procedure. In fact, these adjacencies are + fully capable of transmitting and receiving all types of OSPF + routing protocol packets. + + Loading + In this state, Link State Request packets are sent to the neighbor + asking for the more recent LSAs that have been discovered (but not + yet received) in the Exchange state. + + + + + + +Moy Standards Track [Page 74] + +RFC 2178 OSPF Version 2 July 1997 + + + Full + In this state, the neighboring routers are fully adjacent. These + adjacencies will now appear in router-LSAs and network-LSAs. + +10.2. Events causing neighbor state changes + + State changes can be effected by a number of events. These events + are shown in the labels of the arcs in Figures 12 and 13. The label + definitions are as follows: + + HelloReceived + An Hello packet has been received from the neighbor. + + Start + This is an indication that Hello Packets should now be sent to the + neighbor at intervals of HelloInterval seconds. This event is + generated only for neighbors associated with NBMA networks. + + 2-WayReceived + Bidirectional communication has been realized between the two + neighboring routers. This is indicated by the router seeing + itself in the neighbor's Hello packet. + + NegotiationDone + The Master/Slave relationship has been negotiated, and DD sequence + numbers have been exchanged. This signals the start of the + sending/receiving of Database Description packets. For more + information on the generation of this event, consult Section 10.8. + + ExchangeDone + Both routers have successfully transmitted a full sequence of + Database Description packets. Each router now knows what parts of + its link state database are out of date. For more information on + the generation of this event, consult Section 10.8. + + BadLSReq + A Link State Request has been received for an LSA not contained in + the database. This indicates an error in the Database Exchange + process. + + Loading Done + Link State Updates have been received for all out-of-date portions + of the database. This is indicated by the Link state request list + becoming empty after the Database Exchange process has completed. + + + + + + + +Moy Standards Track [Page 75] + +RFC 2178 OSPF Version 2 July 1997 + + + AdjOK? + A decision must be made as to whether an adjacency should be + established/maintained with the neighbor. This event will start + some adjacencies forming, and destroy others. + + The following events cause well developed neighbors to revert to + lesser states. Unlike the above events, these events may occur when + the neighbor conversation is in any of a number of states. + + SeqNumberMismatch + A Database Description packet has been received that either a) has + an unexpected DD sequence number, b) unexpectedly has the Init bit + set or c) has an Options field differing from the last Options + field received in a Database Description packet. Any of these + conditions indicate that some error has occurred during adjacency + establishment. + + 1-Way + An Hello packet has been received from the neighbor, in which the + router is not mentioned. This indicates that communication with + the neighbor is not bidirectional. + + KillNbr + This is an indication that all communication with the neighbor is + now impossible, forcing the neighbor to revert to Down state. + + InactivityTimer + The inactivity Timer has fired. This means that no Hello packets + have been seen recently from the neighbor. The neighbor reverts to + Down state. + + LLDown + This is an indication from the lower level protocols that the + neighbor is now unreachable. For example, on an X.25 network this + could be indicated by an X.25 clear indication with appropriate + cause and diagnostic fields. This event forces the neighbor into + Down state. + +10.3. The Neighbor state machine + + A detailed description of the neighbor state changes follows. Each + state change is invoked by an event (Section 10.2). This event may + produce different effects, depending on the current state of the + neighbor. For this reason, the state machine below is organized by + current neighbor state and received event. Each entry in the state + machine describes the resulting new neighbor state and the required + set of additional actions. + + + + +Moy Standards Track [Page 76] + +RFC 2178 OSPF Version 2 July 1997 + + + When a neighbor's state changes, it may be necessary to rerun the + Designated Router election algorithm. This is determined by whether + the interface NeighborChange event is generated (see Section 9.2). + Also, if the Interface is in DR state (the router is itself + Designated Router), changes in neighbor state may cause a new + network-LSA to be originated (see Section 12.4). + + When the neighbor state machine needs to invoke the interface state + machine, it should be done as a scheduled task (see Section 4.4). + This simplifies things, by ensuring that neither state machine will + be executed recursively. + + + State(s): Down + + Event: Start + + New state: Attempt + + Action: Send an Hello Packet to the neighbor (this neighbor + is always associated with an NBMA network) and start + the Inactivity Timer for the neighbor. The timer's + later firing would indicate that communication with + the neighbor was not attained. + + + State(s): Attempt + + Event: HelloReceived + + New state: Init + + Action: Restart the Inactivity Timer for the neighbor, since + the neighbor has now been heard from. + + + State(s): Down + + Event: HelloReceived + + New state: Init + + Action: Start the Inactivity Timer for the neighbor. The + timer's later firing would indicate that the neighbor + is dead. + + + + + + +Moy Standards Track [Page 77] + +RFC 2178 OSPF Version 2 July 1997 + + + State(s): Init or greater + + Event: HelloReceived + + New state: No state change. + + Action: Restart the Inactivity Timer for the neighbor, since + the neighbor has again been heard from. + + + State(s): Init + + Event: 2-WayReceived + + New state: Depends upon action routine. + + Action: Determine whether an adjacency should be established + with the neighbor (see Section 10.4). If not, the + new neighbor state is 2-Way. + + Otherwise (an adjacency should be established) the + neighbor state transitions to ExStart. Upon + entering this state, the router increments the DD + sequence number in the neighbor data structure. If + this is the first time that an adjacency has been + attempted, the DD sequence number should be assigned + some unique value (like the time of day clock). It + then declares itself master (sets the master/slave + bit to master), and starts sending Database + Description Packets, with the initialize (I), more + (M) and master (MS) bits set. This Database + Description Packet should be otherwise empty. This + Database Description Packet should be retransmitted + at intervals of RxmtInterval until the next state is + entered (see Section 10.8). + + + State(s): ExStart + + Event: NegotiationDone + + New state: Exchange + + Action: The router must list the contents of its entire area + link state database in the neighbor Database summary + list. The area link state database consists of the + router-LSAs, network-LSAs and summary-LSAs contained + in the area structure, along with the AS-external- + + + +Moy Standards Track [Page 78] + +RFC 2178 OSPF Version 2 July 1997 + + + LSAs contained in the global structure. AS- + external-LSAs are omitted from a virtual neighbor's + Database summary list. AS-external-LSAs are omitted + from the Database summary list if the area has been + configured as a stub (see Section 3.6). LSAs whose + age is equal to MaxAge are instead added to the + neighbor's Link state retransmission list. A + summary of the Database summary list will be sent to + the neighbor in Database Description packets. Each + Database Description Packet has a DD sequence + number, and is explicitly acknowledged. Only one + Database Description Packet is allowed outstanding + at any one time. For more detail on the sending and + receiving of Database Description packets, see + Sections 10.8 and 10.6. + + + State(s): Exchange + + Event: ExchangeDone + + New state: Depends upon action routine. + + Action: If the neighbor Link state request list is empty, + the new neighbor state is Full. No other action is + required. This is an adjacency's final state. + + Otherwise, the new neighbor state is Loading. Start + (or continue) sending Link State Request packets to + the neighbor (see Section 10.9). These are requests + for the neighbor's more recent LSAs (which were + discovered but not yet received in the Exchange + state). These LSAs are listed in the Link state + request list associated with the neighbor. + + + State(s): Loading + + Event: Loading Done + + New state: Full + + Action: No action required. This is an adjacency's final + state. + + + + + + + +Moy Standards Track [Page 79] + +RFC 2178 OSPF Version 2 July 1997 + + + State(s): 2-Way + + Event: AdjOK? + + New state: Depends upon action routine. + + Action: Determine whether an adjacency should be formed with + the neighboring router (see Section 10.4). If not, + the neighbor state remains at 2-Way. Otherwise, + transition the neighbor state to ExStart and perform + the actions associated with the above state machine + entry for state Init and event 2-WayReceived. + + + State(s): ExStart or greater + + Event: AdjOK? + + New state: Depends upon action routine. + + Action: Determine whether the neighboring router should + still be adjacent. If yes, there is no state change + and no further action is necessary. + + Otherwise, the (possibly partially formed) adjacency + must be destroyed. The neighbor state transitions + to 2-Way. The Link state retransmission list, + Database summary list and Link state request list + are cleared of LSAs. + + + State(s): Exchange or greater + + Event: SeqNumberMismatch + + New state: ExStart + + Action: The (possibly partially formed) adjacency is torn + down, and then an attempt is made at + reestablishment. The neighbor state first + transitions to ExStart. The Link state + retransmission list, Database summary list and Link + state request list are cleared of LSAs. Then the + router increments the DD sequence number in the + neighbor data structure, declares itself master + (sets the master/slave bit to master), and starts + sending Database Description Packets, with the + initialize (I), more (M) and master (MS) bits set. + + + +Moy Standards Track [Page 80] + +RFC 2178 OSPF Version 2 July 1997 + + + This Database Description Packet should be otherwise + empty (see Section 10.8). + + + State(s): Exchange or greater + + Event: BadLSReq + + New state: ExStart + + Action: The action for event BadLSReq is exactly the same as + for the neighbor event SeqNumberMismatch. The + (possibly partially formed) adjacency is torn down, + and then an attempt is made at reestablishment. For + more information, see the neighbor state machine + entry that is invoked when event SeqNumberMismatch + is generated in state Exchange or greater. + + + State(s): Any state + + Event: KillNbr + + New state: Down + + Action: The Link state retransmission list, Database summary + list and Link state request list are cleared of + LSAs. Also, the Inactivity Timer is disabled. + + + State(s): Any state + + Event: LLDown + + New state: Down + + Action: The Link state retransmission list, Database summary + list and Link state request list are cleared of + LSAs. Also, the Inactivity Timer is disabled. + + + + + + + + + + + + +Moy Standards Track [Page 81] + +RFC 2178 OSPF Version 2 July 1997 + + + State(s): Any state + + Event: InactivityTimer + + New state: Down + + Action: The Link state retransmission list, Database summary + list and Link state request list are cleared of + LSAs. + + + State(s): 2-Way or greater + + Event: 1-WayReceived + + New state: Init + + Action: The Link state retransmission list, Database summary + list and Link state request list are cleared of + LSAs. + + + State(s): 2-Way or greater + + Event: 2-WayReceived + + New state: No state change. + + Action: No action required. + + + State(s): Init + + Event: 1-WayReceived + + New state: No state change. + + Action: No action required. + + +10.4. Whether to become adjacent + + Adjacencies are established with some subset of the router's + neighbors. Routers connected by point-to-point networks, Point-to- + MultiPoint networks and virtual links always become adjacent. On + broadcast and NBMA networks, all routers become adjacent to both the + Designated Router and the Backup Designated Router. + + + + +Moy Standards Track [Page 82] + +RFC 2178 OSPF Version 2 July 1997 + + + The adjacency-forming decision occurs in two places in the neighbor + state machine. First, when bidirectional communication is initially + established with the neighbor, and secondly, when the identity of the + attached network's (Backup) Designated Router changes. If the + decision is made to not attempt an adjacency, the state of the + neighbor communication stops at 2-Way. + + An adjacency should be established with a bidirectional neighbor when + at least one of the following conditions holds: + + o The underlying network type is point-to-point + + o The underlying network type is Point-to-MultiPoint + + o The underlying network type is virtual link + + o The router itself is the Designated Router + + o The router itself is the Backup Designated Router + + o The neighboring router is the Designated Router + + o The neighboring router is the Backup Designated Router + +10.5. Receiving Hello Packets + + This section explains the detailed processing of a received Hello + Packet. (See Section A.3.2 for the format of Hello packets.) The + generic input processing of OSPF packets will have checked the + validity of the IP header and the OSPF packet header. Next, the + values of the Network Mask, HelloInterval, and RouterDeadInterval + fields in the received Hello packet must be checked against the + values configured for the receiving interface. Any mismatch causes + processing to stop and the packet to be dropped. In other words, the + above fields are really describing the attached network's + configuration. However, there is one exception to the above rule: on + point-to-point networks and on virtual links, the Network Mask in the + received Hello Packet should be ignored. + + The receiving interface attaches to a single OSPF area (this could be + the backbone). The setting of the E-bit found in the Hello Packet's + Options field must match this area's ExternalRoutingCapability. If + AS-external-LSAs are not flooded into/throughout the area (i.e, the + area is a "stub") the E-bit must be clear in received Hello Packets, + otherwise the E-bit must be set. A mismatch causes processing to + stop and the packet to be dropped. The setting of the rest of the + bits in the Hello Packet's Options field should be ignored. + + + + +Moy Standards Track [Page 83] + +RFC 2178 OSPF Version 2 July 1997 + + + At this point, an attempt is made to match the source of the Hello + Packet to one of the receiving interface's neighbors. If the + receiving interface connects to a broadcast, Point-to-MultiPoint or + NBMA network the source is identified by the IP source address found + in the Hello's IP header. If the receiving interface connects to a + point-to-point link or a virtual link, the source is identified by + the Router ID found in the Hello's OSPF packet header. The + interface's current list of neighbors is contained in the interface's + data structure. If a matching neighbor structure cannot be found, + (i.e., this is the first time the neighbor has been detected), one is + created. The initial state of a newly created neighbor is set to + Down. + + When receiving an Hello Packet from a neighbor on a broadcast, + Point-to-MultiPoint or NBMA network, set the neighbor structure's + Neighbor ID equal to the Router ID found in the packet's OSPF header. + When receiving an Hello on a point-to-point network (but not on a + virtual link) set the neighbor structure's Neighbor IP address to the + packet's IP source address. + + Now the rest of the Hello Packet is examined, generating events to be + given to the neighbor and interface state machines. These state + machines are specified either to be executed or scheduled (see + Section 4.4). For example, by specifying below that the neighbor + state machine be executed in line, several neighbor state transitions + may be effected by a single received Hello: + + o Each Hello Packet causes the neighbor state machine to be + executed with the event HelloReceived. + + o Then the list of neighbors contained in the Hello Packet is + examined. If the router itself appears in this list, the + neighbor state machine should be executed with the event 2- + WayReceived. Otherwise, the neighbor state machine should + be executed with the event 1-WayReceived, and the processing + of the packet stops. + + o Next, the Hello Packet's Router Priority field is examined. + If this field is different than the one previously received + from the neighbor, the receiving interface's state machine + is scheduled with the event NeighborChange. In any case, + the Router Priority field in the neighbor data structure + should be updated accordingly. + + o Next the Designated Router field in the Hello Packet is + examined. If the neighbor is both declaring itself to be + Designated Router (Designated Router field = Neighbor IP + address) and the Backup Designated Router field in the + + + +Moy Standards Track [Page 84] + +RFC 2178 OSPF Version 2 July 1997 + + + packet is equal to 0.0.0.0 and the receiving interface is in + state Waiting, the receiving interface's state machine is + scheduled with the event BackupSeen. Otherwise, if the + neighbor is declaring itself to be Designated Router and it + had not previously, or the neighbor is not declaring itself + Designated Router where it had previously, the receiving + interface's state machine is scheduled with the event + NeighborChange. In any case, the Neighbors' Designated + Router item in the neighbor structure is updated + accordingly. + + o Finally, the Backup Designated Router field in the Hello + Packet is examined. If the neighbor is declaring itself to + be Backup Designated Router (Backup Designated Router field + = Neighbor IP address) and the receiving interface is in + state Waiting, the receiving interface's state machine is + scheduled with the event BackupSeen. Otherwise, if the + neighbor is declaring itself to be Backup Designated Router + and it had not previously, or the neighbor is not declaring + itself Backup Designated Router where it had previously, the + receiving interface's state machine is scheduled with the + event NeighborChange. In any case, the Neighbor's Backup + Designated Router item in the neighbor structure is updated + accordingly. + + On NBMA networks, receipt of an Hello Packet may also cause an Hello + Packet to be sent back to the neighbor in response. See Section 9.5.1 + for more details. + +10.6. Receiving Database Description Packets + + This section explains the detailed processing of a received Database + Description Packet. The incoming Database Description Packet has + already been associated with a neighbor and receiving interface by + the generic input packet processing (Section 8.2). Whether the + Database Description packet should be accepted, and if so, how it + should be further processed depends upon the neighbor state. + + If a Database Description packet is accepted, the following packet + fields should be saved in the corresponding neighbor data structure + under "last received Database Description packet": the packet's + initialize(I), more (M) and master(MS) bits, Options field, and DD + sequence number. If these fields are set identically in two + consecutive Database Description packets received from the neighbor, + the second Database Description packet is considered to be a + "duplicate" in the processing described below. + + + + + +Moy Standards Track [Page 85] + +RFC 2178 OSPF Version 2 July 1997 + + + If the Interface MTU field in the Database Description packet + indicates an IP datagram size that is larger than the router can + accept on the receiving interface without fragmentation, the Database + Description packet is rejected. Otherwise, if the neighbor state is: + + Down + The packet should be rejected. + + Attempt + The packet should be rejected. + + Init + The neighbor state machine should be executed with the event 2- + WayReceived. This causes an immediate state change to either + state 2-Way or state ExStart. If the new state is ExStart, the + processing of the current packet should then continue in this new + state by falling through to case ExStart below. + + 2-Way + The packet should be ignored. Database Description Packets are + used only for the purpose of bringing up adjacencies.[7] + + ExStart + If the received packet matches one of the following cases, then + the neighbor state machine should be executed with the event + NegotiationDone (causing the state to transition to Exchange), the + packet's Options field should be recorded in the neighbor + structure's Neighbor Options field and the packet should be + accepted as next in sequence and processed further (see below). + Otherwise, the packet should be ignored. + + o The initialize(I), more (M) and master(MS) bits are set, + the contents of the packet are empty, and the neighbor's + Router ID is larger than the router's own. In this case + the router is now Slave. Set the master/slave bit to + slave, and set the neighbor data structure's DD sequence + number to that specified by the master. + + o The initialize(I) and master(MS) bits are off, the + packet's DD sequence number equals the neighbor data + structure's DD sequence number (indicating + acknowledgment) and the neighbor's Router ID is smaller + than the router's own. In this case the router is + Master. + + + + + + + +Moy Standards Track [Page 86] + +RFC 2178 OSPF Version 2 July 1997 + + + Exchange + Duplicate Database Description packets are discarded by the + master, and cause the slave to retransmit the last Database + Description packet that it had sent. Otherwise (the packet is not + a duplicate): + + o If the state of the MS-bit is inconsistent with the + master/slave state of the connection, generate the + neighbor event SeqNumberMismatch and stop processing the + packet. + + o If the initialize(I) bit is set, generate the neighbor + event SeqNumberMismatch and stop processing the packet. + + o If the packet's Options field indicates a different set + of optional OSPF capabilities than were previously + received from the neighbor (recorded in the Neighbor + Options field of the neighbor structure), generate the + neighbor event SeqNumberMismatch and stop processing the + packet. + + o Database Description packets must be processed in + sequence, as indicated by the packets' DD sequence + numbers. If the router is master, the next packet + received should have DD sequence number equal to the DD + sequence number in the neighbor data structure. If the + router is slave, the next packet received should have DD + sequence number equal to one more than the DD sequence + number stored in the neighbor data structure. In either + case, if the packet is the next in sequence it should be + accepted and its contents processed as specified below. + + o Else, generate the neighbor event SeqNumberMismatch and + stop processing the packet. + + Loading or Full + In this state, the router has sent and received an entire sequence + of Database Description Packets. The only packets received should + be duplicates (see above). In particular, the packet's Options + field should match the set of optional OSPF capabilities + previously indicated by the neighbor (stored in the neighbor + structure's Neighbor Options field). Any other packets received, + including the reception of a packet with the Initialize(I) bit + set, should generate the neighbor event SeqNumberMismatch.[8] + Duplicates should be discarded by the master. The slave must + respond to duplicates by repeating the last Database Description + packet that it had sent. + + + + +Moy Standards Track [Page 87] + +RFC 2178 OSPF Version 2 July 1997 + + + When the router accepts a received Database Description Packet as the + next in sequence the packet contents are processed as follows. For + each LSA listed, the LSA's LS type is checked for validity. If the + LS type is unknown (e.g., not one of the LS types 1-5 defined by this + specification), or if this is an AS-external-LSA (LS type = 5) and + the neighbor is associated with a stub area, generate the neighbor + event SeqNumberMismatch and stop processing the packet. Otherwise, + the router looks up the LSA in its database to see whether it also + has an instance of the LSA. If it does not, or if the database copy + is less recent (see Section 13.1), the LSA is put on the Link state + request list so that it can be requested (immediately or at some + later time) in Link State Request Packets. + + When the router accepts a received Database Description Packet as the + next in sequence, it also performs the following actions, depending + on whether it is master or slave: + + Master + Increments the DD sequence number in the neighbor data structure. + If the router has already sent its entire sequence of Database + Description Packets, and the just accepted packet has the more bit + (M) set to 0, the neighbor event ExchangeDone is generated. + Otherwise, it should send a new Database Description to the slave. + + Slave + Sets the DD sequence number in the neighbor data structure to the + DD sequence number appearing in the received packet. The slave + must send a Database Description Packet in reply. If the received + packet has the more bit (M) set to 0, and the packet to be sent by + the slave will also have the M-bit set to 0, the neighbor event + ExchangeDone is generated. Note that the slave always generates + this event before the master. + +10.7. Receiving Link State Request Packets + + This section explains the detailed processing of received Link State + Request packets. Received Link State Request Packets specify a list + of LSAs that the neighbor wishes to receive. Link State Request + Packets should be accepted when the neighbor is in states Exchange, + Loading, or Full. In all other states Link State Request Packets + should be ignored. + + + + + + + + + + +Moy Standards Track [Page 88] + +RFC 2178 OSPF Version 2 July 1997 + + + Each LSA specified in the Link State Request packet should be located + in the router's database, and copied into Link State Update packets + for transmission to the neighbor. These LSAs should NOT be placed on + the Link state retransmission list for the neighbor. If an LSA + cannot be found in the database, something has gone wrong with the + Database Exchange process, and neighbor event BadLSReq should be + generated. + +10.8. Sending Database Description Packets + + This section describes how Database Description Packets are sent to a + neighbor. The Database Description packet's Interface MTU field is + set to the size of the largest IP datagram that can be sent out the + sending interface, without fragmentation. Common MTUs in use in the + Internet can be found in Table 7-1 of [Ref22]. Interface MTU should + be set to 0 in Database Description packets sent over virtual links. + + The router's optional OSPF capabilities (see Section 4.5) are + transmitted to the neighbor in the Options field of the Database + Description packet. The router should maintain the same set of + optional capabilities throughout the Database Exchange and flooding + procedures. If for some reason the router's optional capabilities + change, the Database Exchange procedure should be restarted by + reverting to neighbor state ExStart. One optional capability is + defined in this specification (see Sections 4.5 and A.2). The E-bit + should be set if and only if the attached network belongs to a non- + stub area. Unrecognized bits in the Options field should be set to + zero. The sending of Database Description packets depends on the + neighbor's state. In state ExStart the router sends empty Database + Description packets, with the initialize (I), more (M) and master + (MS) bits set. These packets are retransmitted every RxmtInterval + seconds. + + In state Exchange the Database Description Packets actually contain + summaries of the link state information contained in the router's + database. Each LSA in the area's link-state database (at the time + the neighbor transitions into Exchange state) is listed in the + neighbor Database summary list. Each new Database Description Packet + copies its DD sequence number from the neighbor data structure and + then describes the current top of the Database summary list. Items + are removed from the Database summary list when the previous packet + is acknowledged. + + In state Exchange, the determination of when to send a Database + Description packet depends on whether the router is master or slave: + + + + + + +Moy Standards Track [Page 89] + +RFC 2178 OSPF Version 2 July 1997 + + + Master + Database Description packets are sent when either a) the slave + acknowledges the previous Database Description packet by echoing + the DD sequence number or b) RxmtInterval seconds elapse without + an acknowledgment, in which case the previous Database Description + packet is retransmitted. + + Slave + Database Description packets are sent only in response to Database + Description packets received from the master. If the Database + Description packet received from the master is new, a new Database + Description packet is sent, otherwise the previous Database + Description packet is resent. + + In states Loading and Full the slave must resend its last Database + Description packet in response to duplicate Database Description + packets received from the master. For this reason the slave must + wait RouterDeadInterval seconds before freeing the last Database + Description packet. Reception of a Database Description packet from + the master after this interval will generate a SeqNumberMismatch + neighbor event. + +10.9. Sending Link State Request Packets + + In neighbor states Exchange or Loading, the Link state request list + contains a list of those LSAs that need to be obtained from the + neighbor. To request these LSAs, a router sends the neighbor the + beginning of the Link state request list, packaged in a Link State + Request packet. + + When the neighbor responds to these requests with the proper Link + State Update packet(s), the Link state request list is truncated and + a new Link State Request packet is sent. This process continues + until the Link state request list becomes empty. Unsatisfied Link + State Request packets are retransmitted at intervals of RxmtInterval. + There should be at most one Link State Request packet outstanding at + any one time. + + When the Link state request list becomes empty, and the neighbor + state is Loading (i.e., a complete sequence of Database Description + packets has been sent to and received from the neighbor), the Loading + Done neighbor event is generated. + + + + + + + + + +Moy Standards Track [Page 90] + +RFC 2178 OSPF Version 2 July 1997 + + +10.10. An Example + + Figure 14 shows an example of an adjacency forming. Routers RT1 and + RT2 are both connected to a broadcast network. It is assumed that + RT2 is the Designated Router for the network, and that RT2 has a + higher Router ID than Router RT1. + + The neighbor state changes realized by each router are listed on the + sides of the figure. + + At the beginning of Figure 14, Router RT1's interface to the network + becomes operational. It begins sending Hello Packets, although it + doesn't know the identity of the Designated Router or of any other + neighboring routers. Router RT2 hears this hello (moving the + neighbor to Init state), and in its next Hello Packet indicates that + it is itself the Designated Router and that it has heard Hello + Packets from RT1. This in turn causes RT1 to go to state ExStart, as + it starts to bring up the adjacency. + + RT1 begins by asserting itself as the master. When it sees that RT2 + is indeed the master (because of RT2's higher Router ID), RT1 + transitions to slave state and adopts its neighbor's DD sequence + number. Database Description packets are then exchanged, with polls + coming from the master (RT2) and responses from the slave (RT1). + This sequence of Database Description Packets ends when both the poll + and associated response has the M-bit off. + + In this example, it is assumed that RT2 has a completely up to date + database. In that case, RT2 goes immediately into Full state. RT1 + will go into Full state after updating the necessary parts of its + database. This is done by sending Link State Request Packets, and + receiving Link State Update Packets in response. Note that, while + RT1 has waited until a complete set of Database Description Packets + has been received (from RT2) before sending any Link State Request + Packets, this need not be the case. RT1 could have interleaved the + sending of Link State Request Packets with the reception of Database + Description Packets. + + + + + + + + + + + + + + +Moy Standards Track [Page 91] + +RFC 2178 OSPF Version 2 July 1997 + + + +---+ +---+ + |RT1| |RT2| + +---+ +---+ + + Down Down + Hello(DR=0,seen=0) + ------------------------------> + Hello (DR=RT2,seen=RT1,...) Init + <------------------------------ + ExStart D-D (Seq=x,I,M,Master) + ------------------------------> + D-D (Seq=y,I,M,Master) ExStart + <------------------------------ + Exchange D-D (Seq=y,M,Slave) + ------------------------------> + D-D (Seq=y+1,M,Master) Exchange + <------------------------------ + D-D (Seq=y+1,M,Slave) + ------------------------------> + ... + ... + ... + D-D (Seq=y+n, Master) + <------------------------------ + D-D (Seq=y+n, Slave) + Loading ------------------------------> + LS Request Full + ------------------------------> + LS Update + <------------------------------ + LS Request + ------------------------------> + LS Update + <------------------------------ + Full + + + Figure 14: An adjacency bring-up example + + + + + + + + + + + + + +Moy Standards Track [Page 92] + +RFC 2178 OSPF Version 2 July 1997 + + +11. The Routing Table Structure + + The routing table data structure contains all the information + necessary to forward an IP data packet toward its destination. Each + routing table entry describes the collection of best paths to a + particular destination. When forwarding an IP data packet, the + routing table entry providing the best match for the packet's IP + destination is located. The matching routing table entry then + provides the next hop towards the packet's destination. OSPF also + provides for the existence of a default route (Destination ID = + DefaultDestination, Address Mask = 0x00000000). When the default + route exists, it matches all IP destinations (although any other + matching entry is a better match). Finding the routing table entry + that best matches an IP destination is further described in Section + 11.1. + + There is a single routing table in each router. Two sample routing + tables are described in Sections 11.2 and 11.3. The building of the + routing table is discussed in Section 16. + + The rest of this section defines the fields found in a routing table + entry. The first set of fields describes the routing table entry's + destination. + + Destination Type + Destination type is either "network" or "router". Only network entries + are actually used when forwarding IP data traffic. Router routing + table entries are used solely as intermediate steps in the routing + table build process. + + A network is a range of IP addresses, to which IP data traffic may be + forwarded. This includes IP networks (class A, B, or C), IP subnets, + IP supernets and single IP hosts. The default route also falls into + this category. + + Router entries are kept for area border routers and AS boundary + routers. Routing table entries for area border routers are used when + calculating the inter-area routes (see Section 16.2), and when + maintaining configured virtual links (see Section 15). Routing table + entries for AS boundary routers are used when calculating the AS + external routes (see Section 16.4). + + Destination ID + The destination's identifier or name. This depends on the + Destination Type. For networks, the identifier is their associated IP + address. For routers, the identifier is the OSPF Router ID.[9] + + + + + +Moy Standards Track [Page 93] + +RFC 2178 OSPF Version 2 July 1997 + + + Address Mask + Only defined for networks. The network's IP address together with its + address mask defines a range of IP addresses. For IP subnets, the + address mask is referred to as the subnet mask. For host routes, the + mask is "all ones" (0xffffffff). + + Optional Capabilities + When the destination is a router this field indicates the optional + OSPF capabilities supported by the destination router. The only + optional capability defined by this specification is the ability to + process AS-external-LSAs. For a further discussion of OSPF's optional + capabilities, see Section 4.5. + + The set of paths to use for a destination may vary based on the OSPF + area to which the paths belong. This means that there may be + multiple routing table entries for the same destination, depending on + the values of the next field. + + Area + This field indicates the area whose link state information has led + to the routing table entry's collection of paths. This is called + the entry's associated area. For sets of AS external paths, this + field is not defined. For destinations of type "router", there + may be separate sets of paths (and therefore separate routing + table entries) associated with each of several areas. For example, + this will happen when two area border routers share multiple areas + in common. For destinations of type "network", only the set of + paths associated with the best area (the one providing the + preferred route) is kept. + + The rest of the routing table entry describes the set of paths to the + destination. The following fields pertain to the set of paths as a + whole. In other words, each one of the paths contained in a routing + table entry is of the same path-type and cost (see below). + + Path-type + There are four possible types of paths used to route traffic to + the destination, listed here in order of preference: intra-area, + inter-area, type 1 external or type 2 external. Intra-area paths + indicate destinations belonging to one of the router's attached + areas. Inter-area paths are paths to destinations in other OSPF + areas. These are discovered through the examination of received + summary-LSAs. AS external paths are paths to destinations + external to the AS. These are detected through the examination of + received AS-external-LSAs. + + + + + + +Moy Standards Track [Page 94] + +RFC 2178 OSPF Version 2 July 1997 + + + Cost + The link state cost of the path to the destination. For all paths + except type 2 external paths this describes the entire path's + cost. For Type 2 external paths, this field describes the cost of + the portion of the path internal to the AS. This cost is + calculated as the sum of the costs of the path's constituent + links. + + Type 2 cost + Only valid for type 2 external paths. For these paths, this field + indicates the cost of the path's external portion. This cost has + been advertised by an AS boundary router, and is the most + significant part of the total path cost. For example, a type 2 + external path with type 2 cost of 5 is always preferred over a + path with type 2 cost of 10, regardless of the cost of the two + paths' internal components. + + Link State Origin + Valid only for intra-area paths, this field indicates the LSA + (router-LSA or network-LSA) that directly references the + destination. For example, if the destination is a transit + network, this is the transit network's network-LSA. If the + destination is a stub network, this is the router-LSA for the + attached router. The LSA is discovered during the shortest-path + tree calculation (see Section 16.1). Multiple LSAs may reference + the destination, however a tie-breaking scheme always reduces the + choice to a single LSA. The Link State Origin field is not used by + the OSPF protocol, but it is used by the routing table calculation + in OSPF's Multicast routing extensions (MOSPF). + + When multiple paths of equal path-type and cost exist to a + destination (called elsewhere "equal-cost" paths), they are stored in + a single routing table entry. Each one of the "equal-cost" paths is + distinguished by the following fields: + + Next hop + The outgoing router interface to use when forwarding traffic to + the destination. On broadcast, Point-to-MultiPoint and NBMA + networks, the next hop also includes the IP address of the next + router (if any) in the path towards the destination. + + Advertising router + Valid only for inter-area and AS external paths. This field + indicates the Router ID of the router advertising the summary-LSA + or AS-external-LSA that led to this path. + + + + + + +Moy Standards Track [Page 95] + +RFC 2178 OSPF Version 2 July 1997 + + +11.1. Routing table lookup + + When an IP data packet is received, an OSPF router finds the routing + table entry that best matches the packet's destination. This routing + table entry then provides the outgoing interface and next hop router + to use in forwarding the packet. This section describes the process + of finding the best matching routing table entry. The process + consists of a number of steps, wherein the collection of routing + table entries is progressively pruned. In the end, the single + routing table entry remaining is called the "best match". + + Before the lookup begins, "discard" routing table entries should be + inserted into the routing table for each of the router's active area + address ranges (see Section 3.5). (An area range is considered + "active" if the range contains one or more networks reachable by + intra-area paths.) The destination of a "discard" entry is the set of + addresses described by its associated active area address range, and + the path type of each "discard" entry is set to "inter-area".[10] + + Note that the steps described below may fail to produce a best match + routing table entry (i.e., all existing routing table entries are + pruned for some reason or another), or the best match routing table + entry may be one of the above "discard" routing table entries. In + these cases, the packet's IP destination is considered unreachable. + Instead of being forwarded, the packet should be discarded and an + ICMP destination unreachable message should be returned to the + packet's source. + + (1) Select the complete set of "matching" routing table entries + from the routing table. Each routing table entry describes + a (set of) path(s) to a range of IP addresses. If the data + packet's IP destination falls into an entry's range of IP + addresses, the routing table entry is called a match. (It is + quite likely that multiple entries will match the data + packet. For example, a default route will match all + packets.) + + (2) Reduce the set of matching entries to those having the most + preferential path-type (see Section 11). OSPF has a four + level hierarchy of paths. Intra-area paths are the most + preferred, followed in order by inter-area, type 1 external + and type 2 external paths. + + (3) Select the remaining routing table entry that provides the + most specific (longest) match. Another way of saying this is + to choose the remaining entry that specifies the narrowest + range of IP addresses.[11] For example, the entry for the + address/mask pair of (128.185.1.0, 0xffffff00) is more + + + +Moy Standards Track [Page 96] + +RFC 2178 OSPF Version 2 July 1997 + + + specific than an entry for the pair (128.185.0.0, + 0xffff0000). The default route is the least specific match, + since it matches all destinations. + +11.2. Sample routing table, without areas + + Consider the Autonomous System pictured in Figure 2. No OSPF areas + have been configured. A single metric is shown per outbound + interface. The calculation of Router RT6's routing table proceeds as + described in Section 2.2. The resulting routing table is shown in + Table 12. Destination types are abbreviated: Network as "N", Router + as "R". + + There are no instances of multiple equal-cost shortest paths in this + example. Also, since there are no areas, there are no inter-area + paths. + + Routers RT5 and RT7 are AS boundary routers. Intra-area routes have + been calculated to Routers RT5 and RT7. This allows external routes + to be calculated to the destinations advertised by RT5 and RT7 (i.e., + Networks N12, N13, N14 and N15). It is assumed all AS-external-LSAs + originated by RT5 and RT7 are advertising type 1 external metrics. + This results in type 1 external paths being calculated to + destinations N12-N15. + +11.3. Sample routing table, with areas + + Consider the previous example, this time split into OSPF areas. An + OSPF area configuration is pictured in Figure 6. Router RT4's + routing table will be described for this area configuration. Router + RT4 has a connection to Area 1 and a backbone connection. This + causes Router RT4 to view the AS as the concatenation of the two + graphs shown in Figures 7 and 8. The resulting routing table is + displayed in Table 13. + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 97] + +RFC 2178 OSPF Version 2 July 1997 + + + Type Dest Area Path Type Cost Next Adv. + Hop(s) Router(s) + ____________________________________________________________ + N N1 0 intra-area 10 RT3 * + N N2 0 intra-area 10 RT3 * + N N3 0 intra-area 7 RT3 * + N N4 0 intra-area 8 RT3 * + N Ib 0 intra-area 7 * * + N Ia 0 intra-area 12 RT10 * + N N6 0 intra-area 8 RT10 * + N N7 0 intra-area 12 RT10 * + N N8 0 intra-area 10 RT10 * + N N9 0 intra-area 11 RT10 * + N N10 0 intra-area 13 RT10 * + N N11 0 intra-area 14 RT10 * + N H1 0 intra-area 21 RT10 * + R RT5 0 intra-area 6 RT5 * + R RT7 0 intra-area 8 RT10 * + ____________________________________________________________ + N N12 * type 1 ext. 10 RT10 RT7 + N N13 * type 1 ext. 14 RT5 RT5 + N N14 * type 1 ext. 14 RT5 RT5 + N N15 * type 1 ext. 17 RT10 RT7 + + + Table 12: The routing table for Router RT6 + (no configured areas). + + Again, Routers RT5 and RT7 are AS boundary routers. Routers RT3, + RT4, RT7, RT10 and RT11 are area border routers. Note that there are + two routing entries for the area border router RT3, since it has two + areas in common with RT4 (Area 1 and the backbone). + + Backbone paths have been calculated to all area border routers. + These are used when determining the inter-area routes. Note that all + of the inter-area routes are associated with the backbone; this is + always the case when the calculating router is itself an area border + router. Routing information is condensed at area boundaries. In + this example, we assume that Area 3 has been defined so that networks + N9-N11 and the host route to H1 are all condensed to a single route + when advertised into the backbone (by Router RT11). Note that the + cost of this route is the maximum of the set of costs to its + individual components. + + + + + + + + +Moy Standards Track [Page 98] + +RFC 2178 OSPF Version 2 July 1997 + + + There is a virtual link configured between Routers RT10 and RT11. + Without this configured virtual link, RT11 would be unable to + advertise a route for networks N9-N11 and Host H1 into the backbone, + and there would not be an entry for these networks in Router RT4's + routing table. + + In this example there are two equal-cost paths to Network N12. + However, they both use the same next hop (Router RT5). + + + Type Dest Area Path Type Cost Next Adv. + Hops(s) Router(s) + __________________________________________________________________ + N N1 1 intra-area 4 RT1 * + N N2 1 intra-area 4 RT2 * + N N3 1 intra-area 1 * * + N N4 1 intra-area 3 RT3 * + R RT3 1 intra-area 1 * * + __________________________________________________________________ + N Ib 0 intra-area 22 RT5 * + N Ia 0 intra-area 27 RT5 * + R RT3 0 intra-area 21 RT5 * + R RT5 0 intra-area 8 * * + R RT7 0 intra-area 14 RT5 * + R RT10 0 intra-area 22 RT5 * + R RT11 0 intra-area 25 RT5 * + __________________________________________________________________ + N N6 0 inter-area 15 RT5 RT7 + N N7 0 inter-area 19 RT5 RT7 + N N8 0 inter-area 18 RT5 RT7 + N N9-N11,H1 0 inter-area 36 RT5 RT11 + __________________________________________________________________ + N N12 * type 1 ext. 16 RT5 RT5,RT7 + N N13 * type 1 ext. 16 RT5 RT5 + N N14 * type 1 ext. 16 RT5 RT5 + N N15 * type 1 ext. 23 RT5 RT7 + + Table 13: Router RT4's routing table + in the presence of areas. + + + Router RT4's routing table would improve (i.e., some of the paths in + the routing table would become shorter) if an additional virtual link + were configured between Router RT4 and Router RT3. The new virtual + link would itself be associated with the first entry for area border + router RT3 in Table 13 (an intra-area path through Area 1). This + would yield a cost of 1 for the virtual link. The routing table + entries changes that would be caused by the addition of this virtual + + + +Moy Standards Track [Page 99] + +RFC 2178 OSPF Version 2 July 1997 + + + link are shown in Table 14. + +12. Link State Advertisements (LSAs) + + Each router in the Autonomous System originates one or more link + state advertisements (LSAs). This memo defines five distinct types + of LSAs, which are described in Section 4.3. The collection of LSAs + forms the link-state database. Each separate type of LSA has a + separate function. Router-LSAs and network-LSAs describe how an + area's routers and networks are interconnected. Summary-LSAs provide + a way of condensing an area's routing information. AS-external-LSAs + provide a way of transparently advertising externally-derived routing + information throughout the Autonomous System. + + Each LSA begins with a standard 20-byte header. This LSA header is + discussed below. + + Type Dest Area Path Type Cost Next Adv. + Hop(s) Router(s) + ________________________________________________________________ + N Ib 0 intra-area 16 RT3 * + N Ia 0 intra-area 21 RT3 * + R RT3 0 intra-area 1 * * + R RT10 0 intra-area 16 RT3 * + R RT11 0 intra-area 19 RT3 * + ________________________________________________________________ + N N9-N11,H1 0 inter-area 30 RT3 RT11 + + + Table 14: Changes resulting from an + additional virtual link. + +12.1. The LSA Header + + The LSA header contains the LS type, Link State ID and Advertising + Router fields. The combination of these three fields uniquely + identifies the LSA. + + There may be several instances of an LSA present in the Autonomous + System, all at the same time. It must then be determined which + instance is more recent. This determination is made by examining the + LS sequence, LS checksum and LS age fields. These fields are also + contained in the 20-byte LSA header. + + Several of the OSPF packet types list LSAs. When the instance is not + important, an LSA is referred to by its LS type, Link State ID and + Advertising Router (see Link State Request Packets). Otherwise, the + LS sequence number, LS age and LS checksum fields must also be + + + +Moy Standards Track [Page 100] + +RFC 2178 OSPF Version 2 July 1997 + + + referenced. + + A detailed explanation of the fields contained in the LSA header + follows. + +12.1.1. LS age + + This field is the age of the LSA in seconds. It should be processed + as an unsigned 16-bit integer. It is set to 0 when the LSA is + originated. It must be incremented by InfTransDelay on every hop of + the flooding procedure. LSAs are also aged as they are held in each + router's database. + + The age of an LSA is never incremented past MaxAge. LSAs having age + MaxAge are not used in the routing table calculation. When an LSA's + age first reaches MaxAge, it is reflooded. An LSA of age MaxAge is + finally flushed from the database when it is no longer needed to + ensure database synchronization. For more information on the aging + of LSAs, consult Section 14. + + The LS age field is examined when a router receives two instances of + an LSA, both having identical LS sequence numbers and LS checksums. + An instance of age MaxAge is then always accepted as most recent; + this allows old LSAs to be flushed quickly from the routing domain. + Otherwise, if the ages differ by more than MaxAgeDiff, the instance + having the smaller age is accepted as most recent.[12] See Section + 13.1 for more details. + +12.1.2. Options + + The Options field in the LSA header indicates which optional + capabilities are associated with the LSA. OSPF's optional + capabilities are described in Section 4.5. One optional capability is + defined by this specification, represented by the E-bit found in the + Options field. The unrecognized bits in the Options field should be + set to zero. The E-bit represents OSPF's ExternalRoutingCapability. + This bit should be set in all LSAs associated with the backbone, and + all LSAs associated with non-stub areas (see Section 3.6). It should + also be set in all AS-external-LSAs. It should be reset in all + router-LSAs, network-LSAs and summary-LSAs associated with a stub + area. For all LSAs, the setting of the E-bit is for informational + purposes only; it does not affect the routing table calculation. + + + + + + + + + +Moy Standards Track [Page 101] + +RFC 2178 OSPF Version 2 July 1997 + + +12.1.3. LS type + + The LS type field dictates the format and function of the LSA. LSAs + of different types have different names (e.g., router-LSAs or + network-LSAs). All LSA types defined by this memo, except the AS- + external-LSAs (LS type = 5), are flooded throughout a single area + only. AS-external-LSAs are flooded throughout the entire Autonomous + System, excepting stub areas (see Section 3.6). Each separate LSA + type is briefly described below in Table 15. + +12.1.4. Link State ID + + This field identifies the piece of the routing domain that is being + described by the LSA. Depending on the LSA's LS type, the Link State + ID takes on the values listed in Table 16. + + Actually, for Type 3 summary-LSAs (LS type = 3) and AS-external-LSAs + (LS type = 5), the Link State ID may additionally have one or more of + the destination network's "host" bits set. For example, when + originating an AS-external-LSA for the network 10.0.0.0 with mask of + 255.0.0.0, the Link State ID can be set to anything in the range + 10.0.0.0 through 10.255.255.255 inclusive (although 10.0.0.0 should + be used whenever possible). The freedom to set certain host bits + allows a router to originate separate LSAs for two networks having + the same address but different masks. See Appendix E for details. + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 102] + +RFC 2178 OSPF Version 2 July 1997 + + + LS Type LSA description + ________________________________________________ + 1 These are the router-LSAs. + They describe the collected + states of the router's + interfaces. For more information, + consult Section 12.4.1. + ________________________________________________ + 2 These are the network-LSAs. + They describe the set of routers + attached to the network. For + more information, consult + Section 12.4.2. + ________________________________________________ + 3 or 4 These are the summary-LSAs. + They describe inter-area routes, + and enable the condensation of + routing information at area + borders. Originated by area border + routers, the Type 3 summary-LSAs + describe routes to networks while the + Type 4 summary-LSAs describe routes to + AS boundary routers. + ________________________________________________ + 5 These are the AS-external-LSAs. + Originated by AS boundary routers, + they describe routes + to destinations external to the + Autonomous System. A default route for + the Autonomous System can also be + described by an AS-external-LSA. + + Table 15: OSPF link state advertisements (LSAs). + + LS Type Link State ID + _______________________________________________ + 1 The originating router's Router ID. + 2 The IP interface address of the + network's Designated Router. + 3 The destination network's IP address. + 4 The Router ID of the described AS + boundary router. + 5 The destination network's IP address. + + + Table 16: The LSA's Link State ID. + + + + + +Moy Standards Track [Page 103] + +RFC 2178 OSPF Version 2 July 1997 + + + When the LSA is describing a network (LS type = 2, 3 or 5), the + network's IP address is easily derived by masking the Link State ID + with the network/subnet mask contained in the body of the LSA. When + the LSA is describing a router (LS type = 1 or 4), the Link State ID + is always the described router's OSPF Router ID. + + When an AS-external-LSA (LS Type = 5) is describing a default route, + its Link State ID is set to DefaultDestination (0.0.0.0). + +12.1.5. Advertising Router + + This field specifies the OSPF Router ID of the LSA's originator. For + router-LSAs, this field is identical to the Link State ID field. + Network-LSAs are originated by the network's Designated Router. + Summary-LSAs originated by area border routers. AS-external-LSAs are + originated by AS boundary routers. + +12.1.6. LS sequence number + + + The sequence number field is a signed 32-bit integer. It is used to + detect old and duplicate LSAs. The space of sequence numbers is + linearly ordered. The larger the sequence number (when compared as + signed 32-bit integers) the more recent the LSA. To describe to + sequence number space more precisely, let N refer in the discussion + below to the constant 2**31. + + The sequence number -N (0x80000000) is reserved (and unused). This + leaves -N + 1 (0x80000001) as the smallest (and therefore oldest) + sequence number; this sequence number is referred to as the constant + InitialSequenceNumber. A router uses InitialSequenceNumber the first + time it originates any LSA. Afterwards, the LSA's sequence number is + incremented each time the router originates a new instance of the + LSA. When an attempt is made to increment the sequence number past + the maximum value of N - 1 (0x7fffffff; also referred to as + MaxSequenceNumber), the current instance of the LSA must first be + flushed from the routing domain. This is done by prematurely aging + the LSA (see Section 14.1) and reflooding it. As soon as this flood + has been acknowledged by all adjacent neighbors, a new instance can + be originated with sequence number of InitialSequenceNumber. + + The router may be forced to promote the sequence number of one of its + LSAs when a more recent instance of the LSA is unexpectedly received + during the flooding process. This should be a rare event. This may + indicate that an out-of-date LSA, originated by the router itself + before its last restart/reload, still exists in the Autonomous + System. For more information see Section 13.4. + + + + +Moy Standards Track [Page 104] + +RFC 2178 OSPF Version 2 July 1997 + + +12.1.7. LS checksum + + This field is the checksum of the complete contents of the LSA, + excepting the LS age field. The LS age field is excepted so that an + LSA's age can be incremented without updating the checksum. The + checksum used is the same that is used for ISO connectionless + datagrams; it is commonly referred to as the Fletcher checksum. It + is documented in Annex B of [Ref6]. The LSA header also contains the + length of the LSA in bytes; subtracting the size of the LS age field + (two bytes) yields the amount of data to checksum. + + The checksum is used to detect data corruption of an LSA. This + corruption can occur while an LSA is being flooded, or while it is + being held in a router's memory. The LS checksum field cannot take + on the value of zero; the occurrence of such a value should be + considered a checksum failure. In other words, calculation of the + checksum is not optional. + + The checksum of an LSA is verified in two cases: a) when it is + received in a Link State Update Packet and b) at times during the + aging of the link state database. The detection of a checksum + failure leads to separate actions in each case. See Sections 13 and + 14 for more details. + + Whenever the LS sequence number field indicates that two instances of + an LSA are the same, the LS checksum field is examined. If there is + a difference, the instance with the larger LS checksum is considered + to be most recent.[13] See Section 13.1 for more details. + +12.2. The link state database + + A router has a separate link state database for every area to which + it belongs. All routers belonging to the same area have identical + link state databases for the area. + + The databases for each individual area are always dealt with + separately. The shortest path calculation is performed separately + for each area (see Section 16). Components of the area link-state + database are flooded throughout the area only. Finally, when an + adjacency (belonging to Area A) is being brought up, only the + database for Area A is synchronized between the two routers. + + The area database is composed of router-LSAs, network-LSAs and + summary-LSAs (all listed in the area data structure). In addition, + external routes (AS-external-LSAs) are included in all non-stub area + databases (see Section 3.6). + + + + + +Moy Standards Track [Page 105] + +RFC 2178 OSPF Version 2 July 1997 + + + An implementation of OSPF must be able to access individual pieces of + an area database. This lookup function is based on an LSA's LS type, + Link State ID and Advertising Router.[14] There will be a single + instance (the most up-to-date) of each LSA in the database. The + database lookup function is invoked during the LSA flooding procedure + (Section 13) and the routing table calculation (Section 16). In + addition, using this lookup function the router can determine whether + it has itself ever originated a particular LSA, and if so, with what + LS sequence number. + + An LSA is added to a router's database when either a) it is received + during the flooding process (Section 13) or b) it is originated by + the router itself (Section 12.4). An LSA is deleted from a router's + database when either a) it has been overwritten by a newer instance + during the flooding process (Section 13) or b) the router originates + a newer instance of one of its self-originated LSAs (Section 12.4) or + c) the LSA ages out and is flushed from the routing domain (Section + 14). + + Whenever an LSA is deleted from the database it must also be removed + from all neighbors' Link state retransmission lists (see Section 10). + +12.3. Representation of TOS + + For backward compatibility with previous versions of the OSPF + specification ([Ref9]), TOS-specific information can be included in + router-LSAs, summary-LSAs and AS-external-LSAs. The encoding of TOS + in OSPF LSAs is specified in Table 17. That table relates the OSPF + encoding to the IP packet header's TOS field (defined in [Ref12]). + The OSPF encoding is expressed as a decimal integer, and the IP + packet header's TOS field is expressed in the binary TOS values used + in [Ref12]. + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 106] + +RFC 2178 OSPF Version 2 July 1997 + + + OSPF encoding RFC 1349 TOS values + ___________________________________________ + 0 0000 normal service + 2 0001 minimize monetary cost + 4 0010 maximize reliability + 6 0011 + 8 0100 maximize throughput + 10 0101 + 12 0110 + 14 0111 + 16 1000 minimize delay + 18 1001 + 20 1010 + 22 1011 + 24 1100 + 26 1101 + 28 1110 + 30 1111 + + Table 17: Representing TOS in OSPF. + +12.4. Originating LSAs + + Into any given OSPF area, a router will originate several LSAs. Each + router originates a router-LSA. If the router is also the Designated + Router for any of the area's networks, it will originate network-LSAs + for those networks. + + Area border routers originate a single summary-LSA for each known + inter-area destination. AS boundary routers originate a single AS- + external-LSA for each known AS external destination. Destinations + are advertised one at a time so that the change in any single route + can be flooded without reflooding the entire collection of routes. + During the flooding procedure, many LSAs can be carried by a single + Link State Update packet. + + As an example, consider Router RT4 in Figure 6. It is an area border + router, having a connection to Area 1 and the backbone. Router RT4 + originates 5 distinct LSAs into the backbone (one router-LSA, and one + summary-LSA for each of the networks N1-N4). Router RT4 will also + originate 8 distinct LSAs into Area 1 (one router-LSA and seven + summary-LSAs as pictured in Figure 7). If RT4 has been selected as + Designated Router for Network N3, it will also originate a network- + LSA for N3 into Area 1. + + In this same figure, Router RT5 will be originating 3 distinct AS- + external-LSAs (one for each of the networks N12-N14). These will be + flooded throughout the entire AS, assuming that none of the areas + + + +Moy Standards Track [Page 107] + +RFC 2178 OSPF Version 2 July 1997 + + + have been configured as stubs. However, if area 3 has been + configured as a stub area, the AS-external-LSAs for networks N12-N14 + will not be flooded into area 3 (see Section 3.6). Instead, Router + RT11 would originate a default summary- LSA that would be flooded + throughout area 3 (see Section 12.4.3). This instructs all of area + 3's internal routers to send their AS external traffic to RT11. + + Whenever a new instance of an LSA is originated, its LS sequence + number is incremented, its LS age is set to 0, its LS checksum is + calculated, and the LSA is added to the link state database and + flooded out the appropriate interfaces. See Section 13.2 for details + concerning the installation of the LSA into the link state database. + See Section 13.3 for details concerning the flooding of newly + originated LSAs. + + The ten events that can cause a new instance of an LSA to be + originated are: + + (1) The LS age field of one of the router's self-originated LSAs + reaches the value LSRefreshTime. In this case, a new + instance of the LSA is originated, even though the contents + of the LSA (apart from the LSA header) will be the same. + This guarantees periodic originations of all LSAs. This + periodic updating of LSAs adds robustness to the link state + algorithm. LSAs that solely describe unreachable + destinations should not be refreshed, but should instead be + flushed from the routing domain (see Section 14.1). + + When whatever is being described by an LSA changes, a new LSA is + originated. However, two instances of the same LSA may not be + originated within the time period MinLSInterval. This may require + that the generation of the next instance be delayed by up to + MinLSInterval. The following events may cause the contents of an LSA + to change. These events should cause new originations if and only if + the contents of the new LSA would be different: + + (2) An interface's state changes (see Section 9.1). This may + mean that it is necessary to produce a new instance of the + router-LSA. + + (3) An attached network's Designated Router changes. A new + router-LSA should be originated. Also, if the router itself + is now the Designated Router, a new network-LSA should be + produced. If the router itself is no longer the Designated + Router, any network-LSA that it might have originated for + the network should be flushed from the routing domain (see + Section 14.1). + + + + +Moy Standards Track [Page 108] + +RFC 2178 OSPF Version 2 July 1997 + + + (4) One of the neighboring routers changes to/from the FULL + state. This may mean that it is necessary to produce a new + instance of the router-LSA. Also, if the router is itself + the Designated Router for the attached network, a new + network-LSA should be produced. + + The next four events concern area border routers only: + + (5) An intra-area route has been added/deleted/modified in the + routing table. This may cause a new instance of a summary- + LSA (for this route) to be originated in each attached area + (possibly including the backbone). + + (6) An inter-area route has been added/deleted/modified in the + routing table. This may cause a new instance of a summary- + LSA (for this route) to be originated in each attached area + (but NEVER for the backbone). + + (7) The router becomes newly attached to an area. The router + must then originate summary-LSAs into the newly attached + area for all pertinent intra-area and inter-area routes in + the router's routing table. See Section 12.4.3 for more + details. + + (8) When the state of one of the router's configured virtual + links changes, it may be necessary to originate a new + router-LSA into the virtual link's Transit area (see the + discussion of the router-LSA's bit V in Section 12.4.1), as + well as originating a new router-LSA into the backbone. + + The last two events concern AS boundary routers (and former AS + boundary routers) only: + + (9) An external route gained through direct experience with an + external routing protocol (like BGP) changes. This will + cause an AS boundary router to originate a new instance of + an AS-external-LSA. + + (10) + A router ceases to be an AS boundary router, perhaps after + restarting. In this situation the router should flush all + AS-external-LSAs that it had previously originated. These + LSAs can be flushed via the premature aging procedure + specified in Section 14.1. + + + + + + + +Moy Standards Track [Page 109] + +RFC 2178 OSPF Version 2 July 1997 + + + The construction of each type of LSA is explained in detail below. In + general, these sections describe the contents of the LSA body (i.e., + the part coming after the 20-byte LSA header). For information + concerning the building of the LSA header, see Section 12.1. + +12.4.1. Router-LSAs + + A router originates a router-LSA for each area that it belongs to. + Such an LSA describes the collected states of the router's links to + the area. The LSA is flooded throughout the particular area, and no + further. The format of a router-LSA is shown in Appendix A (Section + A.4.2). The first 20 bytes of the LSA consist of the generic LSA + header that was discussed in Section 12.1. router-LSAs have LS type + = 1. + + A router also indicates whether it is an area border router, or an AS + boundary router, by setting the appropriate bits + + .................................... + . 192.1.2 Area 1 . + . + . + . | . + . | 3+---+1 . + . N1 |--|RT1|-----+ . + . | +---+ \ . + . | \ _______N3 . + . + \/ \ . 1+---+ + . * 192.1.1 *------|RT4| + . + /\_______/ . +---+ + . | / | . + . | 3+---+1 / | . + . N2 |--|RT2|-----+ 1| . + . | +---+ +---+8 . 6+---+ + . | |RT3|----------------|RT6| + . + +---+ . +---+ + . 192.1.3 |2 . 18.10.0.6|7 + . | . | + . +------------+ . + . 192.1.4 (N4) . + .................................... + + Figure 15: Area 1 with IP addresses shown + + (bit B and bit E, respectively) in its router-LSAs. This enables + paths to those types of routers to be saved in the routing table, for + later processing of summary-LSAs and AS-external-LSAs. Bit B should + be set whenever the router is actively attached to two or more areas, + even if the router is not currently attached to the OSPF backbone + + + +Moy Standards Track [Page 110] + +RFC 2178 OSPF Version 2 July 1997 + + + area. Bit E should never be set in a router-LSA for a stub area + (stub areas cannot contain AS boundary routers). + + In addition, the router sets bit V in its router-LSA for Area A if + and only if the router is the endpoint of one or more fully adjacent + virtual links having Area A as their Transit area. The setting of bit + V enables other routers in Area A to discover whether the area + supports transit traffic (see TransitCapability in Section 6). + + The router-LSA then describes the router's working connections (i.e., + interfaces or links) to the area. Each link is typed according to + the kind of attached network. Each link is also labelled with its + Link ID. This Link ID gives a name to the entity that is on the + other end of the link. Table 18 summarizes the values used for the + Type and Link ID fields. + + Link type Description Link ID + __________________________________________________ + 1 Point-to-point Neighbor Router ID + link + 2 Link to transit Interface address of + network Designated Router + 3 Link to stub IP network number + network + 4 Virtual link Neighbor Router ID + + Table 18: Link descriptions in the + router-LSA. + + In addition, the Link Data field is specified for each link. This + field gives 32 bits of extra information for the link. For links to + transit networks, numbered point-to-point links and virtual links, + this field specifies the IP interface address of the associated + router interface (this is needed by the routing table calculation, + see Section 16.1.1). For links to stub networks, this field + specifies the stub network's IP address mask. For unnumbered point- + to-point links, the Link Data field should be set to the unnumbered + interface's MIB-II [Ref8] ifIndex value. + + Finally, the cost of using the link for output is specified. The + output cost of a link is configurable. With the exception of links to + stub networks, the output cost must always be non-zero. + + To further describe the process of building the list of link + descriptions, suppose a router wishes to build a router-LSA for Area + A. The router examines its collection of interface data structures. + For each interface, the following steps are taken: + + + + +Moy Standards Track [Page 111] + +RFC 2178 OSPF Version 2 July 1997 + + + o If the attached network does not belong to Area A, no + links are added to the LSA, and the next interface should be + examined. + + o If the state of the interface is Down, no links are added. + + o If the state of the interface is Loopback, add a Type 3 + link (stub network) as long as this is not an interface to an + unnumbered point-to-point network. The Link ID should be set to + the IP interface address, the Link Data set to the + mask 0xffffffff (indicating a host route), and the cost set to 0. + + o Otherwise, the link descriptions added to the router-LSA + depend on the OSPF interface type. Link descriptions used for + point-to-point interfaces are specified in Section 12.4.1.1, for + virtual links in Section 12.4.1.2, for broadcast and NBMA + interfaces in 12.4.1.3, and for Point-to-MultiPoint interfaces in + 12.4.1.4. + + After consideration of all the router interfaces, host links are + added to the router-LSA by examining the list of attached hosts + belonging to Area A. A host route is represented as a Type 3 link + (stub network) whose Link ID is the host's IP address, Link Data is + the mask of all ones (0xffffffff), and cost the host's configured + cost (see Section C.7). + +12.4.1.1. Describing point-to-point interfaces + + For point-to-point interfaces, one or more link descriptions are + added to the router-LSA as follows: + + o If the neighboring router is fully adjacent, add a + Type 1 link (point-to-point). The Link ID should be set to the + Router ID of the neighboring router. For numbered point-to-point + networks, the Link Data should specify the IP interface address. + For unnumbered point-to-point networks, the Link Data field + should specify the interface's MIB-II [Ref8] ifIndex value. The + cost should be set to the output cost of the point-to-point + interface. + + o In addition, as long as the state of the interface + is "Point-to-Point" (and regardless of the neighboring router + state), a Type 3 link (stub network) should be added. There are + two forms that this stub link can take: + + + + + + + +Moy Standards Track [Page 112] + +RFC 2178 OSPF Version 2 July 1997 + + + Option 1 + Assuming that the neighboring router's IP address is known, set + the Link ID of the Type 3 link to the neighbor's IP address, the + Link Data to the mask 0xffffffff (indicating a host route), and + the cost to the interface's configured output cost.[15] + + Option 2 + If a subnet has been assigned to the point-to-point link, set the + Link ID of the Type 3 link to the subnet's IP address, the Link + Data to the subnet's mask, and the cost to the interface's + configured output cost.[16] + +12.4.1.2. Describing broadcast and NBMA interfaces + + For operational broadcast and NBMA interfaces, a single link + description is added to the router-LSA as follows: + + o If the state of the interface is Waiting, add a Type + 3 link (stub network) with Link ID set to the IP network number + of the attached network, Link Data set to the attached network's + address mask, and cost equal to the interface's configured output + cost. + + o Else, there has been a Designated Router elected for + the attached network. If the router is fully adjacent to the + Designated Router, or if the router itself is Designated Router + and is fully adjacent to at least one other router, add a single + Type 2 link (transit network) with Link ID set to the IP + interface address of the attached network's Designated Router + (which may be the router itself), Link Data set to the router's + own IP interface address, and cost equal to the interface's + configured output cost. Otherwise, add a link as if the + interface state were Waiting (see above). + +12.4.1.3. Describing virtual links + + For virtual links, a link description is added to the router-LSA only + when the virtual neighbor is fully adjacent. In this case, add a Type + 4 link (virtual link) with Link ID set to the Router ID of the + virtual neighbor, Link Data set to the IP interface address + associated with the virtual link and cost set to the cost calculated + for the virtual link during the routing table calculation (see + Section 15). + + + + + + + + +Moy Standards Track [Page 113] + +RFC 2178 OSPF Version 2 July 1997 + + +12.4.1.4. Describing Point-to-MultiPoint interfaces + + For operational Point-to-MultiPoint interfaces, one or more link + descriptions are added to the router-LSA as follows: + + o A single Type 3 link (stub network) is added with + Link ID set to the router's own IP interface address, Link Data + set to the mask 0xffffffff (indicating a host route), and cost + set to 0. + + o For each fully adjacent neighbor associated with the + interface, add an additional Type 1 link (point-to-point) with + Link ID set to the Router ID of the neighboring router, Link Data + set to the IP interface address and cost equal to the interface's + configured output cost. + +12.4.1.5. Examples of router-LSAs + + Consider the router-LSAs generated by Router RT3, as pictured in + Figure 6. The area containing Router RT3 (Area 1) has been redrawn, + with actual network addresses, in Figure 15. Assume that the last + byte of all of RT3's interface addresses is 3, giving it the + interface addresses 192.1.1.3 and 192.1.4.3, and that the other + routers have similar addressing schemes. In addition, assume that + all links are functional, and that Router IDs are assigned as the + smallest IP interface address. + + RT3 originates two router-LSAs, one for Area 1 and one for the + backbone. Assume that Router RT4 has been selected as the Designated + router for network 192.1.1.0. RT3's router-LSA for Area 1 is then + shown below. It indicates that RT3 has two connections to Area 1, + the first a link to the transit network 192.1.1.0 and the second a + link to the stub network 192.1.4.0. Note that the transit network is + identified by the IP interface of its Designated Router (i.e., the + Link ID = 192.1.1.4 which is the Designated Router RT4's IP interface + to 192.1.1.0). Note also that RT3 has indicated that it is an area + border router. + + + + + + + + + + + + + + +Moy Standards Track [Page 114] + +RFC 2178 OSPF Version 2 July 1997 + + + ; RT3's router-LSA for Area 1 + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 1 ;indicates router-LSA + Link State ID = 192.1.1.3 ;RT3's Router ID + Advertising Router = 192.1.1.3 ;RT3's Router ID + bit E = 0 ;not an AS boundary router + bit B = 1 ;area border router + #links = 2 + Link ID = 192.1.1.4 ;IP address of Desig. Rtr. + Link Data = 192.1.1.3 ;RT3's IP interface to net + Type = 2 ;connects to transit network + # TOS metrics = 0 + metric = 1 + + Link ID = 192.1.4.0 ;IP Network number + Link Data = 0xffffff00 ;Network mask + Type = 3 ;connects to stub network + # TOS metrics = 0 + metric = 2 + + Next RT3's router-LSA for the backbone is shown. It indicates that + RT3 has a single attachment to the backbone. This attachment is via + an unnumbered point-to-point link to Router RT6. RT3 has again + indicated that it is an area border router. + + + ; RT3's router-LSA for the backbone + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 1 ;indicates router-LSA + Link State ID = 192.1.1.3 ;RT3's router ID + Advertising Router = 192.1.1.3 ;RT3's router ID + bit E = 0 ;not an AS boundary router + bit B = 1 ;area border router + #links = 1 + Link ID = 18.10.0.6 ;Neighbor's Router ID + Link Data = 0.0.0.3 ;MIB-II ifIndex of P-P link + Type = 1 ;connects to router + # TOS metrics = 0 + metric = 8 + + + + + + + + +Moy Standards Track [Page 115] + +RFC 2178 OSPF Version 2 July 1997 + + +12.4.2. Network-LSAs + + A network-LSA is generated for every transit broadcast or NBMA + network. (A transit network is a network having two or more attached + routers). The network-LSA describes all the routers that are + attached to the network. + + The Designated Router for the network originates the LSA. The + Designated Router originates the LSA only if it is fully adjacent to + at least one other router on the network. The network-LSA is flooded + throughout the area that contains the transit network, and no + further. The network-LSA lists those routers that are fully adjacent + to the Designated Router; each fully adjacent router is identified by + its OSPF Router ID. The Designated Router includes itself in this + list. + + The Link State ID for a network-LSA is the IP interface address of + the Designated Router. This value, masked by the network's address + mask (which is also contained in the network-LSA) yields the + network's IP address. + + A router that has formerly been the Designated Router for a network, + but is no longer, should flush the network-LSA that it had previously + originated. This LSA is no longer used in the routing table + calculation. It is flushed by prematurely incrementing the LSA's age + to MaxAge and reflooding (see Section 14.1). In addition, in those + rare cases where a router's Router ID has changed, any network-LSAs + that were originated with the router's previous Router ID must be + flushed. Since the router may have no idea what it's previous Router + ID might have been, these network-LSAs are indicated by having their + Link State ID equal to one of the router's IP interface addresses and + their Advertising Router equal to some value other than the router's + current Router ID (see Section 13.4 for more details). + +12.4.2.1. Examples of network-LSAs + + Again consider the area configuration in Figure 6. Network-LSAs are + originated for Network N3 in Area 1, Networks N6 and N8 in Area 2, + and Network N9 in Area 3. Assuming that Router RT4 has been selected + as the Designated Router for Network N3, the following network-LSA is + generated by RT4 on behalf of Network N3 (see Figure 15 for the + address assignments): + + + + + + + + + +Moy Standards Track [Page 116] + +RFC 2178 OSPF Version 2 July 1997 + + + ; Network-LSA for Network N3 + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 2 ;indicates network-LSA + Link State ID = 192.1.1.4 ;IP address of Desig. Rtr. + Advertising Router = 192.1.1.4 ;RT4's Router ID + Network Mask = 0xffffff00 + Attached Router = 192.1.1.4 ;Router ID + Attached Router = 192.1.1.1 ;Router ID + Attached Router = 192.1.1.2 ;Router ID + Attached Router = 192.1.1.3 ;Router ID + +12.4.3. Summary-LSAs + + The destination described by a summary-LSA is either an IP network, + an AS boundary router or a range of IP addresses. Summary-LSAs are + flooded throughout a single area only. The destination described is + one that is external to the area, yet still belongs to the Autonomous + System. + + Summary-LSAs are originated by area border routers. The precise + summary routes to advertise into an area are determined by examining + the routing table structure (see Section 11) in accordance with the + algorithm described below. Note that only intra-area routes are + advertised into the backbone, while both intra-area and inter-area + routes are advertised into the other areas. + + To determine which routes to advertise into an attached Area A, each + routing table entry is processed as follows. Remember that each + routing table entry describes a set of equal-cost best paths to a + particular destination: + + o Only Destination Types of network and AS boundary router + are advertised in summary-LSAs. If the routing table entry's + Destination Type is area border router, examine the next routing + table entry. + + o AS external routes are never advertised in summary-LSAs. + If the routing table entry has Path-type of type 1 external or + type 2 external, examine the next routing table entry. + + o Else, if the area associated with this set of paths is + the Area A itself, do not generate a summary-LSA for the + route.[17] + + + + + + +Moy Standards Track [Page 117] + +RFC 2178 OSPF Version 2 July 1997 + + + o Else, if the next hops associated with this set of paths + belong to Area A itself, do not generate a summary-LSA for the + route.[18] This is the logical equivalent of a Distance Vector + protocol's split horizon logic. + + o Else, if the routing table cost equals or exceeds the + value LSInfinity, a summary-LSA cannot be generated for this + route. + + o Else, if the destination of this route is an AS boundary + router, a summary-LSA should be originated if and only if the + routing table entry describes the preferred path to the AS + boundary router (see Step 3 of Section 16.4). If so, a Type 4 + summary-LSA is originated for the destination, with Link State ID + equal to the AS boundary router's Router ID and metric equal to + the routing table entry's cost. Note: these LSAs should not be + generated if Area A has been configured as a stub area. + + o Else, the Destination type is network. If this is an + inter-area route, generate a Type 3 summary-LSA for the + destination, with Link State ID equal to the network's address (if + necessary, the Link State ID can also have one or more of the + network's host bits set; see Appendix E for details) and metric + equal to the routing table cost. + + o The one remaining case is an intra-area route to a network. This + means that the network is contained in one of the router's + directly attached areas. In general, this information must be + condensed before appearing in summary-LSAs. Remember that an area + has a configured list of address ranges, each range consisting of + an [address,mask] pair and a status indication of either Advertise + or DoNotAdvertise. At most a single Type 3 summary-LSA is + originated for each range. When the range's status indicates + Advertise, a Type 3 summary-LSA is generated with Link State ID + equal to the range's address (if necessary, the Link State ID can + also have one or more of the range's "host" bits set; see Appendix + E for details) and cost equal to the largest cost of any of the + component networks. When the range's status indicates + DoNotAdvertise, the Type 3 summary-LSA is suppressed and the + component networks remain hidden from other areas. + + By default, if a network is not contained in any explicitly + configured address range, a Type 3 summary-LSA is generated with Link + State ID equal to the network's address (if necessary, the Link State + ID can also have one or more of the network's "host" bits set; see + Appendix E for details) and metric equal to the network's routing + table cost. + + + + +Moy Standards Track [Page 118] + +RFC 2178 OSPF Version 2 July 1997 + + + If an area is capable of carrying transit traffic (i.e., its + TransitCapability is set to TRUE), routing information concerning + backbone networks should not be condensed before being summarized + into the area. Nor should the advertisement of backbone networks + into transit areas be suppressed. In other words, the backbone's + configured ranges should be ignored when originating summary-LSAs + into transit areas. + + If a router advertises a summary-LSA for a destination which then + becomes unreachable, the router must then flush the LSA from the + routing domain by setting its age to MaxAge and reflooding (see + Section 14.1). Also, if the destination is still reachable, yet can + no longer be advertised according to the above procedure (e.g., it is + now an inter-area route, when it used to be an intra-area route + associated with some non-backbone area; it would thus no longer be + advertisable to the backbone), the LSA should also be flushed from + the routing domain. + +12.4.3.1. Originating summary-LSAs into stub areas + + The algorithm in Section 12.4.3 is optional when Area A is an OSPF + stub area. Area border routers connecting to a stub area can + originate summary-LSAs into the area according to the Section + 12.4.3's algorithm, or can choose to originate only a subset of the + summary-LSAs, possibly under configuration control. The fewer LSAs + originated, the smaller the stub area's link state database, further + reducing the demands on its routers' resources. However, omitting + LSAs may also lead to sub-optimal inter-area routing, although + routing will continue to function. + + As specified in Section 12.4.3, Type 4 summary-LSAs (ASBR-summary- + LSAs) are never originated into stub areas. + + In a stub area, instead of importing external routes each area border + router originates a "default summary-LSA" into the area. The Link + State ID for the default summary-LSA is set to DefaultDestination, + and the metric set to the (per-area) configurable parameter + StubDefaultCost. Note that StubDefaultCost need not be configured + identically in all of the stub area's area border routers. + +12.4.3.2. Examples of summary-LSAs + + Consider again the area configuration in Figure 6. Routers RT3, RT4, + RT7, RT10 and RT11 are all area border routers, and therefore are + originating summary-LSAs. Consider in particular Router RT4. Its + routing table was calculated as the example in Section 11.3. RT4 + originates summary-LSAs into both the backbone and Area 1. Into the + backbone, Router RT4 originates separate LSAs for each of the + + + +Moy Standards Track [Page 119] + +RFC 2178 OSPF Version 2 July 1997 + + + networks N1-N4. Into Area 1, Router RT4 originates separate LSAs for + networks N6-N8 and the AS boundary routers RT5,RT7. It also + condenses host routes Ia and Ib into a single summary-LSA. Finally, + the routes to networks N9,N10,N11 and Host H1 are advertised by a + single summary-LSA. This condensation was originally performed by + the router RT11. + + These LSAs are illustrated graphically in Figures 7 and 8. Two of + the summary-LSAs originated by Router RT4 follow. The actual IP + addresses for the networks and routers in question have been assigned + in Figure 15. + + ; Summary-LSA for Network N1, + ; originated by Router RT4 into the backbone + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 3 ;Type 3 summary-LSA + Link State ID = 192.1.2.0 ;N1's IP network number + Advertising Router = 192.1.1.4 ;RT4's ID + metric = 4 + + ; Summary-LSA for AS boundary router RT7 + ; originated by Router RT4 into Area 1 + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 4 ;Type 4 summary-LSA + Link State ID = Router RT7's ID + Advertising Router = 192.1.1.4 ;RT4's ID + metric = 14 + +12.4.4. AS-external-LSAs + + AS-external-LSAs describe routes to destinations external to the + Autonomous System. Most AS-external-LSAs describe routes to specific + external destinations; in these cases the LSA's Link State ID is set + to the destination network's IP address (if necessary, the Link State + ID can also have one or more of the network's "host" bits set; see + Appendix E for details). However, a default route for the Autonomous + System can be described in an AS-external-LSA by setting the LSA's + Link State ID to DefaultDestination (0.0.0.0). AS-external-LSAs are + originated by AS boundary routers. An AS boundary router originates + a single AS-external-LSA for each external route that it has learned, + either through another routing protocol (such as BGP), or through + configuration information. + + + + + +Moy Standards Track [Page 120] + +RFC 2178 OSPF Version 2 July 1997 + + + AS-external-LSAs are the only type of LSAs that are flooded + throughout the entire Autonomous System; all other types of LSAs are + specific to a single area. However, AS-external-LSAs are not flooded + into/throughout stub areas (see Section 3.6). This enables a + reduction in link state database size for routers internal to stub + areas. + + The metric that is advertised for an external route can be one of two + types. Type 1 metrics are comparable to the link state metric. Type + 2 metrics are assumed to be larger than the cost of any intra-AS + path. + + If a router advertises an AS-external-LSA for a destination which + then becomes unreachable, the router must then flush the LSA from the + routing domain by setting its age to MaxAge and reflooding (see + Section 14.1). + +12.4.4.1. Examples of AS-external-LSAs + + Consider once again the AS pictured in Figure 6. There are two AS + boundary routers: RT5 and RT7. Router RT5 originates three AS- + external-LSAs, for networks N12-N14. Router RT7 originates two AS- + external-LSAs, for networks N12 and N15. Assume that RT7 has learned + its route to N12 via BGP, and that it wishes to advertise a Type 2 + metric to the AS. RT7 would then originate the following LSA for + N12: + + ; AS-external-LSA for Network N12, + ; originated by Router RT7 + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 5 ;AS-external-LSA + Link State ID = N12's IP network number + Advertising Router = Router RT7's ID + bit E = 1 ;Type 2 metric + metric = 2 + Forwarding address = 0.0.0.0 + + In the above example, the forwarding address field has been set to + 0.0.0.0, indicating that packets for the external destination should + be forwarded to the advertising OSPF router (RT7). This is not always + desirable. Consider the example pictured in Figure 16. There are + three OSPF routers (RTA, RTB and RTC) connected to a common network. + Only one of these routers, RTA, is exchanging BGP information with + the non-OSPF router RTX. RTA must then originate AS- external-LSAs + for those destinations it has learned from RTX. By using the AS- + external-LSA's forwarding address field, RTA can specify that packets + + + +Moy Standards Track [Page 121] + +RFC 2178 OSPF Version 2 July 1997 + + + for these destinations be forwarded directly to RTX. Without this + feature, Routers RTB and RTC would take an extra hop to get to these + destinations. + + Note that when the forwarding address field is non-zero, it should + point to a router belonging to another Autonomous System. + + A forwarding address can also be specified for the default route. For + example, in figure 16 RTA may want to specify that all externally- + destined packets should by default be forwarded to its BGP peer RTX. + The resulting AS-external-LSA is pictured below. Note that the Link + State ID is set to DefaultDestination. + + ; Default route, originated by Router RTA + ; Packets forwarded through RTX + + LS age = 0 ;always true on origination + Options = (E-bit) ; + LS type = 5 ;AS-external-LSA + Link State ID = DefaultDestination ; default route + Advertising Router = Router RTA's ID + bit E = 1 ;Type 2 metric + metric = 1 + Forwarding address = RTX's IP address + + In figure 16, suppose instead that both RTA and RTB exchange BGP + information with RTX. In this case, RTA and RTB would originate the + same set of AS-external-LSAs. These LSAs, if they specify the same + metric, would be functionally equivalent since they would specify the + same destination and forwarding address (RTX). This leads to a clear + duplication of effort. If only one of RTA or RTB originated the set + of AS-external-LSAs, the routing would remain the same, and the size + of the link state database would decrease. However, it must be + unambiguously defined as to which router originates the LSAs + (otherwise neither may, or the identity of the originator may + oscillate). The following rule is thereby established: if two + routers, both reachable from one another, originate functionally + equivalent AS-external-LSAs (i.e., same destination, cost and non- + zero forwarding address), then the LSA originated by the router + having the highest OSPF Router ID is used. The router having the + lower OSPF Router ID can then flush its LSA. Flushing an LSA is + discussed in Section 14.1. + +13. The Flooding Procedure + + Link State Update packets provide the mechanism for flooding LSAs. A + Link State Update packet may contain several distinct LSAs, and + floods each LSA one hop further from its point of origination. To + + + +Moy Standards Track [Page 122] + +RFC 2178 OSPF Version 2 July 1997 + + + make the flooding procedure reliable, each LSA must be acknowledged + separately. Acknowledgments are transmitted in Link State + Acknowledgment packets. Many separate acknowledgments can also be + grouped together into a single packet. + + The flooding procedure starts when a Link State Update packet has + been received. Many consistency checks have been made on the + received packet before being handed to the flooding procedure (see + Section 8.2). In particular, the Link State Update packet has been + associated with a particular neighbor, and a particular area. If the + neighbor is in a lesser state than Exchange, the packet should be + dropped without further processing. + + + + | + +---+.....|.BGP + |RTA|-----|.....+---+ + +---+ |-----|RTX| + | +---+ + +---+ | + |RTB|-----| + +---+ | + | + +---+ | + |RTC|-----| + +---+ | + | + + + + Figure 16: Forwarding address example + + All types of LSAs, other than AS-external-LSAs, are associated with a + specific area. However, LSAs do not contain an area field. An LSA's + area must be deduced from the Link State Update packet header. + + For each LSA contained in a Link State Update packet, the following + steps are taken: + + + (1) Validate the LSA's LS checksum. If the checksum turns out to be + invalid, discard the LSA and get the next one from the Link + State Update packet. + + (2) Examine the LSA's LS type. If the LS type is unknown, discard + the LSA and get the next one from the Link State Update Packet. + This specification defines LS types 1-5 (see Section 4.3). + + (3) Else if this is an AS-external-LSA (LS type = 5), and the area + + + +Moy Standards Track [Page 123] + +RFC 2178 OSPF Version 2 July 1997 + + + has been configured as a stub area, discard the LSA and get the + next one from the Link State Update Packet. AS-external-LSAs + are not flooded into/throughout stub areas (see Section 3.6). + + (4) Else if the LSA's LS age is equal to MaxAge, and there is + currently no instance of the LSA in the router's link state + database, then take the following actions: + + (a) Acknowledge the receipt of the LSA by sending a Link State + Acknowledgment packet back to the sending neighbor (see + Section 13.5). + + (b) Purge all outstanding requests for equal or previous + instances of the LSA from the sending neighbor's Link State + Request list (see Section 10). + + (c) If the sending neighbor is in state Exchange or in state + Loading, then install the MaxAge LSA in the link state + database. Otherwise, simply discard the LSA. In either + case, examine the next LSA (if any) listed in the Link State + Update packet. + + (5) Otherwise, find the instance of this LSA that is currently + contained in the router's link state database. If there is no + database copy, or the received LSA is more recent than the + database copy (see Section 13.1 below for the determination of + which LSA is more recent) the following steps must be performed: + + (a) If there is already a database copy, and if the database + copy was installed less than MinLSArrival seconds ago, + discard the new LSA (without acknowledging it) and examine + the next LSA (if any) listed in the Link State Update + packet. + + (b) Otherwise immediately flood the new LSA out some subset of + the router's interfaces (see Section 13.3). In some cases + (e.g., the state of the receiving interface is DR and the + LSA was received from a router other than the Backup DR) the + LSA will be flooded back out the receiving interface. This + occurrence should be noted for later use by the + acknowledgment process (Section 13.5). + + (c) Remove the current database copy from all neighbors' Link + state retransmission lists. + + (d) Install the new LSA in the link state database (replacing + the current database copy). This may cause the routing + table calculation to be scheduled. In addition, timestamp + + + +Moy Standards Track [Page 124] + +RFC 2178 OSPF Version 2 July 1997 + + + the new LSA with the current time (i.e., the time it was + received). The flooding procedure cannot overwrite the + newly installed LSA until MinLSArrival seconds have elapsed. + The LSA installation process is discussed further in Section + 13.2. + + (e) Possibly acknowledge the receipt of the LSA by sending a + Link State Acknowledgment packet back out the receiving + interface. This is explained below in Section 13.5. + + (f) If this new LSA indicates that it was originated by the + receiving router itself (i.e., is considered a self- + originated LSA), the router must take special action, either + updating the LSA or in some cases flushing it from the + routing domain. For a description of how self-originated + LSAs are detected and subsequently handled, see Section + 13.4. + + (6) Else, if there is an instance of the LSA on the sending + neighbor's Link state request list, an error has occurred in the + Database Exchange process. In this case, restart the Database + Exchange process by generating the neighbor event BadLSReq for + the sending neighbor and stop processing the Link State Update + packet. + + (7) Else, if the received LSA is the same instance as the database + copy (i.e., neither one is more recent) the following two steps + should be performed: + + (a) If the LSA is listed in the Link state retransmission list + for the receiving adjacency, the router itself is expecting + an acknowledgment for this LSA. The router should treat the + received LSA as an acknowledgment by removing the LSA from + the Link state retransmission list. This is termed an + "implied acknowledgment". Its occurrence should be noted + for later use by the acknowledgment process (Section 13.5). + + (b) Possibly acknowledge the receipt of the LSA by sending a + Link State Acknowledgment packet back out the receiving + interface. This is explained below in Section 13.5. + + (8) Else, the database copy is more recent. If the database copy + has LS age equal to MaxAge and LS sequence number equal to + MaxSequenceNumber, simply discard the received LSA without + acknowledging it. (In this case, the LSA's LS sequence number is + wrapping, and the MaxSequenceNumber LSA must be completely + flushed before any new LSA instance can be introduced). + Otherwise, send the database copy back to the sending neighbor, + + + +Moy Standards Track [Page 125] + +RFC 2178 OSPF Version 2 July 1997 + + + encapsulated within a Link State Update Packet. The Link State + Update Packet should be unicast to the neighbor. In so doing, do + not put the database copy of the LSA on the neighbor's link + state retransmission list, and do not acknowledge the received + (less recent) LSA instance. + +13.1. Determining which LSA is newer + + When a router encounters two instances of an LSA, it must determine + which is more recent. This occurred above when comparing a received + LSA to its database copy. This comparison must also be done during + the Database Exchange procedure which occurs during adjacency bring- + up. + + An LSA is identified by its LS type, Link State ID and Advertising + Router. For two instances of the same LSA, the LS sequence number, + LS age, and LS checksum fields are used to determine which instance + is more recent: + + o The LSA having the newer LS sequence number is more recent. + See Section 12.1.6 for an explanation of the LS sequence number + space. If both instances have the same LS sequence number, then: + + o If the two instances have different LS checksums, then the + instance having the larger LS checksum (when considered as a 16- + bit unsigned integer) is considered more recent. + + o Else, if only one of the instances has its LS age field set + to MaxAge, the instance of age MaxAge is considered to be more + recent. + + o Else, if the LS age fields of the two instances differ by + more than MaxAgeDiff, the instance having the smaller (younger) + LS age is considered to be more recent. + + o Else, the two instances are considered to be identical. + + + + + + + + + + + + + + + +Moy Standards Track [Page 126] + +RFC 2178 OSPF Version 2 July 1997 + + +13.2. Installing LSAs in the database + + Installing a new LSA in the database, either as the result of + flooding or a newly self-originated LSA, may cause the OSPF routing + table structure to be recalculated. The contents of the new LSA + should be compared to the old instance, if present. If there is no + difference, there is no need to recalculate the routing table. When + comparing an LSA to its previous instance, the following are all + considered to be differences in contents: + + o The LSA's Options field has changed. + + o One of the LSA instances has LS age set to MaxAge, and + the other does not. + + o The length field in the LSA header has changed. + + o The body of the LSA (i.e., anything outside the 20-byte + LSA header) has changed. Note that this excludes changes in LS + Sequence Number and LS Checksum. + + If the contents are different, the following pieces of the routing + table must be recalculated, depending on the new LSA's LS type field: + + Router-LSAs and network-LSAs + The entire routing table must be recalculated, starting with the + shortest path calculations for each area (not just the area whose + link-state database has changed). The reason that the shortest + path calculation cannot be restricted to the single changed area + has to do with the fact that AS boundary routers may belong to + multiple areas. A change in the area currently providing the best + route may force the router to use an intra-area route provided by + a different area.[19] + + Summary-LSAs + The best route to the destination described by the summary-LSA + must be recalculated (see Section 16.5). If this destination is + an AS boundary router, it may also be necessary to re-examine all + the AS-external-LSAs. + + AS-external-LSAs + The best route to the destination described by the AS-external-LSA + must be recalculated (see Section 16.6). + + Also, any old instance of the LSA must be removed from the + database when the new LSA is installed. This old instance must + also be removed from all neighbors' Link state retransmission + lists (see Section 10). + + + +Moy Standards Track [Page 127] + +RFC 2178 OSPF Version 2 July 1997 + + +13.3. Next step in the flooding procedure + + When a new (and more recent) LSA has been received, it must be + flooded out some set of the router's interfaces. This section + describes the second part of flooding procedure (the first part being + the processing that occurred in Section 13), namely, selecting the + outgoing interfaces and adding the LSA to the appropriate neighbors' + Link state retransmission lists. Also included in this part of the + flooding procedure is the maintenance of the neighbors' Link state + request lists. + + This section is equally applicable to the flooding of an LSA that the + router itself has just originated (see Section 12.4). + + For these LSAs, this section provides the entirety of the flooding + procedure (i.e., the processing of Section 13 is not performed, + since, for example, the LSA has not been received from a neighbor and + therefore does not need to be acknowledged). + + Depending upon the LSA's LS type, the LSA can be flooded out only + certain interfaces. These interfaces, defined by the following, are + called the eligible interfaces: + + AS-external-LSAs (LS Type = 5) + AS-external-LSAs are flooded throughout the entire AS, with the + exception of stub areas (see Section 3.6). The eligible + interfaces are all the router's interfaces, excluding virtual + links and those interfaces attaching to stub areas. + + All other LS types + All other types are specific to a single area (Area A). The + eligible interfaces are all those interfaces attaching to the Area + A. If Area A is the backbone, this includes all the virtual + links. + + Link state databases must remain synchronized over all adjacencies + associated with the above eligible interfaces. This is accomplished + by executing the following steps on each eligible interface. It + should be noted that this procedure may decide not to flood an LSA + out a particular interface, if there is a high probability that the + attached neighbors have already received the LSA. However, in these + cases the flooding procedure must be absolutely sure that the + neighbors eventually do receive the LSA, so the LSA is still added to + each adjacency's Link state retransmission list. For each eligible + interface: + + + + + + +Moy Standards Track [Page 128] + +RFC 2178 OSPF Version 2 July 1997 + + + (1) Each of the neighbors attached to this interface are + examined, to determine whether they must receive the new + LSA. The following steps are executed for each neighbor: + + (a) If the neighbor is in a lesser state than Exchange, it + does not participate in flooding, and the next neighbor + should be examined. + + (b) Else, if the adjacency is not yet full (neighbor state + is Exchange or Loading), examine the Link state request + list associated with this adjacency. If there is an + instance of the new LSA on the list, it indicates that + the neighboring router has an instance of the LSA + already. Compare the new LSA to the neighbor's copy: + + o If the new LSA is less recent, then examine the next + neighbor. + + o If the two copies are the same instance, then delete + the LSA from the Link state request list, and + examine the next neighbor.[20] + + o Else, the new LSA is more recent. Delete the LSA + from the Link state request list. + + (c) If the new LSA was received from this neighbor, examine + the next neighbor. + + (d) At this point we are not positive that the neighbor has + an up-to-date instance of this new LSA. Add the new LSA + to the Link state retransmission list for the adjacency. + This ensures that the flooding procedure is reliable; + the LSA will be retransmitted at intervals until an + acknowledgment is seen from the neighbor. + + (2) The router must now decide whether to flood the new LSA out + this interface. If in the previous step, the LSA was NOT + added to any of the Link state retransmission lists, there + is no need to flood the LSA out the interface and the next + interface should be examined. + + (3) If the new LSA was received on this interface, and it was + received from either the Designated Router or the Backup + Designated Router, chances are that all the neighbors have + received the LSA already. Therefore, examine the next + interface. + + + + + +Moy Standards Track [Page 129] + +RFC 2178 OSPF Version 2 July 1997 + + + (4) If the new LSA was received on this interface, and the + interface state is Backup (i.e., the router itself is the + Backup Designated Router), examine the next interface. The + Designated Router will do the flooding on this interface. + However, if the Designated Router fails the router (i.e., + the Backup Designated Router) will end up retransmitting the + updates. + + (5) If this step is reached, the LSA must be flooded out the + interface. Send a Link State Update packet (including the + new LSA as contents) out the interface. The LSA's LS age + must be incremented by InfTransDelay (which must be > 0) + when it is copied into the outgoing Link State Update packet + (until the LS age field reaches the maximum value of + MaxAge). + + On broadcast networks, the Link State Update packets are + multicast. The destination IP address specified for the + Link State Update Packet depends on the state of the + interface. If the interface state is DR or Backup, the + address AllSPFRouters should be used. Otherwise, the + address AllDRouters should be used. + + On non-broadcast networks, separate Link State Update + packets must be sent, as unicasts, to each adjacent neighbor + (i.e., those in state Exchange or greater). The destination + IP addresses for these packets are the neighbors' IP + addresses. + +13.4. Receiving self-originated LSAs + + It is a common occurrence for a router to receive self-originated + LSAs via the flooding procedure. A self-originated LSA is detected + when either 1) the LSA's Advertising Router is equal to the router's + own Router ID or 2) the LSA is a network-LSA and its Link State ID is + equal to one of the router's own IP interface addresses. + + However, if the received self-originated LSA is newer than the last + instance that the router actually originated, the router must take + special action. The reception of such an LSA indicates that there + are LSAs in the routing domain that were originated by the router + before the last time it was restarted. In most cases, the router + must then advance the LSA's LS sequence number one past the received + LS sequence number, and originate a new instance of the LSA. + + It may be the case the router no longer wishes to originate the + received LSA. Possible examples include: 1) the LSA is a summary-LSA + or AS-external-LSA and the router no longer has an (advertisable) + + + +Moy Standards Track [Page 130] + +RFC 2178 OSPF Version 2 July 1997 + + + route to the destination, 2) the LSA is a network-LSA but the router + is no longer Designated Router for the network or 3) the LSA is a + network-LSA whose Link State ID is one of the router's own IP + interface addresses but whose Advertising Router is not equal to the + router's own Router ID (this latter case should be rare, and it + indicates that the router's Router ID has changed since originating + the LSA). In all these cases, instead of updating the LSA, the LSA + should be flushed from the routing domain by incrementing the + received LSA's LS age to MaxAge and reflooding (see Section 14.1). + +13.5. Sending Link State Acknowledgment packets + + Each newly received LSA must be acknowledged. This is usually done + by sending Link State Acknowledgment packets. However, + acknowledgments can also be accomplished implicitly by sending Link + State Update packets (see step 7a of Section 13). + + Many acknowledgments may be grouped together into a single Link State + Acknowledgment packet. Such a packet is sent back out the interface + which received the LSAs. The packet can be sent in one of two ways: + delayed and sent on an interval timer, or sent directly (as a + unicast) to a particular neighbor. The particular acknowledgment + strategy used depends on the circumstances surrounding the receipt of + the LSA. + + Sending delayed acknowledgments accomplishes several things: 1) it + facilitates the packaging of multiple acknowledgments in a single + Link State Acknowledgment packet, 2) it enables a single Link State + Acknowledgment packet to indicate acknowledgments to several + neighbors at once (through multicasting) and 3) it randomizes the + Link State Acknowledgment packets sent by the various routers + attached to a common network. The fixed interval between a router's + delayed transmissions must be short (less than RxmtInterval) or + needless retransmissions will ensue. + + Direct acknowledgments are sent to a particular neighbor in response + to the receipt of duplicate LSAs. These acknowledgments are sent as + unicasts, and are sent immediately when the duplicate is received. + + The precise procedure for sending Link State Acknowledgment packets + is described in Table 19. The circumstances surrounding the receipt + of the LSA are listed in the left column. The acknowledgment action + then taken is listed in one of the two right columns. This action + depends on the state of the concerned interface; interfaces in state + Backup behave differently from interfaces in all other states. + Delayed acknowledgments must be delivered to all adjacent routers + associated with the interface. On broadcast networks, this is + accomplished by sending the delayed Link State Acknowledgment packets + + + +Moy Standards Track [Page 131] + +RFC 2178 OSPF Version 2 July 1997 + + + as multicasts. The Destination IP address used depends on the state + of the interface. If the interface state is DR or Backup, the + destination AllSPFRouters is used. In all other states, the + destination AllDRouters is used. On non-broadcast networks, delayed + Link State Acknowledgment packets must be unicast separately over + each adjacency (i.e., neighbor whose state is >= Exchange). + + Action taken in state + Circumstances Backup All other states + _______________________________________________________________ + LSA has No acknowledgment No acknowledgment + been flooded back sent. sent. + out receiving in- + terface (see Sec- + tion 13, step 5b). + _______________________________________________________________ + LSA is Delayed acknowledg- Delayed ack- + more recent than ment sent if adver- nowledgment sent. + database copy, but tisement received + was not flooded from Designated + back out receiving Router, otherwise + interface do nothing + _______________________________________________________________ + LSA is a Delayed acknowledg- No acknowledgment + duplicate, and was ment sent if adver- sent. + treated as an im- tisement received + plied acknowledg- from Designated + ment (see Section Router, otherwise + 13, step 7a). do nothing + _______________________________________________________________ + LSA is a Direct acknowledg- Direct acknowledg- + duplicate, and was ment sent. ment sent. + not treated as an + implied ack- + nowledgment. + _______________________________________________________________ + LSA's LS Direct acknowledg- Direct acknowledg- + age is equal to ment sent. ment sent. + MaxAge, and there is + no current instance + of the LSA + in the link state + database (see + Section 13, step 4). + + + Table 19: Sending link state acknowledgments. + + + + +Moy Standards Track [Page 132] + +RFC 2178 OSPF Version 2 July 1997 + + + The reasoning behind sending the above packets as multicasts is best + explained by an example. Consider the network configuration depicted + in Figure 15. Suppose RT4 has been elected as Designated Router, and + RT3 as Backup Designated Router for the network N3. When Router RT4 + floods a new LSA to Network N3, it is received by routers RT1, RT2, + and RT3. These routers will not flood the LSA back onto net N3, but + they still must ensure that their link-state databases remain + synchronized with their adjacent neighbors. So RT1, RT2, and RT4 are + waiting to see an acknowledgment from RT3. Likewise, RT4 and RT3 are + both waiting to see acknowledgments from RT1 and RT2. This is best + achieved by sending the acknowledgments as multicasts. + + The reason that the acknowledgment logic for Backup DRs is slightly + different is because they perform differently during the flooding of + LSAs (see Section 13.3, step 4). + + +13.6. Retransmitting LSAs + + LSAs flooded out an adjacency are placed on the adjacency's Link + state retransmission list. In order to ensure that flooding is + reliable, these LSAs are retransmitted until they are acknowledged. + The length of time between retransmissions is a configurable per- + interface value, RxmtInterval. If this is set too low for an + interface, needless retransmissions will ensue. If the value is set + too high, the speed of the flooding, in the face of lost packets, may + be affected. + + Several retransmitted LSAs may fit into a single Link State Update + packet. When LSAs are to be retransmitted, only the number fitting + in a single Link State Update packet should be sent. Another packet + of retransmissions can be sent whenever some of the LSAs are + acknowledged, or on the next firing of the retransmission timer. + + Link State Update Packets carrying retransmissions are always sent as + unicasts (directly to the physical address of the neighbor). They + are never sent as multicasts. Each LSA's LS age must be incremented + by InfTransDelay (which must be > 0) when it is copied into the + outgoing Link State Update packet (until the LS age field reaches the + maximum value of MaxAge). + + If an adjacent router goes down, retransmissions may occur until the + adjacency is destroyed by OSPF's Hello Protocol. When the adjacency + is destroyed, the Link state retransmission list is cleared. + + + + + + + +Moy Standards Track [Page 133] + +RFC 2178 OSPF Version 2 July 1997 + + +13.7. Receiving link state acknowledgments + + Many consistency checks have been made on a received Link State + Acknowledgment packet before it is handed to the flooding procedure. + In particular, it has been associated with a particular neighbor. If + this neighbor is in a lesser state than Exchange, the Link State + Acknowledgment packet is discarded. + + Otherwise, for each acknowledgment in the Link State Acknowledgment + packet, the following steps are performed: + + + o Does the LSA acknowledged have an instance on the Link state + retransmission list for the neighbor? If not, examine the + next acknowledgment. Otherwise: + + o If the acknowledgment is for the same instance that is + contained on the list, remove the item from the list and + examine the next acknowledgment. Otherwise: + + o Log the questionable acknowledgment, and examine the next + one. + +14. Aging The Link State Database + + Each LSA has an LS age field. The LS age is expressed in seconds. + An LSA's LS age field is incremented while it is contained in a + router's database. Also, when copied into a Link State Update Packet + for flooding out a particular interface, the LSA's LS age is + incremented by InfTransDelay. + + An LSA's LS age is never incremented past the value MaxAge. LSAs + having age MaxAge are not used in the routing table calculation. As + a router ages its link state database, an LSA's LS age may reach + MaxAge.[21] At this time, the router must attempt to flush the LSA + from the routing domain. This is done simply by reflooding the + MaxAge LSA just as if it was a newly originated LSA (see Section + 13.3). + + When creating a Database summary list for a newly forming adjacency, + any MaxAge LSAs present in the link state database are added to the + neighbor's Link state retransmission list instead of the neighbor's + Database summary list. See Section 10.3 for more details. + + A MaxAge LSA must be removed immediately from the router's link state + database as soon as both a) it is no longer contained on any neighbor + Link state retransmission lists and b) none of the router's neighbors + are in states Exchange or Loading. + + + +Moy Standards Track [Page 134] + +RFC 2178 OSPF Version 2 July 1997 + + + When, in the process of aging the link state database, an LSA's LS + age hits a multiple of CheckAge, its LS checksum should be verified. + If the LS checksum is incorrect, a program or memory error has been + detected, and at the very least the router itself should be + restarted. + +14.1. Premature aging of LSAs + + An LSA can be flushed from the routing domain by setting its LS age + to MaxAge and reflooding the LSA. This procedure follows the same + course as flushing an LSA whose LS age has naturally reached the + value MaxAge (see Section 14). In particular, the MaxAge LSA is + removed from the router's link state database as soon as a) it is no + longer contained on any neighbor Link state retransmission lists and + b) none of the router's neighbors are in states Exchange or Loading. + We call the setting of an LSA's LS age to MaxAge "premature aging". + + Premature aging is used when it is time for a self-originated LSA's + sequence number field to wrap. At this point, the current LSA + instance (having LS sequence number MaxSequenceNumber) must be + prematurely aged and flushed from the routing domain before a new + instance with sequence number equal to InitialSequenceNumber can be + originated. See Section 12.1.6 for more information. + + Premature aging can also be used when, for example, one of the + router's previously advertised external routes is no longer + reachable. In this circumstance, the router can flush its AS- + external-LSA from the routing domain via premature aging. This + procedure is preferable to the alternative, which is to originate a + new LSA for the destination specifying a metric of LSInfinity. + Premature aging is also be used when unexpectedly receiving self- + originated LSAs during the flooding procedure (see Section 13.4). + + A router may only prematurely age its own self-originated LSAs. The + router may not prematurely age LSAs that have been originated by + other routers. An LSA is considered self- originated when either 1) + the LSA's Advertising Router is equal to the router's own Router ID + or 2) the LSA is a network-LSA and its Link State ID is equal to one + of the router's own IP interface addresses. + +15. Virtual Links + + The single backbone area (Area ID = 0.0.0.0) cannot be disconnected, + or some areas of the Autonomous System will become unreachable. To + establish/maintain connectivity of the backbone, virtual links can be + configured through non-backbone areas. Virtual links serve to + connect physically separate components of the backbone. The two + endpoints of a virtual link are area border routers. The virtual + + + +Moy Standards Track [Page 135] + +RFC 2178 OSPF Version 2 July 1997 + + + link must be configured in both routers. The configuration + information in each router consists of the other virtual endpoint + (the other area border router), and the non-backbone area the two + routers have in common (called the Transit area). Virtual links + cannot be configured through stub areas (see Section 3.6). + + The virtual link is treated as if it were an unnumbered point-to- + point network belonging to the backbone and joining the two area + border routers. An attempt is made to establish an adjacency over + the virtual link. When this adjacency is established, the virtual + link will be included in backbone router-LSAs, and OSPF packets + pertaining to the backbone area will flow over the adjacency. Such + an adjacency has been referred to in this document as a "virtual + adjacency". + + In each endpoint router, the cost and viability of the virtual link + is discovered by examining the routing table entry for the other + endpoint router. (The entry's associated area must be the configured + Transit area). This is called the virtual link's corresponding + routing table entry. The InterfaceUp event occurs for a virtual link + when its corresponding routing table entry becomes reachable. + Conversely, the InterfaceDown event occurs when its routing table + entry becomes unreachable. In other words, the virtual link's + viability is determined by the existence of an intra-area path, + through the Transit area, between the two endpoints. Note that a + virtual link whose underlying path has cost greater than hexadecimal + 0xffff (the maximum size of an interface cost in a router-LSA) should + be considered inoperational (i.e., treated the same as if the path + did not exist). + + The other details concerning virtual links are as follows: + + o AS-external-LSAs are NEVER flooded over virtual adjacencies. This + would be duplication of effort, since the same AS-external-LSAs are + already flooded throughout the virtual link's Transit area. For this + same reason, AS-external-LSAs are not summarized over virtual + adjacencies during the Database Exchange process. + + o The cost of a virtual link is NOT configured. It is defined to be + the cost of the intra-area path between the two defining area border + routers. This cost appears in the virtual link's corresponding + routing table entry. When the cost of a virtual link changes, a new + router-LSA should be originated for the backbone area. + + o Just as the virtual link's cost and viability are determined by the + routing table build process (through construction of the routing + table entry for the other endpoint), so are the IP interface address + for the virtual interface and the virtual neighbor's IP address. + + + +Moy Standards Track [Page 136] + +RFC 2178 OSPF Version 2 July 1997 + + + These are used when sending OSPF protocol packets over the virtual + link. Note that when one (or both) of the virtual link endpoints + connect to the Transit area via an unnumbered point-to-point link, it + may be impossible to calculate either the virtual interface's IP + address and/or the virtual neighbor's IP address, thereby causing the + virtual link to fail. + + o In each endpoint's router-LSA for the backbone, the virtual link is + represented as a Type 4 link whose Link ID is set to the virtual + neighbor's OSPF Router ID and whose Link Data is set to the virtual + interface's IP address. See Section 12.4.1 for more information. + + o A non-backbone area can carry transit data traffic (i.e., is + considered a "transit area") if and only if it serves as the Transit + area for one or more fully adjacent virtual links (see + TransitCapability in Sections 6 and 16.1). Such an area requires + special treatment when summarizing backbone networks into it (see + Section 12.4.3), and during the routing calculation (see Section + 16.3). + + o The time between link state retransmissions, RxmtInterval, is + configured for a virtual link. This should be well over the expected + round-trip delay between the two routers. This may be hard to + estimate for a virtual link; it is better to err on the side of + making it too large. + +16. Calculation of the routing table + + This section details the OSPF routing table calculation. Using its + attached areas' link state databases as input, a router runs the + following algorithm, building its routing table step by step. At + each step, the router must access individual pieces of the link state + databases (e.g., a router-LSA originated by a certain router). This + access is performed by the lookup function discussed in Section 12.2. + The lookup process may return an LSA whose LS age is equal to MaxAge. + Such an LSA should not be used in the routing table calculation, and + is treated just as if the lookup process had failed. + + The OSPF routing table's organization is explained in Section 11. + Two examples of the routing table build process are presented in + Sections 11.2 and 11.3. This process can be broken into the + following steps: + + (1) The present routing table is invalidated. The routing table is + built again from scratch. The old routing table is saved so + that changes in routing table entries can be identified. + + + + + +Moy Standards Track [Page 137] + +RFC 2178 OSPF Version 2 July 1997 + + + (2) The intra-area routes are calculated by building the shortest- + path tree for each attached area. In particular, all routing + table entries whose Destination Type is "area border router" are + calculated in this step. This step is described in two parts. + At first the tree is constructed by only considering those links + between routers and transit networks. Then the stub networks + are incorporated into the tree. During the area's shortest-path + tree calculation, the area's TransitCapability is also + calculated for later use in Step 4. + + (3) The inter-area routes are calculated, through examination of + summary-LSAs. If the router is attached to multiple areas + (i.e., it is an area border router), only backbone summary-LSAs + are examined. + + (4) In area border routers connecting to one or more transit areas + (i.e, non-backbone areas whose TransitCapability is found to be + TRUE), the transit areas' summary-LSAs are examined to see + whether better paths exist using the transit areas than were + found in Steps 2-3 above. + + (5) Routes to external destinations are calculated, through + examination of AS-external-LSAs. The locations of the AS + boundary routers (which originate the AS-external-LSAs) have + been determined in steps 2-4. + + Steps 2-5 are explained in further detail below. + + Changes made to routing table entries as a result of these + calculations can cause the OSPF protocol to take further actions. + For example, a change to an intra-area route will cause an area + border router to originate new summary-LSAs (see Section 12.4). See + + Section 16.7 for a complete list of the OSPF protocol actions + resulting from routing table changes. + +16.1. Calculating the shortest-path tree for an area + + This calculation yields the set of intra-area routes associated with + an area (called hereafter Area A). A router calculates the + shortest-path tree using itself as the root.[22] The formation of the + shortest path tree is done here in two stages. In the first stage, + only links between routers and transit networks are considered. + Using the Dijkstra algorithm, a tree is formed from this subset of + the link state database. In the second stage, leaves are added to + the tree by considering the links to stub networks. + + + + + +Moy Standards Track [Page 138] + +RFC 2178 OSPF Version 2 July 1997 + + + The procedure will be explained using the graph terminology that was + introduced in Section 2. The area's link state database is + represented as a directed graph. The graph's vertices are routers, + transit networks and stub networks. The first stage of the procedure + concerns only the transit vertices (routers and transit networks) and + their connecting links. Throughout the shortest path calculation, + the following data is also associated with each transit vertex: + + + Vertex (node) ID + A 32-bit number uniquely identifying the vertex. For router + vertices this is the router's OSPF Router ID. For network + vertices, this is the IP address of the network's Designated + Router. + + An LSA + Each transit vertex has an associated LSA. For router + vertices, this is a router-LSA. For transit networks, this + is a network-LSA (which is actually originated by the + network's Designated Router). In any case, the LSA's Link + State ID is always equal to the above Vertex ID. + + List of next hops + The list of next hops for the current set of shortest paths + from the root to this vertex. There can be multiple + shortest paths due to the equal-cost multipath capability. + Each next hop indicates the outgoing router interface to use + when forwarding traffic to the destination. On broadcast, + Point-to-MultiPoint and NBMA networks, the next hop also + includes the IP address of the next router (if any) in the + path towards the destination. + + Distance from root + The link state cost of the current set of shortest paths + from the root to the vertex. The link state cost of a path + is calculated as the sum of the costs of the path's + constituent links (as advertised in router-LSAs and + network-LSAs). One path is said to be "shorter" than + another if it has a smaller link state cost. + + + The first stage of the procedure (i.e., the Dijkstra algorithm) can + now be summarized as follows. At each iteration of the algorithm, + there is a list of candidate vertices. Paths from the root to these + vertices have been found, but not necessarily the shortest ones. + However, the paths to the candidate vertex that is closest to the + root are guaranteed to be shortest; this vertex is added to the + shortest-path tree, removed from the candidate list, and its adjacent + + + +Moy Standards Track [Page 139] + +RFC 2178 OSPF Version 2 July 1997 + + + vertices are examined for possible addition to/modification of the + candidate list. The algorithm then iterates again. It terminates + when the candidate list becomes empty. + + The following steps describe the algorithm in detail. Remember that + we are computing the shortest path tree for Area A. All references + to link state database lookup below are from Area A's database. + + (1) Initialize the algorithm's data structures. Clear the list + of candidate vertices. Initialize the shortest-path tree to + only the root (which is the router doing the calculation). + Set Area A's TransitCapability to FALSE. + + (2) Call the vertex just added to the tree vertex V. Examine + the LSA associated with vertex V. This is a lookup in the + Area A's link state database based on the Vertex ID. If + this is a router-LSA, and bit V of the router-LSA (see + Section A.4.2) is set, set Area A's TransitCapability to + TRUE. In any case, each link described by the LSA gives the + cost to an adjacent vertex. For each described link, (say + it joins vertex V to vertex W): + + (a) If this is a link to a stub network, examine the next + link in V's LSA. Links to stub networks will be + considered in the second stage of the shortest path + calculation. + + (b) Otherwise, W is a transit vertex (router or transit + network). Look up the vertex W's LSA (router-LSA or + network-LSA) in Area A's link state database. If the + LSA does not exist, or its LS age is equal to MaxAge, or + it does not have a link back to vertex V, examine the + next link in V's LSA.[23] + + (c) If vertex W is already on the shortest-path tree, + examine the next link in the LSA. + + (d) Calculate the link state cost D of the resulting path + from the root to vertex W. D is equal to the sum of the + link state cost of the (already calculated) shortest + path to vertex V and the advertised cost of the link + between vertices V and W. If D is: + + o Greater than the value that already appears for + vertex W on the candidate list, then examine the + next link. + + + + + +Moy Standards Track [Page 140] + +RFC 2178 OSPF Version 2 July 1997 + + + o Equal to the value that appears for vertex W on the + candidate list, calculate the set of next hops that + result from using the advertised link. Input to + this calculation is the destination (W), and its + parent (V). This calculation is shown in Section + 16.1.1. This set of hops should be added to the + next hop values that appear for W on the candidate + list. + + o Less than the value that appears for vertex W on the + candidate list, or if W does not yet appear on the + candidate list, then set the entry for W on the + candidate list to indicate a distance of D from the + root. Also calculate the list of next hops that + result from using the advertised link, setting the + next hop values for W accordingly. The next hop + calculation is described in Section 16.1.1; it takes + as input the destination (W) and its parent (V). + + (3) If at this step the candidate list is empty, the shortest- + path tree (of transit vertices) has been completely built + and this stage of the procedure terminates. Otherwise, + choose the vertex belonging to the candidate list that is + closest to the root, and add it to the shortest-path tree + (removing it from the candidate list in the process). Note + that when there is a choice of vertices closest to the root, + network vertices must be chosen before router vertices in + order to necessarily find all equal-cost paths. This is + consistent with the tie-breakers that were introduced in the + modified Dijkstra algorithm used by OSPF's Multicast routing + extensions (MOSPF). + + (4) Possibly modify the routing table. For those routing table + entries modified, the associated area will be set to Area A, + the path type will be set to intra-area, and the cost will + be set to the newly discovered shortest path's calculated + distance. + + If the newly added vertex is an area border router or AS + boundary router, a routing table entry is added whose + destination type is "router". The Options field found in + the associated router-LSA is copied into the routing table + entry's Optional capabilities field. Call the newly added + vertex Router X. If Router X is the endpoint of one of the + calculating router's virtual links, and the virtual link + uses Area A as Transit area: the virtual link is declared + up, the IP address of the virtual interface is set to the IP + address of the outgoing interface calculated above for + + + +Moy Standards Track [Page 141] + +RFC 2178 OSPF Version 2 July 1997 + + + Router X, and the virtual neighbor's IP address is set to + Router X's interface address (contained in Router X's + router-LSA) that points back to the root of the shortest- + path tree; equivalently, this is the interface that points + back to Router X's parent vertex on the shortest-path tree + (similar to the calculation in Section 16.1.1). + + If the newly added vertex is a transit network, the routing + table entry for the network is located. The entry's + Destination ID is the IP network number, which can be + obtained by masking the Vertex ID (Link State ID) with its + associated subnet mask (found in the body of the associated + network-LSA). If the routing table entry already exists + (i.e., there is already an intra-area route to the + destination installed in the routing table), multiple + vertices have mapped to the same IP network. For example, + this can occur when a new Designated Router is being + established. In this case, the current routing table entry + should be overwritten if and only if the newly found path is + just as short and the current routing table entry's Link + State Origin has a smaller Link State ID than the newly + added vertex' LSA. + + If there is no routing table entry for the network (the + usual case), a routing table entry for the IP network should + be added. The routing table entry's Link State Origin + should be set to the newly added vertex' LSA. + + (5) Iterate the algorithm by returning to Step 2. + + The stub networks are added to the tree in the procedure's second + stage. In this stage, all router vertices are again examined. Those + that have been determined to be unreachable in the above first phase + are discarded. For each reachable router vertex (call it V), the + associated router-LSA is found in the link state database. Each stub + network link appearing in the LSA is then examined, and the following + steps are executed: + + + (1) Calculate the distance D of stub network from the root. D + is equal to the distance from the root to the router vertex + (calculated in stage 1), plus the stub network link's + advertised cost. Compare this distance to the current best + cost to the stub network. This is done by looking up the + stub network's current routing table entry. If the + calculated distance D is larger, go on to examine the next + stub network link in the LSA. + + + + +Moy Standards Track [Page 142] + +RFC 2178 OSPF Version 2 July 1997 + + + (2) If this step is reached, the stub network's routing table + entry must be updated. Calculate the set of next hops that + would result from using the stub network link. This + calculation is shown in Section 16.1.1; input to this + calculation is the destination (the stub network) and the + parent vertex (the router vertex). If the distance D is the + same as the current routing table cost, simply add this set + of next hops to the routing table entry's list of next hops. + In this case, the routing table already has a Link State + Origin. If this Link State Origin is a router-LSA whose + Link State ID is smaller than V's Router ID, reset the Link + State Origin to V's router-LSA. + + Otherwise D is smaller than the routing table cost. + Overwrite the current routing table entry by setting the + routing table entry's cost to D, and by setting the entry's + list of next hops to the newly calculated set. Set the + routing table entry's Link State Origin to V's router-LSA. + Then go on to examine the next stub network link. + + For all routing table entries added/modified in the second stage, the + associated area will be set to Area A and the path type will be set to + intra-area. When the list of reachable router-LSAs is exhausted, the + second stage is completed. At this time, all intra-area routes + associated with Area A have been determined. + + The specification does not require that the above two stage method be + used to calculate the shortest path tree. However, if another + algorithm is used, an identical tree must be produced. For this + reason, it is important to note that links between transit vertices + must be bidirectional in order to be included in the above tree. It + should also be mentioned that more efficient algorithms exist for + calculating the tree; for example, the incremental SPF algorithm + described in [Ref1]. + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 143] + +RFC 2178 OSPF Version 2 July 1997 + + +16.1.1. The next hop calculation + + This section explains how to calculate the current set of next hops + to use for a destination. Each next hop consists of the outgoing + interface to use in forwarding packets to the destination together + with the IP address of the next hop router (if any). The next hop + calculation is invoked each time a shorter path to the destination is + discovered. This can happen in either stage of the shortest-path + tree calculation (see Section 16.1). In stage 1 of the shortest-path + tree calculation a shorter path is found as the destination is added + to the candidate list, or when the destination's entry on the + candidate list is modified (Step 2d of Stage 1). In stage 2 a + shorter path is discovered each time the destination's routing table + entry is modified (Step 2 of Stage 2). + + The set of next hops to use for the destination may be recalculated + several times during the shortest-path tree calculation, as shorter + and shorter paths are discovered. In the end, the destination's + routing table entry will always reflect the next hops resulting from + the absolute shortest path(s). + + Input to the next hop calculation is a) the destination and b) its + parent in the current shortest path between the root (the calculating + router) and the destination. The parent is always a transit vertex + (i.e., always a router or a transit network). + + If there is at least one intervening router in the current shortest + path between the destination and the root, the destination simply + inherits the set of next hops from the parent. Otherwise, there are + two cases. In the first case, the parent vertex is the root (the + calculating router itself). This means that the destination is + either a directly connected network or directly connected router. + The outgoing interface in this case is simply the OSPF interface + connecting to the destination network/router. If the destination is a + router which connects to the calculating router via a Point-to- + MultiPoint network, the destination's next hop IP address(es) can be + determined by examining the destination's router-LSA: each link + pointing back to the calculating router and having a Link Data field + belonging to the Point-to-MultiPoint network provides an IP address + of the next hop router. If the destination is a directly connected + network, or a router which connects to the calculating router via a + point-to-point interface, no next hop IP address is required. If the + destination is a router connected to the calculating router via a + virtual link, the setting of the next hop should be deferred until + the calculation in Section 16.3. + + + + + + +Moy Standards Track [Page 144] + +RFC 2178 OSPF Version 2 July 1997 + + + In the second case, the parent vertex is a network that directly + connects the calculating router to the destination router. The list + of next hops is then determined by examining the destination's + router-LSA. For each link in the router-LSA that points back to the + parent network, the link's Link Data field provides the IP address of + a next hop router. The outgoing interface to use can then be derived + from the next hop IP address (or it can be inherited from the parent + network). + +16.2. Calculating the inter-area routes + + The inter-area routes are calculated by examining summary-LSAs. If + the router has active attachments to multiple areas, only backbone + summary-LSAs are examined. Routers attached to a single area examine + that area's summary-LSAs. In either case, the summary-LSAs examined + below are all part of a single area's link state database (call it + Area A). + + Summary-LSAs are originated by the area border routers. Each + summary-LSA in Area A is considered in turn. Remember that the + destination described by a summary-LSA is either a network (Type 3 + summary-LSAs) or an AS boundary router (Type 4 summary-LSAs). For + each summary-LSA: + + + (1) If the cost specified by the LSA is LSInfinity, or if the + LSA's LS age is equal to MaxAge, then examine the the next + LSA. + + (2) If the LSA was originated by the calculating router itself, + examine the next LSA. + + (3) If it is a Type 3 summary-LSA, and the collection of + destinations described by the summary-LSA equals one of the + router's configured area address ranges (see Section 3.5), + and the particular area address range is active, then the + summary-LSA should be ignored. "Active" means that there + are one or more reachable (by intra-area paths) networks + contained in the area range. + + (4) Else, call the destination described by the LSA N (for Type + 3 summary-LSAs, N's address is obtained by masking the LSA's + Link State ID with the network/subnet mask contained in the + body of the LSA), and the area border originating the LSA + BR. Look up the routing table entry for BR having Area A as + its associated area. If no such entry exists for router BR + (i.e., BR is unreachable in Area A), do nothing with this + LSA and consider the next in the list. Else, this LSA + + + +Moy Standards Track [Page 145] + +RFC 2178 OSPF Version 2 July 1997 + + + describes an inter-area path to destination N, whose cost is + the distance to BR plus the cost specified in the LSA. Call + the cost of this inter-area path IAC. + + (5) Next, look up the routing table entry for the destination N. + (If N is an AS boundary router, look up the "router" routing + table entry associated with Area A). If no entry exists for + N or if the entry's path type is "type 1 external" or "type + 2 external", then install the inter-area path to N, with + associated area Area A, cost IAC, next hop equal to the list + of next hops to router BR, and Advertising router equal to + BR. + + (6) Else, if the paths present in the table are intra-area + paths, do nothing with the LSA (intra-area paths are always + preferred). + + (7) Else, the paths present in the routing table are also + inter-area paths. Install the new path through BR if it is + cheaper, overriding the paths in the routing table. + Otherwise, if the new path is the same cost, add it to the + list of paths that appear in the routing table entry. + +16.3. Examining transit areas' summary-LSAs + + This step is only performed by area border routers attached to one or + more non-backbone areas that are capable of carrying transit traffic + (i.e., "transit areas", or those areas whose TransitCapability + parameter has been set to TRUE in Step 2 of the Dijkstra algorithm + (see Section 16.1). + + The purpose of the calculation below is to examine the transit areas + to see whether they provide any better (shorter) paths than the paths + previously calculated in Sections 16.1 and 16.2. Any paths found + that are better than or equal to previously discovered paths are + installed in the routing table. + + The calculation proceeds as follows. All the transit areas' summary- + LSAs are examined in turn. Each such summary-LSA describes a route + through a transit area Area A to a Network N (N's address is obtained + by masking the LSA's Link State ID with the network/subnet mask + contained in the body of the LSA) or in the case of a Type 4 + summary-LSA, to an AS boundary router N. Suppose also that the + summary-LSA was originated by an area border router BR. + + (1) If the cost advertised by the summary-LSA is LSInfinity, or + if the LSA's LS age is equal to MaxAge, then examine the + next LSA. + + + +Moy Standards Track [Page 146] + +RFC 2178 OSPF Version 2 July 1997 + + + (2) If the summary-LSA was originated by the calculating router + itself, examine the next LSA. + + (3) Look up the routing table entry for N. (If N is an AS + boundary router, look up the "router" routing table entry + associated with the backbone area). If it does not exist, or + if the route type is other than intra-area or inter-area, or + if the area associated with the routing table entry is not + the backbone area, then examine the next LSA. In other + words, this calculation only updates backbone intra-area + routes found in Section 16.1 and inter-area routes found in + Section 16.2. + + (4) Look up the routing table entry for the advertising router + BR associated with the Area A. If it is unreachable, examine + the next LSA. Otherwise, the cost to destination N is the + sum of the cost in BR's Area A routing table entry and the + cost advertised in the LSA. Call this cost IAC. + + (5) If this cost is less than the cost occurring in N's routing + table entry, overwrite N's list of next hops with those used + for BR, and set N's routing table cost to IAC. Else, if IAC + is the same as N's current cost, add BR's list of next hops + to N's list of next hops. In any case, the area associated + with N's routing table entry must remain the backbone area, + and the path type (either intra-area or inter-area) must + also remain the same. + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 147] + +RFC 2178 OSPF Version 2 July 1997 + + + . Area 1 (transit) . + + . . | + . +---+1 1+---+100 | + . |RT2|----------|RT4|=========| + . 1/+---+********* +---+ | + . /******* . | + . 1/*Virtual . | + 1+---+/* Link . Net|work + =======|RT1|* . | N1 + +---+\ . | + . \ . | + . \ . | + . 1\+---+1 1+---+20 | + . |RT3|----------|RT5|=========| + . +---+ +---+ | + . . | + ........................ + + + + Figure 17: Routing through transit areas + + It is important to note that the above calculation never makes + unreachable destinations reachable, but instead just potentially + finds better paths to already reachable destinations. The + calculation installs any better cost found into the routing table + entry, from which it may be readvertised in summary-LSAs to other + areas. + + As an example of the calculation, consider the Autonomous System + pictured in Figure 17. There is a single non-backbone area (Area 1) + that physically divides the backbone into two separate pieces. To + maintain connectivity of the backbone, a virtual link has been + configured between routers RT1 and RT4. On the right side of the + figure, Network N1 belongs to the backbone. The dotted lines indicate + that there is a much shorter intra-area backbone path between router + RT5 and Network N1 (cost 20) than there is between Router RT4 and + Network N1 (cost 100). Both Router RT4 and Router RT5 will inject + summary-LSAs for Network N1 into Area 1. + + After the shortest-path tree has been calculated for the backbone in + Section 16.1, Router RT1 (left end of the virtual link) will have + calculated a path through Router RT4 for all data traffic destined + for Network N1. However, since Router RT5 is so much closer to + Network N1, all routers internal to Area 1 (e.g., Routers RT2 and + RT3) will forward their Network N1 traffic towards Router RT5, + instead of RT4. And indeed, after examining Area 1's summary-LSAs by + the above calculation, Router RT1 will also forward Network N1 + traffic towards RT5. Note that in this example the virtual link + + + +Moy Standards Track [Page 148] + +RFC 2178 OSPF Version 2 July 1997 + + + enables transit data traffic to be forwarded through Area 1, but the + actual path the transit data traffic takes does not follow the + virtual link. In other words, virtual links allow transit traffic to + be forwarded through an area, but do not dictate the precise path + that the traffic will take. + +16.4. Calculating AS external routes + + AS external routes are calculated by examining AS-external-LSAs. + Each of the AS-external-LSAs is considered in turn. Most AS- + external-LSAs describe routes to specific IP destinations. An AS- + external-LSA can also describe a default route for the Autonomous + System (Destination ID = DefaultDestination, network/subnet mask = + 0x00000000). For each AS-external-LSA: + + (1) If the cost specified by the LSA is LSInfinity, or if the + LSA's LS age is equal to MaxAge, then examine the next LSA. + + (2) If the LSA was originated by the calculating router itself, + examine the next LSA. + + (3) Call the destination described by the LSA N. N's address is + obtained by masking the LSA's Link State ID with the + network/subnet mask contained in the body of the LSA. Look + up the routing table entries (potentially one per attached + area) for the AS boundary router (ASBR) that originated the + LSA. If no entries exist for router ASBR (i.e., ASBR is + unreachable), do nothing with this LSA and consider the next + in the list. + + Else, this LSA describes an AS external path to destination + N. Examine the forwarding address specified in the AS- + external-LSA. This indicates the IP address to which + packets for the destination should be forwarded. + + If the forwarding address is set to 0.0.0.0, packets should + be sent to the ASBR itself. Among the multiple routing table + entries for the ASBR, select the preferred entry as follows. + If RFC1583Compatibility is set to "disabled", prune the set + of routing table entries for the ASBR as described in + Section 16.4.1. In any case, among the remaining routing + table entries, select the routing table entry with the least + cost; when there are multiple least cost routing table + entries the entry whose associated area has the largest OSPF + Area ID (when considered as an unsigned 32-bit integer) is + chosen. + + + + + +Moy Standards Track [Page 149] + +RFC 2178 OSPF Version 2 July 1997 + + + If the forwarding address is non-zero, look up the + forwarding address in the routing table.[24] The matching + routing table entry must specify an intra-area or inter-area + path; if no such path exists, do nothing with the LSA and + consider the next in the list. + + (4) Let X be the cost specified by the preferred routing table + entry for the ASBR/forwarding address, and Y the cost + specified in the LSA. X is in terms of the link state + metric, and Y is a type 1 or 2 external metric. + + (5) Look up the routing table entry for the destination N. If + no entry exists for N, install the AS external path to N, + with next hop equal to the list of next hops to the + forwarding address, and advertising router equal to ASBR. + If the external metric type is 1, then the path-type is set + to type 1 external and the cost is equal to X+Y. If the + external metric type is 2, the path-type is set to type 2 + external, the link state component of the route's cost is X, + and the type 2 cost is Y. + + (6) Compare the AS external path described by the LSA with the + existing paths in N's routing table entry, as follows. If + the new path is preferred, it replaces the present paths in + N's routing table entry. If the new path is of equal + preference, it is added to N's routing table entry's list of + paths. + + (a) Intra-area and inter-area paths are always preferred + over AS external paths. + + (b) Type 1 external paths are always preferred over type 2 + external paths. When all paths are type 2 external + paths, the paths with the smallest advertised type 2 + metric are always preferred. + + (c) If the new AS external path is still indistinguishable + from the current paths in the N's routing table entry, + and RFC1583Compatibility is set to "disabled", select + the preferred paths based on the intra-AS paths to the + ASBR/forwarding addresses, as specified in Section + 16.4.1. + + + + + + + + + +Moy Standards Track [Page 150] + +RFC 2178 OSPF Version 2 July 1997 + + + (d) If the new AS external path is still indistinguishable + from the current paths in the N's routing table entry, + select the preferred path based on a least cost + comparison. Type 1 external paths are compared by + looking at the sum of the distance to the forwarding + address and the advertised type 1 metric (X+Y). Type 2 + external paths advertising equal type 2 metrics are + compared by looking at the distance to the forwarding + addresses. + +16.4.1. External path preferences + + When multiple intra-AS paths are available to ASBRs/forwarding + addresses, the following rules indicate which paths are preferred. + These rules apply when the same ASBR is reachable through multiple + areas, or when trying to decide which of several AS-external-LSAs + should be preferred. In the former case the paths all terminate at + the same ASBR, while in the latter the paths terminate at separate + ASBRs/forwarding addresses. In either case, each path is represented + by a separate routing table entry as defined in Section 11. + + This section only applies when RFC1583Compatibility is set to + "disabled". + + The path preference rules, stated from highest to lowest preference, + are as follows. Note that as a result of these rules, there may still + be multiple paths of the highest preference. In this case, the path + to use must be determined based on cost, as described in Section + 16.4. + + o Intra-area paths using non-backbone areas are always the + most preferred. + + o Otherwise, intra-area backbone paths are preferred. + + o Inter-area paths are the least preferred. + +16.5. Incremental updates -- summary-LSAs + + When a new summary-LSA is received, it is not necessary to + recalculate the entire routing table. Call the destination described + by the summary-LSA N (N's address is obtained by masking the LSA's + Link State ID with the network/subnet mask contained in the body of + the LSA), and let Area A be the area to which the LSA belongs. There + are then two separate cases: + + + + + + +Moy Standards Track [Page 151] + +RFC 2178 OSPF Version 2 July 1997 + + + Case 1: Area A is the backbone and/or the router is not an area + border router. + In this case, the following calculations must be performed. + First, if there is presently an inter-area route to the + destination N, N's routing table entry is invalidated, saving the + entry's values for later comparisons. Then the calculation in + Section 16.2 is run again for the single destination N. In this + calculation, all of Area A's summary-LSAs that describe a route to + N are examined. In addition, if the router is an area border + router attached to one or more transit areas, the calculation in + Section 16.3 must be run again for the single destination. If the + results of these calculations have changed the cost/path to an AS + boundary router (as would be the case for a Type 4 summary-LSA) or + to any forwarding addresses, all AS- external-LSAs will have to be + reexamined by rerunning the calculation in Section 16.4. + Otherwise, if N is now newly unreachable, the calculation in + Section 16.4 must be rerun for the single destination N, in case + an alternate external route to N exists. + + Case 2: Area A is a transit area and the router is an area border + router. + In this case, the following calculations must be performed. + First, if N's routing table entry presently contains one or more + inter-area paths that utilize the transit area Area A, these paths + should be removed. If this removes all paths from the routing + table entry, the entry should be invalidated. The entry's old + values should be saved for later comparisons. Next the calculation + in Section 16.3 must be run again for the single destination N. If + the results of this calculation have caused the cost to N to + increase, the complete routing table calculation must be rerun + starting with the Dijkstra algorithm specified in Section 16.1. + Otherwise, if the cost/path to an AS boundary router (as would be + the case for a Type 4 summary-LSA) or to any forwarding addresses + has changed, all AS-external-LSAs will have to be reexamined by + rerunning the calculation in Section 16.4. Otherwise, if N is now + newly unreachable, the calculation in Section 16.4 must be rerun + for the single destination N, in case an alternate external route + to N exists. + +16.6. Incremental updates -- AS-external-LSAs + + When a new AS-external-LSA is received, it is not necessary to + recalculate the entire routing table. Call the destination described + by the AS-external-LSA N. N's address is obtained by masking the + LSA's Link State ID with the network/subnet mask contained in the + body of the LSA. If there is already an intra- area or inter-area + route to the destination, no recalculation is necessary (internal + routes take precedence). + + + +Moy Standards Track [Page 152] + +RFC 2178 OSPF Version 2 July 1997 + + + Otherwise, the procedure in Section 16.4 will have to be performed, + but only for those AS-external-LSAs whose destination is N. Before + this procedure is performed, the present routing table entry for N + should be invalidated. + +16.7. Events generated as a result of routing table changes + + Changes to routing table entries sometimes cause the OSPF area border + routers to take additional actions. These routers need to act on the + following routing table changes: + + o The cost or path type of a routing table entry has changed. + If the destination described by this entry is a Network or AS + boundary router, and this is not simply a change of AS external + routes, new summary-LSAs may have to be generated (potentially one + for each attached area, including the backbone). See Section + 12.4.3 for more information. If a previously advertised entry has + been deleted, or is no longer advertisable to a particular area, + the LSA must be flushed from the routing domain by setting its LS + age to MaxAge and reflooding (see Section 14.1). + + o A routing table entry associated with a configured virtual + link has changed. The destination of such a routing table entry + is an area border router. The change indicates a modification to + the virtual link's cost or viability. + + If the entry indicates that the area border router is newly + reachable, the corresponding virtual link is now operational. An + InterfaceUp event should be generated for the virtual link, which + will cause a virtual adjacency to begin to form (see Section + 10.3). At this time the virtual link's IP interface address and + the virtual neighbor's Neighbor IP address are also calculated. + + If the entry indicates that the area border router is no longer + reachable, the virtual link and its associated adjacency should be + destroyed. This means an InterfaceDown event should be generated + for the associated virtual link. + + If the cost of the entry has changed, and there is a fully + established virtual adjacency, a new router-LSA for the backbone + must be originated. This in turn may cause further routing table + changes. + + + + + + + + + +Moy Standards Track [Page 153] + +RFC 2178 OSPF Version 2 July 1997 + + +16.8. Equal-cost multipath + + The OSPF protocol maintains multiple equal-cost routes to all + destinations. This can be seen in the steps used above to calculate + the routing table, and in the definition of the routing table + structure. + + Each one of the multiple routes will be of the same type (intra-area, + inter-area, type 1 external or type 2 external), cost, and will have + the same associated area. However, each route specifies a separate + next hop and Advertising router. + + There is no requirement that a router running OSPF keep track of all + possible equal-cost routes to a destination. An implementation may + choose to keep only a fixed number of routes to any given + destination. This does not affect any of the algorithms presented in + this specification. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 154] + +RFC 2178 OSPF Version 2 July 1997 + + +Footnotes + + [1]The graph's vertices represent either routers, transit networks, + or stub networks. Since routers may belong to multiple areas, it is + not possible to color the graph's vertices. + + [2]It is possible for all of a router's interfaces to be unnumbered + point-to-point links. In this case, an IP address must be assigned + to the router. This address will then be advertised in the router's + router-LSA as a host route. + + [3]Note that in these cases both interfaces, the non-virtual and the + virtual, would have the same IP address. + + [4]Note that no host route is generated for, and no IP packets can be + addressed to, interfaces to unnumbered point-to-point networks. This + is regardless of such an interface's state. + + [5]It is instructive to see what happens when the Designated Router + for the network crashes. Call the Designated Router for the network + RT1, and the Backup Designated Router RT2. If Router RT1 crashes (or + maybe its interface to the network dies), the other routers on the + network will detect RT1's absence within RouterDeadInterval seconds. + All routers may not detect this at precisely the same time; the + routers that detect RT1's absence before RT2 does will, for a time, + select RT2 to be both Designated Router and Backup Designated Router. + When RT2 detects that RT1 is gone it will move itself to Designated + Router. At this time, the remaining router having highest Router + Priority will be selected as Backup Designated Router. + + [6]On point-to-point networks, the lower level protocols indicate + whether the neighbor is up and running. Likewise, existence of the + neighbor on virtual links is indicated by the routing table + calculation. However, in both these cases, the Hello Protocol is + still used. This ensures that communication between the neighbors is + bidirectional, and that each of the neighbors has a functioning + routing protocol layer. + + [7]When the identity of the Designated Router is changing, it may be + quite common for a neighbor in this state to send the router a + Database Description packet; this means that there is some momentary + disagreement on the Designated Router's identity. + + [8]Note that it is possible for a router to resynchronize any of its + fully established adjacencies by setting the adjacency's state back + to ExStart. This will cause the other end of the adjacency to + process a SeqNumberMismatch event, and therefore to also go back to + ExStart state. + + + +Moy Standards Track [Page 155] + +RFC 2178 OSPF Version 2 July 1997 + + + [9]The address space of IP networks and the address space of OSPF + Router IDs may overlap. That is, a network may have an IP address + which is identical (when considered as a 32-bit number) to some + router's Router ID. + + [10]"Discard" entries are necessary to ensure that route + summarization at area boundaries will not cause packet looping. + + [11]It is assumed that, for two different address ranges matching the + destination, one range is more specific than the other. Non- + contiguous subnet masks can be configured to violate this assumption. + Such subnet mask configurations cannot be handled by the OSPF + protocol. + + [12]MaxAgeDiff is an architectural constant. It indicates the + maximum dispersion of ages, in seconds, that can occur for a single + LSA instance as it is flooded throughout the routing domain. If two + LSAs differ by more than this, they are assumed to be different + instances of the same LSA. This can occur when a router restarts and + loses track of the LSA's previous LS sequence number. See Section + 13.4 for more details. + + [13]When two LSAs have different LS checksums, they are assumed to be + separate instances. This can occur when a router restarts, and loses + track of the LSA's previous LS sequence number. In the case where + the two LSAs have the same LS sequence number, it is not possible to + determine which LSA is actually newer. However, if the wrong LSA is + accepted as newer, the originating router will simply originate + another instance. See Section 13.4 for further details. + + [14]There is one instance where a lookup must be done based on + partial information. This is during the routing table calculation, + when a network-LSA must be found based solely on its Link State ID. + The lookup in this case is still well defined, since no two network- + LSAs can have the same Link State ID. + + [15]This is the way RFC 1583 specified point-to-point representation. + It has three advantages: a) it does not require allocating a subnet + to the point-to-point link, b) it tends to bias the routing so that + packets destined for the point-to-point interface will actually be + received over the interface (which is useful for diagnostic purposes) + and c) it allows network bootstrapping of a neighbor, without + requiring that the bootstrap program contain an OSPF implementation. + + [16]This is the more traditional point-to-point representation used + by protocols such as RIP. + + + + + +Moy Standards Track [Page 156] + +RFC 2178 OSPF Version 2 July 1997 + + + [17]This clause covers the case: Inter-area routes are not summarized + to the backbone. This is because inter-area routes are always + associated with the backbone area. + + [18]This clause is only invoked when a non-backbone Area A supports + transit data traffic (i.e., has TransitCapability set to TRUE). For + example, in the area configuration of Figure 6, Area 2 can support + transit traffic due to the configured virtual link between Routers + RT10 and RT11. As a result, Router RT11 need only originate a single + summary-LSA into Area 2 (having the collapsed destination N9-N11,H1), + since all of Router RT11's other eligible routes have next hops + belonging to Area 2 itself (and as such only need be advertised by + other area border routers; in this case, Routers RT10 and RT7). + + [19]By keeping more information in the routing table, it is possible + for an implementation to recalculate the shortest path tree for only + a single area. In fact, there are incremental algorithms that allow + an implementation to recalculate only a portion of a single area's + shortest path tree [Ref1]. However, these algorithms are beyond the + scope of this specification. + + [20]This is how the Link state request list is emptied, which + eventually causes the neighbor state to transition to Full. See + Section 10.9 for more details. + + [21]It should be a relatively rare occurrence for an LSA's LS age to + reach MaxAge in this fashion. Usually, the LSA will be replaced by a + more recent instance before it ages out. + + [22]Strictly speaking, because of equal-cost multipath, the algorithm + does not create a tree. We continue to use the "tree" terminology + because that is what occurs most often in the existing literature. + + [23]Note that the presence of any link back to V is sufficient; it + need not be the matching half of the link under consideration from V + to W. This is enough to ensure that, before data traffic flows + between a pair of neighboring routers, their link state databases + will be synchronized. + + [24]When the forwarding address is non-zero, it should point to a + router belonging to another Autonomous System. See Section 12.4.4 + for more details. + + + + + + + + + +Moy Standards Track [Page 157] + +RFC 2178 OSPF Version 2 July 1997 + + +References + + [Ref1] McQuillan, J., I. Richer and E. Rosen, "ARPANET Routing + Algorithm Improvements", BBN Technical Report 3803, April + 1978. + + [Ref2] Digital Equipment Corporation, "Information processing + systems -- Data communications -- Intermediate System to + Intermediate System Intra-Domain Routing Protocol", October + 1987. + + [Ref3] McQuillan, J. et.al., "The New Routing Algorithm for the + ARPANET", IEEE Transactions on Communications, May 1980. + + [Ref4] Perlman, R., "Fault-Tolerant Broadcast of Routing + Information", Computer Networks, December 1983. + + [Ref5] Postel, J., "Internet Protocol", STD 5, RFC 791, + USC/Information Sciences Institute, September 1981. + + [Ref6] McKenzie, A., "ISO Transport Protocol specification ISO DP + 8073", RFC 905, ISO, April 1984. + + [Ref7] Deering, S., "Host extensions for IP multicasting", STD 5, + RFC 1112, Stanford University, May 1988. + + [Ref8] McCloghrie, K., and M. Rose, "Management Information Base + for network management of TCP/IP-based internets: MIB-II", + STD 17, RFC 1213, Hughes LAN Systems, Performance Systems + International, March 1991. + + [Ref9] Moy, J., "OSPF Version 2", RFC 1583, Proteon, Inc., March + 1994. + + [Ref10] Fuller, V., T. Li, J. Yu, and K. Varadhan, "Classless + Inter-Domain Routing (CIDR): an Address Assignment and + Aggregation Strategy", RFC1519, BARRNet, cisco, MERIT, + OARnet, September 1993. + + [Ref11] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC + 1700, USC/Information Sciences Institute, October 1994. + + [Ref12] Almquist, P., "Type of Service in the Internet Protocol + Suite", RFC 1349, July 1992. + + [Ref13] Leiner, B., et.al., "The DARPA Internet Protocol Suite", DDN + Protocol Handbook, April 1985. + + + + +Moy Standards Track [Page 158] + +RFC 2178 OSPF Version 2 July 1997 + + + [Ref14] Bradley, T., and C. Brown, "Inverse Address Resolution + Protocol", RFC 1293, January 1992. + + [Ref15] deSouza, O., and M. Rodrigues, "Guidelines for Running OSPF + Over Frame Relay Networks", RFC 1586, March 1994. + + [Ref16] Bellovin, S., "Security Problems in the TCP/IP Protocol + Suite", ACM Computer Communications Review, Volume 19, + Number 2, pp. 32-38, April 1989. + + [Ref17] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, + April 1992. + + [Ref18] Moy, J., "Multicast Extensions to OSPF", RFC 1584, Proteon, + Inc., March 1994. + + [Ref19] Coltun, R. and V. Fuller, "The OSPF NSSA Option", RFC 1587, + RainbowBridge Communications, Stanford University, March + 1994. + + [Ref20] Ferguson, D., "The OSPF External Attributes LSA", work in + progress. + + [Ref21] Moy, J., "Extending OSPF to Support Demand Circuits", RFC + 1793, Cascade, April 1995. + + [Ref22] Mogul, J. and S. Deering, "Path MTU Discovery", RFC 1191, + DECWRL, Stanford University, November 1990. + + [Ref23] Rekhter, Y. and T. Li, "A Border Gateway Protocol 4 (BGP- + 4)", RFC 1771, T.J. Watson Research Center, IBM Corp., cisco + Systems, March 1995. + + [Ref24] Hinden, R., "Internet Routing Protocol Standardization + Criteria", BBN, October 1991. + + + + + + + + + + + + + + + + +Moy Standards Track [Page 159] + +RFC 2178 OSPF Version 2 July 1997 + + +A. OSPF data formats + + This appendix describes the format of OSPF protocol packets and OSPF + LSAs. The OSPF protocol runs directly over the IP network layer. + Before any data formats are described, the details of the OSPF + encapsulation are explained. + + Next the OSPF Options field is described. This field describes + various capabilities that may or may not be supported by pieces of + the OSPF routing domain. The OSPF Options field is contained in OSPF + Hello packets, Database Description packets and in OSPF LSAs. + + OSPF packet formats are detailed in Section A.3. A description of + OSPF LSAs appears in Section A.4. + +A.1 Encapsulation of OSPF packets + + OSPF runs directly over the Internet Protocol's network layer. OSPF + packets are therefore encapsulated solely by IP and local data-link + headers. + + OSPF does not define a way to fragment its protocol packets, and + depends on IP fragmentation when transmitting packets larger than the + network MTU. If necessary, the length of OSPF packets can be up to + 65,535 bytes (including the IP header). The OSPF packet types that + are likely to be large (Database Description Packets, Link State + Request, Link State Update, and Link State Acknowledgment packets) + can usually be split into several separate protocol packets, without + loss of functionality. This is recommended; IP fragmentation should + be avoided whenever possible. Using this reasoning, an attempt should + be made to limit the sizes of OSPF packets sent over virtual links to + 576 bytes unless Path MTU Discovery is being performed (see [Ref22]). + + The other important features of OSPF's IP encapsulation are: + + o Use of IP multicast. Some OSPF messages are multicast, when + sent over broadcast networks. Two distinct IP multicast addresses + are used. Packets sent to these multicast addresses should never + be forwarded; they are meant to travel a single hop only. To + ensure that these packets will not travel multiple hops, their IP + TTL must be set to 1. + + + + + + + + + + +Moy Standards Track [Page 160] + +RFC 2178 OSPF Version 2 July 1997 + + + AllSPFRouters + This multicast address has been assigned the value 224.0.0.5. All + routers running OSPF should be prepared to receive packets sent to + this address. Hello packets are always sent to this destination. + Also, certain OSPF protocol packets are sent to this address + during the flooding procedure. + + AllDRouters + This multicast address has been assigned the value 224.0.0.6. Both + the Designated Router and Backup Designated Router must be + prepared to receive packets destined to this address. Certain + OSPF protocol packets are sent to this address during the flooding + procedure. + + o OSPF is IP protocol number 89. This number has been registered + with the Network Information Center. IP protocol number + assignments are documented in [Ref11]. + + o All OSPF routing protocol packets are sent using the normal + service TOS value of binary 0000 defined in [Ref12]. + + o Routing protocol packets are sent with IP precedence set to + Internetwork Control. OSPF protocol packets should be given + precedence over regular IP data traffic, in both sending and + receiving. Setting the IP precedence field in the IP header to + Internetwork Control [Ref5] may help implement this objective. + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 161] + +RFC 2178 OSPF Version 2 July 1997 + + +A.2 The Options field + + The OSPF Options field is present in OSPF Hello packets, Database + Description packets and all LSAs. The Options field enables OSPF + routers to support (or not support) optional capabilities, and to + communicate their capability level to other OSPF routers. Through + this mechanism routers of differing capabilities can be mixed within + an OSPF routing domain. + + When used in Hello packets, the Options field allows a router to + reject a neighbor because of a capability mismatch. Alternatively, + when capabilities are exchanged in Database Description packets a + router can choose not to forward certain LSAs to a neighbor because + of its reduced functionality. Lastly, listing capabilities in LSAs + allows routers to forward traffic around reduced functionality + routers, by excluding them from parts of the routing table + calculation. + + Five bits of the OSPF Options field have been assigned, although only + one (the E-bit) is described completely by this memo. Each bit is + described briefly below. Routers should reset (i.e. clear) + unrecognized bits in the Options field when sending Hello packets or + Database Description packets and when originating LSAs. Conversely, + routers encountering unrecognized Option bits in received Hello + Packets, Database Description packets or LSAs should ignore the + capability and process the packet/LSA normally. + + +------------------------------------+ + | * | * | DC | EA | N/P | MC | E | * | + +------------------------------------+ + + The Options field + + E-bit + This bit describes the way AS-external-LSAs are flooded, as + described in Sections 3.6, 9.5, 10.8 and 12.1.2 of this memo. + + MC-bit + This bit describes whether IP multicast datagrams are forwarded + according to the specifications in [Ref18]. + + N/P-bit + This bit describes the handling of Type-7 LSAs, as specified in + [Ref19]. + + EA-bit + This bit describes the router's willingness to receive and + forward External-Attributes-LSAs, as specified in [Ref20]. + + + +Moy Standards Track [Page 162] + +RFC 2178 OSPF Version 2 July 1997 + + + DC-bit + This bit describes the router's handling of demand circuits, as + specified in [Ref21]. + +A.3 OSPF Packet Formats + + There are five distinct OSPF packet types. All OSPF packet types + begin with a standard 24 byte header. This header is described + first. Each packet type is then described in a succeeding section. + In these sections each packet's division into fields is displayed, + and then the field definitions are enumerated. + + All OSPF packet types (other than the OSPF Hello packets) deal with + lists of LSAs. For example, Link State Update packets implement the + flooding of LSAs throughout the OSPF routing domain. Because of + this, OSPF protocol packets cannot be parsed unless the format of + LSAs is also understood. The format of LSAs is described in Section + A.4. + + The receive processing of OSPF packets is detailed in Section 8.2. + The sending of OSPF packets is explained in Section 8.1. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 163] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.1 The OSPF packet header + + Every OSPF packet starts with a standard 24 byte header. This header + contains all the information necessary to determine whether the + packet should be accepted for further processing. This determination + is described in Section 8.2 of the specification. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | Type | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Version # + The OSPF version number. This specification documents version 2 + of the protocol. + + Type + The OSPF packet types are as follows. See Sections A.3.2 through + A.3.6 for details. + + Type Description + ________________________________ + 1 Hello + 2 Database Description + 3 Link State Request + 4 Link State Update + 5 Link State Acknowledgment + + + Packet length + The length of the OSPF protocol packet in bytes. This length + includes the standard OSPF header. + + Router ID + The Router ID of the packet's source. + + + + +Moy Standards Track [Page 164] + +RFC 2178 OSPF Version 2 July 1997 + + + Area ID + A 32 bit number identifying the area that this packet belongs + to. All OSPF packets are associated with a single area. Most + travel a single hop only. Packets travelling over a virtual + link are labelled with the backbone Area ID of 0.0.0.0. + + Checksum + The standard IP checksum of the entire contents of the packet, + starting with the OSPF packet header but excluding the 64-bit + authentication field. This checksum is calculated as the 16-bit + one's complement of the one's complement sum of all the 16-bit + words in the packet, excepting the authentication field. If the + packet's length is not an integral number of 16-bit words, the + packet is padded with a byte of zero before checksumming. The + checksum is considered to be part of the packet authentication + procedure; for some authentication types the checksum + calculation is omitted. + + AuType + Identifies the authentication procedure to be used for the + packet. Authentication is discussed in Appendix D of the + specification. Consult Appendix D for a list of the currently + defined authentication types. + + Authentication + A 64-bit field for use by the authentication scheme. See + Appendix D for details. + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 165] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.2 The Hello packet + + Hello packets are OSPF packet type 1. These packets are sent + periodically on all interfaces (including virtual links) in order to + establish and maintain neighbor relationships. In addition, Hello + Packets are multicast on those physical networks having a multicast + or broadcast capability, enabling dynamic discovery of neighboring + routers. + + All routers connected to a common network must agree on certain + parameters (Network mask, HelloInterval and RouterDeadInterval). + These parameters are included in Hello packets, so that differences + can inhibit the forming of neighbor relationships. A detailed + explanation of the receive processing for Hello packets is presented + in Section 10.5. The sending of Hello packets is covered in Section + 9.5. + + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | 1 | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Network Mask | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | HelloInterval | Options | Rtr Pri | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | RouterDeadInterval | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Designated Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Backup Designated Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Neighbor | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + + + +Moy Standards Track [Page 166] + +RFC 2178 OSPF Version 2 July 1997 + + + Network mask + The network mask associated with this interface. For example, + if the interface is to a class B network whose third byte is + used for subnetting, the network mask is 0xffffff00. + + Options + The optional capabilities supported by the router, as documented + in Section A.2. + + HelloInterval + The number of seconds between this router's Hello packets. + + Rtr Pri + This router's Router Priority. Used in (Backup) Designated + Router election. If set to 0, the router will be ineligible to + become (Backup) Designated Router. + + RouterDeadInterval + The number of seconds before declaring a silent router down. + + Designated Router + The identity of the Designated Router for this network, in the + view of the sending router. The Designated Router is identified + here by its IP interface address on the network. Set to 0.0.0.0 + if there is no Designated Router. + + Backup Designated Router + The identity of the Backup Designated Router for this network, + in the view of the sending router. The Backup Designated Router + is identified here by its IP interface address on the network. + Set to 0.0.0.0 if there is no Backup Designated Router. + + Neighbor + The Router IDs of each router from whom valid Hello packets have + been seen recently on the network. Recently means in the last + RouterDeadInterval seconds. + + + + + + + + + + + + + + + +Moy Standards Track [Page 167] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.3 The Database Description packet + + Database Description packets are OSPF packet type 2. These packets + are exchanged when an adjacency is being initialized. They describe + the contents of the link-state database. Multiple packets may be + used to describe the database. For this purpose a poll-response + procedure is used. One of the routers is designated to be the master, + the other the slave. The master sends Database Description packets + (polls) which are acknowledged by Database Description packets sent + by the slave (responses). The responses are linked to the polls via + the packets' DD sequence numbers. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | 2 | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Interface MTU | Options |0|0|0|0|0|I|M|MS + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DD sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- An LSA Header -+ + | | + +- -+ + | | + +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + The format of the Database Description packet is very similar to both + the Link State Request and Link State Acknowledgment packets. The + main part of all three is a list of items, each item describing a + piece of the link-state database. The sending of Database + + + +Moy Standards Track [Page 168] + +RFC 2178 OSPF Version 2 July 1997 + + + Description Packets is documented in Section 10.8. The reception of + Database Description packets is documented in Section 10.6. + + Interface MTU + The size in bytes of the largest IP datagram that can be sent out + the associated interface, without fragmentation. The MTUs of + common Internet link types can be found in Table 7-1 of [Ref22]. + Interface MTU should be set to 0 in Database Description packets + sent over virtual links. + + Options + The optional capabilities supported by the router, as documented + in Section A.2. + + I-bit + The Init bit. When set to 1, this packet is the first in the + sequence of Database Description Packets. + + M-bit + The More bit. When set to 1, it indicates that more Database + Description Packets are to follow. + + MS-bit + The Master/Slave bit. When set to 1, it indicates that the router + is the master during the Database Exchange process. Otherwise, + the router is the slave. + + DD sequence number + Used to sequence the collection of Database Description Packets. + The initial value (indicated by the Init bit being set) should be + unique. The DD sequence number then increments until the complete + database description has been sent. + + The rest of the packet consists of a (possibly partial) list of the + link-state database's pieces. Each LSA in the database is described + by its LSA header. The LSA header is documented in Section A.4.1. It + contains all the information required to uniquely identify both the + LSA and the LSA's current instance. + + + + + + + + + + + + + +Moy Standards Track [Page 169] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.4 The Link State Request packet + + Link State Request packets are OSPF packet type 3. After exchanging + Database Description packets with a neighboring router, a router may + find that parts of its link-state database are out-of-date. The Link + State Request packet is used to request the pieces of the neighbor's + database that are more up-to-date. Multiple Link State Request + packets may need to be used. + + A router that sends a Link State Request packet has in mind the + precise instance of the database pieces it is requesting. Each + instance is defined by its LS sequence number, LS checksum, and LS + age, although these fields are not specified in the Link State + Request Packet itself. The router may receive even more recent + instances in response. + + The sending of Link State Request packets is documented in Section + 10.9. The reception of Link State Request packets is documented in + Section 10.7. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | 3 | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS type | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + Each LSA requested is specified by its LS type, Link State ID, and + Advertising Router. This uniquely identifies the LSA, but not its + instance. Link State Request packets are understood to be requests + for the most recent instance (whatever that might be). + + + + +Moy Standards Track [Page 170] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.5 The Link State Update packet + + Link State Update packets are OSPF packet type 4. These packets + implement the flooding of LSAs. Each Link State Update packet + carries a collection of LSAs one hop further from their origin. + Several LSAs may be included in a single packet. + + Link State Update packets are multicast on those physical networks + that support multicast/broadcast. In order to make the flooding + procedure reliable, flooded LSAs are acknowledged in Link State + Acknowledgment packets. If retransmission of certain LSAs is + necessary, the retransmitted LSAs are always carried by unicast Link + State Update packets. For more information on the reliable flooding + of LSAs, consult Section 13. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | 4 | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | # LSAs | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- +-+ + | LSAs | + +- +-+ + | ... | + + + + # LSAs + The number of LSAs included in this update. + + The body of the Link State Update packet consists of a list of LSAs. + Each LSA begins with a common 20 byte header, described in Section + A.4.1. Detailed formats of the different types of LSAs are described + in Section A.4. + + + + +Moy Standards Track [Page 171] + +RFC 2178 OSPF Version 2 July 1997 + + +A.3.6 The Link State Acknowledgment packet + + Link State Acknowledgment Packets are OSPF packet type 5. To make + the flooding of LSAs reliable, flooded LSAs are explicitly + acknowledged. This acknowledgment is accomplished through the + sending and receiving of Link State Acknowledgment packets. Multiple + LSAs can be acknowledged in a single Link State Acknowledgment + packet. + + Depending on the state of the sending interface and the sender of the + corresponding Link State Update packet, a Link State Acknowledgment + packet is sent either to the multicast address AllSPFRouters, to the + multicast address AllDRouters, or as a unicast. The sending of Link + State Acknowledgment packets is documented in Section 13.5. The + reception of Link State Acknowledgment packets is documented in + Section 13.7. + + The format of this packet is similar to that of the Data Description + packet. The body of both packets is simply a list of LSA headers. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version # | 5 | Packet length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Router ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Area ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | AuType | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Authentication | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +- -+ + | | + +- An LSA Header -+ + | | + +- -+ + | | + +- -+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + + + +Moy Standards Track [Page 172] + +RFC 2178 OSPF Version 2 July 1997 + + + Each acknowledged LSA is described by its LSA header. The LSA header + is documented in Section A.4.1. It contains all the information + required to uniquely identify both the LSA and the LSA's current + instance. + +A.4 LSA formats + + This memo defines five distinct types of LSAs. Each LSA begins with + a standard 20 byte LSA header. This header is explained in Section + A.4.1. Succeeding sections then diagram the separate LSA types. + + Each LSA describes a piece of the OSPF routing domain. Every router + originates a router-LSA. In addition, whenever the router is elected + Designated Router, it originates a network-LSA. Other types of LSAs + may also be originated (see Section 12.4). All LSAs are then flooded + throughout the OSPF routing domain. The flooding algorithm is + reliable, ensuring that all routers have the same collection of LSAs. + (See Section 13 for more information concerning the flooding + algorithm). This collection of LSAs is called the link-state + database. + + From the link state database, each router constructs a shortest path + tree with itself as root. This yields a routing table (see Section + 11). For the details of the routing table build process, see Section + 16. + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 173] + +RFC 2178 OSPF Version 2 July 1997 + + +A.4.1 The LSA header + + All LSAs begin with a common 20 byte header. This header contains + enough information to uniquely identify the LSA (LS type, Link State + ID, and Advertising Router). Multiple instances of the LSA may exist + in the routing domain at the same time. It is then necessary to + determine which instance is more recent. This is accomplished by + examining the LS age, LS sequence number and LS checksum fields that + are also contained in the LSA header. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS age | Options | LS type | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS checksum | length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + LS age + The time in seconds since the LSA was originated. + + Options + The optional capabilities supported by the described portion of + the routing domain. OSPF's optional capabilities are documented + in Section A.2. + + LS type + The type of the LSA. Each LSA type has a separate advertisement + format. The LSA types defined in this memo are as follows (see + Section 12.1.3 for further explanation): + + + LS Type Description + ___________________________________ + 1 Router-LSAs + 2 Network-LSAs + 3 Summary-LSAs (IP network) + 4 Summary-LSAs (ASBR) + 5 AS-external-LSAs + + + + + +Moy Standards Track [Page 174] + +RFC 2178 OSPF Version 2 July 1997 + + + Link State ID + This field identifies the portion of the internet environment + that is being described by the LSA. The contents of this field + depend on the LSA's LS type. For example, in network-LSAs the + Link State ID is set to the IP interface address of the + network's Designated Router (from which the network's IP address + can be derived). The Link State ID is further discussed in + Section 12.1.4. + + Advertising Router + The Router ID of the router that originated the LSA. For + example, in network-LSAs this field is equal to the Router ID of + the network's Designated Router. + + LS sequence number + Detects old or duplicate LSAs. Successive instances of an LSA + are given successive LS sequence numbers. See Section 12.1.6 + for more details. + + LS checksum + The Fletcher checksum of the complete contents of the LSA, + including the LSA header but excluding the LS age field. See + Section 12.1.7 for more details. + + length + The length in bytes of the LSA. This includes the 20 byte LSA + header. + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 175] + +RFC 2178 OSPF Version 2 July 1997 + + +A.4.2 Router-LSAs + + Router-LSAs are the Type 1 LSAs. Each router in an area originates a + router-LSA. The LSA describes the state and cost of the router's + links (i.e., interfaces) to the area. All of the router's links to + the area must be described in a single router-LSA. For details + concerning the construction of router-LSAs, see Section 12.4.1. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS age | Options | 1 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS checksum | length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 0 |V|E|B| 0 | # links | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link Data | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | # TOS | metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | TOS | 0 | TOS metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link Data | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + In router-LSAs, the Link State ID field is set to the router's OSPF + Router ID. Router-LSAs are flooded throughout a single area only. + + bit V + When set, the router is an endpoint of one or more fully adjacent + virtual links having the described area as Transit area (V is for + virtual link endpoint). + + + + +Moy Standards Track [Page 176] + +RFC 2178 OSPF Version 2 July 1997 + + + bit E + When set, the router is an AS boundary router (E is for external). + + bit B + When set, the router is an area border router (B is for border). + + # links + The number of router links described in this LSA. This must be + the total collection of router links (i.e., interfaces) to the + area. + + The following fields are used to describe each router link (i.e., + interface). Each router link is typed (see the below Type field). + The Type field indicates the kind of link being described. It may be + a link to a transit network, to another router or to a stub network. + The values of all the other fields describing a router link depend on + the link's Type. For example, each link has an associated 32-bit + Link Data field. For links to stub networks this field specifies the + network's IP address mask. For other link types the Link Data field + specifies the router interface's IP address. + + Type + A quick description of the router link. One of the following. + Note that host routes are classified as links to stub networks + with network mask of 0xffffffff. + + Type Description + __________________________________________________ + 1 Point-to-point connection to another router + 2 Connection to a transit network + 3 Connection to a stub network + 4 Virtual link + + Link ID + Identifies the object that this router link connects to. Value + depends on the link's Type. When connecting to an object that + also originates an LSA (i.e., another router or a transit + network) the Link ID is equal to the neighboring LSA's Link + State ID. This provides the key for looking up the neighboring + LSA in the link state database during the routing table + calculation. See Section 12.2 for more details. + + + + + + + + + + +Moy Standards Track [Page 177] + +RFC 2178 OSPF Version 2 July 1997 + + + Type Link ID + ______________________________________ + 1 Neighboring router's Router ID + 2 IP address of Designated Router + 3 IP network/subnet number + 4 Neighboring router's Router ID + + Link Data + Value again depends on the link's Type field. For connections to + stub networks, Link Data specifies the network's IP address + mask. For unnumbered point-to-point connections, it specifies + the interface's MIB-II [Ref8] ifIndex value. For the other link + types it specifies the router interface's IP address. This + latter piece of information is needed during the routing table + build process, when calculating the IP address of the next hop. + See Section 16.1.1 for more details. + + # TOS + The number of different TOS metrics given for this link, not + counting the required link metric (referred to as the TOS 0 + metric in [Ref9]). For example, if no additional TOS metrics + are given, this field is set to 0. + + metric + The cost of using this router link. + + Additional TOS-specific information may also be included, for + backward compatibility with previous versions of the OSPF + specification ([Ref9]). Within each link, and for each desired TOS, + TOS TOS-specific link information may be encoded as follows: + + TOS IP Type of Service that this metric refers to. The encoding of + TOS in OSPF LSAs is described in Section 12.3. + + TOS metric + TOS-specific metric information. + + + + + + + + + + + + + + + +Moy Standards Track [Page 178] + +RFC 2178 OSPF Version 2 July 1997 + + +A.4.3 Network-LSAs + + Network-LSAs are the Type 2 LSAs. A network-LSA is originated for + each broadcast and NBMA network in the area which supports two or + more routers. The network-LSA is originated by the network's + Designated Router. The LSA describes all routers attached to the + network, including the Designated Router itself. The LSA's Link + State ID field lists the IP interface address of the Designated + Router. + + The distance from the network to all attached routers is zero. This + is why metric fields need not be specified in the network-LSA. For + details concerning the construction of network-LSAs, see Section + 12.4.2. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS age | Options | 2 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS checksum | length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Network Mask | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Attached Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + Network Mask + The IP address mask for the network. For example, a class A + network would have the mask 0xff000000. + + Attached Router + The Router IDs of each of the routers attached to the network. + Actually, only those routers that are fully adjacent to the + Designated Router are listed. The Designated Router includes + itself in this list. The number of routers included can be + deduced from the LSA header's length field. + + + + + + +Moy Standards Track [Page 179] + +RFC 2178 OSPF Version 2 July 1997 + + +A.4.4 Summary-LSAs + + Summary-LSAs are the Type 3 and 4 LSAs. These LSAs are originated by + area border routers. Summary-LSAs describe inter-area destinations. + For details concerning the construction of summary-LSAs, see Section + 12.4.3. + + Type 3 summary-LSAs are used when the destination is an IP network. + In this case the LSA's Link State ID field is an IP network number + (if necessary, the Link State ID can also have one or more of the + network's "host" bits set; see Appendix E for details). When the + destination is an AS boundary router, a Type 4 summary-LSA is used, + and the Link State ID field is the AS boundary router's OSPF Router + ID. (To see why it is necessary to advertise the location of each + ASBR, consult Section 16.4.) Other than the difference in the Link + State ID field, the format of Type 3 and 4 summary-LSAs is identical. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS age | Options | 3 or 4 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS checksum | length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Network Mask | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 0 | metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | TOS | TOS metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + For stub areas, Type 3 summary-LSAs can also be used to describe a + (per-area) default route. Default summary routes are used in stub + areas instead of flooding a complete set of external routes. When + describing a default summary route, the summary-LSA's Link State ID + is always set to DefaultDestination (0.0.0.0) and the Network Mask is + set to 0.0.0.0. + + + + + + +Moy Standards Track [Page 180] + +RFC 2178 OSPF Version 2 July 1997 + + + Network Mask + For Type 3 summary-LSAs, this indicates the destination network's + IP address mask. For example, when advertising the location of a + class A network the value 0xff000000 would be used. This field is + not meaningful and must be zero for Type 4 summary-LSAs. + + metric + The cost of this route. Expressed in the same units as the + interface costs in the router-LSAs. + + Additional TOS-specific information may also be included, for + backward compatibility with previous versions of the OSPF + specification ([Ref9]). For each desired TOS, TOS-specific + information is encoded as follows: + + TOS IP Type of Service that this metric refers to. The encoding of + TOS in OSPF LSAs is described in Section 12.3. + + TOS metric + TOS-specific metric information. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 181] + +RFC 2178 OSPF Version 2 July 1997 + + +A.4.5 AS-external-LSAs + + AS-external-LSAs are the Type 5 LSAs. These LSAs are originated by + AS boundary routers, and describe destinations external to the AS. + For details concerning the construction of AS-external-LSAs, see + Section 12.4.3. + + AS-external-LSAs usually describe a particular external destination. + For these LSAs the Link State ID field specifies an IP network number + (if necessary, the Link State ID can also have one or more of the + network's "host" bits set; see Appendix E for details). AS- + external-LSAs are also used to describe a default route. Default + routes are used when no specific route exists to the destination. + When describing a default route, the Link State ID is always set to + DefaultDestination (0.0.0.0) and the Network Mask is set to 0.0.0.0. + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS age | Options | 5 | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Link State ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Advertising Router | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | LS checksum | length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Network Mask | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |E| 0 | metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forwarding address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | External Route Tag | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |E| TOS | TOS metric | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Forwarding address | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | External Route Tag | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | ... | + + + + + + + +Moy Standards Track [Page 182] + +RFC 2178 OSPF Version 2 July 1997 + + + Network Mask + The IP address mask for the advertised destination. For + example, when advertising a class A network the mask 0xff000000 + would be used. + + bit E + The type of external metric. If bit E is set, the metric + specified is a Type 2 external metric. This means the metric is + considered larger than any link state path. If bit E is zero, + the specified metric is a Type 1 external metric. This means + that it is expressed in the same units as the link state metric + (i.e., the same units as interface cost). + + metric + The cost of this route. Interpretation depends on the external + type indication (bit E above). + + Forwarding address + Data traffic for the advertised destination will be forwarded to + this address. If the Forwarding address is set to 0.0.0.0, data + traffic will be forwarded instead to the LSA's originator (i.e., + the responsible AS boundary router). + + External Route Tag + A 32-bit field attached to each external route. This is not + used by the OSPF protocol itself. It may be used to communicate + information between AS boundary routers; the precise nature of + such information is outside the scope of this specification. + + Additional TOS-specific information may also be included, for + backward compatibility with previous versions of the OSPF + specification ([Ref9]). For each desired TOS, TOS-specific + information is encoded as follows: + + TOS The Type of Service that the following fields concern. The + encoding of TOS in OSPF LSAs is described in Section 12.3. + + bit E + For backward-compatibility with [Ref9]. + + TOS metric + TOS-specific metric information. + + Forwarding address + For backward-compatibility with [Ref9]. + + External Route Tag + For backward-compatibility with [Ref9]. + + + +Moy Standards Track [Page 183] + +RFC 2178 OSPF Version 2 July 1997 + + +B. Architectural Constants + + Several OSPF protocol parameters have fixed architectural values. + These parameters have been referred to in the text by names such as + LSRefreshTime. The same naming convention is used for the + configurable protocol parameters. They are defined in Appendix C. + + The name of each architectural constant follows, together with its + value and a short description of its function. + + LSRefreshTime + The maximum time between distinct originations of any particular + LSA. If the LS age field of one of the router's self-originated + LSAs reaches the value LSRefreshTime, a new instance of the LSA is + originated, even though the contents of the LSA (apart from the + LSA header) will be the same. The value of LSRefreshTime is set + to 30 minutes. + + MinLSInterval + The minimum time between distinct originations of any particular + LSA. The value of MinLSInterval is set to 5 seconds. + + MinLSArrival + For any particular LSA, the minimum time that must elapse + between reception of new LSA instances during flooding. LSA + instances received at higher frequencies are discarded. The value + of MinLSArrival is set to 1 second. + + MaxAge + The maximum age that an LSA can attain. When an LSA's LS age field + reaches MaxAge, it is reflooded in an attempt to flush the LSA + from the routing domain (See Section 14). LSAs of age MaxAge are + not used in the routing table calculation. The value of MaxAge is + set to 1 hour. + + CheckAge + When the age of an LSA in the link state database hits a multiple + of CheckAge, the LSA's checksum is verified. An incorrect + checksum at this time indicates a serious error. The value of + CheckAge is set to 5 minutes. + + MaxAgeDiff + The maximum time dispersion that can occur, as an LSA is flooded + throughout the AS. Most of this time is accounted for by the LSAs + sitting on router output queues (and therefore not aging) during + the flooding process. The value of MaxAgeDiff is set to 15 + minutes. + + + + +Moy Standards Track [Page 184] + +RFC 2178 OSPF Version 2 July 1997 + + + LSInfinity + The metric value indicating that the destination described by an + LSA is unreachable. Used in summary-LSAs and AS-external-LSAs as + an alternative to premature aging (see Section 14.1). It is + defined to be the 24-bit binary value of all ones: 0xffffff. + + DefaultDestination + The Destination ID that indicates the default route. This route + is used when no other matching routing table entry can be found. + The default destination can only be advertised in AS-external- + LSAs and in stub areas' type 3 summary-LSAs. Its value is the IP + address 0.0.0.0. Its associated Network Mask is also always + 0.0.0.0. + + InitialSequenceNumber + The value used for LS Sequence Number when originating the first + instance of any LSA. Its value is the signed 32-bit integer + 0x80000001. + + MaxSequenceNumber + The maximum value that LS Sequence Number can attain. Its value + is the signed 32-bit integer 0x7fffffff. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 185] + +RFC 2178 OSPF Version 2 July 1997 + + +C. Configurable Constants + + The OSPF protocol has quite a few configurable parameters. These + parameters are listed below. They are grouped into general + functional categories (area parameters, interface parameters, etc.). + Sample values are given for some of the parameters. + + Some parameter settings need to be consistent among groups of + routers. For example, all routers in an area must agree on that + area's parameters, and all routers attached to a network must agree + on that network's IP network number and mask. + + Some parameters may be determined by router algorithms outside of + this specification (e.g., the address of a host connected to the + router via a SLIP line). From OSPF's point of view, these items are + still configurable. + +C.1 Global parameters + + In general, a separate copy of the OSPF protocol is run for each + area. Because of this, most configuration parameters are defined on + a per-area basis. The few global configuration parameters are listed + below. + + Router ID + This is a 32-bit number that uniquely identifies the router in + the Autonomous System. One algorithm for Router ID assignment is + to choose the largest or smallest IP address assigned 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. Before restarting in order to change its Router ID, the + router should flush its self-originated LSAs from the routing + domain (see Section 14.1), or they will persist for up to MaxAge + minutes. + + RFC1583Compatibility + Controls the preference rules used in Section 16.4 when choosing + among multiple AS-external-LSAs advertising the same destination. + When set to "enabled", the preference rules remain those + specified by RFC 1583 ([Ref9]). When set to "disabled", the + preference rules are those stated in Section 16.4.1, which + prevent routing loops when AS- external-LSAs for the same + destination have been originated from different areas (see + Section G.7). Set to "enabled" by default. + + + + + + + +Moy Standards Track [Page 186] + +RFC 2178 OSPF Version 2 July 1997 + + + In order to minimize the chance of routing loops, all OSPF + routers in an OSPF routing domain should have + RFC1583Compatibility set identically. When there are routers + present that have not been updated with the functionality + specified in Section 16.4.1 of this memo, all routers should have + RFC1583Compatibility set to "enabled". Otherwise, all routers + should have RFC1583Compatibility set to "disabled", preventing + all routing loops. + +C.2 Area parameters + + All routers belonging to an area must agree on that area's + configuration. Disagreements between two routers will lead to an + inability for adjacencies to form between them, with a resulting + hindrance to the flow of routing protocol and data traffic. The + following items must be configured for an area: + + Area ID + This is a 32-bit number that identifies the area. The Area ID of + 0.0.0.0 is reserved for the backbone. If the area represents a + subnetted network, the IP network number of the subnetted network + may be used for the Area ID. + + List of address ranges + An OSPF area is defined as a list of address ranges. Each address + range consists of the following items: + + [IP address, mask] + Describes the collection of IP addresses contained in the + address range. Networks and hosts are assigned to an area + depending on whether their addresses fall into one of the + area's defining address ranges. Routers are viewed as + belonging to multiple areas, depending on their attached + networks' area membership. + + Status Set to either Advertise or DoNotAdvertise. Routing + information is condensed at area boundaries. External to the + area, at most a single route is advertised (via a summary- + LSA) for each address range. The route is advertised if and + only if the address range's Status is set to Advertise. + Unadvertised ranges allow the existence of certain networks + to be intentionally hidden from other areas. Status is set to + Advertise by default. + + + + + + + + +Moy Standards Track [Page 187] + +RFC 2178 OSPF Version 2 July 1997 + + + As an example, suppose an IP subnetted network is to be its + own OSPF area. The area would be configured as a single + address range, whose IP address is the address of the + subnetted network, and whose mask is the natural class A, B, + or C address mask. A single route would be advertised + external to the area, describing the entire subnetted + network. + + ExternalRoutingCapability + Whether AS-external-LSAs will be flooded into/throughout the + area. If AS-external-LSAs are excluded from the area, the + area is called a "stub". Internal to stub areas, routing to + 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. + +C.3 Router interface parameters + + Some of the configurable router interface parameters (such as IP + interface address and subnet mask) actually imply properties of the + attached networks, and therefore must be consistent across all the + routers attached to that network. The parameters that must be + configured for a router interface are: + + IP interface address + The IP protocol address for this interface. This uniquely + identifies the router over the entire internet. An IP address is + not required on point-to-point networks. Such a point-to-point + network is called "unnumbered". + + IP interface mask + Also referred to as the subnet/network mask, this indicates the + portion of the IP interface address that identifies the attached + network. Masking the IP interface address with the IP interface + mask yields the IP network number of the attached network. On + point-to-point networks and virtual links, the IP interface mask + is not defined. On these networks, the link itself is not + assigned an IP network number, and so the addresses of each side + of the link are assigned independently, if they are assigned at + all. + + + + +Moy Standards Track [Page 188] + +RFC 2178 OSPF Version 2 July 1997 + + + Area ID + The OSPF area to which the attached network belongs. + + Interface output cost + The cost of sending a packet on the interface, expressed in the + link state metric. This is advertised as the link cost for this + interface in the router's router-LSA. The interface output cost + must always be greater than 0. + + RxmtInterval + The number of seconds between LSA retransmissions, for + adjacencies belonging to this interface. Also used when + retransmitting Database Description and Link State Request + Packets. This should be well over the expected round-trip delay + between any two routers on the attached network. The setting of + this value should be conservative or needless retransmissions + will result. Sample value for a local area network: 5 seconds. + + InfTransDelay + The estimated number of seconds it takes to transmit a Link State + Update Packet over this interface. LSAs contained in the update + packet must have their age incremented by this amount before + transmission. This value should take into account the + transmission and propagation delays of the interface. It must be + greater than 0. Sample value for a local area network: 1 second. + + Router Priority + An 8-bit unsigned integer. When two routers attached to a network + both attempt to become Designated Router, the one with the + highest Router Priority takes precedence. If there is still a + tie, the router with the highest Router ID takes precedence. A + router whose Router Priority is set to 0 is ineligible to become + Designated Router on the attached network. Router Priority is + only configured for interfaces to broadcast and NBMA networks. + + HelloInterval + The length of time, in seconds, between the Hello Packets that + the router sends on the interface. This value is advertised in + the router's Hello Packets. It must be the same for all routers + attached to a common network. The smaller the HelloInterval, the + faster topological changes will be detected; however, more OSPF + routing protocol traffic will ensue. Sample value for a X.25 PDN + network: 30 seconds. Sample value for a local area network: 10 + seconds. + + + + + + + +Moy Standards Track [Page 189] + +RFC 2178 OSPF Version 2 July 1997 + + + RouterDeadInterval + After ceasing to hear a router's Hello Packets, the number of + seconds before its neighbors declare the router down. This is + also advertised in the router's Hello Packets in their + RouterDeadInterval field. This should be some multiple of the + HelloInterval (say 4). This value again must be the same for all + routers attached to a common network. + + AuType + Identifies the authentication procedure to be used on the + attached network. This value must be the same for all routers + attached to the network. See Appendix D for a discussion of the + defined authentication types. + + Authentication key + This configured data allows the authentication procedure to + verify OSPF protocol packets received over the interface. For + example, if the AuType indicates simple password, the + Authentication key would be a clear 64-bit password. + Authentication keys associated with the other OSPF authentication + types are discussed in Appendix D. + +C.4 Virtual link parameters + + Virtual links are used to restore/increase connectivity of the + backbone. Virtual links may be configured between any pair of area + border routers having interfaces to a common (non-backbone) area. + The virtual link appears as an unnumbered point-to-point link in the + graph for the backbone. The virtual link must be configured in both + of the area border routers. + + A virtual link appears in router-LSAs (for the backbone) as if it + were a separate router interface to the backbone. As such, it has + all of the parameters associated with a router interface (see Section + C.3). Although a virtual link acts like an unnumbered point-to-point + link, it does have an associated IP interface address. This address + is used as the IP source in OSPF protocol packets it sends along the + virtual link, and is set dynamically during the routing table build + process. Interface output cost is also set dynamically on virtual + links to be the cost of the intra-area path between the two routers. + The parameter RxmtInterval must be configured, and should be well + over the expected round-trip delay between the two routers. This may + be hard to estimate for a virtual link; it is better to err on the + side of making it too large. Router Priority is not used on virtual + links. + + + + + + +Moy Standards Track [Page 190] + +RFC 2178 OSPF Version 2 July 1997 + + + A virtual link is defined by the following two configurable + parameters: the Router ID of the virtual link's other endpoint, and + the (non-backbone) area through which the virtual link runs (referred + to as the virtual link's Transit area). Virtual links cannot be + configured through stub areas. + +C.5 NBMA network parameters + + OSPF treats an NBMA network much like it treats a broadcast network. + Since there may be many routers attached to the network, a Designated + Router is selected for the network. This Designated Router then + originates a network-LSA, which lists all routers attached to the + NBMA network. + + However, due to the lack of broadcast capabilities, it may be + necessary to use configuration parameters in the Designated Router + selection. These parameters will only need to be configured in those + routers that are themselves eligible to become Designated Router + (i.e., those router's whose Router Priority for the network is non- + zero), and then only if no automatic procedure for discovering + neighbors exists: + + List of all other attached routers + The list of all other routers attached to the NBMA network. Each + router is listed by its IP interface address on the network. + Also, for each router listed, that router's eligibility to become + Designated Router must be defined. When an interface to a NBMA + network comes up, the router sends Hello Packets only to those + neighbors eligible to become Designated Router, until the + identity of the Designated Router is discovered. + + PollInterval + If a neighboring router has become inactive (Hello Packets have + not been seen for RouterDeadInterval seconds), it may still be + necessary to send Hello Packets to the dead neighbor. These + Hello Packets will be sent at the reduced rate PollInterval, + which should be much larger than HelloInterval. Sample value for + a PDN X.25 network: 2 minutes. + +C.6 Point-to-MultiPoint network parameters + + On Point-to-MultiPoint networks, it may be necessary to configure the + set of neighbors that are directly reachable over the Point-to- + MultiPoint network. Each neighbor is identified by its IP address on + the Point-to-MultiPoint network. Designated Routers are not elected + on Point-to-MultiPoint networks, so the Designated Router eligibility + of configured neighbors is undefined. + + + + +Moy Standards Track [Page 191] + +RFC 2178 OSPF Version 2 July 1997 + + + Alternatively, neighbors on Point-to-MultiPoint networks may be + dynamically discovered by lower-level protocols such as Inverse ARP + ([Ref14]). + +C.7 Host route parameters + + Host routes are advertised in router-LSAs as stub networks with mask + 0xffffffff. They indicate either router interfaces to point-to-point + networks, looped router interfaces, or IP hosts that are directly + connected to the router (e.g., via a SLIP line). For each host + directly connected to the router, the following items must be + configured: + + Host IP address + The IP address of the host. + + Cost of link to host + The cost of sending a packet to the host, in terms of the link + state metric. However, since the host probably has only a single + connection to the internet, the actual configured cost in many + cases is unimportant (i.e., will have no effect on routing). + + Area ID + The OSPF area to which the host belongs. + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 192] + +RFC 2178 OSPF Version 2 July 1997 + + +D. Authentication + + All OSPF protocol exchanges are authenticated. The OSPF packet + header (see Section A.3.1) includes an authentication type field, and + 64-bits of data for use by the appropriate authentication scheme + (determined by the type field). + + The authentication type is configurable on a per-interface (or + equivalently, on a per-network/subnet) basis. Additional + authentication data is also configurable on a per-interface basis. + + Authentication types 0, 1 and 2 are defined by this specification. + All other authentication types are reserved for definition by the + IANA (iana@ISI.EDU). The current list of authentication types is + described below in Table 20. + + AuType Description + ___________________________________________ + 0 Null authentication + 1 Simple password + 2 Cryptographic authentication + All others Reserved for assignment by the + IANA (iana@ISI.EDU) + + + Table 20: OSPF authentication types. + + +D.1 Null authentication + + Use of this authentication type means that routing exchanges over the + network/subnet are not authenticated. The 64-bit authentication field + in the OSPF header can contain anything; it is not examined on packet + reception. When employing Null authentication, the entire contents of + each OSPF packet (other than the 64-bit authentication field) are + checksummed in order to detect data corruption. + +D.2 Simple password authentication + + Using this authentication type, a 64-bit field is configured on a + per-network basis. All packets sent on a particular network must + have this configured value in their OSPF header 64-bit authentication + field. This essentially serves as a "clear" 64- bit password. In + addition, the entire contents of each OSPF packet (other than the + 64-bit authentication field) are checksummed in order to detect data + corruption. + + + + + +Moy Standards Track [Page 193] + +RFC 2178 OSPF Version 2 July 1997 + + + Simple password authentication guards against routers inadvertently + joining the routing domain; each router must first be configured with + its attached networks' passwords before it can participate in + routing. However, simple password authentication is vulnerable to + passive attacks currently widespread in the Internet (see [Ref16]). + Anyone with physical access to the network can learn the password and + compromise the security of the OSPF routing domain. + +D.3 Cryptographic authentication + + Using this authentication type, a shared secret key is configured in + all routers attached to a common network/subnet. For each OSPF + protocol packet, the key is used to generate/verify a "message + digest" that is appended to the end of the OSPF packet. The message + digest is a one-way function of the OSPF protocol packet and the + secret key. Since the secret key is never sent over the network in + the clear, protection is provided against passive attacks. + + The algorithms used to generate and verify the message digest are + specified implicitly by the secret key. This specification completely + defines the use of OSPF Cryptographic authentication when the MD5 + algorithm is used. + + In addition, a non-decreasing sequence number is included in each + OSPF protocol packet to protect against replay attacks. This + provides long term protection; however, it is still possible to + replay an OSPF packet until the sequence number changes. To implement + this feature, each neighbor data structure + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | 0 | Key ID | Auth Data Len | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cryptographic sequence number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Figure 18: Usage of the Authentication field + in the OSPF packet header when Cryptographic + Authentication is employed + + contains a new field called the "cryptographic sequence number". + This field is initialized to zero, and is also set to zero whenever + the neighbor's state transitions to "Down". Whenever an OSPF packet + is accepted as authentic, the cryptographic sequence number is set to + the received packet's sequence number. + + + + + +Moy Standards Track [Page 194] + +RFC 2178 OSPF Version 2 July 1997 + + + This specification does not provide a rollover procedure for the + cryptographic sequence number. When the cryptographic sequence number + that the router is sending hits the maximum value, the router should + reset the cryptographic sequence number that it is sending back to 0. + After this is done, the router's neighbors will reject the router's + OSPF packets for a period of RouterDeadInterval, and then the router + will be forced to reestablish all adjacencies over the interface. + However, it is expected that many implementations will use "seconds + since reboot" (or "seconds since 1960", etc.) as the cryptographic + sequence number. Such a choice will essentially prevent rollover, + since the cryptographic sequence number field is 32 bits in length. + + The OSPF Cryptographic authentication option does not provide + confidentiality. + + When cryptographic authentication is used, the 64-bit Authentication + field in the standard OSPF packet header is redefined as shown in + Figure 18. The new field definitions are as follows: + + Key ID + This field identifies the algorithm and secret key used to create + the message digest appended to the OSPF packet. Key Identifiers + are unique per-interface (or equivalently, per- subnet). + + Auth Data Len + The length in bytes of the message digest appended to the OSPF + packet. + + Cryptographic sequence number + An unsigned 32-bit non-decreasing sequence number. Used to guard + against replay attacks. + + The message digest appended to the OSPF packet is not actually + considered part of the OSPF protocol packet: the message digest is + not included in the OSPF header's packet length, although it is + included in the packet's IP header length field. + + Each key is identified by the combination of interface and Key ID. An + interface may have multiple keys active at any one time. This + enables smooth transition from one key to another. Each key has four + time constants associated with it. These time constants can be + expressed in terms of a time-of-day clock, or in terms of a router's + local clock (e.g., number of seconds since last reboot): + + KeyStartAccept + The time that the router will start accepting packets that + have been created with the given key. + + + + +Moy Standards Track [Page 195] + +RFC 2178 OSPF Version 2 July 1997 + + + KeyStartGenerate + The time that the router will start using the key for packet + generation. + + KeyStopGenerate + The time that the router will stop using the key for packet + generation. + + KeyStopAccept + The time that the router will stop accepting packets that + have been created with the given key. + + In order to achieve smooth key transition, KeyStartAccept should be + less than KeyStartGenerate and KeyStopGenerate should be less than + KeyStopAccept. If KeyStopGenerate and KeyStopAccept are left + unspecified, the key's lifetime is infinite. When a new key replaces + an old, the KeyStartGenerate time for the new key must be less than + or equal to the KeyStopGenerate time of the old key. + + Key storage should persist across a system restart, warm or cold, to + avoid operational issues. In the event that the last key associated + with an interface expires, it is unacceptable to revert to an + unauthenticated condition, and not advisable to disrupt routing. + Therefore, the router should send a "last authentication key + expiration" notification to the network manager and treat the key as + having an infinite lifetime until the lifetime is extended, the key + is deleted by network management, or a new key is configured. + +D.4 Message generation + + After building the contents of an OSPF packet, the authentication + procedure indicated by the sending interface's Autype value is called + before the packet is sent. The authentication procedure modifies the + OSPF packet as follows. + +D.4.1 Generating Null authentication + + When using Null authentication, the packet is modified as follows: + + (1) The Autype field in the standard OSPF header is set to + 0. + + + + + + + + + + +Moy Standards Track [Page 196] + +RFC 2178 OSPF Version 2 July 1997 + + + (2) The checksum field in the standard OSPF header is set to + the standard IP checksum of the entire contents of the packet, + starting with the OSPF packet header but excluding the 64-bit + authentication field. This checksum is calculated as the 16-bit + one's complement of the one's complement sum of all the 16-bit + words in the packet, excepting the authentication field. If the + packet's length is not an integral number of 16-bit words, the + packet is padded with a byte of zero before checksumming. + +D.4.2 Generating Simple password authentication + + When using Simple password authentication, the packet is modified as + follows: + + (1) The Autype field in the standard OSPF header is set to 1. + + (2) The checksum field in the standard OSPF header is set to the + standard IP checksum of the entire contents of the packet, + starting with the OSPF packet header but excluding the 64-bit + authentication field. This checksum is calculated as the 16-bit + one's complement of the one's complement sum of all the 16-bit + words in the packet, excepting the authentication field. If the + packet's length is not an integral number of 16-bit words, the + packet is padded with a byte of zero before checksumming. + + (3) The 64-bit authentication field in the OSPF packet header + is set to the 64-bit password (i.e., authentication key) that has + been configured for the interface. + +D.4.3 Generating Cryptographic authentication + + When using Cryptographic authentication, there may be multiple keys + configured for the interface. In this case, among the keys that are + valid for message generation (i.e, that have KeyStartGenerate <= + current time < KeyStopGenerate) choose the one with the most recent + KeyStartGenerate time. Using this key, modify the packet as follows: + + (1) The Autype field in the standard OSPF header is set to + 2. + + (2) The checksum field in the standard OSPF header is not + calculated, but is instead set to 0. + + (3) The Key ID (see Figure 18) is set to the chosen key's + Key ID. + + + + + + +Moy Standards Track [Page 197] + +RFC 2178 OSPF Version 2 July 1997 + + + (4) The Auth Data Len field is set to the length in bytes of + the message digest that will be appended to the OSPF packet. When + using MD5 as the authentication algorithm, Auth Data Len will be + 16. + + (5) The 32-bit Cryptographic sequence number (see Figure 18) + is set to a non-decreasing value (i.e., a value at least as large + as the last value sent out the interface). The precise values to + use in the cryptographic sequence number field are + implementation-specific. For example, it may be based on a + simple counter, or be based on the system's clock. + + (6) The message digest is then calculated and appended to + the OSPF packet. The authentication algorithm to be used in + calculating the digest is indicated by the key itself. Input to + the authentication algorithm consists of the OSPF packet and the + secret key. When using MD5 as the authentication algorithm, the + message digest calculation proceeds as follows: + + (a) The 16 byte MD5 key is appended to the OSPF packet. + + (b) Trailing pad and length fields are added, as specified in + [Ref17]. + + (c) The MD5 authentication algorithm is run over the + concatenation of the OSPF packet, secret key, pad and + length fields, producing a 16 byte message digest (see + [Ref17]). + + (d) The MD5 digest is written over the OSPF key (i.e., + appended to the original OSPF packet). The digest is not + counted in the OSPF packet's length field, but is included + in the packet's IP length field. Any trailing pad or + length fields beyond the digest are not counted or + transmitted. + +D.5 Message verification + + When an OSPF packet has been received on an interface, it must be + authenticated. The authentication procedure is indicated by the + setting of Autype in the standard OSPF packet header, which matches + the setting of Autype for the receiving OSPF interface. + + If an OSPF protocol packet is accepted as authentic, processing of + the packet continues as specified in Section 8.2. Packets which fail + authentication are discarded. + + + + + +Moy Standards Track [Page 198] + +RFC 2178 OSPF Version 2 July 1997 + + +D.5.1 Verifying Null authentication + + When using Null authentication, the checksum field in the OSPF header + must be verified. It must be set to the 16-bit one's complement of + the one's complement sum of all the 16-bit words in the packet, + excepting the authentication field. (If the packet's length is not + an integral number of 16-bit words, the packet is padded with a byte + of zero before checksumming.) + +D.5.2 Verifying Simple password authentication + + When using Simple password authentication, the received OSPF packet + is authenticated as follows: + + (1) The checksum field in the OSPF header must be verified. + It must be set to the 16-bit one's complement of the + one's complement sum of all the 16-bit words in the + packet, excepting the authentication field. (If the + packet's length is not an integral number of 16-bit + words, the packet is padded with a byte of zero before + checksumming.) + + (2) The 64-bit authentication field in the OSPF packet + header must be equal to the 64-bit password (i.e., + authentication key) that has been configured for the + interface. + +D.5.3 Verifying Cryptographic authentication + + When using Cryptographic authentication, the received OSPF packet is + authenticated as follows: + + (1) Locate the receiving interface's configured key having + Key ID equal to that specified in the received OSPF + packet (see Figure 18). If the key is not found, or if + the key is not valid for reception (i.e., current time < + KeyStartAccept or current time >= KeyStopAccept), the + OSPF packet is discarded. + + (2) If the cryptographic sequence number found in the OSPF + header (see Figure 18) is less than the cryptographic + sequence number recorded in the sending neighbor's data + structure, the OSPF packet is discarded. + + (3) Verify the appended message digest in the following + steps: + + (a) The received digest is set aside. + + + +Moy Standards Track [Page 199] + +RFC 2178 OSPF Version 2 July 1997 + + + (b) A new digest is calculated, as specified in Step 6 + of Section D.4.3. + + (c) The calculated and received digests are compared. If + they do not match, the OSPF packet is discarded. If + they do match, the OSPF protocol packet is accepted + as authentic, and the "cryptographic sequence + number" in the neighbor's data structure is set to + the sequence number found in the packet's OSPF + header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 200] + +RFC 2178 OSPF Version 2 July 1997 + + +E. An algorithm for assigning Link State IDs + + The Link State ID in AS-external-LSAs and summary-LSAs is usually set + to the described network's IP address. However, if necessary one or + more of the network's host bits may be set in the Link State ID. + This allows the router to originate separate LSAs for networks having + the same address, yet different masks. Such networks can occur in the + presence of supernetting and subnet 0s (see [Ref10]). + + This appendix gives one possible algorithm for setting the host bits + in Link State IDs. The choice of such an algorithm is a local + decision. Separate routers are free to use different algorithms, + since the only LSAs affected are the ones that the router itself + originates. The only requirement on the algorithms used is that the + network's IP address should be used as the Link State ID whenever + possible; this maximizes interoperability with OSPF implementations + predating RFC 1583. + + The algorithm below is stated for AS-external-LSAs. This is only for + clarity; the exact same algorithm can be used for summary-LSAs. + Suppose that the router wishes to originate an AS-external-LSA for a + network having address NA and mask NM1. The following steps are then + used to determine the LSA's Link State ID: + + (1) Determine whether the router is already originating an AS- + external-LSA with Link State ID equal to NA (in such an LSA the + router itself will be listed as the LSA's Advertising Router). + If not, the Link State ID is set equal to NA and the algorithm + terminates. Otherwise, + + (2) Obtain the network mask from the body of the already existing + AS-external-LSA. Call this mask NM2. There are then two cases: + + o NM1 is longer (i.e., more specific) than NM2. In this case, + set the Link State ID in the new LSA to be the network + [NA,NM1] with all the host bits set (i.e., equal to NA or'ed + together with all the bits that are not set in NM1, which is + network [NA,NM1]'s broadcast address). + + o NM2 is longer than NM1. In this case, change the existing + LSA (having Link State ID of NA) to reference the new + network [NA,NM1] by incrementing the sequence number, + changing the mask in the body to NM1 and inserting the cost + of the new network. Then originate a new LSA for the old + network [NA,NM2], with Link State ID equal to NA or'ed + together with the bits that are not set in NM2 (i.e., + network [NA,NM2]'s broadcast address). + + + + +Moy Standards Track [Page 201] + +RFC 2178 OSPF Version 2 July 1997 + + + The above algorithm assumes that all masks are contiguous; this + ensures that when two networks have the same address, one mask is + more specific than the other. The algorithm also assumes that no + network exists having an address equal to another network's broadcast + address. Given these two assumptions, the above algorithm always + produces unique Link State IDs. The above algorithm can also be + reworded as follows: When originating an AS-external-LSA, try to use + the network number as the Link State ID. If that produces a + conflict, examine the two networks in conflict. One will be a subset + of the other. For the less specific network, use the network number + as the Link State ID and for the more specific use the network's + broadcast address instead (i.e., flip all the "host" bits to 1). If + the most specific network was originated first, this will cause you + to originate two LSAs at once. + + As an example of the algorithm, consider its operation when the + following sequence of events occurs in a single router (Router A). + + (1) Router A wants to originate an AS-external-LSA for + [10.0.0.0,255.255.255.0]: + + (a) A Link State ID of 10.0.0.0 is used. + + (2) Router A then wants to originate an AS-external-LSA for + [10.0.0.0,255.255.0.0]: + + (a) The LSA for [10.0.0,0,255.255.255.0] is reoriginated using a + new Link State ID of 10.0.0.255. + + (b) A Link State ID of 10.0.0.0 is used for + [10.0.0.0,255.255.0.0]. + + (3) Router A then wants to originate an AS-external-LSA for + [10.0.0.0,255.0.0.0]: + + (a) The LSA for [10.0.0.0,255.255.0.0] is reoriginated using a + new Link State ID of 10.0.255.255. + + (b) A Link State ID of 10.0.0.0 is used for + [10.0.0.0,255.0.0.0]. + + (c) The network [10.0.0.0,255.255.255.0] keeps its Link State ID + of 10.0.0.255. + + + + + + + + +Moy Standards Track [Page 202] + +RFC 2178 OSPF Version 2 July 1997 + + +F. Multiple interfaces to the same network/subnet + + There are at least two ways to support multiple physical interfaces + to the same IP subnet. Both methods will interoperate with + implementations of RFC 1583 (and of course this memo). The two + methods are sketched briefly below. An assumption has been made that + each interface has been assigned a separate IP address (otherwise, + support for multiple interfaces is more of a link-level or ARP issue + than an OSPF issue). + + Method 1: + Run the entire OSPF functionality over both interfaces, sending and + receiving hellos, flooding, supporting separate interface and + neighbor FSMs for each interface, etc. When doing this all other + routers on the subnet will treat the two interfaces as separate + neighbors, since neighbors are identified (on broadcast and NBMA + networks) by their IP address. + + Method 1 has the following disadvantages: + + (1) You increase the total number of neighbors and adjacencies. + + (2) You lose the bidirectionality test on both interfaces, since + bidirectionality is based on Router ID. + + (3) You have to consider both interfaces together during the + Designated Router election, since if you declare both to be + DR simultaneously you can confuse the tie-breaker (which is + Router ID). + + Method 2: + Run OSPF over only one interface (call it the primary interface), + but include both the primary and secondary interfaces in your + Router-LSA. + + Method 2 has the following disadvantages: + + (1) You lose the bidirectionality test on the secondary + interface. + + (2) When the primary interface fails, you need to promote the + secondary interface to primary status. + + + + + + + + + +Moy Standards Track [Page 203] + +RFC 2178 OSPF Version 2 July 1997 + + +G. Differences from RFC 1583 + + This section documents the differences between this memo and RFC + 1583. All differences are backward-compatible. Implementations of + this memo and of RFC 1583 will interoperate. + +G.1 Enhancements to OSPF authentication + + An additional OSPF authentication type has been added: the + Cryptographic authentication type. This has been defined so that any + arbitrary "Keyed Message Digest" algorithm can be used for packet + authentication. Operation using the MD5 algorithm is completely + specified (see Appendix D). + + A number of other changes were also made to OSPF packet + authentication, affecting the following Sections: + + o The authentication type is now specified per-interface, + rather than per-area (Sections 6, 9, C.2 and C.3). + + o The OSPF packet header checksum is now considered part of + the authentication procedure, and so has been moved out of the + packet send and receive logic (Sections 8.1 and 8.2) and into the + description of authentication types (Appendix D). + + o In Appendix D, sections detailing message generation and + message verification have been added. + + o For the OSPF Cryptographic authentication type, a discussion + of key management, including the requirement for simultaneous + support of multiple keys, key lifetimes and smooth key + transition, has been added to Appendix D. + +G.2 Addition of Point-to-MultiPoint interface + + This memo adds an additional method for running OSPF over non- + broadcast networks: the Point-to-Multipoint network. To implement + this addition, the language of RFC 1583 has been altered slightly. + References to "multi-access" networks have been deleted. The term + "non-broadcast networks" is now used to describe networks which can + connect many routers, but which do not natively support + broadcast/multicast (such as a public Frame relay network). Over + non-broadcast networks, there are two options for running OSPF: + modelling them as "NBMA networks" or as "Point-to-MultiPoint + networks". NBMA networks require full mesh connectivity between + routers; when employing NBMA networks in the presence of partial mesh + connectivity, multiple NBMA networks must be configured, as described + in [Ref15]. In contrast, Point-to-Multipoint networks have been + + + +Moy Standards Track [Page 204] + +RFC 2178 OSPF Version 2 July 1997 + + + designed to work simply and naturally when faced with partial mesh + connectivity. + + The addition of Point-to-MultiPoint networks has impacted the text in + many places, which are briefly summarized below: + + o Section 2 describing the OSPF link-state database has been + split into additional subsections, with one of the subsections + (Section 2.1.1) describing the differing map representations of + the two non-broadcast network options. This subsection also + contrasts the NBMA network and Point- to-MultiPoint network + options, and describes the situations when one is preferable to + the other. + + o In contrast to NBMA networks, Point-to-MultiPoint networks + have the following properties. Adjacencies are established + between all neighboring routers (Sections 4, 7.1, 7.5, 9.5 and + 10.4). There is no Designated Router or Backup Designated Router + for a Point-to-MultiPoint network (Sections 7.3 and 7.4). No + network-LSA is originated for Point-to-MultiPoint networks + (Sections 12.4.2 and A.4.3). Router Priority is not configured + for Point-to-MultiPoint interfaces, nor for neighbors on Point- + to-MultiPoint networks (Sections C.3 and C.6). + + o The Interface FSM for a Point-to-MultiPoint interface is + identical to that used for point-to-point interfaces. Two states + are possible: "Down" and "Point-to-Point" (Section 9.3). + + o When originating a router-LSA, and Point-to-MultiPoint + interface is reported as a collection of "point-to-point links" + to all of the interface's adjacent neighbors, together with a + single stub link advertising the interface's IP address with a + cost of 0 (Section 12.4.1.4). + + o When flooding out a non-broadcast interface (when either in + NBMA or Point-to-MultiPoint mode) the Link State Update or Link + State Acknowledgment packet must be replicated in order to be + sent to each of the interface's neighbors (see Sections 13.3 and + 13.5). + +G.3 Support for overlapping area ranges + + RFC 1583 requires that all networks falling into a given area range + actually belong to a single area. This memo relaxes that restriction. + This is useful in the following example. Suppose that [10.0.0.0, + 255.0.0.0] is carved up into subnets. Most of these subnets are + assigned to a single OSPF area (call it Area X), while a few subnets + are assigned to other areas. In order to get this configuration to + + + +Moy Standards Track [Page 205] + +RFC 2178 OSPF Version 2 July 1997 + + + work with RFC 1583, you must not summarize the subnets of Area X with + the single range [10.0.0.0, 255.0.0.0], because then the subnets of + 10.0.0.0 belonging to other areas would become unreachable. However, + with this memo you can summarize the subnets in Area X, provided that + the subnets belonging to other areas are not summarized. + + Implementation details for this change can be found in Sections 11.1 + and 16.2. + +G.4 A modification to the flooding algorithm + + The OSPF flooding algorithm has been modified as follows. When a Link + State Update Packet is received that contains an LSA instance which + is actually less recent than the the router's current database copy, + the router will now in most cases respond by flooding back its + database copy. This is in contrast to the RFC 1583 behavior, which + was to simply throw the received LSA away. + + Detailed description of the change can be found in Step 8 of Section + 13. + + This change improves MaxAge processing. There are times when MaxAge + LSAs stay in a router's database for extended intervals: 1) when they + are stuck in a retransmission queue on a slow link or 2) when a + router is not properly flushing them from its database, due to + software bugs. The prolonged existence of these MaxAge LSAs can + inhibit the flooding of new instances of the LSA. New instances + typically start with LS sequence number equal to + InitialSequenceNumber, and are treated as less recent (and hence were + discarded according to RFC 1583) by routers still holding MaxAge + instances. However, with the above change to flooding, a router + holding a MaxAge instance will flood back the MaxAge instance. When + this flood reaches the LSA's originator, it will then pick the next + highest LS sequence number and reflood, overwriting the MaxAge + instance. + +G.5 Introduction of the MinLSArrival constant + + OSPF limits the frequency that new instances of any particular LSA + can be accepted during flooding. This is extra protection, just in + case a neighboring router is violating the mandated limit on LSA + (re)originations (namely, one per LSA in any MinLSInterval). + + + + + + + + + +Moy Standards Track [Page 206] + +RFC 2178 OSPF Version 2 July 1997 + + + In RFC 1583, the frequency at which new LSA instances were accepted + was also set equal to once every MinLSInterval seconds. However, in + some circumstances this led to unwanted link state retransmissions, + even when the LSA originator was obeying the MinLSInterval limit on + originations. This was due to either 1) choice of clock granularity + in some OSPF implementations or 2) differing clock speed in + neighboring routers. + + To alleviate this problem, the frequency at which new LSA instances + are accepted during flooding has now been increased to once every + MinLSArrival seconds, whose value is set to 1. This change is + reflected in Steps 5a and 5d of Section 13, and in Appendix B. + +G.6 Optionally advertising point-to-point links as subnets + + When describing a point-to-point interface in its router-LSA, a + router may now advertise a stub link to the point-to-point network's + subnet. This is specified as an alternative to the RFC 1583 behavior, + which is to advertise a stub link to the neighbor's IP address. See + Sections 12.4.1 and 12.4.1.1 for details. + +G.7 Advertising same external route from multiple areas + + This document fixes routing loops which can occur in RFC 1583 when + the same external destination is advertised by AS boundary routers in + separate areas. There are two manifestations of this problem. The + first, discovered by Dennis Ferguson, occurs when an aggregated + forwarding address is in use. In this case, the desirability of the + forwarding address can change for the worse as a packet crosses an + area aggregation boundary on the way to the forwarding address, which + in turn can cause the preference of AS-external-LSAs to change, + resulting in a routing loop. + + The second manifestation was discovered by Richard Woundy. It is + caused by an incomplete application of OSPF's preference of intra- + area routes over inter-area routes: paths to any given + ASBR/forwarding address are selected first based on intra-area + preference, while the comparison between separate ASBRs/forwarding + addresses is driven only by cost, ignoring intra-area preference. His + example is replicated in Figure 19. Both router A3 and router B3 are + originating an AS-external-LSA for 10.0.0.0/8, with the same type 2 + metric. Router A1 selects B1 as its next hop towards 10.0.0.0/8, + based on shorter cost to ASBR B3 (via B1->B2->B3). However, the + shorter route to B3 is not available to B1, due to B1's preference + for the (higher cost) intra-area route to B3 through Area A. This + leads B1 to select A1 as its next hop to 10.0.0.0/8, resulting in a + routing loop. + + + + +Moy Standards Track [Page 207] + +RFC 2178 OSPF Version 2 July 1997 + + + The following two changes have been made to prevent these routing + loops: + + o When originating a type 3 summary-LSA for a configured area + address range, the cost of the summary-LSA is now set to the + maximum cost of the range's component networks (instead of the + previous algorithm which set the cost to the minimum component + cost). This change affects Sections 3.5 and 12.4.3, Figures 7 + and 8, and Tables 6 and 13. + + o The preference rules for choosing among multiple AS- + external-LSAs have been changed. Where previously cost was the + only determining factor, now the preference is driven first by + type of path (intra-area or inter-area, through non-backbone area + or through backbone) to the ASBR/forwarding address, using cost + only to break ties. This change affects Sections 16.4 and 16.4.1. + + After implementing this change, the example in Figure 19 is modified + as follows. Router A1 now chooses A3 as the next + + 10.0.0.0/8 + ---------- + | + +----+ + | XX | + +----+ + RIP / \ RIP + --------------------- -------------------- + ! ! + ! ! + +----+ +----+ 1 +----+......+----+.... + | A3 |------| A1 |---------------| B1 |------| B3 | . + +----+ 6 +----+ +----+ 8 +----+ . + 1| . / . + OSPF backbone | . / . + +----+ 2 / . + | B2 |------- Area A. + +----+................ + + Figure 19: Example routing loop when the + same external route is advertised from multiple + areas + + hop to 10.0.0.0/8, while B1 chooses B3 as next hop. The reason for + both choices is that ASBRs/forwarding addresses are now chosen based + first on intra-area preference, and then by cost. + + + + + +Moy Standards Track [Page 208] + +RFC 2178 OSPF Version 2 July 1997 + + + Unfortunately, this change is not backward compatible. While the + change prevents routing loops when all routers run the new preference + rules, it can actually create routing loops when some routers are + running the new preference rules and other routers implement RFC + 1583. For this reason, a new configuration parameter has been added: + RFC1583Compatibility. Only when RFC1583Compatibility is set to + "disabled" will the new preference rules take effect. See Appendix C + for more details. + +G.8 Retransmission of initial Database Description packets + + This memo allows retransmission of initial Database Description + packets, without resetting the state of the adjacency. In some + environments, retransmission of the initial Database Description + packet may be unavoidable. For example, the link delay incurred by a + satellite link may exceed the value configured for an interface's + RxmtInterval. In RFC 1583 such an environment prevents a full + adjacency from ever forming. + + In this memo, changes have been made in the reception of Database + Description packets so that retransmitted initial Database + Description packets are treated identically to any other + retransmitted Database Description packets. See Section 10.6 for + details. + +G.9 Detecting interface MTU mismatches + + When two neighboring routers have a different interface MTU for their + common network segment, serious problems can ensue: large packets are + prevented from being successfully transferred from one router to the + other, impairing OSPF's flooding algorithm and possibly creating + "black holes" for user data traffic. + + This memo provides a fix for the interface MTU mismatch problem by + advertising the interface MTU in Database Description packets. When a + router receives a Database description packet advertising an MTU + larger than the router can receive, the router drops the Database + Description packet. This prevents an adjacency from forming, telling + OSPF flooding and user data traffic to avoid the connection between + the two routers. For more information, see Sections 10.6, 10.8, and + A.3.3. + +G.10 Deleting the TOS routing option + + The TOS routing option has been deleted from OSPF. This action was + required by the Internet standards process ([Ref24]), due to lack of + implementation experience with OSPF's TOS routing. However, for + backward compatibility the formats of OSPF's various LSAs remain + + + +Moy Standards Track [Page 209] + +RFC 2178 OSPF Version 2 July 1997 + + + unchanged, maintaining the ability to specify TOS metrics in router- + LSAs, summary-LSAs, ASBR-summary-LSAs, and AS-external-LSAs (see + Sections 12.3, A.4.2, A.4.4, and A.4.5). + + To see OSPF's original TOS routing design, consult [Ref9]. + +Security Considerations + + All OSPF protocol exchanges are authenticated. OSPF supports multiple + types of authentication; the type of authentication in use can be + configured on a per network segment basis. One of OSPF's + authentication types, namely the Cryptographic authentication option, + is believed to be secure against passive attacks and provide + significant protection against active attacks. When using the + Cryptographic authentication option, each router appends a "message + digest" to its transmitted OSPF packets. Receivers then use the + shared secret key and received digest to verify that each received + OSPF packet is authentic. + + The quality of the security provided by the Cryptographic + authentication option depends completely on the strength of the + message digest algorithm (MD5 is currently the only message digest + algorithm specified), the strength of the key being used, and the + correct implementation of the security mechanism in all communicating + OSPF implementations. It also requires that all parties maintain the + secrecy of the shared secret key. + + None of the OSPF authentication types provide confidentiality. Nor do + they protect against traffic analysis. Key management is also not + addressed by this memo. + + For more information, see Sections 8.1, 8.2, and Appendix D. + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 210] + +RFC 2178 OSPF Version 2 July 1997 + + +Author's Address + + John Moy + Cascade Communications Corp. + 5 Carlisle Road + Westford, MA 01886 + + Phone: 508-952-1367 + Fax: 508-692-9214 + Email: jmoy@casc.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Moy Standards Track [Page 211] + |