rfc2328

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.




Moy             Standards Track            [Page 1]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track            [Page 2]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track            [Page 3]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track            [Page 4]

RFC 2328         OSPF Version 2         April 1998


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








Moy             Standards Track            [Page 5]

RFC 2328         OSPF Version 2         April 1998


1. Introduction

This document is a specification of    the Open Shortest Path First
(OSPF) TCP/IP internet routing protocol. OSPF is classified as an
Interior Gateway Protocol (IGP). This means that it distributes
routing information    between    routers    belonging to a single Autonomous
System. The OSPF protocol is based    on link-state or SPF technology.
This is a departure    from the Bellman-Ford base used    by traditional
TCP/IP internet routing protocols.

The    OSPF protocol was developed by the OSPF    working    group of the
Internet Engineering Task Force. It has been designed expressly for
the    TCP/IP internet    environment, including explicit    support    for CIDR
and    the tagging of externally-derived routing information.    OSPF
also provides for the authentication of routing updates, and
utilizes IP    multicast when sending/receiving the updates. In
addition, much work    has been done to produce a protocol that
responds quickly to    topology changes, yet involves small amounts of
routing protocol traffic.

1.1. Protocol overview

    OSPF routes IP packets based solely on the destination IP
    address    found in the IP    packet header.    IP packets are routed
    "as is"    -- they    are not    encapsulated in    any further protocol
    headers    as they    transit    the Autonomous System.    OSPF is    a
    dynamic    routing    protocol. It quickly detects topological
    changes    in the AS (such    as router interface failures) and
    calculates new loop-free routes    after a    period of convergence.
    This period of convergence is short and    involves a minimum of
    routing    traffic.

    In a link-state    routing    protocol, each router maintains    a
    database describing the    Autonomous System's topology. This
    database is referred to    as the link-state database. Each
    participating router has an identical database.     Each individual
    piece of this database is a particular router's    local state
    (e.g., the router's usable interfaces and reachable neighbors).
    The router distributes its local state throughout the Autonomous
    System by flooding.





Moy             Standards Track            [Page 6]

RFC 2328         OSPF Version 2         April 1998


    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.




Moy             Standards Track            [Page 7]

RFC 2328         OSPF Version 2         April 1998


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.





Moy             Standards Track            [Page 8]

RFC 2328         OSPF Version 2         April 1998


     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.






Moy             Standards Track            [Page 9]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 10]

RFC 2328         OSPF Version 2         April 1998


     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.




Moy             Standards Track         [Page 11]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 12]

RFC 2328         OSPF Version 2         April 1998


    Zhang and the rest of the OSPF Working Group for the ideas and
    support    they have given    to this    project.

    The OSPF Point-to-MultiPoint interface is based    on work    done by
    Fred Baker.

    The OSPF Cryptographic Authentication option was developed by
    Fred Baker and Ran Atkinson.


2. The    Link-state Database: organization and calculations

The    following subsections describe the organization    of OSPF's link-
state database, and    the routing calculations that are performed on
the    database in order to produce a router's    routing    table.


2.1. Representation of routers and    networks

    The Autonomous System's    link-state database describes a    directed
    graph.    The vertices of    the graph consist of routers and
    networks. A graph edge    connects two routers when they are
    attached via a physical    point-to-point network.     An edge
    connecting a router to a network indicates that    the router has
    an interface on    the network. Networks can be either transit or
    stub networks. Transit networks    are those capable of carrying
    data traffic that is neither locally originated    nor locally
    destined. A transit network is represented by a    graph vertex
    having both incoming and outgoing edges. A stub    network's vertex
    has only incoming edges.

    The neighborhood of each network node in the graph depends on
    the network's type (point-to-point, broadcast, NBMA or Point-
    to-MultiPoint) and the number of routers having    an interface to
    the network. Three cases are depicted in Figure 1a. Rectangles
    indicate routers. Circles and oblongs indicate    networks.
    Router names are prefixed with the letters RT and network names
    with the letter    N. Router interface names are prefixed    by the
    letter I. Lines between routers indicate point-to-point
    networks. The left side of the    figure shows networks with their
    connected routers, with    the resulting graphs shown on the right.




Moy             Standards Track         [Page 13]

RFC 2328         OSPF Version 2         April 1998





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




Moy             Standards Track         [Page 14]

RFC 2328         OSPF Version 2         April 1998


     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



Moy             Standards Track         [Page 15]

RFC 2328         OSPF Version 2         April 1998


     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'



Moy             Standards Track         [Page 16]

RFC 2328         OSPF Version 2         April 1998


     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






Moy             Standards Track         [Page 17]

RFC 2328         OSPF Version 2         April 1998


    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.





Moy             Standards Track         [Page 18]

RFC 2328         OSPF Version 2         April 1998



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



Moy             Standards Track         [Page 19]

RFC 2328         OSPF Version 2         April 1998


         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.



Moy             Standards Track         [Page 20]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track         [Page 21]

RFC 2328         OSPF Version 2         April 1998



                RT6(origin)
         RT5    o------------o-----------o Ib
         /|\ 6     |\     7
         8/8|8\     | \
         /    | \     6|    \
         o    | o     |     \7
         N12    o N14     |     \
         N13     2 |     \
             N4 o-----o RT3 \
                 /     \     5
                 1/     RT10 o-------o    Ia
                 /     |\
         RT4 o-----o N3     3|    \1
                /|     |     \ N6     RT7
             / |     N8 o     o---------o
             /     |     |     |     /|
             RT2 o     o RT1     |     |     2/ |9
             /     |     |     |RT8     / |
             /3     |3     RT11 o     o    o o
             /     |     |     | N12 N15
         N2 o     o N1     1|     |4
                     |     |
                     N9 o     o N7
                     /|
                     / |
            N11     RT9     / |RT12
             o--------o-------o o--------o H1
             3         |     10
                     |2
                     |
                     o    N10


         Figure 5: The SPF tree for    Router RT6

     Edges that are not marked    with a cost have a cost    of
     of zero (these are network-to-router links). Routes
     to networks N12-N15 are external information that    is
             considered in Section 2.3





Moy             Standards Track         [Page 22]

RFC 2328         OSPF Version 2         April 1998


         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



Moy             Standards Track         [Page 23]

RFC 2328         OSPF Version 2         April 1998


    (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



Moy             Standards Track         [Page 24]

RFC 2328         OSPF Version 2         April 1998


    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.




Moy             Standards Track         [Page 25]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track         [Page 26]

RFC 2328         OSPF Version 2         April 1998


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.




Moy             Standards Track         [Page 27]

RFC 2328         OSPF Version 2         April 1998


    The topology of    the backbone dictates the backbone paths used
    between    areas.    The topology of    the backbone can be enhanced by
    adding virtual links. This gives the system administrator some
    control    over the routes    taken by inter-area traffic.

    The correct area border    router to use as the packet exits the
    source area is chosen in exactly the same way routers
    advertising external routes are    chosen.     Each area border router
    in an area summarizes for the area its cost to all networks
    external to the    area. After the SPF tree is calculated    for the
    area, routes to    all inter-area destinations are    calculated by
    examining the summaries    of the area border routers.


3.3. Classification of routers

    Before the introduction    of areas, the only OSPF    routers    having a
    specialized function were those    advertising external routing
    information, such as Router RT5    in Figure 2. When the AS is
    split into OSPF    areas, the routers are further divided according
    to function into the following four overlapping    categories:


    Internal routers
     A router with all directly connected networks belonging to
     the    same area. These routers run a single copy of the basic
     routing algorithm.

    Area border routers
     A router that attaches to multiple areas. Area border
     routers run    multiple copies    of the basic algorithm,    one copy
     for    each attached area. Area border    routers    condense the
     topological    information of their attached areas for
     distribution to the    backbone. The backbone    in turn
     distributes    the information    to the other areas.

    Backbone routers
     A router that has an interface to the backbone area. This
     includes all routers that interface    to more    than one area
     (i.e., area    border routers). However, backbone routers do
     not    have to    be area    border routers.     Routers with all
     interfaces connecting to the backbone area are supported.



Moy             Standards Track         [Page 28]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 29]

RFC 2328         OSPF Version 2         April 1998



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



Moy             Standards Track         [Page 30]

RFC 2328         OSPF Version 2         April 1998


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





Moy             Standards Track         [Page 31]

RFC 2328         OSPF Version 2         April 1998



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













Moy             Standards Track         [Page 32]

RFC 2328         OSPF Version 2         April 1998


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




Moy             Standards Track         [Page 33]

RFC 2328         OSPF Version 2         April 1998


    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.





Moy             Standards Track         [Page 34]

RFC 2328         OSPF Version 2         April 1998




         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.





Moy             Standards Track         [Page 35]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track         [Page 36]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 37]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 38]

RFC 2328         OSPF Version 2         April 1998


    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.






























Moy             Standards Track         [Page 39]

RFC 2328         OSPF Version 2         April 1998


4. Functional Summary

A separate copy of OSPF's basic routing algorithm runs in each area.
Routers having interfaces to multiple areas    run multiple copies of
the    algorithm. A brief summary of the routing algorithm follows.

When a router starts, it first initializes the routing protocol data
structures.     The router then waits for indications from the    lower-
level protocols that its interfaces    are functional.

A router then uses the OSPF's Hello    Protocol to acquire neighbors.
The    router sends Hello packets to its neighbors, and in turn
receives their Hello packets. On broadcast    and point-to-point
networks, the router dynamically detects its neighboring routers by
sending its    Hello packets to the multicast address AllSPFRouters.
On non-broadcast networks, some configuration information may be
necessary in order to discover neighbors. On broadcast and    NBMA
networks the Hello Protocol    also elects a Designated router    for the
network.

The    router will attempt to form adjacencies    with some of its newly
acquired neighbors.     Link-state databases are synchronized between
pairs of adjacent routers.    On broadcast and NBMA networks,    the
Designated Router determines which routers should become adjacent.

Adjacencies    control    the distribution of routing information.
Routing updates are    sent and received only on adjacencies.

A router periodically advertises its state,    which is also called
link state.     Link state is also advertised when a router's state
changes. A    router's adjacencies are reflected in the contents of
its    LSAs. This relationship between adjacencies and link state
allows the protocol    to detect dead routers in a timely fashion.

LSAs are flooded throughout    the area. The flooding    algorithm is
reliable, ensuring that all    routers    in an area have    exactly    the same
link-state database. This database    consists of the    collection of
LSAs originated by each router belonging to    the area. From    this
database each router calculates a shortest-path tree, with itself as
root. This    shortest-path tree in turn yields a routing table for
the    protocol.




Moy             Standards Track         [Page 40]

RFC 2328         OSPF Version 2         April 1998


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.








Moy             Standards Track         [Page 41]

RFC 2328         OSPF Version 2         April 1998


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.




Moy             Standards Track         [Page 42]

RFC 2328         OSPF Version 2         April 1998


    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.





Moy             Standards Track         [Page 43]

RFC 2328         OSPF Version 2         April 1998




    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.



Moy             Standards Track         [Page 44]

RFC 2328         OSPF Version 2         April 1998


     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





Moy             Standards Track         [Page 45]

RFC 2328         OSPF Version 2         April 1998


     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



Moy             Standards Track         [Page 46]

RFC 2328         OSPF Version 2         April 1998


    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.



Moy             Standards Track         [Page 47]

RFC 2328         OSPF Version 2         April 1998


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.






Moy             Standards Track         [Page 48]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track         [Page 49]

RFC 2328         OSPF Version 2         April 1998





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






Moy             Standards Track         [Page 50]

RFC 2328         OSPF Version 2         April 1998


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.





Moy             Standards Track         [Page 51]

RFC 2328         OSPF Version 2         April 1998


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



Moy             Standards Track         [Page 52]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 53]

RFC 2328         OSPF Version 2         April 1998


    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.





Moy             Standards Track         [Page 54]

RFC 2328         OSPF Version 2         April 1998


    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.




Moy             Standards Track         [Page 55]

RFC 2328         OSPF Version 2         April 1998


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.





Moy             Standards Track         [Page 56]

RFC 2328         OSPF Version 2         April 1998


    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





Moy             Standards Track         [Page 57]

RFC 2328         OSPF Version 2         April 1998


    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.





Moy             Standards Track         [Page 58]

RFC 2328         OSPF Version 2         April 1998


    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



Moy             Standards Track         [Page 59]

RFC 2328         OSPF Version 2         April 1998


    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 Section 10.8
     3     Link state request     Section 10.9
     4     Link state update     Section 13.3
     5     Link state ack     Section 13.5


Table 10:    Sections describing OSPF protocol packet transmission.








Moy             Standards Track         [Page 60]

RFC 2328         OSPF Version 2         April 1998


8.2. Receiving protocol packets

    Whenever a protocol packet is received by the router it    is
    marked with the    interface it was received on. For routers that
    have virtual links configured, it may not be immediately obvious
    which interface    to associate the packet    with. For example,
    consider the Router RT11 depicted in Figure 6.    If RT11    receives
    an OSPF    protocol packet    on its interface to Network N8,    it may
    want to    associate the packet with the interface    to Area    2, or
    with the virtual link to Router    RT10 (which is part of the
    backbone). In the following, we assume    that the packet    is
    initially associated with the non-virtual link.[3]

    In order for the packet    to be accepted at the IP level,    it must
    pass a number of tests,    even before the    packet is passed to OSPF
    for processing:


    o The    IP checksum must be correct.

    o The    packet's IP destination    address    must be    the IP address
     of the receiving interface,    or one of the IP multicast
     addresses AllSPFRouters or AllDRouters.

    o The    IP protocol specified must be OSPF (89).

    o Locally originated packets should not be passed on to OSPF.
     That is, the source    IP address should be examined to make
     sure this is not a multicast packet    that the router    itself
     generated.


    Next, the OSPF packet header is    verified. The fields specified
    in the header must match those configured for the receiving
    interface. If they do not, the    packet should be discarded:


    o The    version    number field must specify protocol version 2.

    o The    Area ID    found in the OSPF header must be verified. If
     both of the    following cases    fail, the packet should    be
     discarded.    The Area ID specified in the header must either:



Moy             Standards Track         [Page 61]

RFC 2328         OSPF Version 2         April 1998


     (1)    Match the Area ID of the receiving interface. In this
        case, the packet has been sent over a single hop.
        Therefore, the packet's    IP source address is required to
        be on the same network as the receiving    interface. This
        can be verified    by comparing the packet's IP source
        address    to the interface's IP address, after masking
        both addresses with the    interface mask.     This comparison
        should not be performed    on point-to-point networks. On
        point-to-point networks, the interface addresses of each
        end of the link    are assigned independently, if they are
        assigned at all.

     (2)    Indicate the backbone.    In this    case, the packet has
        been sent over a virtual link.    The receiving router
        must be    an area    border router, and the Router ID
        specified in the packet    (the source router) must be the
        other end of a configured virtual link.     The receiving
        interface must also attach to the virtual link's
        configured Transit area. If all of these checks
        succeed, the packet is accepted    and is from now    on
        associated with    the virtual link (and the backbone
        area).

    o Packets whose IP destination is AllDRouters    should only be
     accepted if    the state of the receiving interface is    DR or
     Backup (see    Section    9.1).

    o The    AuType specified in the    packet must match the AuType
     specified for the associated area.

    o The    packet must be authenticated. The authentication
     procedure is indicated by the setting of AuType (see
     Appendix D). The authentication procedure may use one or
     more Authentication    keys, which can    be configured on a per-
     interface basis. The authentication procedure may also
     verify the checksum    field in the OSPF packet header    (which,
     when used, is set to the standard IP 16-bit    one's complement
     checksum of    the OSPF packet's contents after excluding the
     64-bit authentication field). If the authentication
     procedure fails, the packet    should be discarded.





Moy             Standards Track         [Page 62]

RFC 2328         OSPF Version 2         April 1998


    If the packet type is Hello, it    should then be further processed
    by the Hello Protocol (see Section 10.5). All other packet
    types are sent/received    only on    adjacencies. This means that
    the packet must    have been sent by one of the router's active
    neighbors. If the receiving interface connects    to a broadcast
    network, Point-to-MultiPoint network or    NBMA network the sender
    is identified by the IP    source address found in    the packet's IP
    header.     If the    receiving interface connects to    a point-to-point
    network    or a virtual link, the sender is identified by the
    Router ID (source router) found    in the packet's    OSPF header.
    The data structure associated with the receiving interface
    contains the list of active neighbors.    Packets    not matching any
    active neighbor    are discarded.

    At this    point all received protocol packets are    associated with
    an active neighbor. For the further input processing of
    specific packet    types, consult the sections listed in Table 11.



     Type Packet name     detailed section (receive)
     ________________________________________________________
     1     Hello         Section 10.5
     2     Database description Section 10.6
     3     Link state    request     Section 10.7
     4     Link state    update     Section 13
     5     Link state    ack     Section 13.7


Table 11:    Sections describing OSPF protocol packet reception.



9. The    Interface Data Structure

An OSPF interface is the connection    between    a router and a network.
We assume a    single OSPF interface to each attached network/subnet,
although supporting    multiple interfaces on a single    network    is
considered in Appendix F. Each interface structure has at most one
IP interface address.





Moy             Standards Track         [Page 63]

RFC 2328         OSPF Version 2         April 1998


An OSPF interface can be considered    to belong to the area that
contains the attached network. All    routing    protocol packets
originated by the router over this interface are labelled with the
interface's    Area ID. One or more router adjacencies may develop
over an interface.    A router's LSAs    reflect    the state of its
interfaces and their associated adjacencies.

The    following data items are associated with an interface.    Note
that a number of these items are actually configuration for    the
attached network; such items must be the same for all routers
connected to the network.

Type
    The OSPF interface type    is either point-to-point, broadcast,
    NBMA, Point-to-MultiPoint or virtual link.

State
    The functional level of    an interface. State determines    whether
    or not full adjacencies    are allowed to form over the interface.
    State is also reflected    in the router's    LSAs.

IP interface address
    The IP address associated with the interface. This appears as
    the IP source address in all routing protocol packets originated
    over this interface. Interfaces to unnumbered point-to-point
    networks do not    have an    associated IP address.

IP interface mask
    Also referred to as the    subnet mask, this indicates the    portion
    of the IP interface address that identifies the    attached
    network. Masking the IP interface address with    the IP interface
    mask yields the    IP network number of the attached network. On
    point-to-point networks    and virtual links, the IP interface mask
    is not defined.    On these networks, the link itself is not
    assigned an IP network number, and so the addresses of each side
    of the link are    assigned independently,    if they    are assigned at
    all.

Area ID
    The Area ID of the area    to which the attached network belongs.
    All routing protocol packets originating from the interface are
    labelled with this Area    ID.



Moy             Standards Track         [Page 64]

RFC 2328         OSPF Version 2         April 1998


HelloInterval
    The length of time, in seconds,    between    the Hello packets that
    the router sends on the    interface. Advertised in Hello    packets
    sent out this interface.

RouterDeadInterval
    The number of seconds before the router's neighbors will declare
    it down, when they stop    hearing    the router's Hello Packets.
    Advertised in Hello packets sent out this interface.

InfTransDelay
    The estimated number of    seconds    it takes to transmit a Link
    State Update Packet over this interface. LSAs contained in the
    Link State Update packet will have their age incremented by this
    amount before transmission. This value    should take into account
    transmission and propagation delays; it    must be    greater    than
    zero.

Router Priority
    An 8-bit unsigned integer. When two routers attached to a
    network    both attempt to    become Designated Router, the one with
    the highest Router Priority takes precedence. A router    whose
    Router Priority    is set to 0 is ineligible to become Designated
    Router on the attached network.     Advertised in Hello packets
    sent out this interface.

Hello Timer
    An interval timer that causes the interface to send a Hello
    packet.     This timer fires every    HelloInterval seconds.    Note
    that on    non-broadcast networks a separate Hello    packet is sent
    to each    qualified neighbor.

Wait Timer
    A single shot timer that causes    the interface to exit the
    Waiting    state, and as a    consequence select a Designated    Router
    on the network.     The length of the timer is RouterDeadInterval
    seconds.

List of neighboring    routers
    The other routers attached to this network. This list is formed
    by the Hello Protocol.    Adjacencies will be formed to some of




Moy             Standards Track         [Page 65]

RFC 2328         OSPF Version 2         April 1998


    these neighbors. The set of adjacent neighbors    can be
    determined by an examination of    all of the neighbors' states.

Designated Router
    The Designated Router selected for the attached    network. The
    Designated Router is selected on all broadcast and NBMA    networks
    by the Hello Protocol.    Two pieces of identification are kept
    for the    Designated Router: its Router ID and its IP interface
    address    on the network.     The Designated    Router advertises link
    state for the network; this network-LSA    is labelled with the
    Designated Router's IP address.     The Designated    Router is
    initialized to 0.0.0.0,    which indicates    the lack of a Designated
    Router.

Backup Designated Router
    The Backup Designated Router is    also selected on all broadcast
    and NBMA networks by the Hello Protocol. All routers on the
    attached network become    adjacent to both the Designated    Router
    and the    Backup Designated Router. The Backup Designated Router
    becomes    Designated Router when the current Designated Router
    fails.    The Backup Designated Router is    initialized to 0.0.0.0,
    indicating the lack of a Backup    Designated Router.

Interface output cost(s)
    The cost of sending a data packet on the interface, expressed in
    the link state metric.    This is    advertised as the link cost for
    this interface in the router-LSA. The cost of an interface must
    be greater than    zero.

RxmtInterval
    The number of seconds between LSA retransmissions, for
    adjacencies belonging to this interface. Also used when
    retransmitting Database    Description and    Link State Request
    Packets.

AuType
    The type of authentication used    on the attached    network/subnet.
    Authentication types are defined in Appendix D.     All OSPF packet
    exchanges are authenticated. Different    authentication schemes
    may be used on different networks/subnets.





Moy             Standards Track         [Page 66]

RFC 2328         OSPF Version 2         April 1998


Authentication key
    This configured    data allows the    authentication procedure to
    generate and/or    verify OSPF protocol packets. The
    Authentication key can be configured on    a per-interface    basis.
    For example, if    the AuType indicates simple password, the
    Authentication key would be a 64-bit clear password which is
    inserted into the OSPF packet header. If instead Autype
    indicates Cryptographic    authentication,    then the Authentication
    key is a shared    secret which enables the generation/verification
    of message digests which are appended to the OSPF protocol
    packets. When Cryptographic authentication is used, multiple
    simultaneous keys are supported    in order to achieve smooth key
    transition (see    Section    D.3).


9.1. Interface states

    The various states that    router interfaces may attain is
    documented in this section. The states    are listed in order of
    progressing functionality. For    example, the inoperative state
    is listed first, followed by a list of intermediate states
    before the final, fully    functional state is achieved. The
    specification makes use    of this    ordering by sometimes making
    references such    as "those interfaces in    state greater than X".
    Figure 11 shows    the graph of interface state changes. The arcs
    of the graph are labelled with the event causing the state
    change.     These events are documented in    Section    9.2. The
    interface state    machine    is described in    more detail in Section
    9.3.


    Down
     This is the    initial    interface state. In this state, the
     lower-level    protocols have indicated that the interface is
     unusable. No protocol traffic at all will be sent or
     received on    such a interface. In this state, interface
     parameters should be set to    their initial values. All
     interface timers should be disabled, and there should be no
     adjacencies    associated with    the interface.

    Loopback
     In this state, the router's    interface to the network is



Moy             Standards Track         [Page 67]

RFC 2328         OSPF Version 2         April 1998



                 +----+ UnloopInd +--------+
                 |Down|<--------------|Loopback|
                 +----+     +--------+
                 |
                 |InterfaceUp
             +-------+ |         +--------------+
             |Waiting|<-+-------------->|Point-to-point|
             +-------+         +--------------+
             |
         WaitTimer|BackupSeen
             |
             |
             |     NeighborChange
     +------+     +-+<---------------- +-------+
     |Backup|<----------|?|----------------->|DROther|
     +------+---------->+-+<-----+         +-------+
         Neighbor |     |
         Change |     |Neighbor
             |     |Change
             |     +--+
             +---->|DR|
                 +--+

         Figure 11: Interface State changes

         In addition to    the state transitions pictured,
         Event InterfaceDown always forces Down    State, and
         Event LoopInd always forces Loopback State


     looped back. The interface    may be looped back in hardware
     or software. The interface    will be    unavailable for    regular
     data traffic. However, it may still be desirable to gain
     information    on the quality of this interface, either through
     sending ICMP pings to the interface    or through something
     like a bit error test. For    this reason, IP    packets    may
     still be addressed to an interface in Loopback state. To







Moy             Standards Track         [Page 68]

RFC 2328         OSPF Version 2         April 1998


     facilitate this, such interfaces are advertised in router-
     LSAs as single host    routes,    whose destination is the IP
     interface address.[4]

    Waiting
     In this state, the router is trying    to determine the
     identity of    the (Backup) Designated    Router for the network.
     To do this,    the router monitors the    Hello Packets it
     receives. The router is not allowed to elect a Backup
     Designated Router nor a Designated Router until it
     transitions    out of Waiting state. This prevents unnecessary
     changes of (Backup)    Designated Router.

    Point-to-point
     In this state, the interface is operational, and connects
     either to a    physical point-to-point    network    or to a    virtual
     link. Upon    entering this state, the router    attempts to form
     an adjacency with the neighboring router. Hello Packets are
     sent to the    neighbor every HelloInterval seconds.

    DR Other
     The    interface is to    a broadcast or NBMA network on which
     another router has been selected to    be the Designated
     Router. In    this state, the    router itself has not been
     selected Backup Designated Router either. The router forms
     adjacencies    to both    the Designated Router and the Backup
     Designated Router (if they exist).

    Backup
     In this state, the router itself is    the Backup Designated
     Router on the attached network. It    will be    promoted to
     Designated Router when the present Designated Router fails.
     The    router establishes adjacencies to all other routers
     attached to    the network. The Backup Designated Router
     performs slightly different    functions during the Flooding
     Procedure, as compared to the Designated Router (see Section
     13.3). See    Section    7.4 for    more details on    the functions
     performed by the Backup Designated Router.

    DR In this state, this    router itself is the Designated    Router
     on the attached network. Adjacencies are established to all
     other routers attached to the network. The    router must also



Moy             Standards Track         [Page 69]

RFC 2328         OSPF Version 2         April 1998


     originate a    network-LSA for    the network node. The network-
     LSA    will contain links to all routers (including the
     Designated Router itself) attached to the network.    See
     Section 7.3    for more details on the    functions performed by
     the    Designated Router.


9.2. Events causing interface state changes

    State changes can be effected by a number of events. These
    events are pictured as the labelled arcs in Figure 11.    The
    label definitions are listed below. For a detailed explanation
    of the effect of these events on OSPF protocol operation,
    consult    Section    9.3.


    InterfaceUp
     Lower-level    protocols have indicated that the network
     interface is operational. This enables the    interface to
     transition out of Down state. On virtual links, the
     interface operational indication is    actually a result of the
     shortest path calculation (see Section 16.7).

    WaitTimer
     The    Wait Timer has fired, indicating the end of the    waiting
     period that    is required before electing a (Backup)
     Designated Router.

    BackupSeen
     The    router has detected the    existence or non-existence of a
     Backup Designated Router for the network. This is done in
     one    of two ways. First, an    Hello Packet may be received
     from a neighbor claiming to    be itself the Backup Designated
     Router. Alternatively, an Hello Packet may    be received from
     a neighbor claiming    to be itself the Designated Router, and
     indicating that there is no    Backup Designated Router. In
     either case    there must be bidirectional communication with
     the    neighbor, i.e.,    the router must    also appear in the
     neighbor's Hello Packet. This event signals an end    to the
     Waiting state.





Moy             Standards Track         [Page 70]

RFC 2328         OSPF Version 2         April 1998


    NeighborChange
     There has been a change in the set of bidirectional
     neighbors associated with the interface. The (Backup)
     Designated Router needs to be recalculated.     The following
     neighbor changes lead to the NeighborChange    event.    For an
     explanation    of neighbor states, see    Section    10.1.

     o    Bidirectional communication has    been established to a
        neighbor. In other words, the state of    the neighbor has
        transitioned to    2-Way or higher.

     o    There is no longer bidirectional communication with a
        neighbor. In other words, the state of    the neighbor has
        transitioned to    Init or    lower.

     o    One of the bidirectional neighbors is newly declaring
        itself as either Designated Router or Backup Designated
        Router.     This is detected through examination of that
        neighbor's Hello Packets.

     o    One of the bidirectional neighbors is no longer
        declaring itself as Designated Router, or is no    longer
        declaring itself as Backup Designated Router. This is
        again detected through examination of that neighbor's
        Hello Packets.

     o    The advertised Router Priority for a bidirectional
        neighbor has changed. This is again detected through
        examination of that neighbor's Hello Packets.

    LoopInd
     An indication has been received that the interface is now
     looped back    to itself. This indication can    be received
     either from    network    management or from the lower level
     protocols.

    UnloopInd
     An indication has been received that the interface is no
     longer looped back.     As with the LoopInd event, this






Moy             Standards Track         [Page 71]

RFC 2328         OSPF Version 2         April 1998


     indication can be received either from network management or
     from the lower level protocols.

    InterfaceDown
     Lower-level    protocols indicate that    this interface is no
     longer functional.    No matter what the current interface
     state is, the new interface    state will be Down.

9.3. The Interface    state machine

    A detailed description of the interface    state changes follows.
    Each state change is invoked by    an event (Section 9.2).     This
    event may produce different effects, depending on the current
    state of the interface.     For this reason, the state machine
    below is organized by current interface    state and received
    event.    Each entry in the state    machine    describes the resulting
    new interface state and    the required set of additional actions.

    When an    interface's state changes, it may be necessary to
    originate a new    router-LSA. See Section 12.4 for more details.

    Some of    the required actions below involve generating events for
    the neighbor state machine. For example, when an interface
    becomes    inoperative, all neighbor connections associated with
    the interface must be destroyed. For more information on the
    neighbor state machine,    see Section 10.3.


     State(s): Down

     Event: InterfaceUp

    New state: Depends upon action    routine

     Action: Start the interval Hello Timer, enabling the
         periodic sending of    Hello packets out the interface.
         If the attached network is a physical point-to-point
         network, Point-to-MultiPoint network or virtual
         link, the interface    state transitions to Point-to-
         Point. Else, if the router    is not eligible    to
         become Designated Router the interface state
         transitions    to DR Other.



Moy             Standards Track         [Page 72]

RFC 2328         OSPF Version 2         April 1998


         Otherwise, the attached network is a broadcast or
         NBMA network and the router    is eligible to become
         Designated Router.    In this    case, in an attempt to
         discover the attached network's Designated Router
         the    interface state    is set to Waiting and the single
         shot Wait Timer is started.     Additionally, if the
         network is an NBMA network examine the configured
         list of neighbors for this interface and generate
         the    neighbor event Start for each neighbor that is
         also eligible to become Designated Router.


     State(s): Waiting

     Event: BackupSeen

    New state: Depends upon action    routine.

     Action: Calculate the attached network's Backup Designated
         Router and Designated Router, as shown in Section
         9.4. As a result of this calculation, the new state
         of the interface will be either DR Other, Backup or
         DR.


     State(s): Waiting

     Event: WaitTimer

    New state: Depends upon action    routine.

     Action: Calculate the attached network's Backup Designated
         Router and Designated Router, as shown in Section
         9.4. As a result of this calculation, the new state
         of the interface will be either DR Other, Backup or
         DR.


     State(s): DR Other, Backup or    DR

     Event: NeighborChange




Moy             Standards Track         [Page 73]

RFC 2328         OSPF Version 2         April 1998


    New state: Depends upon action    routine.

     Action: Recalculate    the attached network's Backup Designated
         Router and Designated Router, as shown in Section
         9.4. As a result of this calculation, the new state
         of the interface will be either DR Other, Backup or
         DR.


     State(s): Any    State

     Event: InterfaceDown

    New state: Down

     Action: All    interface variables are    reset, and interface
         timers disabled. Also, all    neighbor connections
         associated with the    interface are destroyed. This
         is done by generating the event KillNbr on all
         associated neighbors (see Section 10.2).


     State(s): Any    State

     Event: LoopInd

    New state: Loopback

     Action: Since this interface is no longer connected    to the
         attached network the actions associated with the
         above InterfaceDown    event are executed.


     State(s): Loopback

     Event: UnloopInd

    New state: Down

     Action: No actions are necessary. For example, the
         interface variables    have already been reset    upon
         entering the Loopback state. Note that reception of



Moy             Standards Track         [Page 74]

RFC 2328         OSPF Version 2         April 1998


         an InterfaceUp event is necessary before the
         interface again becomes fully functional.


9.4. Electing the Designated Router

    This section describes the algorithm used for calculating a
    network's Designated Router and    Backup Designated Router. This
    algorithm is invoked by    the Interface state machine. The
    initial    time a router runs the election    algorithm for a    network,
    the network's Designated Router    and Backup Designated Router are
    initialized to 0.0.0.0.     This indicates    the lack of both a
    Designated Router and a    Backup Designated Router.

    The Designated Router election algorithm proceeds as follows:
    Call the router    doing the calculation Router X.     The list of
    neighbors attached to the network and having established
    bidirectional communication with Router    X is examined.    This
    list is    precisely the collection of Router X's neighbors (on
    this network) whose state is greater than or equal to 2-Way (see
    Section    10.1).    Router X itself    is also    considered to be on the
    list. Discard all routers from    the list that are ineligible to
    become Designated Router. (Routers having Router Priority of 0
    are ineligible to become Designated Router.) The following
    steps are then executed, considering only those    routers    that
    remain on the list:

    (1) Note the current values for    the network's Designated Router
     and    Backup Designated Router. This    is used    later for
     comparison purposes.

    (2) Calculate the new Backup Designated    Router for the network
     as follows.     Only those routers on the list    that have not
     declared themselves    to be Designated Router    are eligible to
     become Backup Designated Router. If one or    more of    these
     routers have declared themselves Backup Designated Router
     (i.e., they    are currently listing themselves as Backup
     Designated Router, but not as Designated Router, in    their
     Hello Packets) the one having highest Router Priority is
     declared to    be Backup Designated Router. In case of a tie,
     the    one having the highest Router ID is chosen. If    no
     routers have declared themselves Backup Designated Router,



Moy             Standards Track         [Page 75]

RFC 2328         OSPF Version 2         April 1998


     choose the router having highest Router Priority, (again
     excluding those routers who    have declared themselves
     Designated Router),    and again use the Router ID to break
     ties.

    (3) Calculate the new Designated Router    for the    network    as
     follows. If one or    more of    the routers have declared
     themselves Designated Router (i.e.,    they are currently
     listing themselves as Designated Router in their Hello
     Packets) the one having highest Router Priority is declared
     to be Designated Router. In case of a tie,    the one    having
     the    highest    Router ID is chosen. If no routers have
     declared themselves    Designated Router, assign the Designated
     Router to be the same as the newly elected Backup Designated
     Router.

    (4) If Router X    is now newly the Designated Router or newly the
     Backup Designated Router, or is now    no longer the Designated
     Router or no longer    the Backup Designated Router, repeat
     steps 2 and    3, and then proceed to step 5.    For example, if
     Router X is    now the    Designated Router, when    step 2 is
     repeated X will no longer be eligible for Backup Designated
     Router election. Among other things, this will ensure that
     no router will declare itself both Backup Designated Router
     and    Designated Router.[5]

    (5) As a result    of these calculations, the router itself may now
     be Designated Router or Backup Designated Router. See
     Sections 7.3 and 7.4 for the additional duties this    would
     entail. The router's interface state should be set
     accordingly. If the router    itself is now Designated Router,
     the    new interface state is DR. If the router itself is now
     Backup Designated Router, the new interface    state is Backup.
     Otherwise, the new interface state is DR Other.

    (6) If the attached network is an NBMA network,    and the    router
     itself has just become either Designated Router or Backup
     Designated Router, it must start sending Hello Packets to
     those neighbors that are not eligible to become Designated
     Router (see    Section    9.5.1).     This is done by invoking the
     neighbor event Start for each neighbor having a Router
     Priority of    0.



