Connected: An Internet Encyclopedia
RFC 1583 - 10.3. The Neighbor state machine

Top: Connected: An Internet Encyclopedia
Up: Requests For Comments
Up: RFC 1583
Up: 10. The Neighbor Data Structure
Prev: 10.2. Events causing neighbor state changes
Next: 10.4. Whether to become adjacent

### 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 links advertisement 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 a non-broadcast network)
                        and start the Inactivity Timer for the neighbor.
                        The timer's later firing would indicate that
                        communication with the neighbor was not attained.

             State(s):  Attempt

                Event:  HelloReceived

            New state:  Init

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

             State(s):  Down

                Event:  HelloReceived

            New state:  Init

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

             State(s):  Init or greater

                Event:  HelloReceived

            New state:  No state change.

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

             State(s):  Init

                Event:  2-WayReceived

            New state:  Depends upon action routine.

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

                        Otherwise (an adjacency should be established) the
                        neighbor state transitions to ExStart.  Upon
                        entering this state, the router increments the DD
                        sequence number for this neighbor.  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 links, network links and summary links
                        contained in the area structure, along with the AS
                        external links contained in the global structure.
                        AS external link advertisements are omitted from a
                        virtual neighbor's Database summary list.  AS
                        external advertisements are omitted from the
                        Database summary list if the area has been
                        configured as a stub (see Section 3.6).
                        Advertisements whose age is equal to MaxAge are
                        instead added to the neighbor's Link state
                        retransmission list.  A summary of the Database
                        summary list will be sent to the neighbor in
                        Database Description packets.  Each Database
                        Description Packet has a DD sequence number, and is
                        explicitly acknowledged.  Only one Database
                        Description Packet is allowed outstanding at any one
                        time.  For more detail on the sending and receiving
                        of Database Description packets, see Sections 10.8
                        and 10.6.

             State(s):  Exchange

                Event:  ExchangeDone

            New state:  Depends upon action routine.

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

                        Otherwise, the new neighbor state is Loading.  Start
                        (or continue) sending Link State Request packets to
                        the neighbor (see Section 10.9).  These are requests
                        for the neighbor's more recent advertisements (which
                        were discovered but not yet received in the Exchange
                        state).  These advertisements 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.

             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 link state advertisements.
             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 link state
                        advertisements.  Then the router increments the DD
                        sequence number for this neighbor, 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

            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 link
                        state advertisements.  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 link
                        state advertisements.  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 link
                        state advertisements.

             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 link
                        state advertisements.

             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.

Next: 10.4. Whether to become adjacent

Connected: An Internet Encyclopedia
RFC 1583 - 10.3. The Neighbor state machine