RFC 1765 EXPERIMENTAL OSPF · ROUTING · OVERFLOW

OSPF overflow: OSPF Database Overflow

How an OSPF router keeps a link-state database from growing past what it can hold.

On rfc-editor.org ↗
PUBLISHED
March 1995
AUTHORS
J. Moy
STREAM
IETF
DEFAULT OSPFEXITOVERFLOWINTERVAL
0, meaning the router stays in OverflowState until it is restarted
JITTER APPLIED TO THE EXIT INTERVAL
Plus or minus 10 percent
APPROACHING-OVERFLOW TRAP THRESHOLD
Ninety percent of ospfExtLsdbLimit
OSPFEXTLSDBLIMIT VALUE FOR NO LIMIT
-1
MAXAGE
1 hour
LIMIT IN THE WORKED EXAMPLE
10,000 non-default AS-external LSAs
DOI
10.17487/RFC1765

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                             J. Moy
Request for Comments: 1765                                       Cascade
Category: Experimental                                        March 1995


                         OSPF Database Overflow

Status of this Memo

   This memo defines an Experimental Protocol for the Internet
   community.  This memo does not specify an Internet standard of any
   kind.  Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

Abstract

   Proper operation of the OSPF protocol requires that all OSPF routers
   maintain an identical copy of the OSPF link-state database.  However,
   when the size of the link-state database becomes very large, some
   routers may be unable to keep the entire database due to resource
   shortages; we term this "database overflow". When database overflow
   is anticipated, the routers with limited resources can be
   accommodated by configuring OSPF stub areas and NSSAs. This memo
   details a way of gracefully handling unanticipated database
   overflows.

   This memo is a product of the OSPF Working Group. Please send
   comments to ospf@gated.cornell.edu.

Table of Contents

   1.       Overview ............................................... 2
   2.       Implementation details ................................. 3
   2.1      Configuration .......................................... 3
   2.2      Entering OverflowState ................................. 4
   2.3      Operation while in OverflowState ....................... 5
   2.3.1    Modifications to Flooding .............................. 5
   2.3.2    Originating AS-external-LSAs ........................... 6
   2.3.3    Receiving self-originated LSAs ......................... 6
   2.4      Leaving OverflowState .................................. 6
   3.       An example ............................................. 6
   4.       Administrative response to database overflow ........... 7
   5.       Operational experience ................................. 8
   6.       Possible enhancements .................................. 8
   A.       Related MIB parameters ................................  8
            References ............................................  9
            Security Considerations ...............................  9
            Author's Address ......................................  9

1.  Overview

   OSPF requires that all OSPF routers within a single area maintain an
   identical copy of the OSPF link-state database.  However, when the
   size of the link-state database becomes very large, some routers may
   be unable to keep the entire database due to resource shortages; we
   term this "database overflow". For example, a regional network may
   have a very large OSPF database because it is importing a large
   number of external routes into OSPF. Unless database overflow is
   handled correctly, routers will end up with inconsistent views of the
   network, possibly leading to incorrect routing.

   One way of handling database overflow is to encase routers having
   limited resources within OSPF stub areas (see Section 3.6 of [1]) or
   NSSAs ([2]).  AS-external-LSAs are omitted from these areas' link-
   state databases, thereby controlling database size.

   However, unexpected database overflows cannot be handled in the above
   manner.  This memo describes a way of dynamically limiting database
   size under overflow conditions. The basic mechanism is as follows:

    (1) A parameter, ospfExtLsdbLimit, is configured in each router
        indicating the maximum number of AS-external-LSAs (excluding
        those describing the default route) that are allowed in the
        link-state database. This parameter must be the same in all
        routers in the routing domain (see Section 2.1); synchronization
        of the parameter is achieved via network management.

    (2) In any router's database, the number of AS-external-LSAs
        (excluding default) is never allowed to exceed ospfExtLsdbLimit.
        If a router receives a non-default AS-external-LSA that would
        cause the limit of ospfExtLsdbLimit to be exceeded, it drops the
        LSA and does NOT acknowledge it.

    (3) If the number of non-default AS-external-LSAs in a router's
        database hits ospfExtLsdbLimit, the router a) flushes all non-
        default AS-external-LSAs that it has itself originated (see
        Section 2.2) and b) goes into "OverflowState".

    (4) While in OverflowState, the router refuses to originate any
        non-default AS-external-LSAs (see Section 2.3.2).

    (5) Optionally, the router can attempt to leave OverflowState after
        the configurable parameter ospfExitOverflowInterval has elapsed
        since entering OverflowState (see Section 2.4). Only at this
        point can the router resume originating non-default AS-
        external-LSAs.

   The reason for limiting non-default AS-external-LSAs, but not other
   LSA types, is twofold. First of all, the non-default AS-external LSAs
   are the most likely to dominate database size in those networks with
   huge databases (e.g., regional networks; see [5]). Second, the non-
   default AS-external-LSAs can be viewed as "optional" in the following
   sense: the router can probably be monitored/reconfigured without
   them. (However, using similar strategies, other LSA types can also be
   limited; see Section 5.)

   The method of dealing with database overflow described herein has the
   following desirable properties:

    o   After a short period of convergence, all routers will have
        identical link-state databases. This database will contain less
        than ospfExtLsdbLimit non-default AS-external-LSAs.

    o   At all times, routing WITHIN the OSPF Autonomous System will
        remain intact. Among other things, this means that the routers
        will continue to be manageable.

    o   Default routing to external destinations will also remain
        intact. This hopefully will mean that a large amount of external
        connectivity will be preserved, although possibly taking less
        efficient routes.

    o   If parameter ospfExitOverflowInterval is configured, the OSPF
        system will recover fully and automatically (i.e., without
        network management intervention) from transient database
        overflow conditions (see Section 2.4).