Moy             Standards Track         [Page 76]

RFC 2328         OSPF Version 2         April 1998


    (7) If the above calculations have caused the identity of either
     the    Designated Router or Backup Designated Router to change,
     the    set of adjacencies associated with this    interface will
     need to be modified. Some adjacencies may need to be
     formed, and    others may need    to be broken. To accomplish
     this, invoke the event AdjOK? on all neighbors whose state
     is at least    2-Way.    This will cause    their eligibility for
     adjacency to be reexamined (see Sections 10.3 and 10.4).


    The reason behind the election algorithm's complexity is the
    desire for an orderly transition from Backup Designated    Router
    to Designated Router, when the current Designated Router fails.
    This orderly transition    is ensured through the introduction of
    hysteresis: no new Backup Designated Router can    be chosen until
    the old    Backup accepts its new Designated Router
    responsibilities.

    The above procedure may    elect the same router to be both
    Designated Router and Backup Designated    Router,    although that
    router will never be the calculating router (Router X) itself.
    The elected Designated Router may not be the router having the
    highest    Router Priority, nor will the Backup Designated    Router
    necessarily have the second highest Router Priority. If Router
    X is not itself    eligible to become Designated Router, it is
    possible that neither a    Backup Designated Router nor a
    Designated Router will be selected in the above    procedure. Note
    also that if Router X is the only attached router that is
    eligible to become Designated Router, it will select itself as
    Designated Router and there will be no Backup Designated Router
    for the    network.


9.5. Sending Hello    packets

    Hello packets are sent out each    functioning router interface.
    They are used to discover and maintain neighbor
    relationships.[6] On broadcast and NBMA    networks, Hello    Packets
    are also used to elect the Designated Router and Backup
    Designated Router.





Moy             Standards Track         [Page 77]

RFC 2328         OSPF Version 2         April 1998


    The format of an Hello packet is detailed in Section A.3.2. The
    Hello Packet contains the router's Router Priority (used in
    choosing the Designated    Router), and the interval between Hello
    Packets    sent out the interface (HelloInterval).     The Hello
    Packet also indicates how often    a neighbor must    be heard from to
    remain active (RouterDeadInterval). Both HelloInterval    and
    RouterDeadInterval must    be the same for    all routers attached to
    a common network. The Hello packet also contains the IP address
    mask of    the attached network (Network Mask). On unnumbered
    point-to-point networks    and on virtual links this field    should
    be set to 0.0.0.0.

    The Hello packet's Options field describes the router's    optional
    OSPF capabilities. One    optional capability is defined in this
    specification (see Sections 4.5    and A.2). The E-bit of    the
    Options    field should be    set if and only    if the attached    area is
    capable    of processing AS-external-LSAs (i.e., it is not    a stub
    area).    If the E-bit is    set incorrectly    the neighboring    routers
    will refuse to accept the Hello    Packet (see Section 10.5).
    Unrecognized bits in the Hello Packet's    Options    field should be
    set to zero.

    In order to ensure two-way communication between adjacent
    routers, the Hello packet contains the list of all routers on
    the network from which Hello Packets have been seen recently.
    The Hello packet also contains the router's current choice for
    Designated Router and Backup Designated    Router.     A value of
    0.0.0.0    in these fields    means that one has not yet been
    selected.

    On broadcast networks and physical point-to-point networks,
    Hello packets are sent every HelloInterval seconds to the IP
    multicast address AllSPFRouters. On virtual links, Hello
    packets    are sent as unicasts (addressed    directly to the    other
    end of the virtual link) every HelloInterval seconds. On Point-
    to-MultiPoint networks,    separate Hello packets are sent    to each
    attached neighbor every    HelloInterval seconds. Sending of Hello
    packets    on NBMA    networks is covered in the next    section.







Moy             Standards Track         [Page 78]

RFC 2328         OSPF Version 2         April 1998


    9.5.1.    Sending    Hello packets on NBMA networks

     Static configuration information may be necessary in order
     for    the Hello Protocol to function on non-broadcast    networks
     (see Sections C.5 and C.6).     On NBMA networks, every
     attached router which is eligible to become    Designated
     Router becomes aware of all    of its neighbors on the    network
     (either through configuration or by    some unspecified
     mechanism).     Each neighbor is labelled with    the neighbor's
     Designated Router eligibility.

     The    interface state    must be    at least Waiting for any Hello
     Packets to be sent out the NBMA interface.    Hello Packets
     are    then sent directly (as unicasts) to some subset    of a
     router's neighbors.     Sometimes an Hello Packet is sent
     periodically on a timer; at    other times it is sent as a
     response to    a received Hello Packet. A router's hello-
     sending behavior varies depending on whether the router
     itself is eligible to become Designated Router.

     If the router is eligible to become    Designated Router, it
     must periodically send Hello Packets to all    neighbors that
     are    also eligible.    In addition, if    the router is itself the
     Designated Router or Backup    Designated Router, it must also
     send periodic Hello    Packets    to all other neighbors.     This
     means that any two eligible    routers    are always exchanging
     Hello Packets, which is necessary for the correct operation
     of the Designated Router election algorithm. To minimize
     the    number of Hello    Packets    sent, the number of eligible
     routers on an NBMA network should be kept small.

     If the router is not eligible to become Designated Router,
     it must periodically send Hello Packets to both the
     Designated Router and the Backup Designated    Router (if they
     exist). It    must also send an Hello    Packet in reply    to an
     Hello Packet received from any eligible neighbor (other than
     the    current    Designated Router and Backup Designated    Router).
     This is needed to establish    an initial bidirectional
     relationship with any potential Designated Router.

     When sending Hello packets periodically to any neighbor, the
     interval between Hello Packets is determined by the



Moy             Standards Track         [Page 79]

RFC 2328         OSPF Version 2         April 1998


     neighbor's state. If the neighbor is in state Down, Hello
     Packets are    sent every PollInterval    seconds. Otherwise,
     Hello Packets are sent every HelloInterval seconds.


10. The Neighbor Data Structure

An OSPF router converses with its neighboring routers. Each
separate conversation is described by a "neighbor data structure".
Each conversation is bound to a particular OSPF router interface,
and    is identified either by    the neighboring    router's OSPF Router ID
or by its Neighbor IP address (see below).    Thus if    the OSPF router
and    another    router have multiple attached networks in common,
multiple conversations ensue, each described by a unique neighbor
data structure. Each separate conversation    is loosely referred to
in the text    as being a separate "neighbor".

The    neighbor data structure    contains all information pertinent to
the    forming    or formed adjacency between the    two neighbors.
(However, remember that not    all neighbors become adjacent.)     An
adjacency can be viewed as a highly    developed conversation between
two    routers.


State
    The functional level of    the neighbor conversation. This is
    described in more detail in Section 10.1.

Inactivity Timer
    A single shot timer whose firing indicates that    no Hello Packet
    has been seen from this    neighbor recently. The    length of the
    timer is RouterDeadInterval seconds.

Master/Slave
    When the two neighbors are exchanging databases, they form a
    master/slave relationship. The    master sends the first Database
    Description Packet, and    is the only part that is allowed to
    retransmit. The slave can only    respond    to the master's    Database
    Description Packets. The master/slave relationship is
    negotiated in state ExStart.





Moy             Standards Track         [Page 80]

RFC 2328         OSPF Version 2         April 1998


DD Sequence    Number
    The DD Sequence    number of the Database Description packet that
    is currently being sent    to the neighbor.

Last received Database Description packet
    The initialize(I), more    (M) and    master(MS) bits, Options field,
    and DD sequence    number contained in the    last Database
    Description packet received from the neighbor. Used to determine
    whether    the next Database Description packet received from the
    neighbor is a duplicate.

Neighbor ID
    The OSPF Router    ID of the neighboring router. The Neighbor ID
    is learned when    Hello packets are received from    the neighbor, or
    is configured if this is a virtual adjacency (see Section C.4).

Neighbor Priority
    The Router Priority of the neighboring router.    Contained in the
    neighbor's Hello packets, this item is used when selecting the
    Designated Router for the attached network.

Neighbor IP    address
    The IP address of the neighboring router's interface to    the
    attached network. Used    as the Destination IP address when
    protocol packets are sent as unicasts along this adjacency.
    Also used in router-LSAs as the    Link ID    for the    attached network
    if the neighboring router is selected to be Designated Router
    (see Section 12.4.1). The Neighbor IP address is learned when
    Hello packets are received from    the neighbor. For virtual
    links, the Neighbor IP address is learned during the routing
    table build process (see Section 15).

Neighbor Options
    The optional OSPF capabilities supported by the    neighbor.
    Learned    during the Database Exchange process (see Section 10.6).
    The neighbor's optional    OSPF capabilities are also listed in its
    Hello packets.    This enables received Hello Packets to be
    rejected (i.e.,    neighbor relationships will not    even start to
    form) if there is a mismatch in    certain    crucial    OSPF
    capabilities (see Section 10.5). The optional OSPF capabilities
    are documented in Section 4.5.




Moy             Standards Track         [Page 81]

RFC 2328         OSPF Version 2         April 1998


Neighbor's Designated Router
    The neighbor's idea of the Designated Router. If this is the
    neighbor itself, this is important in the local    calculation of
    the Designated Router.    Defined    only on    broadcast and NBMA
    networks.

Neighbor's Backup Designated Router
    The neighbor's idea of the Backup Designated Router. If this is
    the neighbor itself, this is important in the local calculation
    of the Backup Designated Router. Defined only on broadcast and
    NBMA networks.


The    next set of variables are lists    of LSAs. These    lists describe
subsets of the area    link-state database. This memo    defines    five
distinct types of LSAs, all    of which may be    present    in an area
link-state database: router-LSAs, network-LSAs, and    Type 3 and 4
summary-LSAs (all stored in    the area data structure), and AS-
external-LSAs (stored in the global    data structure).


Link state retransmission list
    The list of LSAs that have been    flooded    but not    acknowledged on
    this adjacency.     These will be retransmitted at    intervals until
    they are acknowledged, or until    the adjacency is destroyed.

Database summary list
    The complete list of LSAs that make up the area    link-state
    database, at the moment    the neighbor goes into Database    Exchange
    state.    This list is sent to the neighbor in Database
    Description packets.

Link state request list
    The list of LSAs that need to be received from this neighbor in
    order to synchronize the two neighbors'    link-state databases.
    This list is created as    Database Description packets are
    received, and is then sent to the neighbor in Link State Request
    packets. The list is depleted as appropriate Link State Update
    packets    are received.






Moy             Standards Track         [Page 82]

RFC 2328         OSPF Version 2         April 1998


10.1. Neighbor states

    The state of a neighbor    (really, the state of a    conversation
    being held with    a neighboring router) is documented in the
    following sections. The states    are listed in order of
    progressing functionality. For    example, the inoperative state
    is listed first, followed by a list of intermediate states
    before the final, fully    functional state is achieved. The
    specification makes use    of this    ordering by sometimes making
    references such    as "those neighbors/adjacencies    in state greater
    than X". Figures 12 and 13 show the graph of neighbor state
    changes. The arcs of the graphs are labelled with the event
    causing    the state change. The neighbor    events are documented in
    Section    10.2.

    The graph in Figure 12 shows the state changes effected    by the
    Hello Protocol.     The Hello Protocol is responsible for neighbor
    acquisition and    maintenance, and for ensuring two way
    communication between neighbors.

    The graph in Figure 13 shows the forming of an adjacency. Not
    every two neighboring routers become adjacent (see Section
    10.4).    The adjacency starts to    form when the neighbor is in
    state ExStart.    After the two routers discover their
    master/slave status, the state transitions to Exchange.     At this
    point the neighbor starts to be    used in    the flooding procedure,
    and the    two neighboring    routers    begin synchronizing their
    databases. When this synchronization is finished, the neighbor
    is in state Full and we    say that the two routers are fully
    adjacent. At this point the adjacency is listed in LSAs.

    For a more detailed description    of neighbor state changes,
    together with the additional actions involved in each change,
    see Section 10.3.


    Down
     This is the    initial    state of a neighbor conversation. It
     indicates that there has been no recent information    received
     from the neighbor.    On NBMA    networks, Hello    packets    may
     still be sent to "Down" neighbors, although    at a reduced
     frequency (see Section 9.5.1).



Moy             Standards Track         [Page 83]

RFC 2328         OSPF Version 2         April 1998



                 +----+
                 |Down|
                 +----+
                 |\
                 | \Start
                 |    \ +-------+
             Hello |     +---->|Attempt|
             Received |     +-------+
                 |         |
             +----+<-+         |HelloReceived
             |Init|<---------------+
             +----+<--------+
                |     |
                |2-Way     |1-Way
                |Received |Received
                |     |
     +-------+        |     +-----+
     |ExStart|<--------+------->|2-Way|
     +-------+             +-----+

     Figure 12: Neighbor state    changes    (Hello Protocol)

         In addition to the state transitions pictured,
         Event    KillNbr    always forces Down State,
         Event    InactivityTimer    always forces Down State,
         Event    LLDown always forces Down State


















Moy             Standards Track         [Page 84]

RFC 2328         OSPF Version 2         April 1998


                 +-------+
                 |ExStart|
                 +-------+
                 |
         NegotiationDone|
                 +->+--------+
                 |Exchange|
                 +--+--------+
                 |
             Exchange|
             Done |
         +----+     |     +-------+
         |Full|<---------+----->|Loading|
         +----+<-+         +-------+
             | LoadingDone |
             +------------------+

     Figure 13: Neighbor    state changes (Database    Exchange)

        In addition to the state transitions pictured,
        Event SeqNumberMismatch    forces ExStart state,
        Event BadLSReq forces ExStart state,
        Event 1-Way forces Init    state,
        Event KillNbr always forces Down State,
        Event InactivityTimer always forces Down State,
        Event LLDown always forces Down    State,
        Event AdjOK? leads to adjacency    forming/breaking

    Attempt
     This state is only valid for neighbors attached to NBMA
     networks. It indicates that no recent information has been
     received from the neighbor,    but that a more    concerted effort
     should be made to contact the neighbor. This is done by
     sending the    neighbor Hello packets at intervals of
     HelloInterval (see Section 9.5.1).

    Init
     In this state, an Hello packet has recently    been seen from
     the    neighbor. However, bidirectional communication    has not
     yet    been established with the neighbor (i.e., the router
     itself did not appear in the neighbor's Hello packet). All




Moy             Standards Track         [Page 85]

RFC 2328         OSPF Version 2         April 1998


     neighbors in this state (or    higher)    are listed in the Hello
     packets sent from the associated interface.

    2-Way
     In this state, communication between the two routers is
     bidirectional. This has been assured by the operation of
     the    Hello Protocol.     This is the most advanced state short
     of beginning adjacency establishment. The (Backup)
     Designated Router is selected from the set of neighbors in
     state 2-Way    or greater.

    ExStart
     This is the    first step in creating an adjacency between the
     two    neighboring routers. The goal of this step is to decide
     which router is the    master,    and to decide upon the initial
     DD sequence    number.     Neighbor conversations    in this    state or
     greater are    called adjacencies.

    Exchange
     In this state the router is    describing its entire link state
     database by    sending    Database Description packets to    the
     neighbor. Each Database Description Packet    has a DD
     sequence number, and is explicitly acknowledged. Only one
     Database Description Packet    is allowed outstanding at any
     one    time. In this state, Link State Request Packets may
     also be sent asking    for the    neighbor's more    recent LSAs.
     All    adjacencies in Exchange    state or greater are used by the
     flooding procedure.     In fact, these    adjacencies are    fully
     capable of transmitting and    receiving all types of OSPF
     routing protocol packets.

    Loading
     In this state, Link    State Request packets are sent to the
     neighbor asking for    the more recent    LSAs that have been
     discovered (but not    yet received) in the Exchange state.

    Full
     In this state, the neighboring routers are fully adjacent.
     These adjacencies will now appear in router-LSAs and
     network-LSAs.





Moy             Standards Track         [Page 86]

RFC 2328         OSPF Version 2         April 1998


10.2. Events causing neighbor state changes

    State changes can be effected by a number of events. These
    events are shown in the    labels of the arcs in Figures 12 and 13.
    The label definitions are as follows:


    HelloReceived
     An Hello packet has    been received from the neighbor.

    Start
     This is an indication that Hello Packets should now    be sent
     to the neighbor at intervals of HelloInterval seconds. This
     event is generated only for    neighbors associated with NBMA
     networks.

    2-WayReceived
     Bidirectional communication    has been realized between the
     two    neighboring routers. This is indicated    by the router
     seeing itself in the neighbor's Hello packet.

    NegotiationDone
     The    Master/Slave relationship has been negotiated, and DD
     sequence numbers have been exchanged. This    signals    the
     start of the sending/receiving of Database Description
     packets. For more information on the generation of    this
     event, consult Section 10.8.

    ExchangeDone
     Both routers have successfully transmitted a full sequence
     of Database    Description packets. Each router now knows what
     parts of its link state database are out of    date. For more
     information    on the generation of this event, consult Section
     10.8.

    BadLSReq
     A Link State Request has been received for an LSA not
     contained in the database.    This indicates an error    in the
     Database Exchange process.

    Loading    Done
     Link State Updates have been received for all out-of-date



Moy             Standards Track         [Page 87]

RFC 2328         OSPF Version 2         April 1998


     portions of    the database. This is indicated by the    Link
     state request list becoming    empty after the    Database
     Exchange process has completed.

    AdjOK?
     A decision must be made as to whether an adjacency should be
     established/maintained with    the neighbor. This event will
     start some adjacencies forming, and    destroy    others.


    The following events cause well    developed neighbors to revert to
    lesser states.    Unlike the above events, these events may occur
    when the neighbor conversation is in any of a number of    states.


    SeqNumberMismatch
     A Database Description packet has been received that either
     a) has an unexpected DD sequence number, b)    unexpectedly has
     the    Init bit set or    c) has an Options field    differing from
     the    last Options field received in a Database Description
     packet. Any of these conditions indicate that some    error
     has    occurred during    adjacency establishment.

    1-Way
     An Hello packet has    been received from the neighbor, in
     which the router is    not mentioned.    This indicates that
     communication with the neighbor is not bidirectional.

    KillNbr
     This is an indication that all    communication with the
     neighbor is now impossible, forcing the     neighbor to
     revert to    Down state.

    InactivityTimer
     The    inactivity Timer has fired. This means    that no    Hello
     packets have been seen recently from the neighbor.    The
     neighbor reverts to    Down state.

    LLDown
     This is an indication from the lower level protocols that
     the    neighbor is now    unreachable. For example, on an X.25
     network this could be indicated by an X.25 clear indication



Moy             Standards Track         [Page 88]

RFC 2328         OSPF Version 2         April 1998


     with appropriate cause and diagnostic fields. This    event
     forces the neighbor    into Down state.


10.3. The Neighbor    state machine

    A detailed description of the neighbor state changes follows.
    Each state change is invoked by    an event (Section 10.2). This
    event may produce different effects, depending on the current
    state of the neighbor.    For this reason, the state machine below
    is organized by    current    neighbor state and received event. Each
    entry in the state machine describes the resulting new neighbor
    state and the required set of additional actions.

    When a neighbor's state    changes, it may    be necessary to    rerun
    the Designated Router election algorithm. This    is determined by
    whether    the interface NeighborChange event is generated    (see
    Section    9.2). Also, if    the Interface is in DR state (the router
    is itself Designated Router), changes in neighbor state    may
    cause a    new network-LSA    to be originated (see Section 12.4).

    When the neighbor state    machine    needs to invoke    the interface
    state machine, it should be done as a scheduled    task (see
    Section    4.4). This simplifies things, by ensuring that    neither
    state machine will be executed recursively.


     State(s): Down

     Event: Start

    New state: Attempt

     Action: Send an Hello Packet to the    neighbor (this neighbor
         is always associated with an NBMA network) and start
         the    Inactivity Timer for the neighbor. The    timer's
         later firing would indicate    that communication with
         the    neighbor was not attained.


     State(s): Attempt




Moy             Standards Track         [Page 89]

RFC 2328         OSPF Version 2         April 1998


     Event: HelloReceived

    New state: Init

     Action: Restart the    Inactivity Timer for the neighbor, since
         the    neighbor has now been heard from.


     State(s): Down

     Event: HelloReceived

    New state: Init

     Action: Start the Inactivity Timer for the neighbor. The
         timer's later firing would indicate    that the
         neighbor is    dead.


     State(s): Init or greater

     Event: HelloReceived

    New state: No state change.

     Action: Restart the    Inactivity Timer for the neighbor, since
         the    neighbor has again been    heard from.


     State(s): Init

     Event: 2-WayReceived

    New state: Depends upon action    routine.

     Action: Determine whether an adjacency should be established
         with the neighbor (see Section 10.4). If not, the
         new    neighbor state is 2-Way.

         Otherwise (an adjacency should be established) the
         neighbor state transitions to ExStart. Upon
         entering this state, the router increments the DD



Moy             Standards Track         [Page 90]

RFC 2328         OSPF Version 2         April 1998


         sequence number in the neighbor data structure. If
         this is the    first time that    an adjacency has been
         attempted, the DD sequence number should be    assigned
         some unique    value (like the    time of    day clock). It
         then declares itself master    (sets the master/slave
         bit    to master), and    starts sending Database
         Description    Packets, with the initialize (I), more
         (M)    and master (MS)    bits set. This    Database
         Description    Packet should be otherwise empty. This
         Database Description Packet    should be retransmitted
         at intervals of RxmtInterval until the next    state is
         entered (see Section 10.8).


     State(s): ExStart

     Event: NegotiationDone

    New state: Exchange

     Action: The    router must list the contents of its entire area
         link state database    in the neighbor    Database summary
         list. The area link state database    consists of the
         router-LSAs, network-LSAs and summary-LSAs contained
         in the area    structure, along with the AS-external-
         LSAs contained in the global structure. AS-
         external-LSAs are omitted from a virtual neighbor's
         Database summary list. AS-external-LSAs are omitted
         from the Database summary list if the area has been
         configured as a stub (see Section 3.6). LSAs whose
         age    is equal to MaxAge are instead added to    the
         neighbor's Link state retransmission list.    A
         summary of the Database summary list will be sent to
         the    neighbor in Database Description packets. Each
         Database Description Packet    has a DD sequence
         number, and    is explicitly acknowledged. Only one
         Database Description Packet    is allowed outstanding
         at any one time. For more detail on the sending and
         receiving of Database Description packets, see
         Sections 10.8 and 10.6.





Moy             Standards Track         [Page 91]

RFC 2328         OSPF Version 2         April 1998


     State(s): Exchange

     Event: ExchangeDone

    New state: Depends upon action    routine.

     Action: If the neighbor Link state request list is empty,
         the    new neighbor state is Full. No    other action is
         required. This is an adjacency's final state.

         Otherwise, the new neighbor    state is Loading. Start
         (or    continue) sending Link State Request packets to
         the    neighbor (see Section 10.9). These are    requests
         for    the neighbor's more recent LSAs    (which were
         discovered but not yet received in the Exchange
         state). These LSAs    are listed in the Link state
         request list associated with the neighbor.


     State(s): Loading

     Event: Loading Done

    New state: Full

     Action: No action required.     This is an adjacency's    final
         state.


     State(s): 2-Way

     Event: AdjOK?

    New state: Depends upon action    routine.

     Action: Determine whether an adjacency should be formed with
         the    neighboring router (see    Section    10.4).    If not,
         the    neighbor state remains at 2-Way. Otherwise,
         transition the neighbor state to ExStart and perform
         the    actions    associated with    the above state    machine
         entry for state Init and event 2-WayReceived.




Moy             Standards Track         [Page 92]

RFC 2328         OSPF Version 2         April 1998


     State(s): ExStart or greater

     Event: AdjOK?

    New state: Depends upon action    routine.

     Action: Determine whether the neighboring router should
         still be adjacent.    If yes,    there is no state change
         and    no further action is necessary.

         Otherwise, the (possibly partially formed) adjacency
         must be destroyed.    The neighbor state transitions
         to 2-Way. The Link    state retransmission list,
         Database summary list and Link state request list
         are    cleared    of LSAs.


     State(s): Exchange or    greater

     Event: SeqNumberMismatch

    New state: ExStart

     Action: The    (possibly partially formed) adjacency is torn
         down, and then an attempt is made at
         reestablishment. The neighbor state first
         transitions    to ExStart. The Link state
         retransmission list, Database summary list and Link
         state request list are cleared of LSAs. Then the
         router increments the DD sequence number in    the
         neighbor data structure, declares itself master
         (sets the master/slave bit to master), and starts
         sending Database Description Packets, with the
         initialize (I), more (M) and master    (MS) bits set.
         This Database Description Packet should be otherwise
         empty (see Section 10.8).


     State(s): Exchange or    greater

     Event: BadLSReq




Moy             Standards Track         [Page 93]

RFC 2328         OSPF Version 2         April 1998


    New state: ExStart

     Action: The    action for event BadLSReq is exactly the same as
         for    the neighbor event SeqNumberMismatch. The
         (possibly partially    formed)    adjacency is torn down,
         and    then an    attempt    is made    at reestablishment. For
         more information, see the neighbor state machine
         entry that is invoked when event SeqNumberMismatch
         is generated in state Exchange or greater.


     State(s): Any    state

     Event: KillNbr

    New state: Down

     Action: The    Link state retransmission list,    Database summary
         list and Link state    request    list are cleared of
         LSAs. Also, the Inactivity    Timer is disabled.


     State(s): Any    state

     Event: LLDown

    New state: Down

     Action: The    Link state retransmission list,    Database summary
         list and Link state    request    list are cleared of
         LSAs. Also, the Inactivity    Timer is disabled.


     State(s): Any    state

     Event: InactivityTimer

    New state: Down

     Action: The    Link state retransmission list,    Database summary
         list and Link state    request    list are cleared of
         LSAs.



Moy             Standards Track         [Page 94]

RFC 2328         OSPF Version 2         April 1998


     State(s): 2-Way or greater

     Event: 1-WayReceived

    New state: Init

     Action: The    Link state retransmission list,    Database summary
         list and Link state    request    list are cleared of
         LSAs.


     State(s): 2-Way or greater

     Event: 2-WayReceived

    New state: No state change.

     Action: No action required.


     State(s): Init

     Event: 1-WayReceived

    New state: No state change.

     Action: No action required.


10.4. Whether to become adjacent

    Adjacencies are    established with some subset of    the router's
    neighbors. Routers connected by point-to-point    networks,
    Point-to-MultiPoint networks and virtual links always become
    adjacent. On broadcast    and NBMA networks, all routers become
    adjacent to both the Designated    Router and the Backup Designated
    Router.

    The adjacency-forming decision occurs in two places in the
    neighbor state machine.     First,    when bidirectional communication
    is initially established with the neighbor, and    secondly, when
    the identity of    the attached network's (Backup)    Designated



Moy             Standards Track         [Page 95]

RFC 2328         OSPF Version 2         April 1998


    Router changes.     If the    decision is made to not    attempt    an
    adjacency, the state of    the neighbor communication stops at 2-
    Way.

    An adjacency should be established with    a bidirectional    neighbor
    when at    least one of the following conditions holds:


    o The    underlying network type    is point-to-point

    o The    underlying network type    is Point-to-MultiPoint

    o The    underlying network type    is virtual link

    o The    router itself is the Designated    Router

    o The    router itself is the Backup Designated Router

    o The    neighboring router is the Designated Router

    o The    neighboring router is the Backup Designated Router


10.5. Receiving Hello Packets

    This section explains the detailed processing of a received
    Hello Packet. (See Section A.3.2 for the format of Hello
    packets.) The generic input processing    of OSPF    packets    will
    have checked the validity of the IP header and the OSPF    packet
    header.     Next, the values of the Network Mask, HelloInterval,
    and RouterDeadInterval fields in the received Hello packet must
    be checked against the values configured for the receiving
    interface. Any    mismatch causes    processing to stop and the
    packet to be dropped. In other    words, the above fields    are
    really describing the attached network's configuration.    However,
    there is one exception to the above rule: on point-to-point
    networks and on    virtual    links, the Network Mask    in the received
    Hello Packet should be ignored.

    The receiving interface    attaches to a single OSPF area (this
    could be the backbone).     The setting of    the E-bit found    in the
    Hello Packet's Options field must match    this area's



Moy             Standards Track         [Page 96]

RFC 2328         OSPF Version 2         April 1998


    ExternalRoutingCapability. If AS-external-LSAs    are not    flooded
    into/throughout    the area (i.e, the area    is a "stub") the E-bit
    must be    clear in received Hello    Packets, otherwise the E-bit
    must be    set. A    mismatch causes    processing to stop and the
    packet to be dropped. The setting of the rest of the bits in
    the Hello Packet's Options field should    be ignored.

    At this    point, an attempt is made to match the source of the
    Hello Packet to    one of the receiving interface's neighbors. If
    the receiving interface    connects to a broadcast, Point-to-
    MultiPoint or NBMA network the source is identified by the IP
    source address found in    the Hello's IP header.    If the receiving
    interface connects to a    point-to-point link or a virtual link,
    the source is identified by the    Router ID found    in the Hello's
    OSPF packet header. The interface's current list of neighbors
    is contained in    the interface's    data structure.     If a matching
    neighbor structure cannot be found, (i.e., this    is the first
    time the neighbor has been detected), one is created. The
    initial    state of a newly created neighbor is set to Down.

    When receiving an Hello    Packet from a neighbor on a broadcast,
    Point-to-MultiPoint or NBMA network, set the neighbor
    structure's Neighbor ID    equal to the Router ID found in    the
    packet's OSPF header. For these network types,    the neighbor
    structure's Router Priority field, Neighbor's Designated Router
    field, and Neighbor's Backup Designated    Router field are also
    set equal to the corresponding fields found in the received
    Hello Packet; changes in these fields should be    noted for
    possible use in    the steps below. When receiving an Hello on a
    point-to-point network (but not    on a virtual link) set the
    neighbor structure's Neighbor IP address to the    packet's IP
    source address.

    Now the    rest of    the Hello Packet is examined, generating events
    to be given to the neighbor and    interface state    machines. These
    state machines are specified either to be executed or scheduled
    (see Section 4.4). For    example, by specifying below that the
    neighbor state machine be executed in line, several neighbor
    state transitions may be effected by a single received Hello:






Moy             Standards Track         [Page 97]

RFC 2328         OSPF Version 2         April 1998


    o Each Hello Packet causes the neighbor state    machine    to be
     executed with the event HelloReceived.

    o Then the list of neighbors contained in the    Hello Packet is
     examined. If the router itself appears in this list, the
     neighbor state machine should be executed with the event 2-
     WayReceived. Otherwise, the neighbor state    machine    should
     be executed    with the event 1-WayReceived, and the processing
     of the packet stops.

    o Next, if a change in the neighbor's    Router Priority    field
     was    noted, the receiving interface's state machine is
     scheduled with the event NeighborChange.

    o If the neighbor is both declaring itself to    be Designated
     Router (Hello Packet's Designated Router field = Neighbor IP
     address) and the Backup Designated Router field in the
     packet is equal to 0.0.0.0 and the receiving interface is in
     state Waiting, the receiving interface's state machine is
     scheduled with the event BackupSeen. Otherwise, if    the
     neighbor is    declaring itself to be Designated Router and it
     had    not previously,    or the neighbor    is not declaring itself
     Designated Router where it had previously, the receiving
     interface's    state machine is scheduled with    the event
     NeighborChange.

    o If the neighbor is declaring itself    to be Backup Designated
     Router (Hello Packet's Backup Designated Router field =
     Neighbor IP    address) and the receiving interface is    in state
     Waiting, the receiving interface's state machine is
     scheduled with the event BackupSeen. Otherwise, if    the
     neighbor is    declaring itself to be Backup Designated Router
     and    it had not previously, or the neighbor is not declaring
     itself Backup Designated Router where it had previously, the
     receiving interface's state    machine    is scheduled with the
     event NeighborChange.

    On NBMA    networks, receipt of an    Hello Packet may also cause an
    Hello Packet to    be sent    back to    the neighbor in    response. See
    Section    9.5.1 for more details.





Moy             Standards Track         [Page 98]

RFC 2328         OSPF Version 2         April 1998


10.6. Receiving Database Description Packets

    This section explains the detailed processing of a received
    Database Description Packet. The incoming Database Description
    Packet has already been    associated with    a neighbor and receiving
    interface by the generic input packet processing (Section 8.2).
    Whether    the Database Description packet    should be accepted, and
    if so, how it should be    further    processed depends upon the
    neighbor state.

    If a Database Description packet is accepted, the following
    packet fields should be    saved in the corresponding neighbor data
    structure under    "last received Database    Description packet":
    the packet's initialize(I), more (M) and master(MS) bits,
    Options    field, and DD sequence number. If these    fields are set
    identically in two consecutive Database    Description packets
    received from the neighbor, the    second Database    Description
    packet is considered to    be a "duplicate" in the    processing
    described below.

    If the Interface MTU field in the Database Description packet
    indicates an IP    datagram size that is larger than the router can
    accept on the receiving    interface without fragmentation, the
    Database Description packet is rejected. Otherwise, if    the
    neighbor state is:

    Down
     The    packet should be rejected.

    Attempt
     The    packet should be rejected.

    Init
     The    neighbor state machine should be executed with the event
     2-WayReceived. This causes    an immediate state change to
     either state 2-Way or state    ExStart. If the    new state is
     ExStart, the processing of the current packet should then
     continue in    this new state by falling through to case
     ExStart below.






Moy             Standards Track         [Page 99]

RFC 2328         OSPF Version 2         April 1998


    2-Way
     The    packet should be ignored. Database Description    Packets
     are    used only for the purpose of bringing up adjacencies.[7]

    ExStart
     If the received packet matches one of the following    cases,
     then the neighbor state machine should be executed with the
     event NegotiationDone (causing the state to    transition to
     Exchange), the packet's Options field should be recorded in
     the    neighbor structure's Neighbor Options field and    the
     packet should be accepted as next in sequence and processed
     further (see below). Otherwise, the packet    should be
     ignored.

     o    The initialize(I), more    (M) and    master(MS) bits    are set,
        the contents of    the packet are empty, and the neighbor's
        Router ID is larger than the router's own. In this case
        the router is now Slave. Set the master/slave bit to
        slave, and set the neighbor data structure's DD    sequence
        number to that specified by the    master.

     o    The initialize(I) and master(MS) bits are off, the
        packet's DD sequence number equals the neighbor    data
        structure's DD sequence    number (indicating
        acknowledgment)    and the    neighbor's Router ID is    smaller
        than the router's own.    In this    case the router    is
        Master.

    Exchange
     Duplicate Database Description packets are discarded by the
     master, and    cause the slave    to retransmit the last Database
     Description    packet that it had sent. Otherwise (the    packet
     is not a duplicate):

     o    If the state of    the MS-bit is inconsistent with    the
        master/slave state of the connection, generate the
        neighbor event SeqNumberMismatch and stop processing the
        packet.

     o    If the initialize(I) bit is set, generate the neighbor
        event SeqNumberMismatch    and stop processing the    packet.




