oxidecomputer / oxidecomputer/maghemite

bgp: consider adding support for rfc 9687 send hold timer

Open
#553 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bgp mgd
Dominant language
Rust
Stars
94
Forks
6
Avg merge
1d 8h
Merged PRs (30d)
12

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.

https://www.rfc-editor.org/rfc/rfc9687.html

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no Maghemite file, test, or entry point. Start by reading RFC 9687 and locating the BGP session and TCP send-path implementation, then compare its behavior with the RFC. Done should be defined by an agreed send-hold-timer implementation and tests for the resulting behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.