2.  Implementation details

   This section describes the mechanism for dealing with database
   overflow in more detail. The section is organized around the concept
   OverflowState, describing how routers enter the OverflowState, the
   operation of the router while in OverflowState, and when the router
   leaves OverflowState.

   2.1.  Configuration

      The following configuration parameters are added to support the
      database overflow functionality. These parameters are set by
      network management.

        ospfExtLsdbLimit
            When the number of non-default AS-external-LSAs in a
            router's link-state database reaches ospfExtLsdbLimit, the
            router enters OverflowState. The router never holds more
            than ospfExtLsdbLimit non-default AS-external-LSAs in its
            database.

            ospfExtLsdbLimit MUST be set identically in all routers
            attached to the OSPF backbone and/or any "regular" OSPF
            area. (This memo does not pertain to routers contained
            within OSPF stub areas nor NSSAs, since such routers do not
            receive AS-external-LSAs.) If ospfExtLsdbLimit is not set
            identically in all routers, then when the database
            overflows: 1) the routers will NOT converge on a common
            link-state database, 2) incorrect routing, possibly
            including routing loops, will result and 3) constant
            retransmission of AS-external-LSAs will occur. Identical
            setting of ospfExtLsdbLimit is achieved/ensured by network
            management.

            When ospfExtLsdbLimit is set in a router, the router must
            have some way to guarantee that it can hold that many non-
            default AS-external-LSAs in its link-state database. One way
            of doing this is to preallocate resources (e.g., memory) for
            the configured number of LSAs.

        ospfExitOverflowInterval
            The number of seconds that, after entering OverflowState, a
            router will attempt to leave OverflowState. This allows the
            router to again originate non-default AS-external-LSAs. When
            set to 0, the router will not leave OverflowState until
            restarted. The default setting for ospfExitOverflowInterval
            is 0.

            It is not necessary for ospfExitOverflowInterval to be
            configured the same in all routers. A smaller value may be
            configured in those routers that originate the "more
            important" AS-external-LSAs. In fact, setting
            ospfExitOverflowInterval the same may cause problems, as
            multiple routers attempt to leave OverflowState
            simultaneously. For this reason, the value of
            ospfExitOverflowInterval must be "jittered" by randomly
            varying its value within the range of plus or minus 10
            percent before using.

   2.2.  Entering OverflowState

      The router enters OverflowState when the number of non-default
      AS-external-LSAs in the database hits ospfExtLsdbLimit. There are
      two cases when this can occur. First, when receiving an LSA during
      flooding. In this case, an LSA which does not already have a
      database instance is added in Step 5 of Section 13 of [1].  The
      second case is when the router originates a non-default AS-
      external-LSA itself.

      Whenever the router enters OverflowState it flushes all non-
      default AS-external-LSAs that it itself had originated. Flushing
      is accomplished through the premature aging scheme described in
      Section 14.1 of [1].  Only self-originated LSAs are flushed; those
      originated by other routers are kept in the link-state database.

   2.3.  Operation while in OverflowState

      While in OverflowState, the flooding and origination of non-
      default AS-external-LSAs are modified in the following fashion.

      2.3.1.  Modifications to Flooding

         Flooding while in OverflowState is modified as follows. If in
         Step 5 of Section 13 of [1], a non-default AS-external-LSA has
         been received that a) has no current database instance and b)
         would cause the count of non-default AS-external-LSAs to exceed
         ospfExtLsdbLimit, then that LSA is discarded. Such an LSA is
         not installed in the link-state database, nor is it
         acknowledged.

         When all routers have identical values for ospfExtLsdbLimit (as
         required), the above flooding modification will only be invoked
         during a short period of convergence. During convergence, there
         will be retransmissions of LSAs. However, after convergence the
         retransmissions will cease, as the routers settle on a database
         having less than ospfExtLsdbLimit non-default As-external-LSAs.

         In OverflowState, non-default AS-external-LSAs ARE still
         accepted in the following conditions:

            (1) If the LSA updates an LSA that currently exists in the
                router's link-state database.

            (2) LSAs having LS age of MaxAge are always accepted. The
                processing of these LSAs follows the procedures
                described in Sections 13 and 14 of [1].

            (3) If adding the LSA to the router's database would keep
                the number of non-default AS-external-LSAs less than or
                equal to ospfExtLsdbLimit, the LSA is accepted.

      2.3.2.  Originating AS-external-LSAs

         Originating AS-external-LSAs is described in Section 12.4.5 of
         [1].  When a router is in OverflowState, it does not originate
         non-default AS-external-LSAs. In other words, the only AS-
         external-LSAs originated by a router in OverflowState have Link
         State ID 0.0.0.0.

      2.3.3.  Receiving self-originated LSAs

         Receiving self-originated LSAs is described in Section 13.4 of
         [1].  When in OverflowState, a router receiving a self-
         originated non-default AS-external-LSA responds by flushing it
         from the routing domain using the premature aging scheme
         described in Section 14.1 of [1].

   2.4.  Leaving OverflowState

      If ospfExitOverflowInterval is non-zero, then as soon as a router
      enters OverflowState, it sets a timer equal to the value of
      ospfExitOverflowInterval (plus or minus a random value in the
      range of 10 percent). When this timer fires, the router leaves
      OverflowState and begins originating non-default AS-external-LSAs
      again.

      This allows a router to automatically recover from transient
      overflow conditions. For example, an AS boundary router that
      imports a great many AS-external-LSAs may crash. Other routers may
      then start importing the routes, but until the crashed AS boundary
      router is either a) restarted or b) its AS-external-LSAs age out,
      there will be a much larger database than usual.  Since such an
      overflow is guaranteed to go away in MaxAge seconds (1 hour),
      automatic recovery may be appropriate (and fast enough) if the
      overflow happens off-hours.

      As soon as the router leaves OverflowState, it is again eligible
      to reenter OverflowState according to the text of Section 2.2.