Moy             Standards Track         [Page 100]

RFC 2328         OSPF Version 2         April 1998


     o    If the packet's    Options    field indicates    a different set
        of optional OSPF capabilities than were    previously
        received from the neighbor (recorded in    the Neighbor
        Options    field of the neighbor structure), generate the
        neighbor event SeqNumberMismatch and stop processing the
        packet.

     o    Database Description packets must be processed in
        sequence, as indicated by the packets' DD sequence
        numbers. If the    router is master, the next packet
        received should    have DD    sequence number    equal to the DD
        sequence number    in the neighbor    data structure.    If the
        router is slave, the next packet received should have DD
        sequence number    equal to one more than the DD sequence
        number stored in the neighbor data structure. In either
        case, if the packet is the next    in sequence it should be
        accepted and its contents processed as specified below.

     o    Else, generate the neighbor event SeqNumberMismatch and
        stop processing    the packet.

    Loading    or Full
     In this state, the router has sent and received an entire
     sequence of    Database Description Packets. The only    packets
     received should be duplicates (see above).    In particular,
     the    packet's Options field should match the    set of optional
     OSPF capabilities previously indicated by the neighbor
     (stored in the neighbor structure's    Neighbor Options field).
     Any    other packets received,    including the reception    of a
     packet with    the Initialize(I) bit set, should generate the
     neighbor event SeqNumberMismatch.[8] Duplicates should be
     discarded by the master. The slave    must respond to
     duplicates by repeating the    last Database Description packet
     that it had    sent.


    When the router    accepts    a received Database Description    Packet
    as the next in sequence    the packet contents are    processed as
    follows. For each LSA listed, the LSA's LS type is checked for
    validity. If the LS type is unknown (e.g., not    one of the LS
    types 1-5 defined by this specification), or if    this is    an AS-
    external-LSA (LS type =    5) and the neighbor is associated with a



Moy             Standards Track         [Page 101]

RFC 2328         OSPF Version 2         April 1998


    stub area, generate the    neighbor event SeqNumberMismatch and
    stop processing    the packet. Otherwise,    the router looks up the
    LSA in its database to see whether it also has an instance of
    the LSA. If it    does not, or if    the database copy is less recent
    (see Section 13.1), the    LSA is put on the Link state request
    list so    that it    can be requested (immediately or at some later
    time) in Link State Request Packets.

    When the router    accepts    a received Database Description    Packet
    as the next in sequence, it also performs the following    actions,
    depending on whether it    is master or slave:


    Master
     Increments the DD sequence number in the neighbor data
     structure.    If the router has already sent its entire
     sequence of    Database Description Packets, and the just
     accepted packet has    the more bit (M) set to    0, the neighbor
     event ExchangeDone is generated. Otherwise, it should send
     a new Database Description to the slave.

    Slave
     Sets the DD    sequence number    in the neighbor    data structure
     to the DD sequence number appearing    in the received    packet.
     The    slave must send    a Database Description Packet in reply.
     If the received packet has the more    bit (M)    set to 0, and
     the    packet to be sent by the slave will also have the M-bit
     set    to 0, the neighbor event ExchangeDone is generated.
     Note that the slave    always generates this event before the
     master.


10.7. Receiving Link State    Request    Packets

    This section explains the detailed processing of received Link
    State Request packets.    Received Link State Request Packets
    specify    a list of LSAs that the    neighbor wishes    to receive.
    Link State Request Packets should be accepted when the neighbor
    is in states Exchange, Loading,    or Full. In all other states
    Link State Request Packets should be ignored.





Moy             Standards Track         [Page 102]

RFC 2328         OSPF Version 2         April 1998


    Each LSA specified in the Link State Request packet should be
    located    in the router's    database, and copied into Link State
    Update packets for transmission    to the neighbor. These    LSAs
    should NOT be placed on    the Link state retransmission list for
    the neighbor. If an LSA cannot    be found in the    database,
    something has gone wrong with the Database Exchange process, and
    neighbor event BadLSReq    should be generated.


10.8. Sending Database Description    Packets

    This section describes how Database Description    Packets    are sent
    to a neighbor. The Database Description    packet's Interface MTU
    field is set to    the size of the    largest    IP datagram that can be
    sent out the sending interface,    without    fragmentation.    Common
    MTUs in    use in the Internet can    be found in Table 7-1 of
    [Ref22]. Interface MTU should be set to    0 in Database
    Description packets sent over virtual links.

    The router's optional OSPF capabilities    (see Section 4.5) are
    transmitted to the neighbor in the Options field of the    Database
    Description packet. The router    should maintain    the same set of
    optional capabilities throughout the Database Exchange and
    flooding procedures. If for some reason the router's optional
    capabilities change, the Database Exchange procedure should be
    restarted by reverting to neighbor state ExStart. One optional
    capability is defined in this specification (see Sections 4.5
    and A.2). The E-bit should be set if and only if the attached
    network    belongs    to a non-stub area. Unrecognized bits in the
    Options    field should be    set to zero.

    The sending of Database    Description packets depends on the
    neighbor's state. In state ExStart the    router sends empty
    Database Description packets, with the initialize (I), more (M)
    and master (MS)    bits set. These packets are retransmitted every
    RxmtInterval seconds.

    In state Exchange the Database Description Packets actually
    contain    summaries of the link state information    contained in the
    router's database. Each LSA in    the area's link-state database
    (at the    time the neighbor transitions into Exchange state) is
    listed in the neighbor Database    summary    list. Each new    Database



Moy             Standards Track         [Page 103]

RFC 2328         OSPF Version 2         April 1998


    Description Packet copies its DD sequence number from the
    neighbor data structure    and then describes the current top of
    the Database summary list. Items are removed from the Database
    summary    list when the previous packet is acknowledged.

    In state Exchange, the determination of    when to    send a Database
    Description packet depends on whether the router is master or
    slave:


    Master
     Database Description packets are sent when either a) the
     slave acknowledges the previous Database Description packet
     by echoing the DD sequence number or b) RxmtInterval seconds
     elapse without an acknowledgment, in which case the    previous
     Database Description packet    is retransmitted.

    Slave
     Database Description packets are sent only in response to
     Database Description packets received from the master. If
     the    Database Description packet received from the master is
     new, a new Database    Description packet is sent, otherwise
     the    previous Database Description packet is    resent.


    In states Loading and Full the slave must resend its last
    Database Description packet in response    to duplicate Database
    Description packets received from the master. For this    reason
    the slave must wait RouterDeadInterval seconds before freeing
    the last Database Description packet. Reception of a Database
    Description packet from    the master after this interval will
    generate a SeqNumberMismatch neighbor event.


10.9. Sending Link    State Request Packets

    In neighbor states Exchange or Loading,    the Link state request
    list contains a    list of    those LSAs that    need to    be obtained from
    the neighbor. To request these    LSAs, a    router sends the
    neighbor the beginning of the Link state request list, packaged
    in a Link State    Request    packet.




Moy             Standards Track         [Page 104]

RFC 2328         OSPF Version 2         April 1998


    When the neighbor responds to these requests with the proper
    Link State Update packet(s), the Link state request list is
    truncated and a    new Link State Request packet is sent.    This
    process    continues until    the Link state request list becomes
    empty. LSAs on the Link    state request list that    have been
    requested, but not yet received, are packaged into Link    State
    Request    packets    for retransmission at intervals    of RxmtInterval.
    There should be    at most    one Link State Request packet
    outstanding at any one time.

    When the Link state request list becomes empty,    and the    neighbor
    state is Loading (i.e.,    a complete sequence of Database
    Description packets has    been sent to and received from the
    neighbor), the Loading Done neighbor event is generated.


10.10. An Example

    Figure 14 shows    an example of an adjacency forming. Routers RT1
    and RT2    are both connected to a    broadcast network. It is
    assumed    that RT2 is the    Designated Router for the network, and
    that RT2 has a higher Router ID    than Router RT1.

    The neighbor state changes realized by each router are listed on
    the sides of the figure.

    At the beginning of Figure 14, Router RT1's interface to the
    network    becomes    operational. It begins    sending    Hello Packets,
    although it doesn't know the identity of the Designated    Router
    or of any other    neighboring routers. Router RT2 hears this
    hello (moving the neighbor to Init state), and in its next Hello
    Packet indicates that it is itself the Designated Router and
    that it    has heard Hello    Packets    from RT1. This    in turn    causes
    RT1 to go to state ExStart, as it starts to bring up the
    adjacency.

    RT1 begins by asserting    itself as the master. When it sees that
    RT2 is indeed the master (because of RT2's higher Router ID),
    RT1 transitions    to slave state and adopts its neighbor's DD
    sequence number. Database Description packets are then
    exchanged, with    polls coming from the master (RT2) and responses
    from the slave (RT1). This sequence of    Database Description



Moy             Standards Track         [Page 105]

RFC 2328         OSPF Version 2         April 1998







     +---+                     +---+
     |RT1|                     |RT2|
     +---+                     +---+

     Down                     Down
             Hello(DR=0,seen=0)
         ------------------------------>
             Hello (DR=RT2,seen=RT1,...)     Init
         <------------------------------
     ExStart     D-D (Seq=x,I,M,Master)
         ------------------------------>
             D-D (Seq=y,I,M,Master)     ExStart
         <------------------------------
     Exchange     D-D (Seq=y,M,Slave)
         ------------------------------>
             D-D (Seq=y+1,M,Master)     Exchange
         <------------------------------
             D-D (Seq=y+1,M,Slave)
         ------------------------------>
                 ...
                 ...
                 ...
             D-D (Seq=y+n, Master)
         <------------------------------
             D-D (Seq=y+n, Slave)
     Loading ------------------------------>
                 LS Request         Full
         ------------------------------>
                 LS Update
         <------------------------------
                 LS Request
         ------------------------------>
                 LS Update
         <------------------------------
     Full





Moy             Standards Track         [Page 106]

RFC 2328         OSPF Version 2         April 1998


         Figure 14: An adjacency bring-up example





    Packets    ends when both the poll    and associated response    has the
    M-bit off.

    In this    example, it is assumed that RT2    has a completely up to
    date database.    In that    case, RT2 goes immediately into    Full
    state.    RT1 will go into Full state after updating the necessary
    parts of its database.    This is    done by    sending    Link State
    Request    Packets, and receiving Link State Update Packets in
    response. Note    that, while RT1    has waited until a complete set
    of Database Description    Packets    has been received (from    RT2)
    before sending any Link    State Request Packets, this need not be
    the case. RT1 could have interleaved the sending of Link State
    Request    Packets    with the reception of Database Description
    Packets.


11. The Routing Table Structure

The    routing    table data structure contains all the information
necessary to forward an IP data packet toward its destination. Each
routing table entry    describes the collection of best paths to a
particular destination. When forwarding an    IP data    packet,    the
routing table entry    providing the best match for the packet's IP
destination    is located. The matching routing table    entry then
provides the next hop towards the packet's destination. OSPF also
provides for the existence of a default route (Destination ID =
DefaultDestination,    Address    Mask =    0x00000000). When the default
route exists, it matches all IP destinations (although any other
matching entry is a    better match).    Finding    the routing table entry
that best matches an IP destination    is further described in    Section
11.1.

There is a single routing table in each router. Two sample    routing
tables are described in Sections 11.2 and 11.3. The building of the
routing table is discussed in Section 16.




Moy             Standards Track         [Page 107]

RFC 2328         OSPF Version 2         April 1998


The    rest of    this section defines the fields    found in a routing table
entry. The    first set of fields describes the routing table    entry's
destination.


Destination    Type
    Destination type is either "network" or    "router". Only network
    entries    are actually used when forwarding IP data traffic.
    Router routing table entries are used solely as    intermediate
    steps in the routing table build process.

    A network is a range of    IP addresses, to which IP data traffic
    may be forwarded. This    includes IP networks (class A, B, or C),
    IP subnets, IP supernets and single IP hosts. The default route
    also falls into    this category.

    Router entries are kept    for area border    routers    and AS boundary
    routers. Routing table    entries    for area border    routers    are used
    when calculating the inter-area    routes (see Section 16.2), and
    when maintaining configured virtual links (see Section 15).
    Routing    table entries for AS boundary routers are used when
    calculating the    AS external routes (see    Section    16.4).

Destination    ID
    The destination's identifier or    name. This depends on the
    Destination Type. For networks, the identifier    is their
    associated IP address.    For routers, the identifier is the OSPF
    Router ID.[9]

Address Mask
    Only defined for networks. The    network's IP address together
    with its address mask defines a    range of IP addresses.    For IP
    subnets, the address mask is referred to as the    subnet mask.
    For host routes, the mask is "all ones"    (0xffffffff).

Optional Capabilities
    When the destination is    a router this field indicates the
    optional OSPF capabilities supported by    the destination    router.
    The only optional capability defined by    this specification is
    the ability to process AS-external-LSAs. For a    further
    discussion of OSPF's optional capabilities, see    Section    4.5.




Moy             Standards Track         [Page 108]

RFC 2328         OSPF Version 2         April 1998


The    set of paths to    use for    a destination may vary based on    the OSPF
area to which the paths belong. This means    that there may be
multiple routing table entries for the same    destination, depending
on the values of the next field.


Area
    This field indicates the area whose link state information has
    led to the routing table entry's collection of paths. This is
    called the entry's associated area. For sets of AS external
    paths, this field is not defined. For destinations of type
    "router", there    may be separate    sets of    paths (and therefore
    separate routing table entries)    associated with    each of    several
    areas. For example, this will happen when two area border
    routers    share multiple areas in    common.     For destinations of
    type "network",    only the set of    paths associated with the best
    area (the one providing    the preferred route) is    kept.


The    rest of    the routing table entry    describes the set of paths to
the    destination. The following fields pertain to the set of paths
as a whole.     In other words, each one of the paths contained in a
routing table entry    is of the same path-type and cost (see below).


Path-type
    There are four possible    types of paths used to route traffic to
    the destination, listed    here in    decreasing order of preference:
    intra-area, inter-area,    type 1 external    or type    2 external.
    Intra-area paths indicate destinations belonging to one    of the
    router's attached areas. Inter-area paths are paths to
    destinations in    other OSPF areas. These are discovered    through
    the examination    of received summary-LSAs. AS external paths are
    paths to destinations external to the AS. These are detected
    through    the examination    of received AS-external-LSAs.

Cost
    The link state cost of the path    to the destination. For all
    paths except type 2 external paths this    describes the entire
    path's cost. For Type 2 external paths, this field describes
    the cost of the    portion    of the path internal to    the AS.     This




Moy             Standards Track         [Page 109]

RFC 2328         OSPF Version 2         April 1998


    cost is    calculated as the sum of the costs of the path's
    constituent links.

Type 2 cost
    Only valid for type 2 external paths. For these paths,    this
    field indicates    the cost of the    path's external    portion. This
    cost has been advertised by an AS boundary router, and is the
    most significant part of the total path    cost. For example, a
    type 2 external    path with type 2 cost of 5 is always preferred
    over a path with type 2    cost of    10, regardless of the cost of
    the two    paths' internal    components.

Link State Origin
    Valid only for intra-area paths, this field indicates the LSA
    (router-LSA or network-LSA) that directly references the
    destination. For example, if the destination is a transit
    network, this is the transit network's network-LSA. If    the
    destination is a stub network, this is the router-LSA for the
    attached router. The LSA is discovered    during the shortest-path
    tree calculation (see Section 16.1). Multiple LSAs may
    reference the destination, however a tie-breaking scheme always
    reduces    the choice to a    single LSA. The    Link State Origin field
    is not used by the OSPF    protocol, but it is used by the    routing
    table calculation in OSPF's Multicast routing extensions
    (MOSPF).

When multiple paths    of equal path-type and cost exist to a
destination    (called    elsewhere "equal-cost" paths), they are    stored
in a single    routing    table entry. Each one of the "equal-cost" paths
is distinguished by    the following fields:

Next hop
    The outgoing router interface to use when forwarding traffic to
    the destination. On broadcast,    Point-to-MultiPoint and    NBMA
    networks, the next hop also includes the IP address of the next
    router (if any)    in the path towards the    destination.

Advertising    router
    Valid only for inter-area and AS external paths. This field
    indicates the Router ID    of the router advertising the summary-
    LSA or AS-external-LSA that led    to this    path.




Moy             Standards Track         [Page 110]

RFC 2328         OSPF Version 2         April 1998


11.1. Routing table lookup

    When an    IP data    packet is received, an OSPF router finds the
    routing    table entry that best matches the packet's destination.
    This routing table entry then provides the outgoing interface
    and next hop router to use in forwarding the packet. This
    section    describes the process of finding the best matching
    routing    table entry.

    Before the lookup begins, "discard" routing table entries should
    be inserted into the routing table for each of the router's
    active area address ranges (see    Section    3.5). (An area    range is
    considered "active" if the range contains one or more networks
    reachable by intra-area    paths.)    The destination    of a "discard"
    entry is the set of addresses described    by its associated active
    area address range, and    the path type of each "discard"    entry is
    set to "inter-area".[10]

    Several    routing    table entries may match    the destination    address.
    In this    case, the "best    match" is the routing table entry that
    provides the most specific (longest) match. Another way    of
    saying this is to choose the entry that    specifies the narrowest
    range of IP addresses.[11] For example,    the entry for the
    address/mask pair of (128.185.1.0, 0xffffff00) is more specific
    than an    entry for the pair (128.185.0.0, 0xffff0000). The
    default    route is the least specific match, since it matches all
    destinations. (Note that for any single    routing    table entry,
    multiple paths may be possible.    In these cases,    the calculations
    in Sections 16.1, 16.2,    and 16.4 always    yield the paths    having
    the most preferential path-type, as described in Section 11).

    If there is no matching    routing    table entry, or    the best match
    routing    table entry is one of the above    "discard" routing table
    entries, then the packet's IP destination is considered
    unreachable. Instead of    being forwarded, the packet should then
    be discarded and an ICMP destination unreachable message should
    be returned to the packet's source.

11.2. Sample routing table, without areas

    Consider the Autonomous    System pictured    in Figure 2. No OSPF
    areas have been    configured. A single metric is    shown per



Moy             Standards Track         [Page 111]

RFC 2328         OSPF Version 2         April 1998


    outbound interface. The calculation of    Router RT6's routing
    table proceeds as described in Section 2.2. The resulting
    routing    table is shown in Table    12. Destination types are
    abbreviated: Network as    "N", Router as "R".

    There are no instances of multiple equal-cost shortest paths in
    this example. Also, since there are no    areas, there are no
    inter-area paths.

    Routers    RT5 and    RT7 are    AS boundary routers. Intra-area routes
    have been calculated to    Routers    RT5 and    RT7. This allows
    external routes    to be calculated to the    destinations advertised
    by RT5 and RT7 (i.e., Networks N12, N13, N14 and N15).    It is
    assumed    all AS-external-LSAs originated    by RT5 and RT7 are
    advertising type 1 external metrics. This results in type 1
    external paths being calculated    to destinations    N12-N15.



11.3. Sample routing table, with areas

    Consider the previous example, this time split into OSPF areas.
    An OSPF    area configuration is pictured in Figure 6. Router
    RT4's routing table will be described for this area
    configuration.    Router RT4 has a connection to Area 1 and a
    backbone connection. This causes Router RT4 to    view the AS as
    the concatenation of the two graphs shown in Figures 7 and 8.
    The resulting routing table is displayed in Table 13.

    Again, Routers RT5 and RT7 are AS boundary routers. Routers
    RT3, RT4, RT7, RT10 and    RT11 are area border routers. Note that
    there are two routing entries for the area border router RT3,
    since it has two areas in common with RT4 (Area    1 and the
    backbone).

    Backbone paths have been calculated to all area    border routers.
    These are used when determining    the inter-area routes.    Note
    that all of the    inter-area routes are associated with the
    backbone; this is always the case when the calculating router is
    itself an area border router. Routing information is condensed
    at area    boundaries. In    this example, we assume    that Area 3 has
    been defined so    that networks N9-N11 and the host route    to H1



Moy             Standards Track         [Page 112]

RFC 2328         OSPF Version 2         April 1998




Type Dest Area Path     Type     Cost    Next     Adv.
                        Hop(s)     Router(s)
____________________________________________________________
N     N1     0     intra-area     10    RT3     *
N     N2     0     intra-area     10    RT3     *
N     N3     0     intra-area     7    RT3     *
N     N4     0     intra-area     8    RT3     *
N     Ib     0     intra-area     7    *     *
N     Ia     0     intra-area     12    RT10     *
N     N6     0     intra-area     8    RT10     *
N     N7     0     intra-area     12    RT10     *
N     N8     0     intra-area     10    RT10     *
N     N9     0     intra-area     11    RT10     *
N     N10 0     intra-area     13    RT10     *
N     N11 0     intra-area     14    RT10     *
N     H1     0     intra-area     21    RT10     *
R     RT5 0     intra-area     6    RT5     *
R     RT7 0     intra-area     8    RT10     *
____________________________________________________________
N     N12 *     type    1 ext.     10    RT10     RT7
N     N13 *     type    1 ext.     14    RT5     RT5
N     N14 *     type    1 ext.     14    RT5     RT5
N     N15 *     type    1 ext.     17    RT10     RT7


     Table 12: The routing table for Router RT6
             (no configured    areas).

    are all    condensed to a single route when advertised into the
    backbone (by Router RT11). Note that the cost of this route is
    the maximum of the set of costs    to its individual components.

    There is a virtual link    configured between Routers RT10    and
    RT11. Without this configured virtual link, RT11 would    be
    unable to advertise a route for    networks N9-N11    and Host H1 into
    the backbone, and there    would not be an    entry for these    networks
    in Router RT4's    routing    table.

    In this    example    there are two equal-cost paths to Network N12.
    However, they both use the same    next hop (Router RT5).



Moy             Standards Track         [Page 113]

RFC 2328         OSPF Version 2         April 1998


    Router RT4's routing table would improve (i.e.,    some of    the
    paths in the routing table would become    shorter) if an
    additional virtual link    were configured    between    Router RT4 and
    Router RT3. The new virtual link would    itself be associated
    with the first entry for area border router RT3    in Table 13 (an
    intra-area path    through    Area 1). This would yield a cost of 1
    for the    virtual    link. The routing table entries changes that
    would be caused    by the addition    of this    virtual    link are shown


Type     Dest     Area Path Type     Cost     Next     Adv.
                         Hops(s) Router(s)
__________________________________________________________________
N     N1     1     intra-area     4     RT1     *
N     N2     1     intra-area     4     RT2     *
N     N3     1     intra-area     1     *     *
N     N4     1     intra-area     3     RT3     *
R     RT3     1     intra-area     1     *     *
__________________________________________________________________
N     Ib     0     intra-area     22     RT5     *
N     Ia     0     intra-area     27     RT5     *
R     RT3     0     intra-area     21     RT5     *
R     RT5     0     intra-area     8     *     *
R     RT7     0     intra-area     14     RT5     *
R     RT10     0     intra-area     22     RT5     *
R     RT11     0     intra-area     25     RT5     *
__________________________________________________________________
N     N6     0     inter-area     15     RT5     RT7
N     N7     0     inter-area     19     RT5     RT7
N     N8     0     inter-area     18     RT5     RT7
N     N9-N11,H1 0     inter-area     36     RT5     RT11
__________________________________________________________________
N     N12     *     type 1 ext. 16     RT5     RT5,RT7
N     N13     *     type 1 ext. 16     RT5     RT5
N     N14     *     type 1 ext. 16     RT5     RT5
N     N15     *     type 1 ext. 23     RT5     RT7


         Table    13: Router RT4's routing table
         in the presence of areas.





Moy             Standards Track         [Page 114]

RFC 2328         OSPF Version 2         April 1998


    in Table 14.



12. Link State    Advertisements (LSAs)

Each router    in the Autonomous System originates one    or more    link
state advertisements (LSAs). This memo defines five distinct types
of LSAs, which are described in Section 4.3. The collection of LSAs
forms the link-state database. Each separate type of LSA has a
separate function.    Router-LSAs and    network-LSAs describe how an
area's routers and networks    are interconnected. Summary-LSAs
provide a way of condensing    an area's routing information.    AS-
external-LSAs provide a way    of transparently advertising
externally-derived routing information throughout the Autonomous
System.

Each LSA begins with a standard 20-byte header. This LSA header is
discussed below.







Type Dest     Area Path Type Cost     Next     Adv.
                         Hop(s) Router(s)
________________________________________________________________
N     Ib     0 intra-area 16     RT3     *
N     Ia     0 intra-area 21     RT3     *
R     RT3     0 intra-area 1     *     *
R     RT10     0 intra-area 16     RT3     *
R     RT11     0 intra-area 19     RT3     *
________________________________________________________________
N     N9-N11,H1 0 inter-area 30     RT3     RT11


         Table    14: Changes resulting from an
            additional virtual link.





Moy             Standards Track         [Page 115]

RFC 2328         OSPF Version 2         April 1998


12.1. The LSA Header

    The LSA    header contains    the LS type, Link State    ID and
    Advertising Router fields. The    combination of these three
    fields uniquely    identifies the LSA.

    There may be several instances of an LSA present in the
    Autonomous System, all at the same time. It must then be
    determined which instance is more recent. This    determination is
    made by    examining the LS sequence, LS checksum and LS age
    fields.     These fields are also contained in the    20-byte    LSA
    header.

    Several    of the OSPF packet types list LSAs. When the instance
    is not important, an LSA is referred to    by its LS type,    Link
    State ID and Advertising Router    (see Link State    Request
    Packets). Otherwise, the LS sequence number, LS age and LS
    checksum fields    must also be referenced.

    A detailed explanation of the fields contained in the LSA header
    follows.


    12.1.1.     LS age

     This field is the age of the LSA in    seconds. It should be
     processed as an unsigned 16-bit integer. It is set    to 0
     when the LSA is originated.     It must be incremented    by
     InfTransDelay on every hop of the flooding procedure. LSAs
     are    also aged as they are held in each router's database.

     The    age of an LSA is never incremented past    MaxAge.     LSAs
     having age MaxAge are not used in the routing table
     calculation. When an LSA's    age first reaches MaxAge, it is
     reflooded.    An LSA of age MaxAge is    finally    flushed    from the
     database when it is    no longer needed to ensure database
     synchronization. For more information on the aging    of LSAs,
     consult Section 14.

     The    LS age field is    examined when a    router receives    two
     instances of an LSA, both having identical LS sequence
     numbers and    LS checksums. An instance of age MaxAge is then



Moy             Standards Track         [Page 116]

RFC 2328         OSPF Version 2         April 1998


     always accepted as most recent; this allows    old LSAs to be
     flushed quickly from the routing domain. Otherwise, if the
     ages differ    by more    than MaxAgeDiff, the instance having the
     smaller age    is accepted as most recent.[12]    See Section 13.1
     for    more details.


    12.1.2.     Options

     The    Options    field in the LSA header    indicates which    optional
     capabilities are associated    with the LSA. OSPF's optional
     capabilities are described in Section 4.5.    One optional
     capability is defined by this specification, represented by
     the    E-bit found in the Options field. The unrecognized bits
     in the Options field should    be set to zero.

     The    E-bit represents OSPF's    ExternalRoutingCapability. This
     bit    should be set in all LSAs associated with the backbone,
     and    all LSAs associated with non-stub areas    (see Section
     3.6). It should also be set in all    AS-external-LSAs. It
     should be reset in all router-LSAs,    network-LSAs and
     summary-LSAs associated with a stub    area. For all LSAs, the
     setting of the E-bit is for    informational purposes only; it
     does not affect the    routing    table calculation.


    12.1.3.     LS type

     The    LS type    field dictates the format and function of the
     LSA. LSAs of different types have different names (e.g.,
     router-LSAs    or network-LSAs). All LSA types defined by this
     memo, except the AS-external-LSAs (LS type = 5), are flooded
     throughout a single    area only. AS-external-LSAs are flooded
     throughout the entire Autonomous System, excepting stub
     areas (see Section 3.6). Each separate LSA    type is    briefly
     described below in Table 15.

    12.1.4.     Link State ID

     This field identifies the piece of the routing domain that
     is being described by the LSA. Depending on the LSA's LS
     type, the Link State ID takes on the values    listed in Table



Moy             Standards Track         [Page 117]

RFC 2328         OSPF Version 2         April 1998




     LS Type LSA description
     ________________________________________________
     1     These are    the router-LSAs.
         They describe the    collected
         states of the router's
         interfaces. For more information,
         consult Section 12.4.1.
     ________________________________________________
     2     These are    the network-LSAs.
         They describe the    set of routers
         attached to the network. For
         more information,    consult
         Section 12.4.2.
     ________________________________________________
     3 or 4 These are    the summary-LSAs.
         They describe inter-area routes,
         and enable the condensation of
         routing information at area
         borders. Originated by area border
         routers, the Type    3 summary-LSAs
         describe routes to networks while    the
         Type 4 summary-LSAs describe routes to
         AS boundary routers.
     ________________________________________________
     5     These are    the AS-external-LSAs.
         Originated by AS boundary    routers,
         they describe routes
         to destinations external to the
         Autonomous System. A default route for
         the Autonomous System can    also be
         described    by an AS-external-LSA.


     Table 15: OSPF link    state advertisements (LSAs).

     16.


     Actually, for Type 3 summary-LSAs (LS type = 3) and    AS-
     external-LSAs (LS type = 5), the Link State    ID may



Moy             Standards Track         [Page 118]

RFC 2328         OSPF Version 2         April 1998




     LS Type Link State ID
     _______________________________________________
     1     The originating router's Router ID.
     2     The IP interface address of the
         network's    Designated Router.
     3     The destination network's    IP address.
     4     The Router ID of the described AS
         boundary router.
     5     The destination network's    IP address.


         Table 16: The LSA's Link State ID.

     additionally have one or more of the destination network's
     "host" bits    set. For example, when originating an AS-
     external-LSA for the network 10.0.0.0 with mask of
     255.0.0.0, the Link    State ID can be    set to anything    in the
     range 10.0.0.0 through 10.255.255.255 inclusive (although
     10.0.0.0 should be used whenever possible).    The freedom to
     set    certain    host bits allows a router to originate separate
     LSAs for two networks having the same address but different
     masks. See Appendix    E for details.

     When the LSA is describing a network (LS type = 2, 3 or 5),
     the    network's IP address is    easily derived by masking the
     Link State ID with the network/subnet mask contained in the
     body of the    LSA. When the LSA is describing a router (LS
     type = 1 or    4), the    Link State ID is always    the described
     router's OSPF Router ID.

     When an AS-external-LSA (LS    Type = 5) is describing    a
     default route, its Link State ID is    set to
     DefaultDestination (0.0.0.0).


    12.1.5.     Advertising Router

     This field specifies the OSPF Router ID of the LSA's
     originator.     For router-LSAs, this field is    identical to the
     Link State ID field. Network-LSAs are originated by the



Moy             Standards Track         [Page 119]

RFC 2328         OSPF Version 2         April 1998


     network's Designated Router. Summary-LSAs originated by
     area border    routers. AS-external-LSAs are originated by AS
     boundary routers.


    12.1.6.     LS sequence number

     The    sequence number    field is a signed 32-bit integer. It is
     used to detect old and duplicate LSAs. The    space of
     sequence numbers is    linearly ordered. The larger the
     sequence number (when compared as signed 32-bit integers)
     the    more recent the    LSA. To describe to sequence number
     space more precisely, let N    refer in the discussion    below to
     the    constant 2**31.

     The    sequence number    -N (0x80000000)    is reserved (and
     unused). This leaves -N + 1 (0x80000001) as the smallest
     (and therefore oldest) sequence number; this sequence number
     is referred    to as the constant InitialSequenceNumber. A
     router uses    InitialSequenceNumber the first    time it
     originates any LSA.     Afterwards, the LSA's sequence    number
     is incremented each    time the router    originates a new
     instance of    the LSA. When an attempt is made to increment
     the    sequence number    past the maximum value of N - 1
     (0x7fffffff; also referred to as MaxSequenceNumber), the
     current instance of    the LSA    must first be flushed from the
     routing domain. This is done by prematurely aging the LSA
     (see Section 14.1) and reflooding it. As soon as this flood
     has    been acknowledged by all adjacent neighbors, a new
     instance can be originated with sequence number of
     InitialSequenceNumber.

     The    router may be forced to    promote    the sequence number of
     one    of its LSAs when a more    recent instance    of the LSA is
     unexpectedly received during the flooding process.    This
     should be a    rare event. This may indicate that an out-of-
     date LSA, originated by the    router itself before its last
     restart/reload, still exists in the    Autonomous System. For
     more information see Section 13.4.






Moy             Standards Track         [Page 120]

RFC 2328         OSPF Version 2         April 1998


    12.1.7.     LS checksum

     This field is the checksum of the complete contents    of the
     LSA, excepting the LS age field. The LS age field is
     excepted so    that an    LSA's age can be incremented without
     updating the checksum. The    checksum used is the same that
     is used for    ISO connectionless datagrams; it is commonly
     referred to    as the Fletcher    checksum. It is documented in
     Annex B of [Ref6].    The LSA    header also contains the length
     of the LSA in bytes; subtracting the size of the LS    age
     field (two bytes) yields the amount    of data    to checksum.

     The    checksum is used to detect data    corruption of an LSA.
     This corruption can    occur while an LSA is being flooded, or
     while it is    being held in a    router's memory. The LS
     checksum field cannot take on the value of zero; the
     occurrence of such a value should be considered a checksum
     failure. In other words, calculation of the checksum is not
     optional.

     The    checksum of an LSA is verified in two cases: a) when it
     is received    in a Link State    Update Packet and b) at    times
     during the aging of    the link state database. The detection
     of a checksum failure leads    to separate actions in each
     case. See Sections    13 and 14 for more details.

     Whenever the LS sequence number field indicates that two
     instances of an LSA    are the    same, the LS checksum field is
     examined. If there    is a difference, the instance with the
     larger LS checksum is considered to    be most    recent.[13] See
     Section 13.1 for more details.


12.2. The link state database

    A router has a separate    link state database for    every area to
    which it belongs. All routers belonging    to the same area have
    identical link state databases for the area.

    The databases for each individual area are always dealt    with
    separately. The shortest path calculation is performed
    separately for each area (see Section 16). Components of the



Moy             Standards Track         [Page 121]

