[ RFC Index | RFC Search | Usenet FAQs | Web FAQs | Documents | Cities ]

Alternate Formats: rfc2328.txt | rfc2328.txt.pdf

RFC 2328 - OSPF Version 2


    Search the Archives
Display RFC by number
    


RFC2328 - OSPF Version 2


Network Working Group                                             J. Moy
Request for Comments: 2328                   Ascend Communications, Inc.
STD: 54                                                       April 1998
Obsoletes: 2178
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.

Copyright Notice

    Copyright (C) The Internet Society (1998).  All Rights Reserved.

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 2178 are explained in
    Appendix G. All differences are backward-compatible in nature.

    Implementations of this memo and of RFCs 2178, 1583, and 1247 will
    interoperate.

    Please send comments to ospf@gated.cornell.edu.

Table of Contents

    1        Introduction ........................................... 6
    1.1      Protocol Overview ...................................... 6
    1.2      Definitions of commonly used terms ..................... 8
    1.3      Brief history of link-state routing technology ........ 11
    1.4      Organization of this document ......................... 12
    1.5      Acknowledgments ....................................... 12
    2        The link-state database: organization and calculations  13
    2.1      Representation of routers and networks ................ 13
    2.1.1    Representation of non-broadcast networks .............. 15
    2.1.2    An example link-state database ........................ 18
    2.2      The shortest-path tree ................................ 21
    2.3      Use of external routing information ................... 23
    2.4      Equal-cost multipath .................................. 26
    3        Splitting the AS into Areas ........................... 26
    3.1      The backbone of the Autonomous System ................. 27
    3.2      Inter-area routing .................................... 27
    3.3      Classification of routers ............................. 28
    3.4      A sample area configuration ........................... 29
    3.5      IP subnetting support ................................. 35
    3.6      Supporting stub areas ................................. 37
    3.7      Partitions of areas ................................... 38
    4        Functional Summary .................................... 40
    4.1      Inter-area routing .................................... 41
    4.2      AS external routes .................................... 41
    4.3      Routing protocol packets .............................. 42
    4.4      Basic implementation requirements ..................... 43
    4.5      Optional OSPF capabilities ............................ 46
    5        Protocol data structures .............................. 47
    6        The Area Data Structure ............................... 49
    7        Bringing Up Adjacencies ............................... 52
    7.1      The Hello Protocol .................................... 52
    7.2      The Synchronization of Databases ...................... 53
    7.3      The Designated Router ................................. 54
    7.4      The Backup Designated Router .......................... 56
    7.5      The graph of adjacencies .............................. 56

    8        Protocol Packet Processing ............................ 58
    8.1      Sending protocol packets .............................. 58
    8.2      Receiving protocol packets ............................ 61
    9        The Interface Data Structure .......................... 63
    9.1      Interface states ...................................... 67
    9.2      Events causing interface state changes ................ 70
    9.3      The Interface state machine ........................... 72
    9.4      Electing the Designated Router ........................ 75
    9.5      Sending Hello packets ................................. 77
    9.5.1    Sending Hello packets on NBMA networks ................ 79
    10       The Neighbor Data Structure ........................... 80
    10.1     Neighbor states ....................................... 83
    10.2     Events causing neighbor state changes ................. 87
    10.3     The Neighbor state machine ............................ 89
    10.4     Whether to become adjacent ............................ 95
    10.5     Receiving Hello Packets ............................... 96
    10.6     Receiving Database Description Packets ................ 99
    10.7     Receiving Link State Request Packets ................. 102
    10.8     Sending Database Description Packets ................. 103
    10.9     Sending Link State Request Packets ................... 104
    10.10    An Example ........................................... 105
    11       The Routing Table Structure .......................... 107
    11.1     Routing table lookup ................................. 111
    11.2     Sample routing table, without areas .................. 111
    11.3     Sample routing table, with areas ..................... 112
    12       Link State Advertisements (LSAs) ..................... 115
    12.1     The LSA Header ....................................... 116
    12.1.1   LS age ............................................... 116
    12.1.2   Options .............................................. 117
    12.1.3   LS type .............................................. 117
    12.1.4   Link State ID ........................................ 117
    12.1.5   Advertising Router ................................... 119
    12.1.6   LS sequence number ................................... 120
    12.1.7   LS checksum .......................................... 121
    12.2     The link state database .............................. 121
    12.3     Representation of TOS ................................ 122
    12.4     Originating LSAs ..................................... 123
    12.4.1   Router-LSAs .......................................... 126
    12.4.1.1 Describing point-to-point interfaces ................. 130
    12.4.1.2 Describing broadcast and NBMA interfaces ............. 130
    12.4.1.3 Describing virtual links ............................. 131
    12.4.1.4 Describing Point-to-MultiPoint interfaces ............ 131

    12.4.1.5 Examples of router-LSAs .............................. 132
    12.4.2   Network-LSAs ......................................... 133
    12.4.2.1 Examples of network-LSAs ............................. 134
    12.4.3   Summary-LSAs ......................................... 135
    12.4.3.1 Originating summary-LSAs into stub areas ............. 137
    12.4.3.2 Examples of summary-LSAs ............................. 138
    12.4.4   AS-external-LSAs ..................................... 139
    12.4.4.1 Examples of AS-external-LSAs ......................... 140
    13       The Flooding Procedure ............................... 143
    13.1     Determining which LSA is newer ....................... 146
    13.2     Installing LSAs in the database ...................... 147
    13.3     Next step in the flooding procedure .................. 148
    13.4     Receiving self-originated LSAs ....................... 151
    13.5     Sending Link State Acknowledgment packets ............ 152
    13.6     Retransmitting LSAs .................................. 154
    13.7     Receiving link state acknowledgments ................. 155
    14       Aging The Link State Database ........................ 156
    14.1     Premature aging of LSAs .............................. 157
    15       Virtual Links ........................................ 158
    16       Calculation of the routing table ..................... 160
    16.1     Calculating the shortest-path tree for an area ....... 161
    16.1.1   The next hop calculation ............................. 167
    16.2     Calculating the inter-area routes .................... 178
    16.3     Examining transit areas' summary-LSAs ................ 170
    16.4     Calculating AS external routes ....................... 173
    16.4.1   External path preferences ............................ 175
    16.5     Incremental updates -- summary-LSAs .................. 175
    16.6     Incremental updates -- AS-external-LSAs .............. 177
    16.7     Events generated as a result of routing table changes  177
    16.8     Equal-cost multipath ................................. 178
             Footnotes ............................................ 179
             References ........................................... 183
    A        OSPF data formats .................................... 185
    A.1      Encapsulation of OSPF packets ........................ 185
    A.2      The Options field .................................... 187
    A.3      OSPF Packet Formats .................................. 189
    A.3.1    The OSPF packet header ............................... 190
    A.3.2    The Hello packet ..................................... 193
    A.3.3    The Database Description packet ...................... 195
    A.3.4    The Link State Request packet ........................ 197
    A.3.5    The Link State Update packet ......................... 199
    A.3.6    The Link State Acknowledgment packet ................. 201

    A.4      LSA formats .......................................... 203
    A.4.1    The LSA header ....................................... 204
    A.4.2    Router-LSAs .......................................... 206
    A.4.3    Network-LSAs ......................................... 210
    A.4.4    Summary-LSAs ......................................... 212
    A.4.5    AS-external-LSAs ..................................... 214
    B        Architectural Constants .............................. 217
    C        Configurable Constants ............................... 219
    C.1      Global parameters .................................... 219
    C.2      Area parameters ...................................... 220
    C.3      Router interface parameters .......................... 221
    C.4      Virtual link parameters .............................. 224
    C.5      NBMA network parameters .............................. 224
    C.6      Point-to-MultiPoint network parameters ............... 225
    C.7      Host route parameters ................................ 226
    D        Authentication ....................................... 227
    D.1      Null authentication .................................. 227
    D.2      Simple password authentication ....................... 228
    D.3      Cryptographic authentication ......................... 228
    D.4      Message generation ................................... 231
    D.4.1    Generating Null authentication ....................... 231
    D.4.2    Generating Simple password authentication ............ 232
    D.4.3    Generating Cryptographic authentication .............. 232
    D.5      Message verification ................................. 234
    D.5.1    Verifying Null authentication ........................ 234
    D.5.2    Verifying Simple password authentication ............. 234
    D.5.3    Verifying Cryptographic authentication ............... 235
    E        An algorithm for assigning Link State IDs ............ 236
    F        Multiple interfaces to the same network/subnet ....... 239
    G        Differences from RFC 2178 ............................ 240
    G.1      Flooding modifications ............................... 240
    G.2      Changes to external path preferences ................. 241
    G.3      Incomplete resolution of virtual next hops ........... 241
    G.4      Routing table lookup ................................. 241
             Security Considerations .............................. 243
             Author's Address ..................................... 243
             Full Copyright Statement ............................. 244

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.

        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.

        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.

        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.

        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 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.

    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.

                                                  **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

                                                  **FROM**
                +---+      +---+
                |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 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.

            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.

                                                  **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

        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.

            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.  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.

                 +
                 | 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

                                **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.

                     **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.

    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).

        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

                                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

                   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.

        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.

        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 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
    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.

        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.

        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.
        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

             ...........................
             .   +                     .
             .   | 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

        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.

                               **FROM**

                          |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.

                                  **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.

        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

                              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.

        load share between the two for traffic to Network N8.

        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 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 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.

        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.

    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 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.

    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.

        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).

        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].

        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).

        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.

    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.

    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).

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.

    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).

                              +----+
                              |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

    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).

    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.

        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 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.

        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 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.

          +---+            +---+
          |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

        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.

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:

        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.

        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
        directly to the neighbor. On multi-access networks, this means
        that retransmissions should be sent to the neighbor's IP
        address.

        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   Secti