3.  An example

   As an example, suppose that a router implements the database overflow
   logic, and that its ospfExtLsdbLimit is 10,000 and its
   ospfExitOverflowInterval is set to 600 seconds. Suppose further that
   the router itself is originating 400 non-default AS-external-LSAs,
   and that the current number of non-default AS-external-LSAs in the
   router's database is equal to 9,997.

   Next, it receives a Link State Update packet from a neighbor,
   containing 6 non-default AS-external-LSAs, none of which have current
   database copies.  The first two LSAs are then installed in the
   database. The third LSA is also installed in the database, but causes
   the router to go into OverflowState.  Going into OverflowState causes
   the router to flush (via premature aging) its 400 self-originated
   non-default LSAs. However, these 400 LSAs are still considered to be
   part of the link-state database until their re-flooding (with age set
   to MaxAge) is acknowledged (see Section 14 of [1]); for this reason,
   the last three LSAs in the received update are discarded without
   being acknowledged.

   After some small period of time all routers will converge on a common
   database, having less than 10,000 non-default AS-external-LSAs.
   During this convergence period there may be some link-state
   retransmissions; for example, the sender of the above Link State
   Update packet may retransmit the three LSAs that were discarded. If
   this retransmission happens after the flushing of the 400 self-
   originated LSAs is acknowledged, the 3 LSAs will then be accepted.

   Going into OverflowState also causes the router to set a timer that
   will fire some time between 540 and 660 seconds later. When this
   timer fires, the router will leave OverflowState and re-originate its
   400 non-default AS-external-LSAs, provided that the current database
   has less than 9600 (10,000 - 400) non-default AS-external-LSAs. If
   there are more than 9600, the timer is simply restarted.