RFC 2328         OSPF Version 2         April 1998


    area link-state    database are flooded throughout    the area only.
    Finally, when an adjacency (belonging to Area A) is being
    brought    up, only the database for Area A is synchronized between
    the two    routers.

    The area database is composed of router-LSAs, network-LSAs and
    summary-LSAs (all listed in the    area data structure). In
    addition, external routes (AS-external-LSAs) are included in all
    non-stub area databases    (see Section 3.6).

    An implementation of OSPF must be able to access individual
    pieces of an area database. This lookup function is based on an
    LSA's LS type, Link State ID and Advertising Router.[14] There
    will be    a single instance (the most up-to-date)    of each    LSA in
    the database. The database lookup function is invoked during
    the LSA    flooding procedure (Section 13)    and the    routing    table
    calculation (Section 16). In addition,    using this lookup
    function the router can    determine whether it has itself    ever
    originated a particular    LSA, and if so,    with what LS sequence
    number.

    An LSA is added    to a router's database when either a) it is
    received during    the flooding process (Section 13) or b)    it is
    originated by the router itself    (Section 12.4).     An LSA    is
    deleted    from a router's    database when either a)    it has been
    overwritten by a newer instance    during the flooding process
    (Section 13) or    b) the router originates a newer instance of one
    of its self-originated LSAs (Section 12.4) or c) the LSA ages
    out and    is flushed from    the routing domain (Section 14).
    Whenever an LSA    is deleted from    the database it    must also be
    removed    from all neighbors' Link state retransmission lists (see
    Section    10).


12.3. Representation of TOS

    For backward compatibility with    previous versions of the OSPF
    specification ([Ref9]),    TOS-specific information can be    included
    in router-LSAs,    summary-LSAs and AS-external-LSAs. The    encoding
    of TOS in OSPF LSAs is specified in Table 17. That table relates
    the OSPF encoding to the IP packet header's TOS    field (defined
    in [Ref12]). The OSPF encoding    is expressed as    a decimal



Moy             Standards Track         [Page 122]

RFC 2328         OSPF Version 2         April 1998


    integer, and the IP packet header's TOS    field is expressed in
    the binary TOS values used in [Ref12].



         OSPF encoding RFC    1349 TOS values
         ___________________________________________
         0         0000 normal    service
         2         0001 minimize monetary cost
         4         0010 maximize reliability
         6         0011
         8         0100 maximize throughput
         10         0101
         12         0110
         14         0111
         16         1000 minimize delay
         18         1001
         20         1010
         22         1011
         24         1100
         26         1101
         28         1110
         30         1111


            Table 17: Representing TOS in OSPF.


12.4. Originating LSAs

    Into any given OSPF area, a router will    originate several LSAs.
    Each router originates a router-LSA. If the router is also the
    Designated Router for any of the area's    networks, it will
    originate network-LSAs for those networks.

    Area border routers originate a    single summary-LSA for each
    known inter-area destination. AS boundary routers originate a
    single AS-external-LSA for each    known AS external destination.
    Destinations are advertised one    at a time so that the change in
    any single route can be    flooded    without    reflooding the entire
    collection of routes. During the flooding procedure, many LSAs
    can be carried by a single Link    State Update packet.



Moy             Standards Track         [Page 123]

RFC 2328         OSPF Version 2         April 1998


    As an example, consider    Router RT4 in Figure 6.     It is an area
    border router, having a    connection to Area 1 and the backbone.
    Router RT4 originates 5    distinct LSAs into the backbone    (one
    router-LSA, and    one summary-LSA    for each of the    networks N1-N4).
    Router RT4 will    also originate 8 distinct LSAs into Area 1 (one
    router-LSA and seven summary-LSAs as pictured in Figure    7). If
    RT4 has    been selected as Designated Router for Network N3, it
    will also originate a network-LSA for N3 into Area 1.

    In this    same figure, Router RT5    will be    originating 3 distinct
    AS-external-LSAs (one for each of the networks N12-N14). These
    will be    flooded    throughout the entire AS, assuming that    none of
    the areas have been configured as stubs. However, if area 3 has
    been configured    as a stub area,    the AS-external-LSAs for
    networks N12-N14 will not be flooded into area 3 (see Section
    3.6). Instead,    Router RT11 would originate a default summary-
    LSA that would be flooded throughout area 3 (see Section
    12.4.3). This instructs all of    area 3's internal routers to
    send their AS external traffic to RT11.

    Whenever a new instance    of an LSA is originated, its LS    sequence
    number is incremented, its LS age is set to 0, its LS checksum
    is calculated, and the LSA is added to the link    state database
    and flooded out    the appropriate    interfaces. See Section 13.2
    for details concerning the installation    of the LSA into    the link
    state database.     See Section 13.3 for details concerning the
    flooding of newly originated LSAs.


    The ten    events that can    cause a    new instance of    an LSA to be
    originated are:


    (1) The    LS age field of    one of the router's self-originated LSAs
     reaches the    value LSRefreshTime. In    this case, a new
     instance of    the LSA    is originated, even though the contents
     of the LSA (apart from the LSA header) will    be the same.
     This guarantees periodic originations of all LSAs.    This
     periodic updating of LSAs adds robustness to the link state
     algorithm.    LSAs that solely describe unreachable
     destinations should    not be refreshed, but should instead be
     flushed from the routing domain (see Section 14.1).



Moy             Standards Track         [Page 124]

RFC 2328         OSPF Version 2         April 1998


    When whatever is being described by an LSA changes, a new LSA is
    originated. However, two instances of the same    LSA may    not be
    originated within the time period MinLSInterval. This may
    require    that the generation of the next    instance be delayed by
    up to MinLSInterval. The following events may cause the
    contents of an LSA to change. These events should cause new
    originations if    and only if the    contents of the    new LSA    would be
    different:


    (2) An interface's state changes (see Section 9.1). This may
     mean that it is necessary to produce a new instance    of the
     router-LSA.

    (3) An attached    network's Designated Router changes. A    new
     router-LSA should be originated. Also, if the router itself
     is now the Designated Router, a new    network-LSA should be
     produced. If the router itself is no longer the Designated
     Router, any    network-LSA that it might have originated for
     the    network    should be flushed from the routing domain (see
     Section 14.1).

    (4) One    of the neighboring routers changes to/from the FULL
     state. This may mean that it is necessary to produce a new
     instance of    the router-LSA.     Also, if the router is    itself
     the    Designated Router for the attached network, a new
     network-LSA    should be produced.


    The next four events concern area border routers only:


    (5) An intra-area route    has been added/deleted/modified    in the
     routing table. This may cause a new instance of a summary-
     LSA    (for this route) to be originated in each attached area
     (possibly including    the backbone).

    (6) An inter-area route    has been added/deleted/modified    in the
     routing table. This may cause a new instance of a summary-
     LSA    (for this route) to be originated in each attached area
     (but NEVER for the backbone).




Moy             Standards Track         [Page 125]

RFC 2328         OSPF Version 2         April 1998


    (7) The    router becomes newly attached to an area. The router
     must then originate    summary-LSAs into the newly attached
     area for all pertinent intra-area and inter-area routes in
     the    router's routing table.     See Section 12.4.3 for    more
     details.

    (8) When the state of one of the router's configured virtual
     links changes, it may be necessary to originate a new
     router-LSA into the    virtual    link's Transit area (see the
     discussion of the router-LSA's bit V in Section 12.4.1), as
     well as originating    a new router-LSA into the backbone.


    The last two events concern AS boundary    routers    (and former AS
    boundary routers) only:


    (9) An external    route gained through direct experience with an
     external routing protocol (like BGP) changes. This    will
     cause an AS    boundary router    to originate a new instance of
     an AS-external-LSA.

    (10)
     A router ceases to be an AS    boundary router, perhaps after
     restarting.    In this    situation the router should flush all
     AS-external-LSAs that it had previously originated.     These
     LSAs can be    flushed    via the    premature aging    procedure
     specified in Section 14.1.


    The construction of each type of LSA is    explained in detail
    below.    In general, these sections describe the    contents of the
    LSA body (i.e.,    the part coming    after the 20-byte LSA header).
    For information    concerning the building    of the LSA header, see
    Section    12.1.

    12.4.1.     Router-LSAs

     A router originates    a router-LSA for each area that    it
     belongs to.     Such an LSA describes the collected states of
     the    router's links to the area. The LSA is    flooded
     throughout the particular area, and    no further.



Moy             Standards Track         [Page 126]

RFC 2328         OSPF Version 2         April 1998



         ....................................
         . 192.1.2         Area 1 .
         .    +             .
         .    |             .
         .    | 3+---+1         .
         . N1    |--|RT1|-----+         .
         .    | +---+ \         .
         .    |     \ _______N3 .
         .    +        \/     \ .    1+---+
         .            * 192.1.1 *------|RT4|
         .    +        /\_______/ .     +---+
         .    |     / |     .
         .    | 3+---+1 /     |     .
         . N2    |--|RT2|-----+     1|     .
         .    | +---+     +---+8 .     6+---+
         .    |         |RT3|----------------|RT6|
         .    +         +---+ .        +---+
         . 192.1.3         |2     .     18.10.0.6|7
         .             |     .         |
         .         +------------+ .
         .            192.1.4    (N4) .
         ....................................


         Figure 15: Area 1 with IP addresses    shown

     The    format of a router-LSA is shown    in Appendix A (Section
     A.4.2). The first 20 bytes    of the LSA consist of the
     generic LSA    header that was    discussed in Section 12.1.
     router-LSAs    have LS    type = 1.

     A router also indicates whether it is an area border router,
     or an AS boundary router, by setting the appropriate bits
     (bit B and bit E, respectively) in its router-LSAs.    This
     enables paths to those types of routers to be saved    in the
     routing table, for later processing    of summary-LSAs    and AS-
     external-LSAs. Bit    B should be set    whenever the router is
     actively attached to two or    more areas, even if the    router
     is not currently attached to the OSPF backbone area. Bit E
     should never be set    in a router-LSA    for a stub area    (stub
     areas cannot contain AS boundary routers).



Moy             Standards Track         [Page 127]

RFC 2328         OSPF Version 2         April 1998


     In addition, the router sets bit V in its router-LSA for
     Area A if and only if the router is    the endpoint of    one or
     more fully adjacent    virtual    links having Area A as their
     Transit area. The setting of bit V enables other routers in
     Area A to discover whether the area    supports transit traffic
     (see TransitCapability in Section 6).

     The    router-LSA then    describes the router's working
     connections    (i.e., interfaces or links) to the area. Each
     link is typed according to the kind    of attached network.
     Each link is also labelled with its    Link ID. This Link ID
     gives a name to the    entity that is on the other end    of the
     link. Table 18 summarizes the values used for the Type and
     Link ID fields.



         Link    type Description     Link ID
         __________________________________________________
         1     Point-to-point     Neighbor Router ID
             link
         2     Link to transit     Interface address of
             network         Designated Router
         3     Link to stub     IP network number
             network
         4     Virtual link     Neighbor Router ID


             Table 18: Link descriptions in the
                 router-LSA.


     In addition, the Link Data field is    specified for each link.
     This field gives 32    bits of    extra information for the link.
     For    links to transit networks, numbered point-to-point links
     and    virtual    links, this field specifies the    IP interface
     address of the associated router interface (this is    needed
     by the routing table calculation, see Section 16.1.1). For
     links to stub networks, this field specifies the stub
     network's IP address mask.    For unnumbered point-to-point
     links, the Link Data field should be set to    the unnumbered
     interface's    MIB-II [Ref8] ifIndex value.



Moy             Standards Track         [Page 128]

RFC 2328         OSPF Version 2         April 1998


     Finally, the cost of using the link    for output is specified.
     The    output cost of a link is configurable.    With the
     exception of links to stub networks, the output cost must
     always be non-zero.

     To further describe    the process of building    the list of link
     descriptions, suppose a router wishes to build a router-LSA
     for    Area A.     The router examines its collection of interface
     data structures. For each interface, the following    steps
     are    taken:


     o    If the attached    network    does not belong    to Area    A, no
        links are added    to the LSA, and    the next interface
        should be examined.

     o    If the state of    the interface is Down, no links    are
        added.

     o    If the state of    the interface is Loopback, add a Type 3
        link (stub network) as long as this is not an interface
        to an unnumbered point-to-point    network. The Link ID
        should be set to the IP    interface address, the Link Data
        set to the mask    0xffffffff (indicating a host route),
        and the    cost set to 0.

     o    Otherwise, the link descriptions added to the router-LSA
        depend on the OSPF interface type. Link    descriptions
        used for point-to-point    interfaces are specified in
        Section    12.4.1.1, for virtual links in Section 12.4.1.2,
        for broadcast and NBMA interfaces in 12.4.1.3, and for
        Point-to-MultiPoint interfaces in 12.4.1.4.

     After consideration    of all the router interfaces, host links
     are    added to the router-LSA    by examining the list of
     attached hosts belonging to    Area A.     A host    route is
     represented    as a Type 3 link (stub network)    whose Link ID is
     the    host's IP address, Link    Data is    the mask of all    ones
     (0xffffffff), and cost the host's configured cost (see
     Section C.7).





Moy             Standards Track         [Page 129]

RFC 2328         OSPF Version 2         April 1998


     12.4.1.1. Describing point-to-point interfaces

        For point-to-point interfaces, one or more link
        descriptions are added to the router-LSA as follows:

        o If the neighboring router is fully adjacent, add a
         Type 1 link    (point-to-point). The Link ID should be
         set    to the Router ID of the    neighboring router. For
         numbered point-to-point networks, the Link Data
         should specify the IP interface address. For
         unnumbered point-to-point networks,    the Link Data
         field should specify the interface's MIB-II    [Ref8]
         ifIndex value. The cost should be set to the output
         cost of the    point-to-point interface.

        o In addition, as long as the    state of the interface
         is "Point-to-Point"    (and regardless    of the
         neighboring    router state), a Type 3    link (stub
         network) should be added. There are    two forms that
         this stub link can take:

         Option 1
            Assuming that the neighboring router's IP
            address    is known, set the Link ID of the Type 3
            link to    the neighbor's IP address, the Link Data
            to the mask 0xffffffff (indicating a host
            route),    and the    cost to    the interface's
            configured output cost.[15]

         Option 2
            If a subnet has    been assigned to the point-to-
            point link, set    the Link ID of the Type    3 link
            to the subnet's    IP address, the    Link Data to the
            subnet's mask, and the cost to the interface's
            configured output cost.[16]


     12.4.1.2. Describing broadcast and    NBMA interfaces

        For operational    broadcast and NBMA interfaces, a single
        link description is added to the router-LSA as follows:




Moy             Standards Track         [Page 130]

RFC 2328         OSPF Version 2         April 1998


        o If the state of the    interface is Waiting, add a Type
         3 link (stub network) with Link ID set to the IP
         network number of the attached network, Link Data
         set    to the attached    network's address mask,    and cost
         equal to the interface's configured    output cost.

        o Else, there    has been a Designated Router elected for
         the    attached network. If the router is fully
         adjacent to    the Designated Router, or if the router
         itself is Designated Router    and is fully adjacent to
         at least one other router, add a single Type 2 link
         (transit network) with Link    ID set to the IP
         interface address of the attached network's
         Designated Router (which may be the    router itself),
         Link Data set to the router's own IP interface
         address, and cost equal to the interface's
         configured output cost. Otherwise,    add a link as if
         the    interface state    were Waiting (see above).


     12.4.1.3. Describing virtual links

        For virtual links, a link description is added to the
        router-LSA only    when the virtual neighbor is fully
        adjacent. In this case,    add a Type 4 link (virtual link)
        with Link ID set to the    Router ID of the virtual
        neighbor, Link Data set    to the IP interface address
        associated with    the virtual link and cost set to the
        cost calculated    for the    virtual    link during the    routing
        table calculation (see Section 15).


     12.4.1.4. Describing Point-to-MultiPoint interfaces

        For operational    Point-to-MultiPoint interfaces,    one or
        more link descriptions are added to the    router-LSA as
        follows:

        o A single Type 3 link (stub network)    is added with
         Link ID set    to the router's    own IP interface
         address, Link Data set to the mask 0xffffffff
         (indicating    a host route), and cost    set to 0.



Moy             Standards Track         [Page 131]

RFC 2328         OSPF Version 2         April 1998


        o For    each fully adjacent neighbor associated    with the
         interface, add an additional Type 1    link (point-to-
         point) with    Link ID    set to the Router ID of    the
         neighboring    router,    Link Data set to the IP
         interface address and cost equal to    the interface's
         configured output cost.


     12.4.1.5. Examples    of router-LSAs

        Consider the router-LSAs generated by Router RT3, as
        pictured in Figure 6. The area    containing Router RT3
        (Area 1) has been redrawn, with    actual network
        addresses, in Figure 15. Assume that the last byte of
        all of RT3's interface addresses is 3, giving it the
        interface addresses 192.1.1.3 and 192.1.4.3, and that
        the other routers have similar addressing schemes. In
        addition, assume that all links    are functional,    and that
        Router IDs are assigned    as the smallest    IP interface
        address.

        RT3 originates two router-LSAs,    one for    Area 1 and one
        for the    backbone. Assume that Router RT4 has been
        selected as the    Designated router for network 192.1.1.0.
        RT3's router-LSA for Area 1 is then shown below. It
        indicates that RT3 has two connections to Area 1, the
        first a    link to    the transit network 192.1.1.0 and the
        second a link to the stub network 192.1.4.0. Note that
        the transit network is identified by the IP interface of
        its Designated Router (i.e., the Link ID = 192.1.1.4
        which is the Designated    Router RT4's IP    interface to
        192.1.1.0). Note also that RT3    has indicated that it is
        an area    border router.

    ; RT3's    router-LSA for Area 1

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 1         ;indicates router-LSA
    Link State ID =    192.1.1.3 ;RT3's Router ID
    Advertising Router = 192.1.1.3 ;RT3's Router ID
    bit E =    0         ;not an AS boundary router



Moy             Standards Track         [Page 132]

RFC 2328         OSPF Version 2         April 1998


    bit B =    1         ;area border router
    #links = 2
     Link ID = 192.1.1.4 ;IP address of Desig. Rtr.
     Link Data = 192.1.1.3 ;RT3's IP interface to net
     Type = 2         ;connects to transit network
     # TOS metrics = 0
     metric =    1

     Link ID = 192.1.4.0 ;IP Network number
     Link Data = 0xffffff00 ;Network    mask
     Type = 3         ;connects to stub network
     # TOS metrics = 0
     metric =    2

         Next RT3's router-LSA for the backbone is shown. It
         indicates that RT3 has a single attachment to the
         backbone. This attachment is via an unnumbered
         point-to-point link    to Router RT6.    RT3 has    again
         indicated that it is an area border    router.

    ; RT3's    router-LSA for the backbone

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 1         ;indicates router-LSA
    Link State ID =    192.1.1.3 ;RT3's router ID
    Advertising Router = 192.1.1.3 ;RT3's router ID
    bit E =    0         ;not an AS boundary router
    bit B =    1         ;area border router
    #links = 1
     Link ID = 18.10.0.6 ;Neighbor's Router ID
     Link Data = 0.0.0.3 ;MIB-II ifIndex of P-P link
     Type = 1         ;connects to router
     # TOS metrics = 0
     metric =    8

    12.4.2.     Network-LSAs

     A network-LSA is generated for every transit broadcast or
     NBMA network. (A transit network is a network having two or
     more attached routers). The network-LSA describes all the
     routers that are attached to the network.



Moy             Standards Track         [Page 133]

RFC 2328         OSPF Version 2         April 1998


     The    Designated Router for the network originates the LSA.
     The    Designated Router originates the LSA only if it    is fully
     adjacent to    at least one other router on the network. The
     network-LSA    is flooded throughout the area that contains the
     transit network, and no further. The network-LSA lists
     those routers that are fully adjacent to the Designated
     Router; each fully adjacent    router is identified by    its OSPF
     Router ID.    The Designated Router includes itself in this
     list.

     The    Link State ID for a network-LSA    is the IP interface
     address of the Designated Router. This value, masked by the
     network's address mask (which is also contained in the
     network-LSA) yields    the network's IP address.

     A router that has formerly been the    Designated Router for a
     network, but is no longer, should flush the    network-LSA that
     it had previously originated. This    LSA is no longer used in
     the    routing    table calculation. It is flushed by prematurely
     incrementing the LSA's age to MaxAge and reflooding    (see
     Section 14.1). In addition,    in those rare cases where a
     router's Router ID has changed, any    network-LSAs that were
     originated with the    router's previous Router ID must be
     flushed. Since the router may have no idea what it's
     previous Router ID might have been,    these network-LSAs are
     indicated by having    their Link State ID equal to one of the
     router's IP    interface addresses and    their Advertising Router
     equal to some value    other than the router's    current    Router
     ID (see Section 13.4 for more details).


     12.4.2.1. Examples    of network-LSAs

        Again consider the area    configuration in Figure    6.
        Network-LSAs are originated for    Network    N3 in Area 1,
        Networks N6 and    N8 in Area 2, and Network N9 in    Area 3.
        Assuming that Router RT4 has been selected as the
        Designated Router for Network N3, the following
        network-LSA is generated by RT4    on behalf of Network N3
        (see Figure 15 for the address assignments):

    ; Network-LSA for Network N3



Moy             Standards Track         [Page 134]

RFC 2328         OSPF Version 2         April 1998


    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 2         ;indicates network-LSA
    Link State ID =    192.1.1.4 ;IP address of Desig. Rtr.
    Advertising Router = 192.1.1.4 ;RT4's Router ID
    Network    Mask = 0xffffff00
     Attached    Router = 192.1.1.4 ;Router ID
     Attached    Router = 192.1.1.1 ;Router ID
     Attached    Router = 192.1.1.2 ;Router ID
     Attached    Router = 192.1.1.3 ;Router ID

    12.4.3.     Summary-LSAs

     The    destination described by a summary-LSA is either an IP
     network, an    AS boundary router or a    range of IP addresses.
     Summary-LSAs are flooded throughout    a single area only. The
     destination    described is one that is external to the area,
     yet    still belongs to the Autonomous    System.

     Summary-LSAs are originated    by area    border routers.     The
     precise summary routes to advertise    into an    area are
     determined by examining the    routing    table structure    (see
     Section 11)    in accordance with the algorithm described
     below. Note    that only intra-area routes are    advertised into
     the    backbone, while    both intra-area    and inter-area routes
     are    advertised into    the other areas.

     To determine which routes to advertise into    an attached Area
     A, each routing table entry    is processed as    follows.
     Remember that each routing table entry describes a set of
     equal-cost best paths to a particular destination:

     o    Only Destination Types of network and AS boundary router
        are advertised in summary-LSAs.     If the    routing    table
        entry's    Destination Type is area border    router,    examine
        the next routing table entry.

     o    AS external routes are never advertised    in summary-LSAs.
        If the routing table entry has Path-type of type 1
        external or type 2 external, examine the next routing
        table entry.




Moy             Standards Track         [Page 135]

RFC 2328         OSPF Version 2         April 1998


     o    Else, if the area associated with this set of paths is
        the Area A itself, do not generate a summary-LSA for the
        route.[17]

     o    Else, if the next hops associated with this set    of paths
        belong to Area A itself, do not    generate a summary-LSA
        for the    route.[18] This    is the logical equivalent of a
        Distance Vector    protocol's split horizon logic.

     o    Else, if the routing table cost    equals or exceeds the
        value LSInfinity, a summary-LSA    cannot be generated for
        this route.

     o    Else, if the destination of this route is an AS    boundary
        router,    a summary-LSA should be    originated if and only
        if the routing table entry describes the preferred path
        to the AS boundary router (see Step 3 of Section 16.4).
        If so, a Type 4    summary-LSA is originated for the
        destination, with Link State ID    equal to the AS    boundary
        router's Router    ID and metric equal to the routing table
        entry's    cost. Note: these LSAs should not be generated
        if Area    A has been configured as a stub    area.

     o    Else, the Destination type is network. If this is an
        inter-area route, generate a Type 3 summary-LSA    for the
        destination, with Link State ID    equal to the network's
        address    (if necessary, the Link    State ID can also have
        one or more of the network's host bits set; see    Appendix
        E for details) and metric equal    to the routing table
        cost.

     o    The one    remaining case is an intra-area    route to a
        network. This means that the network is contained in
        one of the router's directly attached areas. In
        general, this information must be condensed before
        appearing in summary-LSAs. Remember that an area has a
        configured list    of address ranges, each    range consisting
        of an [address,mask] pair and a    status indication of
        either Advertise or DoNotAdvertise. At    most a single
        Type 3 summary-LSA is originated for each range. When
        the range's status indicates Advertise,    a Type 3
        summary-LSA is generated with Link State ID equal to the



Moy             Standards Track         [Page 136]

RFC 2328         OSPF Version 2         April 1998


        range's    address    (if necessary, the Link    State ID can
        also have one or more of the range's "host" bits set;
        see Appendix E for details) and    cost equal to the
        largest    cost of    any of the component networks. When the
        range's    status indicates DoNotAdvertise, the Type 3
        summary-LSA is suppressed and the component networks
        remain hidden from other areas.

        By default, if a network is not    contained in any
        explicitly configured address range, a Type 3 summary-
        LSA is generated with Link State ID equal to the
        network's address (if necessary, the Link State    ID can
        also have one or more of the network's "host" bits set;
        see Appendix E for details) and    metric equal to    the
        network's routing table    cost.

        If an area is capable of carrying transit traffic (i.e.,
        its TransitCapability is set to    TRUE), routing
        information concerning backbone    networks should    not be
        condensed before being summarized into the area. Nor
        should the advertisement of backbone networks into
        transit    areas be suppressed. In other words, the
        backbone's configured ranges should be ignored when
        originating summary-LSAs into transit areas.

     If a router    advertises a summary-LSA for a destination which
     then becomes unreachable, the router must then flush the LSA
     from the routing domain by setting its age to MaxAge and
     reflooding (see Section 14.1). Also, if the destination is
     still reachable, yet can no    longer be advertised according
     to the above procedure (e.g., it is    now an inter-area route,
     when it used to be an intra-area route associated with some
     non-backbone area; it would    thus no    longer be advertisable
     to the backbone), the LSA should also be flushed from the
     routing domain.


     12.4.3.1. Originating summary-LSAs    into stub areas

        The algorithm in Section 12.4.3    is optional when Area A
        is an OSPF stub    area. Area border routers connecting to
        a stub area can    originate summary-LSAs into the    area



Moy             Standards Track         [Page 137]

RFC 2328         OSPF Version 2         April 1998


        according to the Section 12.4.3's algorithm, or    can
        choose to originate only a subset of the summary-LSAs,
        possibly under configuration control. The fewer LSAs
        originated, the    smaller    the stub area's    link state
        database, further reducing the demands on its routers'
        resources. However, omitting LSAs may also lead    to sub-
        optimal    inter-area routing, although routing will
        continue to function.

        As specified in    Section    12.4.3,    Type 4 summary-LSAs
        (ASBR-summary-LSAs) are    never originated into stub
        areas.

        In a stub area,    instead    of importing external routes
        each area border router    originates a "default summary-
        LSA" into the area. The    Link State ID for the default
        summary-LSA is set to DefaultDestination, and the metric
        set to the (per-area) configurable parameter
        StubDefaultCost. Note that StubDefaultCost need not be
        configured identically in all of the stub area's area
        border routers.


     12.4.3.2. Examples    of summary-LSAs

        Consider again the area    configuration in Figure    6.
        Routers    RT3, RT4, RT7, RT10 and    RT11 are all area border
        routers, and therefore are originating summary-LSAs.
        Consider in particular Router RT4. Its    routing    table
        was calculated as the example in Section 11.3.    RT4
        originates summary-LSAs    into both the backbone and Area
        1. Into the backbone, Router RT4 originates separate
        LSAs for each of the networks N1-N4. Into Area    1,
        Router RT4 originates separate LSAs for    networks N6-N8
        and the    AS boundary routers RT5,RT7. It also condenses
        host routes Ia and Ib into a single summary-LSA.
        Finally, the routes to networks    N9,N10,N11 and Host H1
        are advertised by a single summary-LSA.     This
        condensation was originally performed by the router
        RT11.





Moy             Standards Track         [Page 138]

RFC 2328         OSPF Version 2         April 1998


        These LSAs are illustrated graphically in Figures 7 and
        8. Two    of the summary-LSAs originated by Router RT4
        follow.     The actual IP addresses for the networks and
        routers    in question have been assigned in Figure 15.

    ; Summary-LSA for Network N1,
    ; originated by    Router RT4 into    the backbone

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 3         ;Type 3 summary-LSA
    Link State ID =    192.1.2.0 ;N1's IP network number
    Advertising Router = 192.1.1.4     ;RT4's ID
    metric = 4

    ; Summary-LSA for AS boundary router RT7
    ; originated by    Router RT4 into    Area 1

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 4         ;Type 4 summary-LSA
    Link State ID =    Router RT7's ID
    Advertising Router = 192.1.1.4     ;RT4's ID
    metric = 14

    12.4.4.     AS-external-LSAs

     AS-external-LSAs describe routes to    destinations external to
     the    Autonomous System. Most AS-external-LSAs describe
     routes to specific external    destinations; in these cases the
     LSA's Link State ID    is set to the destination network's IP
     address (if    necessary, the Link State ID can also have one
     or more of the network's "host" bits set; see Appendix E for
     details). However,    a default route    for the    Autonomous
     System can be described in an AS-external-LSA by setting the
     LSA's Link State ID    to DefaultDestination (0.0.0.0). AS-
     external-LSAs are originated by AS boundary    routers. An AS
     boundary router originates a single    AS-external-LSA    for each
     external route that    it has learned,    either through another
     routing protocol (such as BGP), or through configuration
     information.




Moy             Standards Track         [Page 139]

RFC 2328         OSPF Version 2         April 1998


     AS-external-LSAs are the only type of LSAs that are    flooded
     throughout the entire Autonomous System; all other types of
     LSAs are specific to a single area.     However, AS-external-
     LSAs are not flooded into/throughout stub areas (see Section
     3.6). This    enables    a reduction in link state database size
     for    routers    internal to stub areas.

     The    metric that is advertised for an external route    can be
     one    of two types. Type 1 metrics are comparable to    the link
     state metric. Type    2 metrics are assumed to be larger than
     the    cost of    any intra-AS path.

     If a router    advertises an AS-external-LSA for a destination
     which then becomes unreachable, the    router must then flush
     the    LSA from the routing domain by setting its age to MaxAge
     and    reflooding (see    Section    14.1).


     12.4.4.1. Examples    of AS-external-LSAs

        Consider once again the    AS pictured in Figure 6. There
        are two    AS boundary routers: RT5 and RT7. Router RT5
        originates three AS-external-LSAs, for networks    N12-N14.
        Router RT7 originates two AS-external-LSAs, for    networks
        N12 and    N15. Assume that RT7 has learned its route to
        N12 via    BGP, and that it wishes    to advertise a Type 2
        metric to the AS. RT7 would then originate the
        following LSA for N12:

    ; AS-external-LSA for Network N12,
    ; originated by    Router RT7

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 5         ;AS-external-LSA
    Link State ID =    N12's IP network number
    Advertising Router = Router RT7's ID
    bit E =    1         ;Type 2 metric
    metric = 2
    Forwarding address = 0.0.0.0





Moy             Standards Track         [Page 140]

RFC 2328         OSPF Version 2         April 1998


         In the above example, the forwarding address field
         has    been set to 0.0.0.0, indicating    that packets for
         the    external destination should be forwarded to the
         advertising    OSPF router (RT7). This is not    always
         desirable.    Consider the example pictured in Figure
         16.     There are three OSPF routers (RTA, RTB    and RTC)
         connected to a common network. Only one of    these
         routers, RTA, is exchanging    BGP information    with the
         non-OSPF router RTX. RTA must then    originate AS-
         external-LSAs for those destinations it has    learned
         from RTX. By using    the AS-external-LSA's forwarding
         address field, RTA can specify that    packets    for
         these destinations be forwarded directly to    RTX.
         Without this feature, Routers RTB and RTC would take
         an extra hop to get    to these destinations.

         Note that when the forwarding address field    is non-
         zero, it should point to a router belonging    to
         another Autonomous System.

         A forwarding address can also be specified for the
         default route. For    example, in figure 16 RTA may
         want to specify that all externally-destined packets
         should by default be forwarded to its BGP peer RTX.
         The    resulting AS-external-LSA is pictured below.
         Note that the Link State ID    is set to
         DefaultDestination.

    ; Default route, originated by Router RTA
    ; Packets forwarded through RTX

    LS age = 0         ;always true on origination
    Options    = (E-bit)     ;
    LS type    = 5         ;AS-external-LSA
    Link State ID =    DefaultDestination ; default route
    Advertising Router = Router RTA's ID
    bit E =    1         ;Type 2 metric
    metric = 1
    Forwarding address = RTX's IP address

         In figure 16, suppose instead that both RTA    and RTB
         exchange BGP information with RTX.    In this    case,



Moy             Standards Track         [Page 141]

RFC 2328         OSPF Version 2         April 1998


         RTA    and RTB    would originate    the same set of    AS-
         external-LSAs. These LSAs,    if they    specify    the same
         metric, would be functionally equivalent since they
         would specify the same destination and forwarding
         address (RTX). This leads to a clear duplication of
         effort. If    only one of RTA    or RTB originated the
         set    of AS-external-LSAs, the routing would remain
         the    same, and the size of the link state database
         would decrease. However, it must be unambiguously
         defined as to which    router originates the LSAs
         (otherwise neither may, or the identity of the
         originator may oscillate).    The following rule is
         thereby established: if two    routers, both reachable
         from one another, originate    functionally equivalent
         AS-external-LSAs (i.e., same destination, cost and
         non-zero forwarding    address), then the LSA
         originated by the router having the    highest    OSPF
         Router ID is used.    The router having the lower OSPF
         Router ID can then flush its LSA. Flushing    an LSA
         is discussed in Section 14.1.


                +
                |
         +---+.....|.BGP
         |RTA|-----|.....+---+
         +---+    |-----|RTX|
                | +---+
         +---+    |
         |RTB|-----|
         +---+    |
                |
         +---+    |
         |RTC|-----|
         +---+    |
                |
                +


     Figure 16: Forwarding address example





Moy             Standards Track         [Page 142]

RFC 2328         OSPF Version 2         April 1998


13. The Flooding Procedure

Link State Update packets provide the mechanism for    flooding LSAs.
A Link State Update    packet may contain several distinct LSAs, and
floods each    LSA one    hop further from its point of origination. To
make the flooding procedure    reliable, each LSA must    be acknowledged
separately.     Acknowledgments are transmitted in Link State
Acknowledgment packets. Many separate acknowledgments can also be
grouped together into a single packet.

The    flooding procedure starts when a Link State Update packet has
been received. Many consistency checks have been made on the
received packet before being handed    to the flooding    procedure (see
Section 8.2). In particular, the Link State Update    packet has been
associated with a particular neighbor, and a particular area. If
the    neighbor is in a lesser    state than Exchange, the packet    should
be dropped without further processing.

All    types of LSAs, other than AS-external-LSAs, are    associated with
a specific area. However, LSAs do not contain an area field. An
LSA's area must be deduced from the    Link State Update packet header.

For    each LSA contained in a    Link State Update packet, the following
steps are taken:


(1)    Validate the LSA's LS checksum.     If the    checksum turns out to be
    invalid, discard the LSA and get the next one from the Link
    State Update packet.

