8. BGP Finite State Machine (FSM)
- BGP Finite State Machine (FSM)
The data structures and FSM described in this document are conceptual and do not have to be implemented precisely as described here, as long as the implementations support the described functionality and they exhibit the same strictly externally visible behavior.
This section specifies the BGP interaction with the TCP transport. BGP Listeners SHOULD depend on the TCP state machine to process incoming TCP connection requests and SHOULD NOT process the TCP UDP pseudo-header checksum or the TCP sequence numbers. Specific BGP implementations (such as one with the "PassiveTcpEstablishment" option) MAY interact with the TCP state machine to determine the validity or identity of a connection; this interaction is outside the scope of this document.
The FSM events and actions are described for a BGP implementation that supports all of the capabilities (options) described in the following section. The logic for the mandatory BGP functions is not changed by the inclusion of the optional functions. The Mandatory BGP functions are supported in this FSM if the specific options are not "set" or enabled.
For example, the FSM describes a DelayOpenTimer, which is part of the optional "Graceful" connection start (DelayOpen). If this option is not "set" or supported, the timer is not set, and the events associated with this timer will not occur. The logic for the logic path with the option "not set" is the standard BGP connection logic.
The following Section (8.2.1.3) describes how the FSM transitions are enabled based on the optional session attributes.
The Optional Session attributes are listed below. These optional attributes may be supported, either per connection or per local system:
1) AcceptConnectionsUnconfiguredPeers
2) AllowAutomaticStart
3) AllowAutomaticStop
4) CollisionDetectEstablishedState
5) DampPeerOscillations
6) DelayOpen
7) DelayOpenTime
8) DelayOpenTimer
9) IdleHoldTime
10) IdleHoldTimer
11) PassiveTcpEstablishment
12) SendNOTIFICATIONwithoutOPEN
13) TrackTcpState
The optional session attributes support different features of the BGP functionality that have implications for the BGP FSM state transitions. Two groups of the attributes which relate to timers are:
group 1: DelayOpen, DelayOpenTime, DelayOpenTimer
group 2: DampPeerOscillations, IdleHoldTime, IdleHoldTimer
The first parameter (DelayOpen, DampPeerOscillations) is an optional attribute that indicates that the Timer function is active. The "Time" value specifies the initial value for the "Timer" (DelayOpenTime, IdleHoldTime). The "Timer" specifies the actual timer.
Please refer to Section 8.1.1 for an explanation of the interaction between these optional attributes and the events signaled to the state machine. Section 8.2.1.3 also provides a short overview of the different types of optional attributes (flags or timers).