-
Notifications
You must be signed in to change notification settings - Fork 5
Description
RFC 9687 introduces a mechanism for the local system to detect when the peer is not processing transmitted data.
This helps detect conditions where a BGP session is stalled unidirectionally, for instance if the BGP peer is overloaded and isn't reading data from the TCP connection but is still sending Keepalives.
RFC 9687 describes resetting the SendHoldTimer when a message is sent, however the exact implementation of this stall detection is not always implemented in the same way.
e.g.
FRR's bgpd implements an I/O pthread per peer that sits between the TCP session and a inbound/outbound message queue pair, and the main pthread is responsible for pushing outbound messages into each peer's OutQ. Instead of detecting a stalled session using a new timer, FRR detects the SendHoldTimer_Expires event when it's observed that an OutQ has not made any progress in the last SendHoldTime interval seconds.