(2)    Examine    the LSA's LS type. If the LS type is unknown, discard
    the LSA    and get    the next one from the Link State Update    Packet.
    This specification defines LS types 1-5    (see Section 4.3).

(3)    Else if    this is    an AS-external-LSA (LS type = 5), and the area
    has been configured as a stub area, discard the    LSA and    get the
    next one from the Link State Update Packet. AS-external-LSAs
    are not    flooded    into/throughout    stub areas (see    Section    3.6).

(4)    Else if    the LSA's LS age is equal to MaxAge, and there is
    currently no instance of the LSA in the    router's link state
    database, and none of router's neighbors are in    states Exchange



Moy             Standards Track         [Page 143]

RFC 2328         OSPF Version 2         April 1998


    or Loading, then take the following actions: a)    Acknowledge the
    receipt    of the LSA by sending a    Link State Acknowledgment packet
    back to    the sending neighbor (see Section 13.5), and b)    Discard
    the LSA    and examine the    next LSA (if any) listed in the    Link
    State Update packet.

(5)    Otherwise, find    the instance of    this LSA that is currently
    contained in the router's link state database.    If there is no
    database copy, or the received LSA is more recent than the
    database copy (see Section 13.1    below for the determination of
    which LSA is more recent) the following    steps must be performed:

    (a) If there is    already    a database copy, and if    the database
     copy was received via flooding and installed less than
     MinLSArrival seconds ago, discard the new LSA (without
     acknowledging it) and examine the next LSA (if any)    listed
     in the Link    State Update packet.

    (b) Otherwise immediately flood    the new    LSA out    some subset of
     the    router's interfaces (see Section 13.3).     In some cases
     (e.g., the state of    the receiving interface    is DR and the
     LSA    was received from a router other than the Backup DR) the
     LSA    will be    flooded    back out the receiving interface. This
     occurrence should be noted for later use by    the
     acknowledgment process (Section 13.5).

    (c) Remove the current database    copy from all neighbors' Link
     state retransmission lists.

    (d) Install the    new LSA    in the link state database (replacing
     the    current    database copy).     This may cause    the routing
     table calculation to be scheduled.    In addition, timestamp
     the    new LSA    with the current time (i.e., the time it was
     received).    The flooding procedure cannot overwrite    the
     newly installed LSA    until MinLSArrival seconds have    elapsed.
     The    LSA installation process is discussed further in Section
     13.2.

    (e) Possibly acknowledge the receipt of    the LSA    by sending a
     Link State Acknowledgment packet back out the receiving
     interface.    This is    explained below    in Section 13.5.




Moy             Standards Track         [Page 144]

RFC 2328         OSPF Version 2         April 1998


    (f) If this new    LSA indicates that it was originated by    the
     receiving router itself (i.e., is considered a self-
     originated LSA), the router    must take special action, either
     updating the LSA or    in some    cases flushing it from the
     routing domain. For    a description of how self-originated
     LSAs are detected and subsequently handled,    see Section
     13.4.

(6)    Else, if there is an instance of the LSA on the    sending
    neighbor's Link    state request list, an error has occurred in the
    Database Exchange process. In this case, restart the Database
    Exchange process by generating the neighbor event BadLSReq for
    the sending neighbor and stop processing the Link State    Update
    packet.

(7)    Else, if the received LSA is the same instance as the database
    copy (i.e., neither one    is more    recent)    the following two steps
    should be performed:

    (a) If the LSA is listed in the    Link state retransmission list
     for    the receiving adjacency, the router itself is expecting
     an acknowledgment for this LSA. The router    should treat the
     received LSA as an acknowledgment by removing the LSA from
     the    Link state retransmission list.     This is termed    an
     "implied acknowledgment". Its occurrence should be    noted
     for    later use by the acknowledgment    process    (Section 13.5).

    (b) Possibly acknowledge the receipt of    the LSA    by sending a
     Link State Acknowledgment packet back out the receiving
     interface.    This is    explained below    in Section 13.5.

(8)    Else, the database copy    is more    recent.     If the    database copy
    has LS age equal to MaxAge and LS sequence number equal    to
    MaxSequenceNumber, simply discard the received LSA without
    acknowledging it. (In this case, the LSA's LS sequence number is
    wrapping, and the MaxSequenceNumber LSA    must be    completely
    flushed    before any new LSA instance can    be introduced).
    Otherwise, as long as the database copy    has not    been sent in a
    Link State Update within the last MinLSArrival seconds,    send the
    database copy back to the sending neighbor, encapsulated within
    a Link State Update Packet. The    Link State Update Packet should
    be sent    directly to the    neighbor. In so    doing, do not put the



Moy             Standards Track         [Page 145]

RFC 2328         OSPF Version 2         April 1998


    database copy of the LSA on the    neighbor's link    state
    retransmission list, and do not    acknowledge the    received (less
    recent)    LSA instance.


13.1. Determining which LSA is newer

    When a router encounters two instances of an LSA, it must
    determine which    is more    recent.     This occurred above when
    comparing a received LSA to its    database copy.    This comparison
    must also be done during the Database Exchange procedure which
    occurs during adjacency    bring-up.

    An LSA is identified by    its LS type, Link State    ID and
    Advertising Router. For two instances of the same LSA,    the LS
    sequence number, LS age, and LS    checksum fields    are used to
    determine which    instance is more recent:


    o The    LSA having the newer LS    sequence number    is more    recent.
     See    Section    12.1.6 for an explanation of the LS sequence
     number space. If both instances have the same LS sequence
     number, then:

    o If the two instances have different    LS checksums, then the
     instance having the    larger LS checksum (when considered as a
     16-bit unsigned integer) is    considered more    recent.

    o Else, if only one of the instances has its LS age field set
     to MaxAge, the instance of age MaxAge is considered    to be
     more recent.

    o Else, if the LS age    fields of the two instances differ by
     more than MaxAgeDiff, the instance having the smaller
     (younger) LS age is    considered to be more recent.

    o Else, the two instances are    considered to be identical.








Moy             Standards Track         [Page 146]

RFC 2328         OSPF Version 2         April 1998


13.2. Installing LSAs in the database

    Installing a new LSA in    the database, either as    the result of
    flooding or a newly self-originated LSA, may cause the OSPF
    routing    table structure    to be recalculated. The contents of the
    new LSA    should be compared to the old instance,    if present. If
    there is no difference,    there is no need to recalculate    the
    routing    table. When comparing an LSA to    its previous instance,
    the following are all considered to be differences in contents:

     o    The LSA's Options field    has changed.

     o    One of the LSA instances has LS    age set    to MaxAge, and
        the other does not.

     o    The length field in the    LSA header has changed.

     o    The body of the    LSA (i.e., anything outside the    20-byte
        LSA header) has    changed. Note that this    excludes changes
        in LS Sequence Number and LS Checksum.

    If the contents    are different, the following pieces of the
    routing    table must be recalculated, depending on the new LSA's
    LS type    field:


    Router-LSAs and    network-LSAs
     The    entire routing table must be recalculated, starting with
     the    shortest path calculations for each area (not just the
     area whose link-state database has changed). The reason
     that the shortest path calculation cannot be restricted to
     the    single changed area has    to do with the fact that AS
     boundary routers may belong    to multiple areas. A change in
     the    area currently providing the best route    may force the
     router to use an intra-area    route provided by a different
     area.[19]

    Summary-LSAs
     The    best route to the destination described    by the summary-
     LSA    must be    recalculated (see Section 16.5). If this
     destination    is an AS boundary router, it may also be
     necessary to re-examine all    the AS-external-LSAs.



Moy             Standards Track         [Page 147]

RFC 2328         OSPF Version 2         April 1998


    AS-external-LSAs
     The    best route to the destination described    by the AS-
     external-LSA must be recalculated (see Section 16.6).


    Also, any old instance of the LSA must be removed from the
    database when the new LSA is installed.     This old instance must
    also be    removed    from all neighbors' Link state retransmission
    lists (see Section 10).


13.3. Next    step in    the flooding procedure

    When a new (and    more recent) LSA has been received, it must be
    flooded    out some set of    the router's interfaces. This section
    describes the second part of flooding procedure    (the first part
    being the processing that occurred in Section 13), namely,
    selecting the outgoing interfaces and adding the LSA to    the
    appropriate neighbors' Link state retransmission lists.     Also
    included in this part of the flooding procedure    is the
    maintenance of the neighbors' Link state request lists.

    This section is    equally    applicable to the flooding of an LSA
    that the router    itself has just    originated (see    Section    12.4).
    For these LSAs,    this section provides the entirety of the
    flooding procedure (i.e., the processing of Section 13 is not
    performed, since, for example, the LSA has not been received
    from a neighbor    and therefore does not need to be acknowledged).

    Depending upon the LSA's LS type, the LSA can be flooded out
    only certain interfaces. These    interfaces, defined by the
    following, are called the eligible interfaces:


    AS-external-LSAs (LS Type = 5)
     AS-external-LSAs are flooded throughout the    entire AS, with
     the    exception of stub areas    (see Section 3.6). The    eligible
     interfaces are all the router's interfaces,    excluding
     virtual links and those interfaces attaching to stub areas.

    All other LS types
     All    other types are    specific to a single area (Area    A). The



Moy             Standards Track         [Page 148]

RFC 2328         OSPF Version 2         April 1998


     eligible interfaces    are all    those interfaces attaching to
     the    Area A.     If Area A is the backbone, this includes all
     the    virtual    links.


    Link state databases must remain synchronized over all
    adjacencies associated with the    above eligible interfaces. This
    is accomplished    by executing the following steps on each
    eligible interface. It    should be noted    that this procedure may
    decide not to flood an LSA out a particular interface, if there
    is a high probability that the attached    neighbors have already
    received the LSA. However, in these cases the flooding
    procedure must be absolutely sure that the neighbors eventually
    do receive the LSA, so the LSA is still    added to each
    adjacency's Link state retransmission list. For each eligible
    interface:


    (1) Each of the    neighbors attached to this interface are
     examined, to determine whether they    must receive the new
     LSA. The following    steps are executed for each neighbor:

     (a)    If the neighbor    is in a    lesser state than Exchange, it
        does not participate in    flooding, and the next neighbor
        should be examined.

     (b)    Else, if the adjacency is not yet full (neighbor state
        is Exchange or Loading), examine the Link state    request
        list associated    with this adjacency. If there is an
        instance of the    new LSA    on the list, it    indicates that
        the neighboring    router has an instance of the LSA
        already. Compare the new LSA to the neighbor's    copy:

        o If the new LSA is less recent, then    examine    the next
         neighbor.

        o If the two copies are the same instance, then delete
         the    LSA from the Link state    request    list, and
         examine the    next neighbor.[20]

        o Else, the new LSA is more recent. Delete the LSA
         from the Link state    request    list.



Moy             Standards Track         [Page 149]

RFC 2328         OSPF Version 2         April 1998


     (c)    If the new LSA was received from this neighbor,    examine
        the next neighbor.

     (d)    At this    point we are not positive that the neighbor has
        an up-to-date instance of this new LSA.     Add the new LSA
        to the Link state retransmission list for the adjacency.
        This ensures that the flooding procedure is reliable;
        the LSA    will be    retransmitted at intervals until an
        acknowledgment is seen from the    neighbor.

    (2) The    router must now    decide whether to flood    the new    LSA out
     this interface. If    in the previous    step, the LSA was NOT
     added to any of the    Link state retransmission lists, there
     is no need to flood    the LSA    out the    interface and the next
     interface should be    examined.

    (3) If the new LSA was received    on this    interface, and it was
     received from either the Designated    Router or the Backup
     Designated Router, chances are that    all the    neighbors have
     received the LSA already. Therefore, examine the next
     interface.

    (4) If the new LSA was received    on this    interface, and the
     interface state is Backup (i.e., the router    itself is the
     Backup Designated Router), examine the next    interface. The
     Designated Router will do the flooding on this interface.
     However, if    the Designated Router fails the    router (i.e.,
     the    Backup Designated Router) will end up retransmitting the
     updates.

    (5) If this step is reached, the LSA must be flooded out the
     interface.    Send a Link State Update packet    (including the
     new    LSA as contents) out the interface. The LSA's LS age
     must be incremented    by InfTransDelay (which    must be    > 0)
     when it is copied into the outgoing    Link State Update packet
     (until the LS age field reaches the    maximum    value of
     MaxAge).

     On broadcast networks, the Link State Update packets are
     multicast.    The destination    IP address specified for the
     Link State Update Packet depends on    the state of the
     interface.    If the interface state is DR or    Backup,    the



Moy             Standards Track         [Page 150]

RFC 2328         OSPF Version 2         April 1998


     address AllSPFRouters should be used. Otherwise, the
     address AllDRouters    should be used.

     On non-broadcast networks, separate    Link State Update
     packets must be sent, as unicasts, to each adjacent    neighbor
     (i.e., those in state Exchange or greater).     The destination
     IP addresses for these packets are the neighbors' IP
     addresses.


13.4. Receiving self-originated LSAs

    It is a    common occurrence for a    router to receive self-
    originated LSAs    via the    flooding procedure. A self-originated
    LSA is detected    when either 1) the LSA's Advertising Router is
    equal to the router's own Router ID or 2) the LSA is a network-
    LSA and    its Link State ID is equal to one of the router's own IP
    interface addresses.

    However, if the    received self-originated LSA is    newer than the
    last instance that the router actually originated, the router
    must take special action. The reception of such an LSA
    indicates that there are LSAs in the routing domain that were
    originated by the router before    the last time it was restarted.
    In most    cases, the router must then advance the    LSA's LS
    sequence number    one past the received LS sequence number, and
    originate a new    instance of the    LSA.

    It may be the case the router no longer    wishes to originate the
    received LSA. Possible examples    include: 1) the    LSA is a
    summary-LSA or AS-external-LSA and the router no longer    has an
    (advertisable) route to    the destination, 2) the    LSA is a
    network-LSA but    the router is no longer    Designated Router for
    the network or 3) the LSA is a network-LSA whose Link State ID
    is one of the router's own IP interface    addresses but whose
    Advertising Router is not equal    to the router's    own Router ID
    (this latter case should be rare, and it indicates that    the
    router's Router    ID has changed since originating the LSA). In
    all these cases, instead of updating the LSA, the LSA should be
    flushed    from the routing domain    by incrementing    the received
    LSA's LS age to    MaxAge and reflooding (see Section 14.1).




Moy             Standards Track         [Page 151]

RFC 2328         OSPF Version 2         April 1998


13.5. Sending Link    State Acknowledgment packets

    Each newly received LSA    must be    acknowledged. This is usually
    done by    sending    Link State Acknowledgment packets. However,
    acknowledgments    can also be accomplished implicitly by sending
    Link State Update packets (see step 7a of Section 13).

    Many acknowledgments may be grouped together into a single Link
    State Acknowledgment packet. Such a packet is sent back out the
    interface which    received the LSAs. The    packet can be sent in
    one of two ways: delayed and sent on an    interval timer,    or sent
    directly to a particular neighbor. The    particular
    acknowledgment strategy    used depends on    the circumstances
    surrounding the    receipt    of the LSA.

    Sending    delayed    acknowledgments    accomplishes several things: 1)
    it facilitates the packaging of    multiple acknowledgments in a
    single Link State Acknowledgment packet, 2) it enables a single
    Link State Acknowledgment packet to indicate acknowledgments to
    several    neighbors at once (through multicasting) and 3)    it
    randomizes the Link State Acknowledgment packets sent by the
    various    routers    attached to a common network. The fixed
    interval between a router's delayed transmissions must be short
    (less than RxmtInterval) or needless retransmissions will ensue.

    Direct acknowledgments are sent    directly to a particular
    neighbor in response to    the receipt of duplicate LSAs. Direct
    acknowledgments    are sent immediately when the duplicate    is
    received. On multi-access networks, these acknowledgments are
    sent directly to the neighbor's    IP address.

    The precise procedure for sending Link State Acknowledgment
    packets    is described in    Table 19. The circumstances surrounding
    the receipt of the LSA are listed in the left column. The
    acknowledgment action then taken is listed in one of the two
    right columns.    This action depends on the state of the
    concerned interface; interfaces    in state Backup    behave
    differently from interfaces in all other states. Delayed
    acknowledgments    must be    delivered to all adjacent routers
    associated with    the interface.    On broadcast networks, this is
    accomplished by    sending    the delayed Link State Acknowledgment
    packets    as multicasts.    The Destination    IP address used    depends



Moy             Standards Track         [Page 152]

RFC 2328         OSPF Version 2         April 1998






                 Action taken in state
Circumstances     Backup         All other states
_________________________________________________________________
LSA    has         No    acknowledgment     No acknowledgment
been     flooded back     sent.         sent.
out receiving in-
terface (see Sec-
tion    13, step 5b).
_________________________________________________________________
LSA     is         Delayed acknowledg-     Delayed    ack-
more     recent     than     ment sent if adver-     nowledgment sent.
database copy, but     tisement received
was     not flooded     from Designated
back    out receiving     Router, otherwise
interface         do nothing
_________________________________________________________________
LSA is a         Delayed acknowledg-     No acknowledgment
duplicate, and was     ment sent if adver-     sent.
treated as an im-     tisement received
plied acknowledg-     from Designated
ment    (see Section     Router, otherwise
13, step 7a).     do nothing
_________________________________________________________________
LSA is a         Direct acknowledg-     Direct acknowledg-
duplicate, and was     ment sent.         ment sent.
not treated as an
implied     ack-
nowledgment.
_________________________________________________________________
LSA's LS         Direct acknowledg-     Direct acknowledg-
age is equal    to     ment sent.         ment sent.
MaxAge, and there is
no current instance
of the LSA
in the link state
database, and none
of router's neighbors
are in states Exchange



Moy             Standards Track         [Page 153]

RFC 2328         OSPF Version 2         April 1998


or Loading (see
Section 13, step 4).


     Table 19: Sending link state acknowledgements.




    on the state of    the interface.    If the interface state is DR or
    Backup,    the destination    AllSPFRouters is used.    In all other
    states,    the destination    AllDRouters is used. On non-broadcast
    networks, delayed Link State Acknowledgment packets must be
    unicast    separately over    each adjacency (i.e., neighbor whose
    state is >= Exchange).

    The reasoning behind sending the above packets as multicasts is
    best explained by an example. Consider    the network
    configuration depicted in Figure 15. Suppose RT4 has been
    elected    as Designated Router, and RT3 as Backup    Designated
    Router for the network N3. When Router    RT4 floods a new LSA to
    Network    N3, it is received by routers RT1, RT2,    and RT3. These
    routers    will not flood the LSA back onto net N3, but they still
    must ensure that their link-state databases remain synchronized
    with their adjacent neighbors.    So RT1,    RT2, and RT4 are waiting
    to see an acknowledgment from RT3. Likewise, RT4 and RT3 are
    both waiting to    see acknowledgments from RT1 and RT2. This is
    best achieved by sending the acknowledgments as    multicasts.

    The reason that    the acknowledgment logic for Backup DRs    is
    slightly different is because they perform differently during
    the flooding of    LSAs (see Section 13.3,    step 4).



13.6. Retransmitting LSAs

    LSAs flooded out an adjacency are placed on the    adjacency's Link
    state retransmission list. In order to    ensure that flooding is
    reliable, these    LSAs are retransmitted until they are
    acknowledged. The length of time between retransmissions is a
    configurable per-interface value, RxmtInterval.     If this is set



Moy             Standards Track         [Page 154]

RFC 2328         OSPF Version 2         April 1998


    too low    for an interface, needless retransmissions will    ensue.
    If the value is    set too    high, the speed    of the flooding, in the
    face of    lost packets, may be affected.

    Several    retransmitted LSAs may fit into    a single Link State
    Update packet.    When LSAs are to be retransmitted, only    the
    number fitting in a single Link    State Update packet should be
    sent. Another packet of retransmissions can be    sent whenever
    some of    the LSAs are acknowledged, or on the next firing of the
    retransmission timer.

    Link State Update Packets carrying retransmissions are always
    sent directly to the neighbor. On multi-access networks, this
    means that retransmissions are sent directly to    the neighbor's
    IP address. Each LSA's    LS age must be incremented by
    InfTransDelay (which must be > 0) when it is copied into the
    outgoing Link State Update packet (until the LS    age field
    reaches    the maximum value of MaxAge).

    If an adjacent router goes down, retransmissions may occur until
    the adjacency is destroyed by OSPF's Hello Protocol. When the
    adjacency is destroyed,    the Link state retransmission list is
    cleared.


13.7. Receiving link state    acknowledgments

    Many consistency checks    have been made on a received Link State
    Acknowledgment packet before it    is handed to the flooding
    procedure. In particular, it has been associated with a
    particular neighbor. If this neighbor is in a lesser state than
    Exchange, the Link State Acknowledgment    packet is discarded.

    Otherwise, for each acknowledgment in the Link State
    Acknowledgment packet, the following steps are performed:


    o Does the LSA acknowledged have an instance on the Link state
     retransmission list    for the    neighbor? If not, examine the
     next acknowledgment. Otherwise:





Moy             Standards Track         [Page 155]

RFC 2328         OSPF Version 2         April 1998


    o If the acknowledgment is for the same instance that    is
     contained on the list, remove the item from    the list and
     examine the    next acknowledgment. Otherwise:

    o Log    the questionable acknowledgment, and examine the next
     one.


14. Aging The Link State Database

Each LSA has an LS age field. The LS age is expressed in seconds.
An LSA's LS    age field is incremented while it is contained in a
router's database.    Also, when copied into a Link State Update
Packet for flooding    out a particular interface, the    LSA's LS age is
incremented    by InfTransDelay.

An LSA's LS    age is never incremented past the value    MaxAge.     LSAs
having age MaxAge are not used in the routing table    calculation. As
a router ages its link state database, an LSA's LS age may reach
MaxAge.[21]    At this    time, the router must attempt to flush the LSA
from the routing domain. This is done simply by reflooding    the
MaxAge LSA just as if it was a newly originated LSA    (see Section
13.3).

When creating a Database summary list for a    newly forming adjacency,
any    MaxAge LSAs present in the link    state database are added to the
neighbor's Link state retransmission list instead of the neighbor's
Database summary list. See    Section    10.3 for more details.

A MaxAge LSA must be removed immediately from the router's link
state database as soon as both a) it is no longer contained    on any
neighbor Link state    retransmission lists and b) none of the    router's
neighbors are in states Exchange or    Loading.

When, in the process of aging the link state database, an LSA's LS
age    hits a multiple    of CheckAge, its LS checksum should be verified.
If the LS checksum is incorrect, a program or memory error has been
detected, and at the very least the    router itself should be
restarted.






Moy             Standards Track         [Page 156]

RFC 2328         OSPF Version 2         April 1998


14.1. Premature aging of LSAs

    An LSA can be flushed from the routing domain by setting its LS
    age to MaxAge, while leaving its LS sequence number alone, and
    then reflooding    the LSA. This procedure follows the same course
    as flushing an LSA whose LS age    has naturally reached the value
    MaxAge (see Section 14). In particular, the MaxAge LSA    is
    removed    from the router's link state database as soon as a) it
    is no longer contained on any neighbor Link state retransmission
    lists and b) none of the router's neighbors are    in states
    Exchange or Loading. We call the setting of an    LSA's LS age to
    MaxAge "premature aging".

    Premature aging    is used    when it    is time    for a self-originated
    LSA's sequence number field to wrap. At this point, the current
    LSA instance (having LS    sequence number    MaxSequenceNumber) must
    be prematurely aged and    flushed    from the routing domain    before a
    new instance with sequence number equal    to InitialSequenceNumber
    can be originated. See    Section    12.1.6 for more    information.

    Premature aging    can also be used when, for example, one    of the
    router's previously advertised external    routes is no longer
    reachable. In this circumstance, the router can flush its AS-
    external-LSA from the routing domain via premature aging. This
    procedure is preferable    to the alternative, which is to
    originate a new    LSA for    the destination    specifying a metric of
    LSInfinity. Premature aging is    also be    used when unexpectedly
    receiving self-originated LSAs during the flooding procedure
    (see Section 13.4).

    A router may only prematurely age its own self-originated LSAs.
    The router may not prematurely age LSAs    that have been
    originated by other routers. An    LSA is considered self-
    originated when    either 1) the LSA's Advertising    Router is equal
    to the router's    own Router ID or 2) the    LSA is a network-LSA and
    its Link State ID is equal to one of the router's own IP
    interface addresses.








Moy             Standards Track         [Page 157]

RFC 2328         OSPF Version 2         April 1998


15. Virtual Links

The    single backbone    area (Area ID =    0.0.0.0) cannot    be disconnected,
or some areas of the Autonomous System will    become unreachable. To
establish/maintain connectivity of the backbone, virtual links can
be configured through non-backbone areas. Virtual links serve to
connect physically separate    components of the backbone. The two
endpoints of a virtual link    are area border    routers. The virtual
link must be configured in both routers. The configuration
information    in each    router consists    of the other virtual endpoint
(the other area border router), and    the non-backbone area the two
routers have in common (called the Transit area). Virtual links
cannot be configured through stub areas (see Section 3.6).

The    virtual    link is    treated    as if it were an unnumbered point-to-
point network belonging to the backbone and    joining    the two    area
border routers. An    attempt    is made    to establish an    adjacency over
the    virtual    link. When this adjacency is established, the virtual
link will be included in backbone router-LSAs, and OSPF packets
pertaining to the backbone area will flow over the adjacency. Such
an adjacency has been referred to in this document as a "virtual
adjacency".

In each endpoint router, the cost and viability of the virtual link
is discovered by examining the routing table entry for the other
endpoint router. (The entry's associated area must    be the
configured Transit area). This is called the virtual link's
corresponding routing table    entry.    The InterfaceUp    event occurs for
a virtual link when    its corresponding routing table    entry becomes
reachable.    Conversely, the    InterfaceDown event occurs when    its
routing table entry    becomes    unreachable. In other words, the
virtual link's viability is    determined by the existence of an
intra-area path, through the Transit area, between the two
endpoints.    Note that a virtual link whose underlying path has cost
greater than hexadecimal 0xffff (the maximum size of an interface
cost in a router-LSA) should be considered inoperational (i.e.,
treated the    same as    if the path did    not exist).

The    other details concerning virtual links are as follows:

o    AS-external-LSAs are NEVER flooded over    virtual    adjacencies.
    This would be duplication of effort, since the same AS-



Moy             Standards Track         [Page 158]

RFC 2328         OSPF Version 2         April 1998


    external-LSAs are already flooded throughout the virtual link's
    Transit    area. For this    same reason, AS-external-LSAs are not
    summarized over    virtual    adjacencies during the Database    Exchange
    process.

o    The cost of a virtual link is NOT configured. It is defined to
    be the cost of the intra-area path between the two defining area
    border routers.     This cost appears in the virtual link's
    corresponding routing table entry. When the cost of a virtual
    link changes, a    new router-LSA should be originated for    the
    backbone area.

o    Just as    the virtual link's cost    and viability are determined by
    the routing table build    process    (through construction of the
    routing    table entry for    the other endpoint), so    are the    IP
    interface address for the virtual interface and    the virtual
    neighbor's IP address.    These are used when sending OSPF
    protocol packets over the virtual link.    Note that when one (or
    both) of the virtual link endpoints connect to the Transit area
    via an unnumbered point-to-point link, it may be impossible to
    calculate either the virtual interface's IP address and/or the
    virtual    neighbor's IP address, thereby causing the virtual link
    to fail.

o    In each    endpoint's router-LSA for the backbone,    the virtual link
    is represented as a Type 4 link    whose Link ID is set to    the
    virtual    neighbor's OSPF    Router ID and whose Link Data is set to
    the virtual interface's    IP address. See Section 12.4.1    for more
    information.

o    A non-backbone area can    carry transit data traffic (i.e., is
    considered a "transit area") if    and only if it serves as the
    Transit    area for one or    more fully adjacent virtual links (see
    TransitCapability in Sections 6    and 16.1). Such    an area    requires
    special    treatment when summarizing backbone networks into it
    (see Section 12.4.3), and during the routing calculation (see
    Section    16.3).

o    The time between link state retransmissions, RxmtInterval, is
    configured for a virtual link.    This should be well over the
    expected round-trip delay between the two routers. This may be




Moy             Standards Track         [Page 159]

RFC 2328         OSPF Version 2         April 1998


    hard to    estimate for a virtual link; it    is better to err on the
    side of    making it too large.


16. Calculation of the    routing    table

This section details the OSPF routing table    calculation. Using its
attached areas' link state databases as input, a router runs the
following algorithm, building its routing table step by step. At
each step, the router must access individual pieces    of the link
state databases (e.g., a router-LSA    originated by a    certain    router).
This access    is performed by    the lookup function discussed in Section
12.2. The lookup process may return an LSA    whose LS age is    equal to
MaxAge. Such an LSA should    not be used in the routing table
calculation, and is    treated    just as    if the lookup process had
failed.

The    OSPF routing table's organization is explained in Section 11.
Two    examples of the    routing    table build process are    presented in
Sections 11.2 and 11.3. This process can be broken    into the
following steps:

(1)    The present routing table is invalidated. The routing table is
    built again from scratch. The old routing table is saved so
    that changes in    routing    table entries can be identified.

(2)    The intra-area routes are calculated by    building the shortest-
    path tree for each attached area. In particular, all routing
    table entries whose Destination    Type is    "area border router" are
    calculated in this step. This step is described in two    parts.
    At first the tree is constructed by only considering those links
    between    routers    and transit networks. Then the    stub networks
    are incorporated into the tree.    During the area's shortest-path
    tree calculation, the area's TransitCapability is also
    calculated for later use in Step 4.

(3)    The inter-area routes are calculated, through examination of
    summary-LSAs. If the router is    attached to multiple areas
    (i.e., it is an    area border router), only backbone summary-LSAs
    are examined.





Moy             Standards Track         [Page 160]

RFC 2328         OSPF Version 2         April 1998


(4)    In area    border routers connecting to one or more transit areas
    (i.e, non-backbone areas whose TransitCapability is found to be
    TRUE), the transit areas' summary-LSAs are examined to see
    whether    better paths exist using the transit areas than    were
    found in Steps 2-3 above.

(5)    Routes to external destinations    are calculated,    through
    examination of AS-external-LSAs. The locations    of the AS
    boundary routers (which    originate the AS-external-LSAs)    have
    been determined    in steps 2-4.


Steps 2-5 are explained in further detail below.

Changes made to routing table entries as a result of these
calculations can cause the OSPF protocol to    take further actions.
For    example, a change to an    intra-area route will cause an area
border router to originate new summary-LSAs    (see Section 12.4). See
Section 16.7 for a complete    list of    the OSPF protocol actions
resulting from routing table changes.


16.1. Calculating the shortest-path tree for an area

    This calculation yields    the set    of intra-area routes associated
    with an    area (called hereafter Area A).     A router calculates the
    shortest-path tree using itself    as the root.[22] The formation
    of the shortest    path tree is done here in two stages. In the
    first stage, only links    between    routers    and transit networks are
    considered. Using the Dijkstra    algorithm, a tree is formed from
    this subset of the link    state database.     In the    second stage,
    leaves are added to the    tree by    considering the    links to stub
    networks.

    The procedure will be explained    using the graph    terminology that
    was introduced in Section 2. The area's link state database is
    represented as a directed graph. The graph's vertices are
    routers, transit networks and stub networks. The first    stage of
    the procedure concerns only the    transit    vertices (routers and
    transit    networks) and their connecting links. Throughout the
    shortest path calculation, the following data is also associated
    with each transit vertex:



Moy             Standards Track         [Page 161]

RFC 2328         OSPF Version 2         April 1998


    Vertex (node) ID
     A 32-bit number which together with    the vertex type    (router
     or network)    uniquely identifies the    vertex.     For router
     vertices the Vertex    ID is the router's OSPF    Router ID. For
     network vertices, it is the    IP address of the network's
     Designated Router.

    An LSA
     Each transit vertex    has an associated LSA.    For router
     vertices, this is a    router-LSA. For transit networks, this
     is a network-LSA (which is actually    originated by the
     network's Designated Router). In any case,    the LSA's Link
     State ID is    always equal to    the above Vertex ID.

    List of    next hops
     The    list of    next hops for the current set of shortest paths
     from the root to this vertex. There can be    multiple
     shortest paths due to the equal-cost multipath capability.
     Each next hop indicates the    outgoing router    interface to use
     when forwarding traffic to the destination.     On broadcast,
     Point-to-MultiPoint    and NBMA networks, the next hop    also
     includes the IP address of the next    router (if any)    in the
     path towards the destination.

    Distance from root
     The    link state cost    of the current set of shortest paths
     from the root to the vertex. The link state cost of a path
     is calculated as the sum of    the costs of the path's
     constituent    links (as advertised in    router-LSAs and
     network-LSAs). One    path is    said to    be "shorter" than
     another if it has a    smaller    link state cost.


    The first stage    of the procedure (i.e.,    the Dijkstra algorithm)
    can now    be summarized as follows. At each iteration of the
    algorithm, there is a list of candidate    vertices. Paths from
    the root to these vertices have    been found, but    not necessarily
    the shortest ones. However, the paths to the candidate    vertex
    that is    closest    to the root are    guaranteed to be shortest; this
    vertex is added    to the shortest-path tree, removed from    the
    candidate list,    and its    adjacent vertices are examined for
    possible addition to/modification of the candidate list. The



Moy             Standards Track         [Page 162]

RFC 2328         OSPF Version 2         April 1998


    algorithm then iterates    again.    It terminates when the candidate
    list becomes empty.

    The following steps describe the algorithm in detail. Remember
    that we    are computing the shortest path    tree for Area A. All
    references to link state database lookup below are from    Area A's
    database.

    (1) Initialize the algorithm's data structures.     Clear the list
     of candidate vertices. Initialize the shortest-path tree to
     only the root (which is the    router doing the calculation).
     Set    Area A's TransitCapability to FALSE.

    (2) Call the vertex just added to the tree vertex V. Examine
     the    LSA associated with vertex V. This is a lookup    in the
     Area A's link state    database based on the Vertex ID. If
     this is a router-LSA, and bit V of the router-LSA (see
     Section A.4.2) is set, set Area A's    TransitCapability to
     TRUE. In any case,    each link described by the LSA gives the
     cost to an adjacent    vertex.     For each described link, (say
     it joins vertex V to vertex    W):

     (a)    If this    is a link to a stub network, examine the next
        link in    V's LSA. Links    to stub    networks will be
        considered in the second stage of the shortest path
        calculation.

     (b)    Otherwise, W is    a transit vertex (router or transit
        network). Look    up the vertex W's LSA (router-LSA or
        network-LSA) in    Area A's link state database. If the
        LSA does not exist, or its LS age is equal to MaxAge, or
        it does    not have a link    back to    vertex V, examine the
        next link in V's LSA.[23]

     (c)    If vertex W is already on the shortest-path tree,
        examine    the next link in the LSA.

     (d)    Calculate the link state cost D    of the resulting path
        from the root to vertex    W. D is equal to the sum of the
        link state cost    of the (already    calculated) shortest
        path to    vertex V and the advertised cost of the    link
        between    vertices V and W. If D    is:



Moy             Standards Track         [Page 163]

