Technical Tip: BFD with Graceful Restart on FortiGate
Description | This article describes what to expect if Graceful Restart is implemented with BFD on FortiGate. |
Scope | FortiGate. |
Solution | Graceful Restart lets FortiGate inform its adjacent neighbor that it will be undergoing a restart, and routes learned from it (FortiGate) should be preserved for this period of rebooting.  For BGP graceful restart to work, the hold-timer must be large enough so that the peer will not detect the hold-timer expiring. If an aggressive hold-timer is used, a graceful restart will not work  Graceful restart resides in the control plane, and it is woven into each control plane protocol it serves. For example, BGP graceful restart (RFC 4724) is different from OSPF graceful restart (RFC 3623).  While BFD, on the other hand, resides in the data plane and detects data plane failures. This operational difference makes implementing BFD alongside graceful restart an option that should be carefully considered.  BGP graceful restart or OSPF graceful restart doesn’t work with BFD, and it is not recommended. For instance, if it is configured between FortiGate (on-premises router) and GCP (Google Cloud Platform), according to Google, GCP will turn off BFD and send AdminDown [BFD Event: bfd disabled, state [Up, NoDiagnostic] to [AdminDown, AdminDown] to the on-premises router, but FortiGate will not respond to the AdminDown, and will interpret it as BFD is DOWN on the neighbor ('Neighbor Signaled Session Down', not 'Administratively Down').  For more information on BFD/graceful restart on GCP: Google Cloud: Graceful restart and BFD.  In a scenario where a FortiGate and a Juniper are BGP/BFD peers, the same behaviour can occur. According to the Juniper documentation below, it is better not to use BFD in conjunction with Graceful Restart:  Juniper: Using Control Plane Dependent BFD along with Graceful Restart Helper Mode  To implement BFD/Graceful restart at all costs, consider the following workaround: Under 'config router bfd', fine-tune the following parameters: Â
Related documents: Technical Tip: How FortiGate calculates BFD timers (Transmit Interval, Detection Time)Â |