4.  Administrative response to database overflow

   Once the link-state database has overflowed, it may take intervention
   by network management before all routing is restored.  (If the
   overflow condition is transient, routing may be restored
   automatically; see Section 2.4 for details.) An overflow condition is
   indicated by SNMP traps (see Appendix B). Possible responses by a
   network manager may include:

    o   Increasing the value of ospfExtLsdbLimit. Perhaps it had been
        set too conservatively, and the routers are able to support
        larger databases than they are currently configured for.

    o   Isolating routers having limited resources within OSPF stub
        areas or NSSAs.  This would allow increasing the value of
        ospfExtLsdbLimit in the remaining routers.

    o   Reevaluating the need to import certain external routes. If
        ospfExtLsdbLimit cannot be increased, the network manager will
        want to make sure that the more important routes continue to be
        imported; this is accomplished by turning off the importing of
        less important routes.

5.  Operational experience

   The database overflow scheme described in this memo has been
   implemented in the Proteon router for a number of years, with the
   following differences. First, the router did not leave OverflowState
   until it was restarted (i.e., ospfExitOverflowInterval was always 0).
   Second, default AS-external-LSAs were not separated from non-default
   AS-external-LSAs. Operationally the scheme performed as expected:
   during overflow conditions, the routers converged on a common
   database having less than a configured number of AS-external-LSAs.

6.  Possible enhancements

   Possible enhancements to the overflow scheme include the following:

    o   Other LSA types, with the exception of the transit LSAs
        (router-LSAs and network-LSAs), could be limited in a similar
        fashion. For example, one could limit the number of summary-
        LSAs, or group-membership-LSAs (see [6]).

    o   Rather than flushing all of its non-default AS-external-LSAs
        when entering OverflowState, a router could flush a fixed number
        whenever the database size hits ospfExtLsdbLimit. This would
        allow the router to prioritize its AS-external-LSAs, flushing
        the least important ones first.

A. Related MIB parameters

   The following OSPF MIB variables have been defined to support the
   database overflow procedure described in this memo (see [4] for more
   information):

    ospfExtLsdbLimit
        As in Section 2.1 of this memo, the maximum number of non-
        default AS-external-LSAs that can be stored within the database.
        If set to -1, there is no limit.

    ospfExitOverflowInterval
        As in Section 2.1 of this memo, the number of seconds that,
        after entering OverflowState, a router will attempt to leave
        OverflowState. This allows the router to again originate non-
        default AS-external-LSAs.  When set to 0, the router will not
        leave OverflowState until restarted.

    ospfLsdbOverflow
        A trap indicating that the number of non-default AS-external-
        LSAs has exceeded or equaled ospfExtLsdbLimit. In other words,
        this trap indicates that the router is entering OverflowState.

    ospfLsdbApproachingOverflow
        A trap indicating that the number of non-default AS-external-
        LSAs has exceeded ninety percent of "ospfExtLsdbLimit".

References

   [1] Moy, J., "OSPF Version 2", RFC 1583, Proteon, Inc., March 1994.

   [2] Coltun, R., and V. Fuller, "The OSPF NSSA Option", RFC 1587,
       RainbowBridge Communications, Stanford University, March 1994.

   [3] Moy, J., Editor, "OSPF Protocol Analysis", RFC 1245, Proteon,
       Inc., July 1991.

   [4] Baker F., and R. Coltun, "OSPF Version 2 Management Information
       Base", Work in Progress.

   [5] Moy, J., Editor, "Experience with the OSPF Protocol", RFC 1246,
       Proteon, Inc., July 1991.

   [6] Moy, J., "Multicast Extensions to OSPF", RFC 1584, Proteon, Inc.,
       March 1994.

Security Considerations

   Security issues are not discussed in this memo.

Author's Address

   John Moy
   Cascade Communications Corp.
   5 Carlisle Road
   Westford, MA 01886

   Phone: 508-692-2600 Ext. 394
   Fax:   508-692-9214
   EMail: jmoy@casc.com

ISO Plain Language