RFC 2328         OSPF Version 2         April 1998


        o Greater than the value that    already    appears    for
         vertex W on    the candidate list, then examine the
         next link.

        o Equal to the value that appears for    vertex W on the
         candidate list, calculate the set of next hops that
         result from    using the advertised link. Input to
         this calculation is    the destination    (W), and its
         parent (V).     This calculation is shown in Section
         16.1.1. This set of hops should be    added to the
         next hop values that appear    for W on the candidate
         list.

        o Less than the value    that appears for vertex    W on the
         candidate list, or if W does not yet appear    on the
         candidate list, then set the entry for W on    the
         candidate list to indicate a distance of D from the
         root. Also    calculate the list of next hops    that
         result from    using the advertised link, setting the
         next hop values for    W accordingly.    The next hop
         calculation    is described in    Section    16.1.1;    it takes
         as input the destination (W) and its parent    (V).

    (3) If at this step the    candidate list is empty, the shortest-
     path tree (of transit vertices) has    been completely    built
     and    this stage of the procedure terminates.     Otherwise,
     choose the vertex belonging    to the candidate list that is
     closest to the root, and add it to the shortest-path tree
     (removing it from the candidate list in the    process). Note
     that when there is a choice    of vertices closest to the root,
     network vertices must be chosen before router vertices in
     order to necessarily find all equal-cost paths. This is
     consistent with the    tie-breakers that were introduced in the
     modified Dijkstra algorithm    used by    OSPF's Multicast routing
     extensions (MOSPF).

    (4) Possibly modify the    routing    table.    For those routing table
     entries modified, the associated area will be set to Area A,
     the    path type will be set to intra-area, and the cost will
     be set to the newly    discovered shortest path's calculated
     distance.




Moy             Standards Track         [Page 164]

RFC 2328         OSPF Version 2         April 1998


     If the newly added vertex is an area border    router or AS
     boundary router, a routing table entry is added whose
     destination    type is    "router". The Options field found in
     the    associated router-LSA is copied    into the routing table
     entry's Optional capabilities field. Call the newly    added
     vertex Router X. If Router    X is the endpoint of one of the
     calculating    router's virtual links,    and the    virtual    link
     uses Area A    as Transit area: the virtual link is declared
     up,    the IP address of the virtual interface    is set to the IP
     address of the outgoing interface calculated above for
     Router X, and the virtual neighbor's IP address is set to
     Router X's interface address (contained in Router X's
     router-LSA)    that points back to the    root of    the shortest-
     path tree; equivalently, this is the interface that    points
     back to Router X's parent vertex on    the shortest-path tree
     (similar to    the calculation    in Section 16.1.1).

     If the newly added vertex is a transit network, the    routing
     table entry    for the    network    is located. The entry's
     Destination    ID is the IP network number, which can be
     obtained by    masking    the Vertex ID (Link State ID) with its
     associated subnet mask (found in the body of the associated
     network-LSA). If the routing table    entry already exists
     (i.e., there is already an intra-area route    to the
     destination    installed in the routing table), multiple
     vertices have mapped to the    same IP    network. For example,
     this can occur when    a new Designated Router    is being
     established. In this case,    the current routing table entry
     should be overwritten if and only if the newly found path is
     just as short and the current routing table    entry's    Link
     State Origin has a smaller Link State ID than the newly
     added vertex' LSA.

     If there is    no routing table entry for the network (the
     usual case), a routing table entry for the IP network should
     be added. The routing table entry's Link State Origin
     should be set to the newly added vertex' LSA.

    (5) Iterate the    algorithm by returning to Step 2.






Moy             Standards Track         [Page 165]

RFC 2328         OSPF Version 2         April 1998


    The stub networks are added to the tree    in the procedure's
    second stage. In this stage, all router vertices are again
    examined. Those that have been    determined to be unreachable in
    the above first    phase are discarded. For each reachable router
    vertex (call it    V), the    associated router-LSA is found in the
    link state database. Each stub    network    link appearing in the
    LSA is then examined, and the following    steps are executed:

    (1) Calculate the distance D of    stub network from the root. D
     is equal to    the distance from the root to the router vertex
     (calculated    in stage 1), plus the stub network link's
     advertised cost. Compare this distance to the current best
     cost to the    stub network. This is done by looking up the
     stub network's current routing table entry.     If the
     calculated distance    D is larger, go    on to examine the next
     stub network link in the LSA.

    (2) If this step is reached, the stub network's    routing    table
     entry must be updated. Calculate the set of next hops that
     would result from using the    stub network link. This
     calculation    is shown in Section 16.1.1; input to this
     calculation    is the destination (the    stub network) and the
     parent vertex (the router vertex).    If the distance    D is the
     same as the    current    routing    table cost, simply add this set
     of next hops to the    routing    table entry's list of next hops.
     In this case, the routing table already has    a Link State
     Origin. If    this Link State    Origin is a router-LSA whose
     Link State ID is smaller than V's Router ID, reset the Link
     State Origin to V's    router-LSA.

     Otherwise D    is smaller than    the routing table cost.
     Overwrite the current routing table    entry by setting the
     routing table entry's cost to D, and by setting the    entry's
     list of next hops to the newly calculated set. Set    the
     routing table entry's Link State Origin to V's router-LSA.
     Then go on to examine the next stub    network    link.


    For all    routing    table entries added/modified in    the second
    stage, the associated area will    be set to Area A and the path
    type will be set to intra-area.     When the list of reachable
    router-LSAs is exhausted, the second stage is completed. At



Moy             Standards Track         [Page 166]

RFC 2328         OSPF Version 2         April 1998


    this time, all intra-area routes associated with Area A    have
    been determined.

    The specification does not require that    the above two stage
    method be used to calculate the    shortest path tree. However, if
    another    algorithm is used, an identical    tree must be produced.
    For this reason, it is important to note that links between
    transit    vertices must be bidirectional in order    to be included
    in the above tree. It should also be mentioned    that more
    efficient algorithms exist for calculating the tree; for
    example, the incremental SPF algorithm described in [Ref1].


    16.1.1.     The next hop calculation

     This section explains how to calculate the current set of
     next hops to use for a destination.     Each next hop consists
     of the outgoing interface to use in    forwarding packets to
     the    destination together with the IP address of the    next hop
     router (if any). The next hop calculation is invoked each
     time a shorter path    to the destination is discovered. This
     can    happen in either stage of the shortest-path tree
     calculation    (see Section 16.1). In    stage 1    of the
     shortest-path tree calculation a shorter path is found as
     the    destination is added to    the candidate list, or when the
     destination's entry    on the candidate list is modified (Step
     2d of Stage    1). In    stage 2    a shorter path is discovered
     each time the destination's    routing    table entry is modified
     (Step 2 of Stage 2).

     The    set of next hops to use    for the    destination may    be
     recalculated several times during the shortest-path    tree
     calculation, as shorter and    shorter    paths are discovered.
     In the end,    the destination's routing table    entry will
     always reflect the next hops resulting from    the absolute
     shortest path(s).

     Input to the next hop calculation is a) the    destination and
     b) its parent in the current shortest path between the root
     (the calculating router) and the destination. The parent is
     always a transit vertex (i.e., always a router or a    transit
     network).



Moy             Standards Track         [Page 167]

RFC 2328         OSPF Version 2         April 1998


     If there is    at least one intervening router    in the current
     shortest path between the destination and the root,    the
     destination    simply inherits    the set    of next    hops from the
     parent. Otherwise,    there are two cases. In the first case,
     the    parent vertex is the root (the calculating router
     itself). This means that the destination is either    a
     directly connected network or directly connected router.
     The    outgoing interface in this case    is simply the OSPF
     interface connecting to the    destination network/router. If
     the    destination is a router    which connects to the
     calculating    router via a Point-to-MultiPoint network, the
     destination's next hop IP address(es) can be determined by
     examining the destination's    router-LSA: each link pointing
     back to the    calculating router and having a    Link Data field
     belonging to the Point-to-MultiPoint network provides an IP
     address of the next    hop router. If the destination is a
     directly connected network,    or a router which connects to
     the    calculating router via a point-to-point    interface, no
     next hop IP    address    is required. If    the destination    is a
     router connected to    the calculating    router via a virtual
     link, the setting of the next hop should be    deferred until
     the    calculation in Section 16.3.

     In the second case,    the parent vertex is a network that
     directly connects the calculating router to    the destination
     router. The list of next hops is then determined by
     examining the destination's    router-LSA. For each link in
     the    router-LSA that    points back to the parent network, the
     link's Link    Data field provides the    IP address of a    next hop
     router. The outgoing interface to use can then be derived
     from the next hop IP address (or it    can be inherited from
     the    parent network).


16.2. Calculating the inter-area routes

    The inter-area routes are calculated by    examining summary-LSAs.
    If the router has active attachments to    multiple areas,    only
    backbone summary-LSAs are examined. Routers attached to a
    single area examine that area's    summary-LSAs. In either case,
    the summary-LSAs examined below    are all    part of    a single area's
    link state database (call it Area A).



Moy             Standards Track         [Page 168]

RFC 2328         OSPF Version 2         April 1998


    Summary-LSAs are originated by the area    border routers.     Each
    summary-LSA in Area A is considered in turn. Remember that the
    destination described by a summary-LSA is either a network (Type
    3 summary-LSAs)    or an AS boundary router (Type 4 summary-LSAs).
    For each summary-LSA:


    (1) If the cost    specified by the LSA is    LSInfinity, or if the
     LSA's LS age is equal to MaxAge, then examine the the next
     LSA.

    (2) If the LSA was originated by the calculating router    itself,
     examine the    next LSA.

    (3) If it is a Type 3 summary-LSA, and the collection of
     destinations described by the summary-LSA equals one of the
     router's configured    area address ranges (see Section 3.5),
     and    the particular area address range is active, then the
     summary-LSA    should be ignored. "Active" means that    there
     are    one or more reachable (by intra-area paths) networks
     contained in the area range.

    (4) Else, call the destination described by the    LSA N (for Type
     3 summary-LSAs, N's    address    is obtained by masking the LSA's
     Link State ID with the network/subnet mask contained in the
     body of the    LSA), and the area border originating the LSA
     BR.     Look up the routing table entry for BR    having Area A as
     its    associated area. If no    such entry exists for router BR
     (i.e., BR is unreachable in    Area A), do nothing with this
     LSA    and consider the next in the list. Else, this LSA
     describes an inter-area path to destination    N, whose cost is
     the    distance to BR plus the    cost specified in the LSA. Call
     the    cost of    this inter-area    path IAC.

    (5) Next, look up the routing table entry for the destination N.
     (If    N is an    AS boundary router, look up the    "router" routing
     table entry    associated with    Area A). If no    entry exists for
     N or if the    entry's    path type is "type 1 external" or "type
     2 external", then install the inter-area path to N,    with
     associated area Area A, cost IAC, next hop equal to    the list
     of next hops to router BR, and Advertising router equal to
     BR.



Moy             Standards Track         [Page 169]

RFC 2328         OSPF Version 2         April 1998


    (6) Else, if the paths present in the table are    intra-area
     paths, do nothing with the LSA (intra-area paths are always
     preferred).

    (7) Else, the paths present in the routing table are also
     inter-area paths. Install the new path through BR if it is
     cheaper, overriding    the paths in the routing table.
     Otherwise, if the new path is the same cost, add it    to the
     list of paths that appear in the routing table entry.

