RFC 4724 Section 4.2 requires the Restarting Speaker to defer route selection for a family until End-of-RIB is received from all GR-capable peers. This requires knowing all GR peer configurations before any session is established.
The current API model (start_bgp followed by repeated add_peer calls) starts connections immediately as peers are added. When multiple GR-capable peers are configured, the first peer may establish and begin sending routes before the remaining peers are added, making it impossible to correctly initialize route selection deferral across all peers.
The correct fix is to separate the configuration phase from the connection-start phase (e.g., split start_bgp into init_bgp and start_bgp), so the daemon can initialize deferral state for all configured GR families before any connection starts.
RFC 4724 Section 4.2 requires the Restarting Speaker to defer route selection for a family until End-of-RIB is received from all GR-capable peers. This requires knowing all GR peer configurations before any session is established.
The current API model (start_bgp followed by repeated add_peer calls) starts connections immediately as peers are added. When multiple GR-capable peers are configured, the first peer may establish and begin sending routes before the remaining peers are added, making it impossible to correctly initialize route selection deferral across all peers.
The correct fix is to separate the configuration phase from the connection-start phase (e.g., split start_bgp into init_bgp and start_bgp), so the daemon can initialize deferral state for all configured GR families before any connection starts.