On this page
PROBLEMOSPF requires every router in an area to hold an identical copy of the link-state database, and in a large network that database can grow larger than a router's memory.
MECHANISMEvery router is given a limit on the number of external route advertisements it will hold. When a router reaches that limit it drops what it has received, flushes the external routes it published itself, and stops publishing any more until the database shrinks.
WHAT IT PROTECTSAll the routers converge on the same smaller database, so routing inside the network stays correct while the overflow lasts. The document is Experimental and has not been obsoleted.

§1The Problem and the Overflow Mechanism

OSPF requires that all OSPF routers within a single area maintain an identical copy of the OSPF link-state database. However, when the size of the link-state database becomes very large, some routers may be unable to keep the entire database due to resource shortages, and this is called database overflow. A regional network, for example, may have a very large OSPF database because it is importing a large number of external routes into OSPF. Unless database overflow is handled correctly, routers end up with inconsistent views of the network, possibly leading to incorrect routing.

One way of handling database overflow is to encase routers having limited resources within OSPF stub areas or NSSAs. AS-external-LSAs are omitted from these areas' link-state databases, thereby controlling database size. However, unexpected database overflows cannot be handled in that manner, and this memo describes a way of dynamically limiting database size under overflow conditions.

The basic mechanism has five steps. A parameter, ospfExtLsdbLimit, is configured in each router indicating the maximum number of AS-external-LSAs, excluding those describing the default route, that are allowed in the link-state database; this parameter must be the same in all routers in the routing domain, and synchronization is achieved via network management. In any router's database, the number of AS-external-LSAs, excluding default, is never allowed to exceed ospfExtLsdbLimit: if a router receives a non-default AS-external-LSA that would cause the limit to be exceeded, it drops the LSA and does not acknowledge it. If the number of non-default AS-external-LSAs in a router's database hits ospfExtLsdbLimit, the router flushes all the non-default AS-external-LSAs that it has itself originated and goes into OverflowState. While in OverflowState the router refuses to originate any non-default AS-external-LSAs. Optionally, the router can attempt to leave OverflowState after the configurable parameter ospfExitOverflowInterval has elapsed since entering OverflowState, and only at that point can it resume originating non-default AS-external-LSAs.

The reason for limiting non-default AS-external-LSAs but not other LSA types is twofold. The non-default AS-external LSAs are the most likely to dominate database size in networks with huge databases, and they can be viewed as optional in the sense that the router can probably be monitored or reconfigured without them.

The method has four desirable properties. After a short period of convergence, all routers have identical link-state databases, containing fewer than ospfExtLsdbLimit non-default AS-external-LSAs. Routing within the OSPF Autonomous System remains intact at all times, so the routers stay manageable. Default routing to external destinations also remains intact, which hopefully means a large amount of external connectivity is preserved, although possibly taking less efficient routes. And if ospfExitOverflowInterval is configured, the OSPF system recovers fully and automatically, without network management intervention, from transient database overflow conditions.

The rule is simple: every router holds at most a set number of external routes. When one reaches that number it withdraws its own external routes and stops publishing more, so that every router ends up with the same smaller set.

The five steps of the overflow mechanism (RFC 1765, Section 1)
  • Set a limitospfExtLsdbLimit is configured on every router, giving the maximum number of non-default AS-external LSAs the database may hold.
  • Never exceed the limitA received non-default AS-external-LSA that would push the count over the limit is dropped and not acknowledged.
  • Enter OverflowStateWhen the count reaches the limit, the router flushes its own non-default AS-external LSAs and enters OverflowState.
  • Stop originatingWhile in OverflowState the router refuses to originate any non-default AS-external LSA.
  • RecoverIf ospfExitOverflowInterval is set, the router tries to leave OverflowState after that many seconds and can then originate again.

§2.1The Configuration Parameters

Two configuration parameters are added to support the database overflow functionality, and they are set by network management.

ospfExtLsdbLimit gives the number of non-default AS-external-LSAs at which a router enters OverflowState. The router never holds more than ospfExtLsdbLimit non-default AS-external-LSAs in its database. The value MUST be set identically in all routers attached to the OSPF backbone and in any regular OSPF area. The memo does not pertain to routers inside OSPF stub areas or NSSAs, since such routers do not receive AS-external-LSAs. If the limit is not set identically in all routers, then when the database overflows the routers will not converge on a common link-state database, incorrect routing, possibly including routing loops, will result, and constant retransmission of AS-external-LSAs will occur. Identical setting is achieved and ensured by network management. When the limit is set, the router must have some way to guarantee that it can hold that many non-default AS-external-LSAs in its link-state database; one way of doing this is to preallocate resources such as memory for the configured number of LSAs.