16.3. Examining transit areas' summary-LSAs

    This step is only performed by area border routers attached to
    one or more non-backbone areas that are    capable    of carrying
    transit    traffic    (i.e., "transit    areas",    or those areas whose
    TransitCapability parameter has    been set to TRUE in Step 2 of
    the Dijkstra algorithm (see Section 16.1).

    The purpose of the calculation below is    to examine the transit
    areas to see whether they provide any better (shorter) paths
    than the paths previously calculated in    Sections 16.1 and 16.2.
    Any paths found    that are better    than or    equal to previously
    discovered paths are installed in the routing table.

    The calculation    also determines    the actual next    hop(s) for those
    destinations whose next    hop was    calculated as a    virtual    link in
    Sections 16.1 and 16.2.     After completion of the calculation
    below, any paths calculated in Sections    16.1 and 16.2 that still
    have unresolved    virtual    next hops should be discarded.

    The calculation    proceeds as follows. All the transit areas'
    summary-LSAs are examined in turn. Each such summary-LSA
    describes a route through a transit area Area A    to a Network N
    (N's address is    obtained by masking the    LSA's Link State ID with
    the network/subnet mask    contained in the body of the LSA) or in
    the case of a Type 4 summary-LSA, to an    AS boundary router N.
    Suppose    also that the summary-LSA was originated by an area
    border router BR.

    (1) If the cost    advertised by the summary-LSA is LSInfinity, or
     if the LSA's LS age    is equal to MaxAge, then examine the
     next LSA.



Moy             Standards Track         [Page 170]

RFC 2328         OSPF Version 2         April 1998


    (2) If the summary-LSA was originated by the calculating router
     itself, examine the    next LSA.

    (3) Look up the    routing    table entry for    N. (If N is an AS
     boundary router, look up the "router" routing table    entry
     associated with the    backbone area).    If it does not exist, or
     if the route type is other than intra-area or inter-area, or
     if the area    associated with    the routing table entry    is not
     the    backbone area, then examine the    next LSA. In other
     words, this    calculation only updates backbone intra-area
     routes found in Section 16.1 and inter-area    routes found in
     Section 16.2.

    (4) Look up the    routing    table entry for    the advertising    router
     BR associated with the Area    A. If it is unreachable, examine
     the    next LSA. Otherwise, the cost to destination N is the
     sum    of the cost in BR's Area A routing table entry and the
     cost advertised in the LSA.    Call this cost IAC.

    (5) If this cost is less than the cost occurring in N's    routing
     table entry, overwrite N's list of next hops with those used
     for    BR, and    set N's    routing    table cost to IAC. Else, if IAC
     is the same    as N's current cost, add BR's list of next hops
     to N's list    of next    hops. In any case, the area associated
     with N's routing table entry must remain the backbone area,
     and    the path type (either intra-area or inter-area)    must
     also remain    the same.

    It is important    to note    that the above calculation never makes
    unreachable destinations reachable, but    instead    just potentially
    finds better paths to already reachable    destinations. The
    calculation installs any better    cost found into    the routing
    table entry, from which    it may be readvertised in summary-LSAs
    to other areas.

    As an example of the calculation, consider the Autonomous System
    pictured in Figure 17.    There is a single non-backbone area
    (Area 1) that physically divides the backbone into two separate
    pieces.    To maintain connectivity of the    backbone, a virtual link
    has been configured between routers RT1    and RT4. On the    right
    side of    the figure, Network N1 belongs to the backbone.    The
    dotted lines indicate that there is a much shorter intra-area



Moy             Standards Track         [Page 171]

RFC 2328         OSPF Version 2         April 1998



         ........................
         .    Area 1 (transit) .         +
         .             .         |
         .     +---+1     1+---+100     |
         .     |RT2|----------|RT4|=========|
         .     1/+---+********* +---+     |
         .     /*******     .         |
         .     1/*Virtual     .         |
         1+---+/* Link     .     Net|work
     =======|RT1|*         .         | N1
         +---+\         .         |
         .     \         .         |
         .     \         .         |
         .     1\+---+1     1+---+20     |
         .     |RT3|----------|RT5|=========|
         .     +---+     +---+     |
         .             .         |
         ........................         +

         Figure 17: Routing through transit areas

    backbone path between router RT5 and Network N1    (cost 20) than
    there is between Router    RT4 and    Network    N1 (cost 100). Both
    Router RT4 and Router RT5 will inject summary-LSAs for Network
    N1 into    Area 1.

    After the shortest-path    tree has been calculated for the
    backbone in Section 16.1, Router RT1 (left end of the virtual
    link) will have    calculated a path through Router RT4 for all
    data traffic destined for Network N1. However, since Router RT5
    is so much closer to Network N1, all routers internal to Area 1
    (e.g., Routers RT2 and RT3) will forward their Network N1
    traffic    towards    Router RT5, instead of RT4. And    indeed,    after
    examining Area 1's summary-LSAs    by the above calculation, Router
    RT1 will also forward Network N1 traffic towards RT5. Note that
    in this    example    the virtual link enables transit data traffic to
    be forwarded through Area 1, but the actual path the transit
    data traffic takes does    not follow the virtual link. In other
    words, virtual links allow transit traffic to be forwarded
    through    an area, but do    not dictate the    precise    path that the
    traffic    will take.



Moy             Standards Track         [Page 172]

RFC 2328         OSPF Version 2         April 1998


16.4. Calculating AS external routes

    AS external routes are calculated by examining AS-external-LSAs.
    Each of    the AS-external-LSAs is    considered in turn. Most AS-
    external-LSAs describe routes to specific IP destinations. An
    AS-external-LSA    can also describe a default route for the
    Autonomous System (Destination ID = DefaultDestination,
    network/subnet mask = 0x00000000). For    each AS-external-LSA:


    (1) If the cost    specified by the LSA is    LSInfinity, or if the
     LSA's LS age is equal to MaxAge, then examine the next LSA.

    (2) If the LSA was originated by the calculating router    itself,
     examine the    next LSA.

    (3) Call the destination described by the LSA N. N's address is
     obtained by    masking    the LSA's Link State ID    with the
     network/subnet mask    contained in the body of the LSA. Look
     up the routing table entries (potentially one per attached
     area) for the AS boundary router (ASBR) that originated the
     LSA. If no entries exist for router    ASBR (i.e., ASBR is
     unreachable), do nothing with this LSA and consider    the next
     in the list.

     Else, this LSA describes an    AS external path to destination
     N.    Examine    the forwarding address specified in the    AS-
     external-LSA. This    indicates the IP address to which
     packets for    the destination    should be forwarded.

     If the forwarding address is set to    0.0.0.0, packets should
     be sent to the ASBR    itself.    Among the multiple routing table
     entries for    the ASBR, select the preferred entry as    follows.
     If RFC1583Compatibility is set to "disabled", prune    the set
     of routing table entries for the ASBR as described in
     Section 16.4.1. In any case, among the remaining routing
     table entries, select the routing table entry with the least
     cost; when there are multiple least    cost routing table
     entries the    entry whose associated area has    the largest OSPF
     Area ID (when considered as    an unsigned 32-bit integer) is
     chosen.




Moy             Standards Track         [Page 173]

RFC 2328         OSPF Version 2         April 1998


     If the forwarding address is non-zero, look    up the
     forwarding address in the routing table.[24] The matching
     routing table entry    must specify an    intra-area or inter-area
     path; if no    such path exists, do nothing with the LSA and
     consider the next in the list.

    (4) Let    X be the cost specified    by the preferred routing table
     entry for the ASBR/forwarding address, and Y the cost
     specified in the LSA. X is    in terms of the    link state
     metric, and    Y is a type 1 or 2 external metric.

    (5) Look up the    routing    table entry for    the destination    N. If
     no entry exists for    N, install the AS external path    to N,
     with next hop equal    to the list of next hops to the
     forwarding address,    and advertising    router equal to    ASBR.
     If the external metric type    is 1, then the path-type is set
     to type 1 external and the cost is equal to    X+Y. If the
     external metric type is 2, the path-type is    set to type 2
     external, the link state component of the route's cost is X,
     and    the type 2 cost    is Y.

    (6) Compare the    AS external path described by the LSA with the
     existing paths in N's routing table    entry, as follows. If
     the    new path is preferred, it replaces the present paths in
     N's    routing    table entry. If the new path is of equal
     preference,    it is added to N's routing table entry's list of
     paths.

     (a)    Intra-area and inter-area paths    are always preferred
        over AS    external paths.

     (b)    Type 1 external    paths are always preferred over    type 2
        external paths.    When all paths are type    2 external
        paths, the paths with the smallest advertised type 2
        metric are always preferred.

     (c)    If the new AS external path is still indistinguishable
        from the current paths in the N's routing table    entry,
        and RFC1583Compatibility is set    to "disabled", select
        the preferred paths based on the intra-AS paths    to the
        ASBR/forwarding    addresses, as specified    in Section
        16.4.1.



Moy             Standards Track         [Page 174]

RFC 2328         OSPF Version 2         April 1998


     (d)    If the new AS external path is still indistinguishable
        from the current paths in the N's routing table    entry,
        select the preferred path based    on a least cost
        comparison. Type 1 external paths are compared    by
        looking    at the sum of the distance to the forwarding
        address    and the    advertised type    1 metric (X+Y).     Type 2
        external paths advertising equal type 2    metrics    are
        compared by looking at the distance to the forwarding
        addresses.

    16.4.1.     External path preferences

     When multiple intra-AS paths are available to
     ASBRs/forwarding addresses,    the following rules indicate
     which paths    are preferred. These rules apply when the same
     ASBR is reachable through multiple areas, or when trying to
     decide which of several AS-external-LSAs should be
     preferred. In the former case the paths all    terminate at the
     same ASBR, while in    the latter the paths terminate at
     separate ASBRs/forwarding addresses. In either case, each
     path is represented    by a separate routing table entry as
     defined in Section 11.

     This section only applies when RFC1583Compatibility    is set
     to "disabled".

     The    path preference    rules, stated from highest to lowest
     preference,    are as follows.    Note that as a result of these
     rules, there may still be multiple paths of    the highest
     preference.    In this    case, the path to use must be determined
     based on cost, as described    in Section 16.4.

     o    Intra-area paths using non-backbone areas are always the
        most preferred.

     o    The other paths, intra-area backbone paths and inter-
        area paths, are    of equal preference.

16.5. Incremental updates -- summary-LSAs

    When a new summary-LSA is received, it is not necessary    to
    recalculate the    entire routing table. Call the    destination



Moy             Standards Track         [Page 175]

RFC 2328         OSPF Version 2         April 1998


    described by the summary-LSA N (N's address is obtained    by
    masking    the LSA's Link State ID    with the network/subnet    mask
    contained in the body of the LSA), and let Area    A be the area to
    which the LSA belongs. There are then two separate cases:

    Case 1:    Area A is the backbone and/or the router is not    an area
     border router.
     In this case, the following    calculations must be performed.
     First, if there is presently an inter-area route to    the
     destination    N, N's routing table entry is invalidated,
     saving the entry's values for later    comparisons. Then the
     calculation    in Section 16.2    is run again for the single
     destination    N. In this calculation,    all of Area A's
     summary-LSAs that describe a route to N are    examined. In
     addition, if the router is an area border router attached to
     one    or more    transit    areas, the calculation in Section 16.3
     must be run    again for the single destination. If the
     results of these calculations have changed the cost/path to
     an AS boundary router (as would be the case    for a Type 4
     summary-LSA) or to any forwarding addresses, all AS-
     external-LSAs will have to be reexamined by    rerunning the
     calculation    in Section 16.4. Otherwise, if    N is now newly
     unreachable, the calculation in Section 16.4 must be rerun
     for    the single destination N, in case an alternate external
     route to N exists.

    Case 2:    Area A is a transit area and the router    is an area
     border router.
     In this case, the following    calculations must be performed.
     First, if N's routing table    entry presently    contains one or
     more inter-area paths that utilize the transit area    Area A,
     these paths    should be removed. If this removes all paths
     from the routing table entry, the entry should be
     invalidated. The entry's old values should    be saved for
     later comparisons. Next the    calculation in Section 16.3 must
     be run again for the single    destination N. If the results of
     this calculation have caused the cost to N to increase, the
     complete routing table calculation must be rerun starting
     with the Dijkstra algorithm    specified in Section 16.1.
     Otherwise, if the cost/path    to an AS boundary router (as
     would be the case for a Type 4 summary-LSA)    or to any
     forwarding addresses has changed, all AS-external-LSAs will



Moy             Standards Track         [Page 176]

RFC 2328         OSPF Version 2         April 1998


     have to be reexamined by rerunning the calculation in
     Section 16.4. Otherwise, if N is now newly    unreachable, the
     calculation    in Section 16.4    must be    rerun for the single
     destination    N, in case an alternate    external route to N
     exists.

16.6. Incremental updates -- AS-external-LSAs

    When a new AS-external-LSA is received,    it is not necessary to
    recalculate the    entire routing table. Call the    destination
    described by the AS-external-LSA N. N's address is obtained by
    masking    the LSA's Link State ID    with the network/subnet    mask
    contained in the body of the LSA. If there is already an intra-
    area or    inter-area route to the    destination, no    recalculation is
    necessary (internal routes take    precedence).

    Otherwise, the procedure in Section 16.4 will have to be
    performed, but only for    those AS-external-LSAs whose destination
    is N. Before this procedure is    performed, the present routing
    table entry for    N should be invalidated.

16.7. Events generated as a result    of routing table changes

    Changes    to routing table entries sometimes cause the OSPF area
    border routers to take additional actions. These routers need
    to act on the following    routing    table changes:

    o The    cost or    path type of a routing table entry has changed.
     If the destination described by this entry is a Network or
     AS boundary    router,    and this is not    simply a change    of AS
     external routes, new summary-LSAs may have to be generated
     (potentially one for each attached area, including the
     backbone).    See Section 12.4.3 for more information. If a
     previously advertised entry    has been deleted, or is    no
     longer advertisable    to a particular    area, the LSA must be
     flushed from the routing domain by setting its LS age to
     MaxAge and reflooding (see Section 14.1).

    o A routing table entry associated with a configured virtual
     link has changed. The destination of such a routing table
     entry is an    area border router. The change    indicates a
     modification to the    virtual    link's cost or viability.



Moy             Standards Track         [Page 177]

RFC 2328         OSPF Version 2         April 1998


     If the entry indicates that    the area border    router is newly
     reachable, the corresponding virtual link is now
     operational. An InterfaceUp event should be generated for
     the    virtual    link, which will cause a virtual adjacency to
     begin to form (see Section 10.3). At this time the    virtual
     link's IP interface    address    and the    virtual    neighbor's
     Neighbor IP    address    are also calculated.

     If the entry indicates that    the area border    router is no
     longer reachable, the virtual link and its associated
     adjacency should be    destroyed. This means an InterfaceDown
     event should be generated for the associated virtual link.

     If the cost    of the entry has changed, and there is a fully
     established    virtual    adjacency, a new router-LSA for    the
     backbone must be originated. This in turn may cause further
     routing table changes.

16.8. Equal-cost multipath

    The OSPF protocol maintains multiple equal-cost    routes to all
    destinations. This can    be seen    in the steps used above    to
    calculate the routing table, and in the    definition of the
    routing    table structure.

    Each one of the    multiple routes    will be    of the same type
    (intra-area, inter-area, type 1    external or type 2 external),
    cost, and will have the    same associated    area. However,    each
    route may specify a separate next hop and Advertising router.

    There is no requirement    that a router running OSPF keep    track of
    all possible equal-cost    routes to a destination. An
    implementation may choose to keep only a fixed number of routes
    to any given destination. This    does not affect    any of the
    algorithms presented in    this specification.










Moy             Standards Track         [Page 178]

RFC 2328         OSPF Version 2         April 1998


Footnotes


[1]The graph's vertices represent either routers, transit networks,
or stub networks. Since routers may belong    to multiple areas, it is
not    possible to color the graph's vertices.

[2]It is possible for all of a router's interfaces to be unnumbered
point-to-point links. In this case, an IP address must be assigned
to the router. This address will then be advertised in the    router's
router-LSA as a host route.

[3]Note that in these cases    both interfaces, the non-virtual and the
virtual, would have    the same IP address.

[4]Note that no host route is generated for, and no    IP packets can
be addressed to, interfaces    to unnumbered point-to-point networks.
This is regardless of such an interface's state.

[5]It is instructive to see    what happens when the Designated Router
for    the network crashes. Call the Designated Router for the network
RT1, and the Backup    Designated Router RT2.    If Router RT1 crashes
(or    maybe its interface to the network dies), the other routers on
the    network    will detect RT1's absence within RouterDeadInterval
seconds. All routers may not detect this at precisely the same
time; the routers that detect RT1's    absence    before RT2 does    will,
for    a time,    select RT2 to be both Designated Router    and Backup
Designated Router.    When RT2 detects that RT1 is gone it will move
itself to Designated Router. At this time,    the remaining router
having highest Router Priority will    be selected as Backup Designated
Router.

[6]On point-to-point networks, the lower level protocols indicate
whether the    neighbor is up and running. Likewise, existence of the
neighbor on    virtual    links is indicated by the routing table
calculation. However, in both these cases,    the Hello Protocol is
still used.     This ensures that communication between the neighbors
is bidirectional, and that each of the neighbors has a functioning
routing protocol layer.

[7]When the    identity of the    Designated Router is changing, it may be
quite common for a neighbor    in this    state to send the router a



Moy             Standards Track         [Page 179]

RFC 2328         OSPF Version 2         April 1998


Database Description packet; this means that there is some momentary
disagreement on the    Designated Router's identity.

[8]Note that it is possible    for a router to    resynchronize any of its
fully established adjacencies by setting the adjacency's state back
to ExStart.     This will cause the other end of the adjacency    to
process a SeqNumberMismatch    event, and therefore to    also go    back to
ExStart state.

[9]The address space of IP networks    and the    address    space of OSPF
Router IDs may overlap. That is, a    network    may have an IP address
which is identical (when considered    as a 32-bit number) to some
router's Router ID.

[10]"Discard" entries are necessary    to ensure that route
summarization at area boundaries will not cause packet looping.

[11]It is assumed that, for    two different address ranges matching
the    destination, one range is more specific    than the other.    Non-
contiguous subnet masks can    be configured to violate this
assumption.    Such subnet mask configurations    cannot be handled by the
OSPF protocol.

[12]MaxAgeDiff is an architectural constant. It indicates the
maximum dispersion of ages,    in seconds, that can occur for a single
LSA    instance as it is flooded throughout the routing domain. If two
LSAs differ    by more    than this, they    are assumed to be different
instances of the same LSA.    This can occur when a router restarts
and    loses track of the LSA's previous LS sequence number. See
Section 13.4 for more details.

[13]When two LSAs have different LS    checksums, they    are assumed to
be separate    instances. This can occur when    a router restarts, and
loses track    of the LSA's previous LS sequence number. In the case
where the two LSAs have the    same LS    sequence number, it is not
possible to    determine which    LSA is actually    newer.    However, if the
wrong LSA is accepted as newer, the    originating router will    simply
originate another instance.     See Section 13.4 for further details.

[14]There is one instance where a lookup must be done based    on
partial information. This is during the routing table calculation,
when a network-LSA must be found based solely on its Link State ID.



Moy             Standards Track         [Page 180]

RFC 2328         OSPF Version 2         April 1998


The    lookup in this case is still well defined, since no two
network-LSAs can have the same Link    State ID.

[15]This is    the way    RFC 1583 specified point-to-point
representation. It    has three advantages: a) it does not require
allocating a subnet    to the point-to-point link, b) it tends    to bias
the    routing    so that    packets    destined for the point-to-point
interface will actually be received    over the interface (which is
useful for diagnostic purposes) and    c) it allows network
bootstrapping of a neighbor, without requiring that    the bootstrap
program contain an OSPF implementation.

[16]This is    the more traditional point-to-point representation used
by protocols such as RIP.

[17]This clause covers the case: Inter-area    routes are not
summarized to the backbone.     This is because inter-area routes are
always associated with the backbone    area.

[18]This clause is only invoked when a non-backbone    Area A supports
transit data traffic (i.e.,    has TransitCapability set to TRUE). For
example, in    the area configuration of Figure 6, Area 2 can support
transit traffic due    to the configured virtual link between Routers
RT10 and RT11. As a    result,    Router RT11 need only originate    a single
summary-LSA    into Area 2 (having the    collapsed destination N9-
N11,H1), since all of Router RT11's    other eligible routes have next
hops belonging to Area 2 itself (and as such only need be advertised
by other area border routers; in this case,    Routers    RT10 and RT7).

[19]By keeping more    information in the routing table, it is    possible
for    an implementation to recalculate the shortest path tree    for only
a single area. In fact, there are incremental algorithms that allow
an implementation to recalculate only a portion of a single    area's
shortest path tree [Ref1].    However, these algorithms are beyond the
scope of this specification.

[20]This is    how the    Link state request list    is emptied, which
eventually causes the neighbor state to transition to Full.     See
Section 10.9 for more details.

[21]It should be a relatively rare occurrence for an LSA's LS age to
reach MaxAge in this fashion. Usually, the    LSA will be replaced by



Moy             Standards Track         [Page 181]

RFC 2328         OSPF Version 2         April 1998


a more recent instance before it ages out.

[22]Strictly speaking, because of equal-cost multipath, the
algorithm does not create a    tree. We continue to use the "tree"
terminology    because    that is    what occurs most often in the existing
literature.

[23]Note that the presence of any link back    to V is    sufficient; it
need not be    the matching half of the link under consideration from V
to W. This is enough to ensure that, before    data traffic flows
between a pair of neighboring routers, their link state databases
will be synchronized.

[24]When the forwarding address is non-zero, it should point to a
router belonging to    another    Autonomous System. See    Section    12.4.4
for    more details.





























Moy             Standards Track         [Page 182]

RFC 2328         OSPF Version 2         April 1998


References

[Ref1] McQuillan, J., I. Richer and E. Rosen, "ARPANET Routing
     Algorithm Improvements", BBN Technical Report 3803,    April
     1978.

[Ref2] Digital Equipment Corporation, "Information    processing
     systems -- Data communications -- Intermediate System to
     Intermediate System    Intra-Domain Routing Protocol",    October
     1987.

[Ref3] McQuillan, J., et.al., "The    New Routing Algorithm for the
     ARPANET", IEEE Transactions    on Communications, May 1980.

[Ref4] Perlman, R., "Fault-Tolerant Broadcast of Routing
     Information", Computer Networks, December 1983.

[Ref5] Postel, J.,    "Internet Protocol", STD 5, RFC    791, September
     1981.

[Ref6] McKenzie, A., "ISO Transport Protocol specification    ISO DP
     8073", RFC 905, April 1984.

[Ref7] Deering, S., "Host extensions for IP multicasting",    STD 5,
     RFC    1112, May 1988.

[Ref8] McCloghrie,    K., and    M. Rose, "Management Information Base
     for    network    management of TCP/IP-based internets: MIB-II",
     STD    17, RFC    1213, March 1991.

[Ref9] Moy, J., "OSPF Version 2", RFC 1583, March 1994.

[Ref10] Fuller, V.,    T. Li, J. Yu, and K. Varadhan, "Classless
     Inter-Domain Routing (CIDR): an Address Assignment and
     Aggregation    Strategy", RFC1519, September 1993.

[Ref11] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC
     1700, October 1994.

[Ref12] Almquist, P., "Type    of Service in the Internet Protocol
     Suite", RFC    1349, July 1992.




Moy             Standards Track         [Page 183]

RFC 2328         OSPF Version 2         April 1998


[Ref13] Leiner, B.,    et.al.,    "The DARPA Internet Protocol Suite", DDN
     Protocol Handbook, April 1985.

[Ref14] Bradley, T., and C.    Brown, "Inverse    Address    Resolution
     Protocol", RFC 1293, January 1992.

[Ref15] deSouza, O., and M.    Rodrigues, "Guidelines for Running OSPF
     Over Frame Relay Networks",    RFC 1586, March    1994.

[Ref16] Bellovin, S., "Security Problems in    the TCP/IP Protocol
     Suite", ACM    Computer Communications    Review,    Volume 19,
     Number 2, pp. 32-38, April 1989.

[Ref17] Rivest, R.,    "The MD5 Message-Digest    Algorithm", RFC    1321,
     April 1992.

[Ref18] Moy, J., "Multicast    Extensions to OSPF", RFC 1584, March
     1994.

[Ref19] Coltun, R.,    and V. Fuller, "The OSPF NSSA Option", RFC 1587,
     March 1994.

[Ref20] Ferguson, D., "The OSPF External Attributes    LSA", work in
     progress.

[Ref21] Moy, J., "Extending    OSPF to    Support    Demand Circuits", RFC
     1793, April    1995.

[Ref22] Mogul, J., and S. Deering, "Path MTU Discovery", RFC 1191,
     November 1990.

[Ref23] Rekhter, Y., and T.    Li, "A Border Gateway Protocol 4 (BGP-
     4)", RFC 1771, March 1995.

[Ref24] Hinden, R.,    "Internet Routing Protocol Standardization
     Criteria", BBN, October 1991.

[Ref25] Moy, J., "OSPF Version 2", RFC 2178, July 1997.

[Ref26] Rosen, E., "Vulnerabilities    of Network Control Protocols: An
     Example", Computer Communication Review, July 1981.




Moy             Standards Track         [Page 184]

RFC 2328         OSPF Version 2         April 1998


A. OSPF    data formats

This appendix describes the    format of OSPF protocol    packets    and OSPF
LSAs. The OSPF protocol runs directly over    the IP network layer.
Before any data formats are    described, the details of the OSPF
encapsulation are explained.

Next the OSPF Options field    is described. This field describes
various capabilities that may or may not be    supported by pieces of
the    OSPF routing domain. The OSPF Options field is contained in OSPF
Hello packets, Database Description    packets    and in OSPF LSAs.

OSPF packet    formats    are detailed in    Section    A.3. A    description of
OSPF LSAs appears in Section A.4.

A.1 Encapsulation of OSPF packets

OSPF runs directly over the    Internet Protocol's network layer. OSPF
packets are    therefore encapsulated solely by IP and    local data-link
headers.

OSPF does not define a way to fragment its protocol    packets, and
depends on IP fragmentation    when transmitting packets larger than
the    network    MTU. If    necessary, the length of OSPF packets can be up
to 65,535 bytes (including the IP header).    The OSPF packet    types
that are likely to be large    (Database Description Packets, Link
State Request, Link    State Update, and Link State Acknowledgment
packets) can usually be split into several separate    protocol
packets, without loss of functionality. This is recommended; IP
fragmentation should be avoided whenever possible.    Using this
reasoning, an attempt should be made to limit the sizes of OSPF
packets sent over virtual links to 576 bytes unless    Path MTU
Discovery is being performed (see [Ref22]).

The    other important    features of OSPF's IP encapsulation are:

o    Use of IP multicast. Some OSPF    messages are multicast,    when
    sent over broadcast networks. Two distinct IP multicast
    addresses are used. Packets sent to these multicast addresses
    should never be    forwarded; they    are meant to travel a single hop
    only. To ensure that these packets will not travel multiple
    hops, their IP TTL must    be set to 1.



Moy             Standards Track         [Page 185]

RFC 2328         OSPF Version 2         April 1998


    AllSPFRouters
     This multicast address has been assigned the value
     224.0.0.5.    All routers running OSPF should    be prepared to
     receive packets sent to this address. Hello packets are
     always sent    to this    destination. Also, certain OSPF
     protocol packets are sent to this address during the
     flooding procedure.

    AllDRouters
     This multicast address has been assigned the value
     224.0.0.6.    Both the Designated Router and Backup Designated
     Router must    be prepared to receive packets destined    to this
     address. Certain OSPF protocol packets are    sent to    this
     address during the flooding    procedure.

o    OSPF is    IP protocol number 89.    This number has    been registered
    with the Network Information Center. IP protocol number
    assignments are    documented in [Ref11].

o    All OSPF routing protocol packets are sent using the normal
    service    TOS value of binary 0000 defined in [Ref12].

o    Routing    protocol packets are sent with IP precedence set to
    Internetwork Control. OSPF protocol packets should be given
    precedence over    regular    IP data    traffic, in both sending and
    receiving. Setting the    IP precedence field in the IP header to
    Internetwork Control [Ref5] may    help implement this objective.


















Moy             Standards Track         [Page 186]

RFC 2328         OSPF Version 2         April 1998


A.2 The    Options    field

The    OSPF Options field is present in OSPF Hello packets, Database
Description    packets    and all    LSAs. The Options field enables OSPF
routers to support (or not support)    optional capabilities, and to
communicate    their capability level to other    OSPF routers. Through
this mechanism routers of differing    capabilities can be mixed within
an OSPF routing domain.

When used in Hello packets,    the Options field allows a router to
reject a neighbor because of a capability mismatch.     Alternatively,
when capabilities are exchanged in Database    Description packets a
router can choose not to forward certain LSAs to a neighbor    because
of its reduced functionality. Lastly, listing capabilities    in LSAs
allows routers to forward traffic around reduced functionality
routers, by    excluding them from parts of the routing table
calculation.

Five bits of the OSPF Options field    have been assigned, although
only one (the E-bit) is described completely by this memo. Each bit
is described briefly below.    Routers    should reset (i.e. clear)
unrecognized bits in the Options field when    sending    Hello packets or
Database Description packets and when originating LSAs. Conversely,
routers encountering unrecognized Option bits in received Hello
Packets, Database Description packets or LSAs should ignore    the
capability and process the packet/LSA normally.

         +------------------------------------+
         | * | * | DC | EA | N/P | MC | E    | * |
         +------------------------------------+

             The Options field


E-bit
    This bit describes the way AS-external-LSAs are    flooded, as
    described in Sections 3.6, 9.5,    10.8 and 12.1.2    of this    memo.

MC-bit
    This bit describes whether IP multicast    datagrams are forwarded
    according to the specifications    in [Ref18].




Moy             Standards Track         [Page 187]

RFC 2328         OSPF Version 2         April 1998


N/P-bit
    This bit describes the handling    of Type-7 LSAs,    as specified in
    [Ref19].

EA-bit
    This bit describes the router's    willingness to receive and
    forward    External-Attributes-LSAs, as specified in [Ref20].

DC-bit
    This bit describes the router's    handling of demand circuits, as
    specified in [Ref21].


































Moy             Standards Track         [Page 188]

RFC 2328         OSPF Version 2         April 1998


A.3 OSPF Packet    Formats

There are five distinct OSPF packet    types.    All OSPF packet    types
begin with a standard 24 byte header. This    header is described
first. Each packet    type is    then described in a succeeding section.
In these sections each packet's division into fields is displayed,
and    then the field definitions are enumerated.

All    OSPF packet types (other than the OSPF Hello packets) deal with
lists of LSAs. For    example, Link State Update packets implement the
flooding of    LSAs throughout    the OSPF routing domain. Because of
this, OSPF protocol    packets    cannot be parsed unless    the format of
LSAs is also understood. The format of LSAs is described in Section
A.4.

The    receive    processing of OSPF packets is detailed in Section 8.2.
The    sending    of OSPF    packets    is explained in    Section    8.1.




























Moy             Standards Track         [Page 189]

RFC 2328         OSPF Version 2         April 1998


A.3.1 The OSPF packet header

Every OSPF packet starts with a standard 24    byte header. This
header contains all    the information    necessary to determine whether
the    packet should be accepted for further processing. This
determination is described in Section 8.2 of the specification.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | Type |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Version #
    The OSPF version number. This specification documents version 2
    of the protocol.

Type
    The OSPF packet    types are as follows. See Sections A.3.2 through
    A.3.6 for details.












Moy             Standards Track         [Page 190]

RFC 2328         OSPF Version 2         April 1998



             Type     Description
             ________________________________
             1     Hello
             2     Database Description
             3     Link State Request
             4     Link State Update
             5     Link State Acknowledgment




Packet length
    The length of the OSPF protocol    packet in bytes. This length
    includes the standard OSPF header.

Router ID
    The Router ID of the packet's source.

Area ID
    A 32 bit number    identifying the    area that this packet belongs
    to. All OSPF packets are associated with a single area. Most
    travel a single    hop only. Packets travelling over a virtual
    link are labelled with the backbone Area ID of 0.0.0.0.

Checksum
    The standard IP    checksum of the    entire contents    of the packet,
    starting with the OSPF packet header but excluding the 64-bit
    authentication field. This checksum is    calculated as the 16-bit
    one's complement of the    one's complement sum of    all the    16-bit
    words in the packet, excepting the authentication field. If the
    packet's length    is not an integral number of 16-bit words, the
    packet is padded with a    byte of    zero before checksumming. The
    checksum is considered to be part of the packet    authentication
    procedure; for some authentication types the checksum
    calculation is omitted.

AuType
    Identifies the authentication procedure    to be used for the
    packet.     Authentication    is discussed in    Appendix D of the
    specification.    Consult    Appendix D for a list of the currently
    defined    authentication types.



Moy             Standards Track         [Page 191]

RFC 2328         OSPF Version 2         April 1998


Authentication
    A 64-bit field for use by the authentication scheme. See
    Appendix D for details.










































Moy             Standards Track         [Page 192]

RFC 2328         OSPF Version 2         April 1998


A.3.2 The Hello    packet

Hello packets are OSPF packet type 1. These packets are sent
periodically on all    interfaces (including virtual links) in    order to
establish and maintain neighbor relationships. In addition, Hello
Packets are    multicast on those physical networks having a multicast
or broadcast capability, enabling dynamic discovery    of neighboring
routers.

All    routers    connected to a common network must agree on certain
parameters (Network    mask, HelloInterval and    RouterDeadInterval).
These parameters are included in Hello packets, so that differences
can    inhibit    the forming of neighbor    relationships.    A detailed
explanation    of the receive processing for Hello packets is presented
in Section 10.5. The sending of Hello packets is covered in Section
9.5.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 1 |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Network    Mask             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     HelloInterval     | Options | Rtr    Pri |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         RouterDeadInterval             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Designated Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Backup Designated Router         |



Moy             Standards Track         [Page 193]

RFC 2328         OSPF Version 2         April 1998


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Neighbor             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |


Network mask
    The network mask associated with this interface. For example,
    if the interface is to a class B network whose third byte is
    used for subnetting, the network mask is 0xffffff00.

Options
    The optional capabilities supported by the router, as documented
    in Section A.2.

HelloInterval
    The number of seconds between this router's Hello packets.

Rtr    Pri
    This router's Router Priority.    Used in    (Backup) Designated
    Router election. If set to 0, the router will be ineligible to
    become (Backup)    Designated Router.

RouterDeadInterval
    The number of seconds before declaring a silent    router down.

Designated Router
    The identity of    the Designated Router for this network,    in the
    view of    the sending router. The Designated Router is identified
    here by    its IP interface address on the    network. Set to 0.0.0.0
    if there is no Designated Router.

Backup Designated Router
    The identity of    the Backup Designated Router for this network,
    in the view of the sending router. The    Backup Designated Router
    is identified here by its IP interface address on the network.
    Set to 0.0.0.0 if there    is no Backup Designated    Router.

Neighbor
    The Router IDs of each router from whom    valid Hello packets have
    been seen recently on the network. Recently means in the last
    RouterDeadInterval seconds.



Moy             Standards Track         [Page 194]

RFC 2328         OSPF Version 2         April 1998


A.3.3 The Database Description packet

Database Description packets are OSPF packet type 2. These    packets
are    exchanged when an adjacency is being initialized. They    describe
the    contents of the    link-state database. Multiple packets may be
used to describe the database. For    this purpose a poll-response
procedure is used.    One of the routers is designated to be the
master, the    other the slave. The master sends Database Description
packets (polls) which are acknowledged by Database Description
packets sent by the    slave (responses). The    responses are linked to
the    polls via the packets' DD sequence numbers.

    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 2 |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Interface MTU     | Options |0|0|0|0|0|I|M|MS
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         DD    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             |
+-                             -+
|                             |
+-         An LSA Header             -+
|                             |
+-                             -+
|                             |
+-                             -+
|                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |



Moy             Standards Track         [Page 195]

RFC 2328         OSPF Version 2         April 1998


The    format of the Database Description packet is very similar to
both the Link State    Request    and Link State Acknowledgment packets.
The    main part of all three is a list of items, each    item describing
a piece of the link-state database.     The sending of    Database
Description    Packets    is documented in Section 10.8.    The reception of
Database Description packets is documented in Section 10.6.

Interface MTU
    The size in bytes of the largest IP datagram that can be sent
    out the    associated interface, without fragmentation. The MTUs
    of common Internet link    types can be found in Table 7-1    of
    [Ref22]. Interface MTU should be set to    0 in Database
    Description packets sent over virtual links.

Options
    The optional capabilities supported by the router, as documented
    in Section A.2.

I-bit
    The Init bit. When set    to 1, this packet is the first in the
    sequence of Database Description Packets.

M-bit
    The More bit. When set    to 1, it indicates that    more Database
    Description Packets are    to follow.

MS-bit
    The Master/Slave bit. When set    to 1, it indicates that    the
    router is the master during the    Database Exchange process.
    Otherwise, the router is the slave.

DD sequence    number
    Used to    sequence the collection    of Database Description    Packets.
    The initial value (indicated by    the Init bit being set)    should
    be unique. The    DD sequence number then    increments until the
    complete database description has been sent.

The    rest of    the packet consists of a (possibly partial) list of the
link-state database's pieces. Each    LSA in the database is described
by its LSA header.    The LSA    header is documented in    Section    A.4.1.
It contains    all the    information required to    uniquely identify both
the    LSA and    the LSA's current instance.



Moy             Standards Track         [Page 196]

RFC 2328         OSPF Version 2         April 1998


A.3.4 The Link State Request packet

Link State Request packets are OSPF    packet type 3.    After exchanging
Database Description packets with a    neighboring router, a router may
find that parts of its link-state database are out-of-date.     The
Link State Request packet is used to request the pieces of the
neighbor's database    that are more up-to-date. Multiple Link State
Request packets may    need to    be used.

A router that sends    a Link State Request packet has    in mind    the
precise instance of    the database pieces it is requesting. Each
instance is    defined    by its LS sequence number, LS checksum,    and LS
age, although these    fields are not specified in the    Link State
Request Packet itself. The    router may receive even    more recent
instances in response.

The    sending    of Link    State Request packets is documented in Section
10.9. The reception of Link State Request packets is documented in
Section 10.7.

    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 3 |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             LS type             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |



Moy             Standards Track         [Page 197]

RFC 2328         OSPF Version 2         April 1998


Each LSA requested is specified by its LS type, Link State ID, and
Advertising    Router.     This uniquely identifies the LSA, but not its
instance. Link State Request packets are understood to be requests
for    the most recent    instance (whatever that    might be).









































Moy             Standards Track         [Page 198]

RFC 2328         OSPF Version 2         April 1998


A.3.5 The Link State Update packet

Link State Update packets are OSPF packet type 4. These packets
implement the flooding of LSAs. Each Link State Update packet
carries a collection of LSAs one hop further from their origin.
Several LSAs may be    included in a single packet.

Link State Update packets are multicast on those physical networks
that support multicast/broadcast. In order    to make    the flooding
procedure reliable,    flooded    LSAs are acknowledged in Link State
Acknowledgment packets. If    retransmission of certain LSAs is
necessary, the retransmitted LSAs are always sent directly to the
neighbor. For more    information on the reliable flooding of    LSAs,
consult Section 13.

    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 4 |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             # LSAs             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             |
+-                             +-+
|             LSAs             |
+-                             +-+
|             ...             |








Moy             Standards Track         [Page 199]

RFC 2328         OSPF Version 2         April 1998


# LSAs
    The number of LSAs included in this update.


The    body of    the Link State Update packet consists of a list    of LSAs.
Each LSA begins with a common 20 byte header, described in Section
A.4.1. Detailed formats of the different types of LSAs are described
in Section A.4.





































Moy             Standards Track         [Page 200]

RFC 2328         OSPF Version 2         April 1998


A.3.6 The Link State Acknowledgment packet

Link State Acknowledgment Packets are OSPF packet type 5. To make
the    flooding of LSAs reliable, flooded LSAs    are explicitly
acknowledged. This    acknowledgment is accomplished through the
sending and    receiving of Link State    Acknowledgment packets.
Multiple LSAs can be acknowledged in a single Link State
Acknowledgment packet.

Depending on the state of the sending interface and    the sender of
the    corresponding Link State Update    packet,    a Link State
Acknowledgment packet is sent either to the    multicast address
AllSPFRouters, to the multicast address AllDRouters, or as a
unicast. The sending of Link State    Acknowledgement    packets    is
documented in Section 13.5.     The reception of Link State
Acknowledgement packets is documented in Section 13.7.

The    format of this packet is similar to that of the    Data Description
packet. The body of both packets is simply    a list of LSA headers.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version # | 5 |     Packet    length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Router ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Area    ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Checksum     |     AuType     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Authentication             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             |
+-                             -+
|                             |
+-             An LSA Header             -+
|                             |
+-                             -+



Moy             Standards Track         [Page 201]

RFC 2328         OSPF Version 2         April 1998


|                             |
+-                             -+
|                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |


Each acknowledged LSA is described by its LSA header. The LSA
header is documented in Section A.4.1. It contains    all the
information    required to uniquely identify both the LSA and the LSA's
current instance.


































Moy             Standards Track         [Page 202]

RFC 2328         OSPF Version 2         April 1998


A.4 LSA    formats

This memo defines five distinct types of LSAs. Each LSA begins with
a standard 20 byte LSA header. This header    is explained in    Section
A.4.1. Succeeding sections    then diagram the separate LSA types.

Each LSA describes a piece of the OSPF routing domain. Every router
originates a router-LSA. In addition, whenever the    router is
elected Designated Router, it originates a network-LSA. Other types
of LSAs may    also be    originated (see    Section    12.4).    All LSAs are
then flooded throughout the    OSPF routing domain. The flooding
algorithm is reliable, ensuring that all routers have the same
collection of LSAs.     (See Section 13 for more information concerning
the    flooding algorithm). This collection of LSAs is called    the
link-state database.

From the link state    database, each router constructs a shortest path
tree with itself as    root. This yields a routing table (see    Section
11). For the details of the routing table build process, see
Section 16.

























Moy             Standards Track         [Page 203]

RFC 2328         OSPF Version 2         April 1998


A.4.1 The LSA header

All    LSAs begin with    a common 20 byte header. This header contains
enough information to uniquely identify the    LSA (LS    type, Link State
ID,    and Advertising    Router). Multiple instances of    the LSA    may
exist in the routing domain    at the same time. It is then necessary
to determine which instance    is more    recent.     This is accomplished by
examining the LS age, LS sequence number and LS checksum fields that
are    also contained in the LSA header.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS age     | Options | LS type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS checksum     |     length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



LS age
    The time in seconds since the LSA was originated.

Options
    The optional capabilities supported by the described portion of
    the routing domain. OSPF's optional capabilities are documented
    in Section A.2.

LS type
    The type of the    LSA. Each LSA type has    a separate advertisement
    format.     The LSA types defined in this memo are    as follows (see
    Section    12.1.3 for further explanation):






Moy             Standards Track         [Page 204]

RFC 2328         OSPF Version 2         April 1998



            LS Type     Description
            ___________________________________
            1     Router-LSAs
            2     Network-LSAs
            3     Summary-LSAs (IP network)
            4     Summary-LSAs (ASBR)
            5     AS-external-LSAs




Link State ID
    This field identifies the portion of the internet environment
    that is    being described    by the LSA. The contents of this field
    depend on the LSA's LS type. For example, in network-LSAs the
    Link State ID is set to    the IP interface address of the
    network's Designated Router (from which    the network's IP address
    can be derived). The Link State ID is further discussed in
    Section    12.1.4.

Advertising    Router
    The Router ID of the router that originated the    LSA. For
    example, in network-LSAs this field is equal to    the Router ID of
    the network's Designated Router.

LS sequence    number
    Detects    old or duplicate LSAs.    Successive instances of    an LSA
    are given successive LS    sequence numbers. See Section 12.1.6
    for more details.

LS checksum
    The Fletcher checksum of the complete contents of the LSA,
    including the LSA header but excluding the LS age field. See
    Section    12.1.7 for more    details.

length
    The length in bytes of the LSA.     This includes the 20 byte LSA
    header.






Moy             Standards Track         [Page 205]

RFC 2328         OSPF Version 2         April 1998


A.4.2 Router-LSAs

Router-LSAs    are the    Type 1 LSAs. Each router in an    area originates
a router-LSA. The LSA describes the state and cost    of the router's
links (i.e., interfaces) to    the area. All of the router's links to
the    area must be described in a single router-LSA.    For details
concerning the construction    of router-LSAs,    see Section 12.4.1.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS age     | Options | 1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS checksum     |     length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0     |V|E|B|    0 |     # links     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Link ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Link Data             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | # TOS |     metric     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TOS |    0 |     TOS metric     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Link ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Link Data             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |






Moy             Standards Track         [Page 206]

RFC 2328         OSPF Version 2         April 1998


In router-LSAs, the    Link State ID field is set to the router's OSPF
Router ID. Router-LSAs are flooded throughout a single area    only.

bit    V
    When set, the router is    an endpoint of one or more fully
    adjacent virtual links having the described area as Transit area
    (V is for virtual link endpoint).

bit    E
    When set, the router is    an AS boundary router (E is for
    external).

bit    B
    When set, the router is    an area    border router (B is for    border).

# links
    The number of router links described in    this LSA. This    must be
    the total collection of    router links (i.e., interfaces)    to the
    area.


The    following fields are used to describe each router link (i.e.,
interface).    Each router link is typed (see the below Type field).
The    Type field indicates the kind of link being described.    It may
be a link to a transit network, to another router or to a stub
network. The values of all    the other fields describing a router
link depend    on the link's Type. For example, each link has    an
associated 32-bit Link Data    field.    For links to stub networks this
field specifies the    network's IP address mask. For    other link types
the    Link Data field    specifies the router interface's IP address.


Type
    A quick    description of the router link.     One of    the following.
    Note that host routes are classified as    links to stub networks
    with network mask of 0xffffffff.









Moy             Standards Track         [Page 207]

RFC 2328         OSPF Version 2         April 1998



         Type    Description
         __________________________________________________
         1    Point-to-point connection to another router
         2    Connection to a    transit    network
         3    Connection to a    stub network
         4    Virtual    link




Link ID
    Identifies the object that this    router link connects to. Value
    depends    on the link's Type. When connecting to    an object that
    also originates    an LSA (i.e., another router or    a transit
    network) the Link ID is    equal to the neighboring LSA's Link
    State ID. This    provides the key for looking up    the neighboring
    LSA in the link    state database during the routing table
    calculation. See Section 12.2 for more details.



         Type Link ID
         ______________________________________
         1 Neighboring router's Router ID
         2 IP address of Designated Router
         3 IP network/subnet    number
         4 Neighboring router's Router ID




Link Data
    Value again depends on the link's Type field. For connections to
    stub networks, Link Data specifies the network's IP address
    mask. For unnumbered point-to-point connections, it specifies
    the interface's    MIB-II [Ref8] ifIndex value. For the other link
    types it specifies the router interface's IP address. This
    latter piece of    information is needed during the routing table
    build process, when calculating    the IP address of the next hop.
    See Section 16.1.1 for more details.




Moy             Standards Track         [Page 208]

RFC 2328         OSPF Version 2         April 1998


# TOS
    The number of different    TOS metrics given for this link, not
    counting the required link metric (referred to as the TOS 0
    metric in [Ref9]). For    example, if no additional TOS metrics
    are given, this    field is set to    0.

metric
    The cost of using this router link.


Additional TOS-specific information    may also be included, for
backward compatibility with    previous versions of the OSPF
specification ([Ref9]). Within each    link, and for each desired TOS,
TOS    TOS-specific link information may be encoded as    follows:

TOS    IP Type    of Service that    this metric refers to.    The encoding of
    TOS in OSPF LSAs is described in Section 12.3.

TOS    metric
    TOS-specific metric information.

























Moy             Standards Track         [Page 209]

RFC 2328         OSPF Version 2         April 1998


A.4.3 Network-LSAs

Network-LSAs are the Type 2    LSAs. A network-LSA is    originated for
each broadcast and NBMA network in the area    which supports two or
more routers. The network-LSA is originated by the    network's
Designated Router.    The LSA    describes all routers attached to the
network, including the Designated Router itself. The LSA's    Link
State ID field lists the IP    interface address of the Designated
Router.

The    distance from the network to all attached routers is zero. This
is why metric fields need not be specified in the network-LSA. For
details concerning the construction    of network-LSAs, see Section
12.4.2.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS age     | Options | 2     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS checksum     |     length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Network Mask             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Attached Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |



Network Mask
    The IP address mask for    the network. For example, a class A
    network    would have the mask 0xff000000.





Moy             Standards Track         [Page 210]

RFC 2328         OSPF Version 2         April 1998


Attached Router
    The Router IDs of each of the routers attached to the network.
    Actually, only those routers that are fully adjacent to    the
    Designated Router are listed. The Designated Router includes
    itself in this list. The number of routers included can be
    deduced    from the LSA header's length field.







































Moy             Standards Track         [Page 211]

RFC 2328         OSPF Version 2         April 1998


A.4.4 Summary-LSAs

Summary-LSAs are the Type 3    and 4 LSAs. These LSAs    are originated
by area border routers. Summary-LSAs describe inter-area
destinations. For details concerning the construction of summary-
LSAs, see Section 12.4.3.

Type 3 summary-LSAs    are used when the destination is an IP network.
In this case the LSA's Link    State ID field is an IP    network    number
(if    necessary, the Link State ID can also have one or more of the
network's "host" bits set; see Appendix E for details). When the
destination    is an AS boundary router, a Type 4 summary-LSA is used,
and    the Link State ID field    is the AS boundary router's OSPF Router
ID.     (To see why it    is necessary to    advertise the location of each
ASBR, consult Section 16.4.) Other    than the difference in the Link
State ID field, the    format of Type 3 and 4 summary-LSAs is
identical.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS age     | Options | 3 or 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS checksum     |     length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Network Mask             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0     |         metric         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TOS |        TOS metric         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |






Moy             Standards Track         [Page 212]

RFC 2328         OSPF Version 2         April 1998


For    stub areas, Type 3 summary-LSAs    can also be used to describe a
(per-area) default route. Default summary routes are used in stub
areas instead of flooding a    complete set of    external routes. When
describing a default summary route,    the summary-LSA's Link State ID
is always set to DefaultDestination    (0.0.0.0) and the Network Mask
is set to 0.0.0.0.

Network Mask
    For Type 3 summary-LSAs, this indicates    the destination
    network's IP address mask. For    example, when advertising the
    location of a class A network the value    0xff000000 would be
    used. This field is not meaningful and    must be    zero for Type 4
    summary-LSAs.

metric
    The cost of this route.     Expressed in the same units as    the
    interface costs    in the router-LSAs.

Additional TOS-specific information    may also be included, for
backward compatibility with    previous versions of the OSPF
specification ([Ref9]). For    each desired TOS, TOS-specific
information    is encoded as follows:

TOS    IP Type    of Service that    this metric refers to.    The encoding of
    TOS in OSPF LSAs is described in Section 12.3.

TOS    metric
    TOS-specific metric information.

















Moy             Standards Track         [Page 213]

RFC 2328         OSPF Version 2         April 1998


A.4.5 AS-external-LSAs

AS-external-LSAs are the Type 5 LSAs. These LSAs are originated by
AS boundary    routers, and describe destinations external to the AS.
For    details    concerning the construction of AS-external-LSAs, see
Section 12.4.3.

AS-external-LSAs usually describe a    particular external destination.
For    these LSAs the Link State ID field specifies an    IP network
number (if necessary, the Link State ID can    also have one or more of
the    network's "host" bits set; see Appendix    E for details).     AS-
external-LSAs are also used    to describe a default route. Default
routes are used when no specific route exists to the destination.
When describing a default route, the Link State ID is always set to
DefaultDestination (0.0.0.0) and the Network Mask is set to    0.0.0.0.


    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS age     | Options | 5     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Link State ID             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Advertising Router             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         LS    sequence number             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     LS checksum     |     length     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             Network Mask             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E| 0 |         metric         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Forwarding address         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         External Route Tag         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|E| TOS |        TOS metric         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Forwarding address         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Moy             Standards Track         [Page 214]

RFC 2328         OSPF Version 2         April 1998


|         External Route Tag         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|             ...             |



Network Mask
    The IP address mask for    the advertised destination. For
    example, when advertising a class A network the    mask 0xff000000
    would be used.

bit    E
    The type of external metric. If bit E is set, the metric
    specified is a Type 2 external metric.    This means the metric is
    considered larger than any link    state path. If    bit E is zero,
    the specified metric is    a Type 1 external metric. This    means
    that it    is expressed in    the same units as the link state metric
    (i.e., the same    units as interface cost).

metric
    The cost of this route.     Interpretation    depends    on the external
    type indication    (bit E above).

Forwarding address
    Data traffic for the advertised    destination will be forwarded to
    this address. If the Forwarding address is set    to 0.0.0.0, data
    traffic    will be    forwarded instead to the LSA's originator (i.e.,
    the responsible    AS boundary router).

External Route Tag
    A 32-bit field attached    to each    external route.     This is not
    used by    the OSPF protocol itself. It may be used to communicate
    information between AS boundary    routers; the precise nature of
    such information is outside the    scope of this specification.

Additional TOS-specific information    may also be included, for
backward compatibility with    previous versions of the OSPF
specification ([Ref9]). For    each desired TOS, TOS-specific
information    is encoded as follows:

TOS    The Type of Service that the following fields concern.    The
    encoding of TOS    in OSPF    LSAs is    described in Section 12.3.



Moy             Standards Track         [Page 215]

RFC 2328         OSPF Version 2         April 1998


bit    E
    For backward-compatibility with    [Ref9].

TOS    metric
    TOS-specific metric information.

Forwarding address
    For backward-compatibility with    [Ref9].

External Route Tag
    For backward-compatibility with    [Ref9].


































Moy             Standards Track         [Page 216]

RFC 2328         OSPF Version 2         April 1998


B. Architectural Constants

Several OSPF protocol parameters have fixed    architectural values.
These parameters have been referred    to in the text by names    such as
LSRefreshTime. The    same naming convention is used for the
configurable protocol parameters. They are    defined    in Appendix C.

The    name of    each architectural constant follows, together with its
value and a    short description of its function.


LSRefreshTime
    The maximum time between distinct originations of any particular
    LSA. If the LS    age field of one of the    router's self-originated
    LSAs reaches the value LSRefreshTime, a    new instance of    the LSA
    is originated, even though the contents    of the LSA (apart from
    the LSA    header)    will be    the same. The value of    LSRefreshTime is
    set to 30 minutes.

MinLSInterval
    The minimum time between distinct originations of any particular
    LSA. The value    of MinLSInterval is set    to 5 seconds.

MinLSArrival
    For any    particular LSA,    the minimum time that must elapse
    between    reception of new LSA instances during flooding.    LSA
    instances received at higher frequencies are discarded.    The
    value of MinLSArrival is set to    1 second.

MaxAge
    The maximum age    that an    LSA can    attain.    When an    LSA's LS age
    field reaches MaxAge, it is reflooded in an attempt to flush the
    LSA from the routing domain (See Section 14). LSAs of age MaxAge
    are not    used in    the routing table calculation.    The value of
    MaxAge is set to 1 hour.

CheckAge
    When the age of    an LSA in the link state database hits a
    multiple of CheckAge, the LSA's    checksum is verified. An
    incorrect checksum at this time    indicates a serious error. The
    value of CheckAge is set to 5 minutes.




Moy             Standards Track         [Page 217]

RFC 2328         OSPF Version 2         April 1998


MaxAgeDiff
    The maximum time dispersion that can occur, as an LSA is flooded
    throughout the AS. Most of this time is accounted for by the
    LSAs sitting on    router output queues (and therefore not    aging)
    during the flooding process. The value    of MaxAgeDiff is set to
    15 minutes.

LSInfinity
    The metric value indicating that the destination described by an
    LSA is unreachable. Used in summary-LSAs and AS-external-LSAs as
    an alternative to premature aging (see Section 14.1). It is
    defined    to be the 24-bit binary    value of all ones: 0xffffff.

DefaultDestination
    The Destination    ID that    indicates the default route. This route
    is used    when no    other matching routing table entry can be found.
    The default destination    can only be advertised in AS-external-
    LSAs and in stub areas'    type 3 summary-LSAs. Its value    is the
    IP address 0.0.0.0. Its    associated Network Mask    is also    always
    0.0.0.0.

InitialSequenceNumber
    The value used for LS Sequence Number when originating the first
    instance of any    LSA. Its value is the signed 32-bit integer
    0x80000001.

MaxSequenceNumber
    The maximum value that LS Sequence Number can attain. Its value
    is the signed 32-bit integer 0x7fffffff.
















Moy             Standards Track         [Page 218]

RFC 2328         OSPF Version 2         April 1998


C. Configurable    Constants

The    OSPF protocol has quite    a few configurable parameters.    These
parameters are listed below. They are grouped into    general
functional categories (area    parameters, interface parameters, etc.).
Sample values are given for    some of    the parameters.

Some parameter settings need to be consistent among    groups of
routers. For example, all routers in an area must agree on    that
area's parameters, and all routers attached    to a network must agree
on that network's IP network number    and mask.

Some parameters may    be determined by router    algorithms outside of
this specification (e.g., the address of a host connected to the
router via a SLIP line). From OSPF's point    of view, these items are
still configurable.

C.1    Global parameters

    In general, a separate copy of the OSPF    protocol is run    for each
    area. Because of this,    most configuration parameters are
    defined    on a per-area basis. The few global configuration
    parameters are listed below.


    Router ID
     This is a 32-bit number that uniquely identifies the router
     in the Autonomous System. One algorithm for Router    ID
     assignment is to choose the    largest    or smallest IP address
     assigned to    the router. If    a router's OSPF    Router ID is
     changed, the router's OSPF software    should be restarted
     before the new Router ID takes effect. Before restarting in
     order to change its    Router ID, the router should flush its
     self-originated LSAs from the routing domain (see Section
     14.1), or they will    persist    for up to MaxAge minutes.

    RFC1583Compatibility
     Controls the preference rules used in Section 16.4 when
     choosing among multiple AS-external-LSAs advertising the
     same destination. When set to "enabled", the preference
     rules remain those specified by RFC    1583 ([Ref9]). When set
     to "disabled", the preference rules    are those stated in



Moy             Standards Track         [Page 219]

RFC 2328         OSPF Version 2         April 1998


     Section 16.4.1, which prevent routing loops    when AS-
     external-LSAs for the same destination have    been originated
     from different areas. Set to "enabled" by default.

     In order to    minimize the chance of routing loops, all OSPF
     routers in an OSPF routing domain should have
     RFC1583Compatibility set identically. When there are routers
     present that have not been updated with the    functionality
     specified in Section 16.4.1    of this    memo, all routers should
     have RFC1583Compatibility set to "enabled".    Otherwise, all
     routers should have    RFC1583Compatibility set to "disabled",
     preventing all routing loops.

C.2    Area parameters

    All routers belonging to an area must agree on that area's
    configuration.    Disagreements between two routers will lead to
    an inability for adjacencies to    form between them, with    a
    resulting hindrance to the flow    of routing protocol and    data
    traffic. The following    items must be configured for an    area:


    Area ID
     This is a 32-bit number that identifies the    area. The Area
     ID of 0.0.0.0 is reserved for the backbone.     If the    area
     represents a subnetted network, the    IP network number of the
     subnetted network may be used for the Area ID.

    List of    address    ranges
     An OSPF area is defined as a list of address ranges. Each
     address range consists of the following items:

     [IP    address, mask]
         Describes the collection of    IP addresses contained
         in the address range. Networks and hosts are
         assigned to    an area    depending on whether their
         addresses fall into    one of the area's defining
         address ranges. Routers are viewed    as belonging to
         multiple areas, depending on their attached
         networks' area membership.





Moy             Standards Track         [Page 220]

RFC 2328         OSPF Version 2         April 1998


     Status Set    to either Advertise or DoNotAdvertise.    Routing
         information    is condensed at    area boundaries.
         External to    the area, at most a single route is
         advertised (via a summary-LSA) for each address
         range. The route is    advertised if and only if the
         address range's Status is set to Advertise.
         Unadvertised ranges    allow the existence of certain
         networks to    be intentionally hidden    from other
         areas. Status is set to Advertise by default.

     As an example, suppose an IP subnetted network is to be its
     own    OSPF area. The    area would be configured as a single
     address range, whose IP address is the address of the
     subnetted network, and whose mask is the natural class A, B,
     or C address mask.    A single route would be    advertised
     external to    the area, describing the entire    subnetted
     network.

    ExternalRoutingCapability
     Whether AS-external-LSAs will be flooded into/throughout the
     area. If AS-external-LSAs are excluded from the area, the
     area is called a "stub". Internal to stub areas, routing to
     external destinations will be based    solely on a default
     summary route. The    backbone cannot    be configured as a stub
     area. Also, virtual links cannot be configured through stub
     areas. For    more information, see Section 3.6.

    StubDefaultCost
     If the area    has been configured as a stub area, and    the
     router itself is an    area border router, then the
     StubDefaultCost indicates the cost of the default summary-
     LSA    that the router    should advertise into the area.

C.3    Router interface parameters

    Some of    the configurable router    interface parameters (such as IP
    interface address and subnet mask) actually imply properties of
    the attached networks, and therefore must be consistent    across
    all the    routers    attached to that network. The parameters that
    must be    configured for a router    interface are:





Moy             Standards Track         [Page 221]

RFC 2328         OSPF Version 2         April 1998


    IP interface address
     The    IP protocol address for    this interface.     This uniquely
     identifies the router over the entire internet. An    IP
     address is not required on point-to-point networks.     Such a
     point-to-point network is called "unnumbered".

    IP interface mask
     Also referred to as    the subnet/network mask, this indicates
     the    portion    of the IP interface address that identifies the
     attached network. Masking the IP interface    address    with the
     IP interface mask yields the IP network number of the
     attached network. On point-to-point networks and virtual
     links, the IP interface mask is not    defined. On these
     networks, the link itself is not assigned an IP network
     number, and    so the addresses of each side of the link are
     assigned independently, if they are    assigned at all.

    Area ID
     The    OSPF area to which the attached    network    belongs.

    Interface output cost
     The    cost of    sending    a packet on the    interface, expressed in
     the    link state metric. This is advertised as the link cost
     for    this interface in the router's router-LSA. The interface
     output cost    must always be greater than 0.

    RxmtInterval
     The    number of seconds between LSA retransmissions, for
     adjacencies    belonging to this interface. Also used    when
     retransmitting Database Description    and Link State Request
     Packets. This should be well over the expected round-trip
     delay between any two routers on the attached network. The
     setting of this value should be conservative or needless
     retransmissions will result. Sample value for a local area
     network: 5 seconds.

    InfTransDelay
     The    estimated number of seconds it takes to    transmit a Link
     State Update Packet    over this interface. LSAs contained in
     the    update packet must have    their age incremented by this
     amount before transmission.     This value should take    into
     account the    transmission and propagation delays of the



Moy             Standards Track         [Page 222]

RFC 2328         OSPF Version 2         April 1998


     interface.    It must    be greater than    0. Sample value for a
     local area network:    1 second.

    Router Priority
     An 8-bit unsigned integer.    When two routers attached to a
     network both attempt to become Designated Router, the one
     with the highest Router Priority takes precedence.    If there
     is still a tie, the    router with the    highest    Router ID takes
     precedence.     A router whose    Router Priority    is set to 0 is
     ineligible to become Designated Router on the attached
     network. Router Priority is only configured for interfaces
     to broadcast and NBMA networks.

    HelloInterval
     The    length of time,    in seconds, between the    Hello Packets
     that the router sends on the interface. This value    is
     advertised in the router's Hello Packets. It must be the
     same for all routers attached to a common network.    The
     smaller the    HelloInterval, the faster topological changes
     will be detected; however, more OSPF routing protocol
     traffic will ensue.     Sample    value for a X.25 PDN network: 30
     seconds. Sample value for a local area network: 10    seconds.

    RouterDeadInterval
     After ceasing to hear a router's Hello Packets, the    number
     of seconds before its neighbors declare the    router down.
     This is also advertised in the router's Hello Packets in
     their RouterDeadInterval field. This should be some
     multiple of    the HelloInterval (say 4). This value again
     must be the    same for all routers attached to a common
     network.

    AuType
     Identifies the authentication procedure to be used on the
     attached network. This value must be the same for all
     routers attached to    the network. See Appendix D for a
     discussion of the defined authentication types.

    Authentication key
     This configured data allows    the authentication procedure to
     verify OSPF    protocol packets received over the interface.
     For    example, if the    AuType indicates simple    password, the



Moy             Standards Track         [Page 223]

RFC 2328         OSPF Version 2         April 1998


     Authentication key would be    a clear    64-bit password.
     Authentication keys    associated with    the other OSPF
     authentication types are discussed in Appendix D.

C.4    Virtual    link parameters

    Virtual    links are used to restore/increase connectivity    of the
    backbone. Virtual links may be    configured between any pair of
    area border routers having interfaces to a common (non-backbone)
    area. The virtual link    appears    as an unnumbered point-to-point
    link in    the graph for the backbone. The virtual link must be
    configured in both of the area border routers.

    A virtual link appears in router-LSAs (for the backbone) as if
    it were    a separate router interface to the backbone. As such,
    it has all of the parameters associated    with a router interface
    (see Section C.3). Although a virtual link acts like an
    unnumbered point-to-point link,    it does    have an    associated IP
    interface address. This address is used as the    IP source in
    OSPF protocol packets it sends along the virtual link, and is
    set dynamically    during the routing table build process.
    Interface output cost is also set dynamically on virtual links
    to be the cost of the intra-area path between the two routers.
    The parameter RxmtInterval must    be configured, and should be
    well over the expected round-trip delay    between    the two    routers.
    This may be hard to estimate for a virtual link; it is better to
    err on the side    of making it too large.     Router    Priority is not
    used on    virtual    links.

    A virtual link is defined by the following two configurable
    parameters: the    Router ID of the virtual link's    other endpoint,
    and the    (non-backbone) area through which the virtual link runs
    (referred to as    the virtual link's Transit area). Virtual links
    cannot be configured through stub areas.

C.5    NBMA network parameters

    OSPF treats an NBMA network much like it treats    a broadcast
    network. Since    there may be many routers attached to the
    network, a Designated Router is    selected for the network. This
    Designated Router then originates a network-LSA, which lists all
    routers    attached to the    NBMA network.



Moy             Standards Track         [Page 224]

RFC 2328         OSPF Version 2         April 1998


    However, due to    the lack of broadcast capabilities, it may be
    necessary to use configuration parameters in the Designated
    Router selection. These parameters will only need to be
    configured in those routers that are themselves    eligible to
    become Designated Router (i.e.,    those router's whose Router
    Priority for the network is non-zero), and then    only if    no
    automatic procedure for    discovering neighbors exists:


    List of    all other attached routers
     The    list of    all other routers attached to the NBMA network.
     Each router    is listed by its IP interface address on the
     network. Also, for    each router listed, that router's
     eligibility    to become Designated Router must be defined.
     When an interface to a NBMA    network    comes up, the router
     sends Hello    Packets    only to    those neighbors    eligible to
     become Designated Router, until the    identity of the
     Designated Router is discovered.

    PollInterval
     If a neighboring router has    become inactive    (Hello Packets
     have not been seen for RouterDeadInterval seconds),    it may
     still be necessary to send Hello Packets to    the dead
     neighbor. These Hello Packets will    be sent    at the reduced
     rate PollInterval, which should be much larger than
     HelloInterval. Sample value for a PDN X.25    network: 2
     minutes.

C.6    Point-to-MultiPoint network parameters

    On Point-to-MultiPoint networks, it may    be necessary to
    configure the set of neighbors that are    directly reachable over
    the Point-to-MultiPoint    network. Each neighbor is identified by
    its IP address on the Point-to-MultiPoint network. Designated
    Routers    are not    elected    on Point-to-MultiPoint networks, so the
    Designated Router eligibility of configured neighbors is
    undefined.

    Alternatively, neighbors on Point-to-MultiPoint    networks may be
    dynamically discovered by lower-level protocols    such as    Inverse
    ARP ([Ref14]).




Moy             Standards Track         [Page 225]

RFC 2328         OSPF Version 2         April 1998


C.7    Host route parameters

    Host routes are    advertised in router-LSAs as stub networks with
    mask 0xffffffff. They indicate    either router interfaces to
    point-to-point networks, looped    router interfaces, or IP hosts
    that are directly connected to the router (e.g., via a SLIP
    line).    For each host directly connected to the    router,    the
    following items    must be    configured:


    Host IP    address
     The    IP address of the host.

    Cost of    link to    host
     The    cost of    sending    a packet to the    host, in terms of the
     link state metric.    However, since the host    probably has
     only a single connection to    the internet, the actual
     configured cost in many cases is unimportant (i.e.,    will
     have no effect on routing).

    Area ID
     The    OSPF area to which the host belongs.























Moy             Standards Track         [Page 226]

RFC 2328         OSPF Version 2         April 1998


D. Authentication

All    OSPF protocol exchanges    are authenticated. The    OSPF packet
header (see    Section    A.3.1) includes    an authentication type field,
and    64-bits    of data    for use    by the appropriate authentication scheme
(determined    by the type field).

The    authentication type is configurable on a per-interface (or
equivalently, on a per-network/subnet) basis. Additional
authentication data    is also    configurable on    a per-interface    basis.

Authentication types 0, 1 and 2 are    defined    by this    specification.
All    other authentication types are reserved    for definition by the
IANA (iana@ISI.EDU). The current list of authentication types is
described below in Table 20.



         AuType Description
         ___________________________________________
         0     Null authentication
         1     Simple password
         2     Cryptographic authentication
         All others Reserved    for assignment by the
             IANA (iana@ISI.EDU)


         Table 20:    OSPF authentication types.



D.1    Null authentication

    Use of this authentication type    means that routing exchanges
    over the network/subnet    are not    authenticated.    The 64-bit
    authentication field in    the OSPF header    can contain anything; it
    is not examined    on packet reception. When employing Null
    authentication,    the entire contents of each OSPF packet    (other
    than the 64-bit    authentication field) are checksummed in order
    to detect data corruption.





Moy             Standards Track         [Page 227]

RFC 2328         OSPF Version 2         April 1998


D.2    Simple password    authentication

    Using this authentication type,    a 64-bit field is configured on
    a per-network basis. All packets sent on a particular network
    must have this configured value    in their OSPF header 64-bit
    authentication field. This essentially    serves as a "clear" 64-
    bit password. In addition, the entire contents of each OSPF
    packet (other than the 64-bit authentication field) are
    checksummed in order to    detect data corruption.

    Simple password    authentication guards against routers
    inadvertently joining the routing domain; each router must first
    be configured with its attached    networks' passwords before it
    can participate    in routing. However, simple password
    authentication is vulnerable to    passive    attacks    currently
    widespread in the Internet (see    [Ref16]). Anyone with physical
    access to the network can learn    the password and compromise the
    security of the    OSPF routing domain.

D.3    Cryptographic authentication

    Using this authentication type,    a shared secret    key is
    configured in all routers attached to a    common network/subnet.
    For each OSPF protocol packet, the key is used to
    generate/verify    a "message digest" that    is appended to the end
    of the OSPF packet. The    message    digest is a one-way function of
    the OSPF protocol packet and the secret    key. Since the secret
    key is never sent over the network in the clear, protection is
    provided against passive attacks.

    The algorithms used to generate    and verify the message digest
    are specified implicitly by the    secret key. This specification
    completely defines the use of OSPF Cryptographic authentication
    when the MD5 algorithm is used.

    In addition, a non-decreasing sequence number is included in
    each OSPF protocol packet to protect against replay attacks.
    This provides long term    protection; however, it    is still
    possible to replay an OSPF packet until    the sequence number
    changes. To implement this feature, each neighbor data structure
    contains a new field called the    "cryptographic sequence    number".
    This field is initialized to zero, and is also set to zero



Moy             Standards Track         [Page 228]

RFC 2328         OSPF Version 2         April 1998




    0         1            2         3
    0 1 2 3    4 5 6 7    8 9 0 1    2 3 4 5    6 7 8 9    0 1 2 3    4 5 6 7    8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     0         | Key    ID | Auth Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Cryptographic sequence    number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

         Figure 18: Usage of the Authentication field
         in the OSPF packet header when Cryptographic
             Authentication is employed

    whenever the neighbor's    state transitions to "Down". Whenever an
    OSPF packet is accepted    as authentic, the cryptographic    sequence
    number is set to the received packet's sequence    number.

    This specification does    not provide a rollover procedure for the
    cryptographic sequence number. When the    cryptographic sequence
    number that the    router is sending hits the maximum value, the
    router should reset the    cryptographic sequence number that it is
    sending    back to    0. After this is done, the router's neighbors
    will reject the    router's OSPF packets for a period of
    RouterDeadInterval, and    then the router    will be    forced to
    reestablish all    adjacencies over the interface.    However, it is
    expected that many implementations will    use "seconds since
    reboot"    (or "seconds since 1960", etc.)    as the cryptographic
    sequence number. Such a    choice will essentially    prevent
    rollover, since    the cryptographic sequence number field    is 32
    bits in    length.

    The OSPF Cryptographic authentication option does not provide
    confidentiality.

    When cryptographic authentication is used, the 64-bit
    Authentication field in    the standard OSPF packet header    is
    redefined as shown in Figure 18. The new field definitions are
    as follows:






Moy             Standards Track         [Page 229]

RFC 2328         OSPF Version 2         April 1998


    Key ID
     This field identifies the algorithm    and secret key used to
     create the message digest appended to the OSPF packet. Key
     Identifiers    are unique per-interface (or equivalently, per-
     subnet).

    Auth Data Len
     The    length in bytes    of the message digest appended to the
     OSPF packet.

    Cryptographic sequence number
     An unsigned    32-bit non-decreasing sequence number. Used to
     guard against replay attacks.

    The message digest appended to the OSPF    packet is not actually
    considered part    of the OSPF protocol packet: the message digest
    is not included    in the OSPF header's packet length, although it
    is included in the packet's IP header length field.

    Each key is identified by the combination of interface and Key
    ID. An interface may have multiple keys    active at any one time.
    This enables smooth transition from one    key to another.    Each key
    has four time constants    associated with    it. These time constants
    can be expressed in terms of a time-of-day clock, or in    terms of
    a router's local clock (e.g., number of    seconds    since last
    reboot):

    KeyStartAccept
     The    time that the router will start    accepting packets that
     have been created with the given key.

    KeyStartGenerate
     The    time that the router will start    using the key for packet
     generation.

    KeyStopGenerate
     The    time that the router will stop using the key for packet
     generation.

    KeyStopAccept
     The    time that the router will stop accepting packets that
     have been created with the given key.



Moy             Standards Track         [Page 230]

RFC 2328         OSPF Version 2         April 1998


    In order to achieve smooth key transition, KeyStartAccept should
    be less    than KeyStartGenerate and KeyStopGenerate should be less
    than KeyStopAccept. If KeyStopGenerate and KeyStopAccept are
    left unspecified, the key's lifetime is    infinite. When a new key
    replaces an old, the KeyStartGenerate time for the new key must
    be less    than or    equal to the KeyStopGenerate time of the old
    key.

    Key storage should persist across a system restart, warm or
    cold, to avoid operational issues. In the event    that the last
    key associated with an interface expires, it is    unacceptable to
    revert to an unauthenticated condition,    and not    advisable to
    disrupt    routing. Therefore, the router    should send a "last
    authentication key expiration" notification to the network
    manager    and treat the key as having an infinite    lifetime until
    the lifetime is    extended, the key is deleted by    network
    management, or a new key is configured.

D.4    Message    generation

    After building the contents of an OSPF packet, the
    authentication procedure indicated by the sending interface's
    Autype value is    called before the packet is sent. The
    authentication procedure modifies the OSPF packet as follows.

    D.4.1 Generating Null authentication

     When using Null authentication, the    packet is modified as
     follows:

     (1)    The Autype field in the    standard OSPF header is    set to
        0.

     (2)    The checksum field in the standard OSPF    header is set to
        the standard IP    checksum of the    entire contents    of the
        packet,    starting with the OSPF packet header but
        excluding the 64-bit authentication field. This
        checksum is calculated as the 16-bit one's complement of
        the one's complement sum of all    the 16-bit words in the
        packet,    excepting the authentication field. If    the





Moy             Standards Track         [Page 231]

RFC 2328         OSPF Version 2         April 1998


        packet's length    is not an integral number of 16-bit
        words, the packet is padded with a byte    of zero    before
        checksumming.

    D.4.2 Generating Simple    password authentication

     When using Simple password authentication, the packet is
     modified as    follows:

     (1)    The Autype field in the    standard OSPF header is    set to
        1.

     (2)    The checksum field in the standard OSPF    header is set to
        the standard IP    checksum of the    entire contents    of the
        packet,    starting with the OSPF packet header but
        excluding the 64-bit authentication field. This
        checksum is calculated as the 16-bit one's complement of
        the one's complement sum of all    the 16-bit words in the
        packet,    excepting the authentication field. If    the
        packet's length    is not an integral number of 16-bit
        words, the packet is padded with a byte    of zero    before
        checksumming.

     (3)    The 64-bit authentication field    in the OSPF packet
        header is set to the 64-bit password (i.e.,
        authentication key) that has been configured for the
        interface.

    D.4.3 Generating Cryptographic authentication

     When using Cryptographic authentication, there may be
     multiple keys configured for the interface.    In this    case,
     among the keys that    are valid for message generation (i.e,
     that have KeyStartGenerate <= current time <
     KeyStopGenerate) choose the    one with the most recent
     KeyStartGenerate time. Using this key, modify the packet as
     follows:

     (1)    The Autype field in the    standard OSPF header is    set to
        2.





Moy             Standards Track         [Page 232]

RFC 2328         OSPF Version 2         April 1998


     (2)    The checksum field in the standard OSPF    header is not
        calculated, but    is instead set to 0.

     (3)    The Key    ID (see    Figure 18) is set to the chosen    key's
        Key ID.

     (4)    The Auth Data Len field    is set to the length in    bytes of
        the message digest that    will be    appended to the    OSPF
        packet.    When using MD5 as the authentication algorithm,
        Auth Data Len will be 16.

     (5)    The 32-bit Cryptographic sequence number (see Figure 18)
        is set to a non-decreasing value (i.e.,    a value    at least
        as large as the    last value sent    out the    interface). The
        precise    values to use in the cryptographic sequence
        number field are implementation-specific. For example,
        it may be based    on a simple counter, or    be based on the
        system's clock.

     (6)    The message digest is then calculated and appended to
        the OSPF packet. The authentication algorithm to be
        used in    calculating the    digest is indicated by the key
        itself.     Input to the authentication algorithm consists
        of the OSPF packet and the secret key. When using MD5 as
        the authentication algorithm, the message digest
        calculation proceeds as    follows:

        (a) The    16 byte    MD5 key    is appended to the OSPF    packet.

        (b) Trailing pad and length fields are added, as
         specified in [Ref17].

        (c) The    MD5 authentication algorithm is    run over the
         concatenation of the OSPF packet, secret key, pad
         and    length fields, producing a 16 byte message
         digest (see    [Ref17]).

        (d) The    MD5 digest is written over the OSPF key    (i.e.,
         appended to    the original OSPF packet). The digest is
         not    counted    in the OSPF packet's length field, but





Moy             Standards Track         [Page 233]

RFC 2328         OSPF Version 2         April 1998


         is included    in the packet's    IP length field. Any
         trailing pad or length fields beyond the digest are
         not    counted    or transmitted.

D.5    Message    verification

    When an    OSPF packet has    been received on an interface, it must
    be authenticated. The authentication procedure is indicated by
    the setting of Autype in the standard OSPF packet header, which
    matches    the setting of Autype for the receiving    OSPF interface.

    If an OSPF protocol packet is accepted as authentic, processing
    of the packet continues    as specified in    Section    8.2. Packets
    which fail authentication are discarded.

    D.5.1 Verifying    Null authentication

     When using Null authentication, the    checksum field in the
     OSPF header    must be    verified. It must be set to the    16-bit
     one's complement of    the one's complement sum of all    the 16-
     bit    words in the packet, excepting the authentication field.
     (If    the packet's length is not an integral number of 16-bit
     words, the packet is padded    with a byte of zero before
     checksumming.)

    D.5.2 Verifying    Simple password    authentication

     When using Simple password authentication, the received OSPF
     packet is authenticated as follows:

     (1)    The checksum field in the OSPF header must be verified.
        It must    be set to the 16-bit one's complement of the
        one's complement sum of    all the    16-bit words in    the
        packet,    excepting the authentication field. (If the
        packet's length    is not an integral number of 16-bit
        words, the packet is padded with a byte    of zero    before
        checksumming.)

     (2)    The 64-bit authentication field    in the OSPF packet
        header must be equal to    the 64-bit password (i.e.,
        authentication key) that has been configured for the
        interface.



Moy             Standards Track         [Page 234]

RFC 2328         OSPF Version 2         April 1998


    D.5.3 Verifying    Cryptographic authentication

     When using Cryptographic authentication, the received OSPF
     packet is authenticated as follows:

     (1)    Locate the receiving interface's configured key    having
        Key ID equal to    that specified in the received OSPF
        packet (see Figure 18).    If the key is not found, or if
        the key    is not valid for reception (i.e., current time <
        KeyStartAccept or current time >= KeyStopAccept), the
        OSPF packet is discarded.

     (2)    If the cryptographic sequence number found in the OSPF
        header (see Figure 18) is less than the    cryptographic
        sequence number    recorded in the    sending    neighbor's data
        structure, the OSPF packet is discarded.

     (3)    Verify the appended message digest in the following
        steps:

        (a) The    received digest    is set aside.

        (b) A new digest is calculated,    as specified in    Step 6
         of Section D.4.3.

        (c) The    calculated and received    digests    are compared. If
         they do not    match, the OSPF    packet is discarded. If
         they do match, the OSPF protocol packet is accepted
         as authentic, and the "cryptographic sequence
         number" in the neighbor's data structure is    set to
         the    sequence number    found in the packet's OSPF
         header.













Moy             Standards Track         [Page 235]

RFC 2328         OSPF Version 2         April 1998


E. An algorithm    for assigning Link State IDs

The    Link State ID in AS-external-LSAs and summary-LSAs is usually
set    to the described network's IP address. However,    if necessary one
or more of the network's host bits may be set in the Link State ID.
This allows    the router to originate    separate LSAs for networks
having the same address, yet different masks. Such networks    can
occur in the presence of supernetting and subnet 0s    (see [Ref10]).

This appendix gives    one possible algorithm for setting the host bits
in Link State IDs.    The choice of such an algorithm    is a local
decision. Separate routers are free    to use different algorithms,
since the only LSAs    affected are the ones that the router itself
originates.    The only requirement on    the algorithms used is that the
network's IP address should    be used    as the Link State ID whenever
possible; this maximizes interoperability with OSPF    implementations
predating RFC 1583.

The    algorithm below    is stated for AS-external-LSAs.     This is only
for    clarity; the exact same    algorithm can be used for summary-LSAs.
Suppose that the router wishes to originate    an AS-external-LSA for a
network having address NA and mask NM1. The    following steps    are then
used to determine the LSA's    Link State ID:

(1)    Determine whether the router is    already    originating an AS-
    external-LSA with Link State ID    equal to NA (in    such an    LSA the
    router itself will be listed as    the LSA's Advertising Router).
    If not,    the Link State ID is set equal to NA and the algorithm
    terminates. Otherwise,

(2)    Obtain the network mask    from the body of the already existing
    AS-external-LSA. Call this mask    NM2. There are then two    cases:

    o NM1    is longer (i.e., more specific)    than NM2. In this case,
     set    the Link State ID in the new LSA to be the network
     [NA,NM1] with all the host bits set    (i.e., equal to    NA or'ed
     together with all the bits that are    not set    in NM1,    which is
     network [NA,NM1]'s broadcast address).

    o NM2    is longer than NM1. In this case, change the existing
     LSA    (having    Link State ID of NA) to    reference the new
     network [NA,NM1] by    incrementing the sequence number,



Moy             Standards Track         [Page 236]

RFC 2328         OSPF Version 2         April 1998


     changing the mask in the body to NM1 and inserting the cost
     of the new network.    Then originate a new LSA for the old
     network [NA,NM2], with Link    State ID equal to NA or'ed
     together with the bits that    are not    set in NM2 (i.e.,
     network [NA,NM2]'s broadcast address).

The    above algorithm    assumes    that all masks are contiguous; this
ensures that when two networks have    the same address, one mask is
more specific than the other. The algorithm    also assumes that no
network exists having an address equal to another network's
broadcast address. Given these two assumptions, the    above algorithm
always produces unique Link    State IDs. The above algorithm can also
be reworded    as follows: When originating an AS-external-LSA, try to
use    the network number as the Link State ID. If that produces a
conflict, examine the two networks in conflict. One    will be    a subset
of the other. For the less specific    network, use the network number
as the Link    State ID and for the more specific use the network's
broadcast address instead (i.e., flip all the "host" bits to 1). If
the    most specific network was originated first, this will cause you
to originate two LSAs at once.

As an example of the algorithm, consider its operation when    the
following sequence of events occurs    in a single router (Router A).


(1)    Router A wants to originate an AS-external-LSA for
    [10.0.0.0,255.255.255.0]:

    (a) A Link State ID of 10.0.0.0    is used.

(2)    Router A then wants to originate an AS-external-LSA for
    [10.0.0.0,255.255.0.0]:

    (a) The    LSA for    [10.0.0,0,255.255.255.0] is reoriginated using a
     new    Link State ID of 10.0.0.255.

    (b) A Link State ID of 10.0.0.0    is used    for
     [10.0.0.0,255.255.0.0].

(3)    Router A then wants to originate an AS-external-LSA for
    [10.0.0.0,255.0.0.0]:




Moy             Standards Track         [Page 237]

RFC 2328         OSPF Version 2         April 1998


    (a) The    LSA for    [10.0.0.0,255.255.0.0] is reoriginated using a
     new    Link State ID of 10.0.255.255.

    (b) A Link State ID of 10.0.0.0    is used    for
     [10.0.0.0,255.0.0.0].

    (c) The    network    [10.0.0.0,255.255.255.0] keeps its Link    State ID
     of 10.0.0.255.





































Moy             Standards Track         [Page 238]

RFC 2328         OSPF Version 2         April 1998


F. Multiple interfaces to the same network/subnet

There are at least two ways    to support multiple physical interfaces
to the same    IP subnet. Both    methods    will interoperate with
implementations of RFC 1583    (and of    course this memo). The two
methods are    sketched briefly below.    An assumption has been made that
each interface has been assigned a separate    IP address (otherwise,
support for    multiple interfaces is more of a link-level or ARP issue
than an OSPF issue).

Method 1:
    Run the    entire OSPF functionality over both interfaces,    sending
    and receiving hellos, flooding,    supporting separate interface
    and neighbor FSMs for each interface, etc. When    doing this all
    other routers on the subnet will treat the two interfaces as
    separate neighbors, since neighbors are    identified (on broadcast
    and NBMA networks) by their IP address.

    Method 1 has the following disadvantages:

    (1) You    increase the total number of neighbors and adjacencies.

    (2) You    lose the bidirectionality test on both interfaces, since
     bidirectionality is    based on Router    ID.

    (3) You    have to    consider both interfaces together during the
     Designated Router election,    since if you declare both to be
     DR simultaneously you can confuse the tie-breaker (which is
     Router ID).

Method 2:
    Run OSPF over only one interface (call it the primary
    interface), but    include    both the primary and secondary
    interfaces in your Router-LSA.

    Method 2 has the following disadvantages:

    (1) You    lose the bidirectionality test on the secondary
     interface.

    (2) When the primary interface fails, you need to promote the
     secondary interface    to primary status.



Moy             Standards Track         [Page 239]

RFC 2328         OSPF Version 2         April 1998


G. Differences from RFC    2178

This section documents the differences between this    memo and RFC
2178. All differences are backward-compatible. Implementations of
this memo and of RFCs 2178,    1583, and 1247 will interoperate.

G.1    Flooding modifications

    Three changes have been    made to    the flooding procedure in
    Section    13.

    The first change is to step 4 in Section 13. Now MaxAge    LSAs are
    acknowledged and then discarded    only when both a) there    is no
    database copy of the LSA and b)    none of    router's neighbors are
    in states Exchange or Loading. In all other cases, the MaxAge
    LSA is processed like any other    LSA, installing    the LSA    in the
    database and flooding it out the appropriate interfaces    when the
    LSA is more recent than    the database copy (Step    5 of Section
    13). This change also affects the contents of Table 19.

    The second change is to    step 5a    in Section 13. The MinLSArrival
    check is meant only for    LSAs received during flooding, and
    should not be performed    on those LSAs that the router itself
    originates.

    The third change is to step 8 in Section 13. Confusion between
    routers    as to which LSA    instance is more recent    can cause a
    disastrous amount of flooding in a link-state protocol (see
    [Ref26]). OSPF guards against this problem in two ways:    a) the
    LS age field is    used like a TTL    field in flooding, to eventually
    remove looping LSAs from the network (see Section 13.3), and b)
    routers    refuse to accept LSA updates more frequently than once
    every MinLSArrival seconds (see    Section    13). However, there is
    still one case in RFC 2178 where disagreements regarding which
    LSA is more recent can cause a lot of flooding traffic:
    responding to old LSAs by reflooding the database copy.     For
    this reason, Step 8 of Section 13 has been amended to only
    respond    with the database copy when that copy has not been sent
    in any Link State Update within    the last MinLSArrival seconds.






Moy             Standards Track         [Page 240]

RFC 2328         OSPF Version 2         April 1998


G.2    Changes    to external path preferences

    There is still the possibility of a routing loop in RFC    2178
    when both a) virtual links are in use and b) the same external
    route is being imported    by multiple ASBRs, each    of which is in a
    separate area. To fix this problem, Section 16.4.1 has been
    revised. To choose the correct ASBR/forwarding address,    intra-
    area paths through non-backbone    areas are always preferred.
    However, intra-area paths through the backbone area (Area 0) and
    inter-area paths are now of equal preference, and must be
    compared solely    based on cost.

    The reasoning behind this change is as follows.    When virtual
    links are in use, an intra-area    backbone path for one router can
    turn into an inter-area    path in    a router several hops closer to
    the destination. Hence,    intra-area backbone paths and inter-area
    paths must be of equal preference. We can safely compare their
    costs, preferring the path with    the smallest cost, due to the
    calculations in    Section    16.3.

    Thanks to Michael Briggs and Jeremy McCooey of the UNH
    InterOperability Lab for pointing out this problem.

G.3    Incomplete resolution of virtual next hops

    One of the functions of    the calculation    in Section 16.3    is to
    determine the actual next hop(s) for those destinations    whose
    next hop was calculated    as a virtual link in Sections 16.1 and
    16.2. After completion    of the calculation in Section 16.3, any
    paths calculated in Sections 16.1 and 16.2 that    still have
    unresolved virtual next    hops should be discarded.

G.4    Routing    table lookup

    The routing table lookup algorithm in Section 11.1 has been
    modified to reflect current practice. The "best    match" routing
    table entry is now always selected to be the one providing the
    most specific (longest)    match. Suppose for example a router is
    forwarding packets to the destination 192.9.1.1. A routing table
    entry for 192.9.1/24 will always be a better match than    the
    routing    table entry for    192.9/16, regardless of    the routing
    table entries' path-types. Note    however    that when multiple paths



Moy             Standards Track         [Page 241]

RFC 2328         OSPF Version 2         April 1998


    are available for a given routing table    entry, the calculations
    in Sections 16.1, 16.2,    and 16.4 always    yield the paths    having
    the most preferential path-type. (Intra-area paths are the most
    preferred, followed in order by    inter-area, type 1 external and
    type 2 external    paths; see Section 11).








































Moy             Standards Track         [Page 242]

RFC 2328         OSPF Version 2         April 1998


Security Considerations

All    OSPF protocol exchanges    are authenticated. OSPF    supports
multiple types of authentication; the type of authentication in use
can    be configured on a per network segment basis. One of OSPF's
authentication types, namely the Cryptographic authentication
option, is believed    to be secure against passive attacks and provide
significant    protection against active attacks. When    using the
Cryptographic authentication option, each router appends a "message
digest" to its transmitted OSPF packets. Receivers then use    the
shared secret key and received digest to verify that each received
OSPF packet    is authentic.

The    quality    of the security    provided by the    Cryptographic
authentication option depends completely on    the strength of    the
message digest algorithm (MD5 is currently the only    message    digest
algorithm specified), the strength of the key being    used, and the
correct implementation of the security mechanism in    all
communicating OSPF implementations.     It also requires that all
parties maintain the secrecy of the    shared secret key.

None of the    OSPF authentication types provide confidentiality. Nor
do they protect against traffic analysis. Key management is    also not
addressed by this memo.

For    more information, see Sections 8.1, 8.2, and Appendix D.

Author's Address

John Moy
Ascend Communications, Inc.
1 Robbins Road
Westford, MA 01886

Phone: 978-952-1367
Fax: 978-392-2075
EMail: jmoy@casc.com








Moy             Standards Track         [Page 243]

RFC 2328         OSPF Version 2         April 1998


Full Copyright Statement

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

This document and translations of it may be    copied and furnished to
others, and    derivative works that comment on or otherwise explain it
or assist in its implementation may    be prepared, copied, published
and    distributed, in    whole or in part, without restriction of any
kind, provided that    the above copyright notice and this paragraph
are    included on all    such copies and    derivative works. However, this
document itself may    not be modified    in any way, such as by removing
the    copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet    standards in which case    the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to    translate it into languages other than
English.

The    limited    permissions granted above are perpetual    and will not be
revoked by the Internet Society or its successors or assigns.

This document and the information contained    herein is provided on an
"AS    IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT    NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE    INFORMATION
HEREIN WILL    NOT INFRINGE ANY RIGHTS    OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR    PURPOSE.


















Moy             Standards Track         [Page 244]