ospfExitOverflowInterval is the number of seconds that, after entering OverflowState, a router will attempt to leave OverflowState, which allows it to originate non-default AS-external-LSAs again. When set to 0 the router will not leave OverflowState until it is restarted, and the default setting is 0. It is not necessary for this parameter to be configured the same in all routers: a smaller value may be set in those routers that originate the more important AS-external-LSAs. In fact, setting it the same may cause problems, as multiple routers would attempt to leave OverflowState simultaneously, so the value must be jittered by randomly varying it within plus or minus 10 percent before use.

Two numbers control the behaviour: how many external routes a router will hold, and how long it stays in the restricted state before trying again. The first has to be the same everywhere; the second is deliberately made slightly different on each router so they do not all recover at once.

The parameters and traps used by the scheme (RFC 1765, Section 2.1 and Appendix A)
NameWhat it does
ospfExtLsdbLimitMaximum number of non-default AS-external LSAs in the link-state database. Must be identical in every router on the backbone and in any regular area. A value of -1 means no limit.
ospfExitOverflowIntervalSeconds a router waits before trying to leave OverflowState. The value is jittered by plus or minus 10 percent, and 0 means the router stays in OverflowState until it is restarted.
ospfLsdbOverflowA trap signalling that the number of non-default AS-external LSAs has reached or exceeded the limit.
ospfLsdbApproachingOverflowA trap signalling that the number has exceeded ninety percent of the limit.

§2.2Entering, Operating In and Leaving OverflowState

A router enters OverflowState when the number of non-default AS-external-LSAs in the database hits ospfExtLsdbLimit. There are two cases when this can occur: when receiving an LSA during flooding, where an LSA which does not already have a database instance is added, and when the router originates a non-default AS-external-LSA itself. Whenever the router enters OverflowState it flushes all the non-default AS-external-LSAs that it itself had originated, through the premature aging scheme described in the OSPF specification. Only self-originated LSAs are flushed; those originated by other routers are kept in the link-state database.

While in OverflowState, flooding is modified. If a non-default AS-external-LSA has been received that has no current database instance and would cause the count of non-default AS-external-LSAs to exceed ospfExtLsdbLimit, then that LSA is discarded: it is not installed in the link-state database, nor is it acknowledged. When all routers have identical values for ospfExtLsdbLimit, as required, this modification is only invoked during a short period of convergence. During convergence there will be retransmissions of LSAs, but after convergence the retransmissions cease, as the routers settle on a database having fewer than ospfExtLsdbLimit non-default AS-external-LSAs.

Non-default AS-external-LSAs are still accepted in OverflowState in three situations: if the LSA updates an LSA that currently exists in the router's link-state database; if the LSA has an LS age of MaxAge, which is always accepted and processed by the normal procedures; and if adding the LSA to the database would keep the number of non-default AS-external-LSAs less than or equal to ospfExtLsdbLimit.

While in OverflowState a router does not originate non-default AS-external-LSAs, so the only AS-external-LSAs it originates have Link State ID 0.0.0.0, which is the default route. If a router in OverflowState receives a self-originated non-default AS-external-LSA, it responds by flushing it from the routing domain using the premature aging scheme.

If ospfExitOverflowInterval is non-zero, then as soon as a router enters OverflowState it sets a timer equal to the value of ospfExitOverflowInterval, plus or minus a random value in the range of 10 percent. When this timer fires, the router leaves OverflowState and begins originating non-default AS-external-LSAs again. This allows a router to recover automatically from transient overflow conditions. For example, an AS boundary router that imports a great many AS-external-LSAs may crash; other routers may then start importing the routes, but until the crashed router is restarted or its LSAs age out there will be a much larger database than usual. Since such an overflow is guaranteed to go away in MaxAge seconds, which is one hour, automatic recovery may be appropriate if the overflow happens off-hours. As soon as the router leaves OverflowState it is again eligible to re-enter it.

On entering the restricted state the router withdraws only the external routes it published itself, and it drops new external routes rather than acknowledging them. When the timer fires it starts publishing again, unless the database is still too full.

§3A Worked Example

Suppose a router implements the database overflow logic, with an ospfExtLsdbLimit of 10,000 and an ospfExitOverflowInterval of 600 seconds. Suppose further that the router itself is originating 400 non-default AS-external-LSAs, and that the current number of non-default AS-external-LSAs in its database is 9,997.

It receives a Link State Update packet from a neighbour containing 6 non-default AS-external-LSAs, none of which have current database copies. The first two LSAs are installed in the database. The third LSA is also installed, but causes the router to go into OverflowState. Going into OverflowState causes the router to flush, through premature aging, its 400 self-originated non-default LSAs. Those 400 LSAs are still considered to be part of the link-state database until their re-flooding, with age set to MaxAge, is acknowledged, so for that reason the last three LSAs in the received update are discarded without being acknowledged.

After some small period of time all routers converge on a common database, having fewer than 10,000 non-default AS-external-LSAs. During this convergence period there may be some link-state retransmissions: for example, the sender of the Link State Update packet may retransmit the three LSAs that were discarded. If this retransmission happens after the flushing of the 400 self-originated LSAs is acknowledged, the three LSAs will then be accepted.

Going into OverflowState also causes the router to set a timer that will fire some time between 540 and 660 seconds later. When this timer fires, the router leaves OverflowState and re-originates its 400 non-default AS-external-LSAs, provided the current database has fewer than 9600, which is 10,000 minus 400, non-default AS-external-LSAs. If there are more than 9600, the timer is simply restarted.

The example follows one router as it fills up, throws away its own routes, waits, and then puts them back once there is room again.

The worked example in RFC 1765 Section 3
Neighbour routerRouter with the limit
  1. Link State Update with 6 LSAsThe database holds 9,997 of them and the limit is 10,000.
  2. Acknowledgement for the three installed LSAsThe other three are discarded without being acknowledged, and the router flushes its own 400 LSAs.
  3. Retransmission of the three discarded LSAsThey are accepted once the flush of the router's own 400 LSAs has been acknowledged.
  4. Re-origination of its 400 LSAsAfter the exit timer fires, if the database holds fewer than 9600 LSAs.

§4The Network Manager's Response

Once the link-state database has overflowed, it may take intervention by network management before all routing is restored, although if the overflow condition is transient routing may be restored automatically. An overflow condition is indicated by SNMP traps. Possible responses by a network manager include increasing the value of ospfExtLsdbLimit, perhaps because it had been set too conservatively and the routers are able to support larger databases than they are currently configured for; isolating routers having limited resources within OSPF stub areas or NSSAs, which would allow the value of ospfExtLsdbLimit to be increased in the remaining routers; and re-evaluating the need to import certain external routes, so that if the limit cannot be increased the more important routes continue to be imported, by turning off the importing of less important routes.

Four related OSPF MIB variables have been defined to support the procedure. ospfExtLsdbLimit is the maximum number of non-default AS-external-LSAs that can be stored within the database, and if set to -1 there is no limit. ospfExitOverflowInterval is the number of seconds that, after entering OverflowState, a router will attempt to leave it, and when set to 0 the router will not leave until it is restarted. ospfLsdbOverflow is a trap indicating that the number of non-default AS-external-LSAs has exceeded or equalled ospfExtLsdbLimit, in other words that the router is entering OverflowState. ospfLsdbApproachingOverflow is a trap indicating that the number of non-default AS-external-LSAs has exceeded ninety percent of ospfExtLsdbLimit.

The manager is told about the overflow by a trap, and has three levers: raise the limit, put the smallest routers behind a stub area, or stop importing the least important external routes.

§6Operational Experience, Enhancements and Security

The scheme has been implemented in the Proteon router for a number of years, with two differences. The router did not leave OverflowState until it was restarted, so ospfExitOverflowInterval was always 0. And default AS-external-LSAs were not separated from non-default AS-external-LSAs. Operationally the scheme performed as expected: during overflow conditions, the routers converged on a common database having fewer than a configured number of AS-external-LSAs.

Possible enhancements to the overflow scheme include limiting other LSA types in a similar fashion, with the exception of the transit LSAs, the router-LSAs and network-LSAs; one could limit the number of summary-LSAs or group-membership-LSAs. And rather than flushing all of its non-default AS-external-LSAs when entering OverflowState, a router could flush a fixed number each time the database size hits the limit, which would let it prioritise its external LSAs and flush the least important ones first.

The Security Considerations section of RFC 1765 says only that security issues are not discussed in this memo.

The mechanism had been running in a router for years before the RFC was written, and worked as described. The RFC also suggests ways to extend it to other kinds of route.

§7References