Remove a peer's live routes when its session goes down (closes #56)
check / check (push) Waiting to run

RIS sends no withdrawals for the routes of a peer whose BGP session goes
down, so those routes stayed in the live tables for good.

The streamer now hands STATE messages to the handlers that want them and
never drops one for backpressure: it waits for room in a full queue until
the idle timer drops the connection. When the prefix handler gets one whose
state is down, it drops the peer's updates still in its batch and notes the
peer; the next flush deletes all of the peer's live routes, IPv4 and IPv6,
before writing the batch, so updates the peer sends after the down are
kept. The live route tables' unique key now leads with peer_ip, so it also
finds a peer's routes.

Model: opus-5-5
This commit is contained in:
2026-10-19 08:48:23 +00:00
committed by sneak
parent a0ddc0d254
commit 741bea4b9e
12 changed files with 684 additions and 46 deletions
+4 -1
View File
@@ -128,7 +128,10 @@ routewatch/
4. **Handler Details**
- **ASHandler**: Tracks all ASNs seen in AS paths
- **PeerHandler**: Records BGP peer information
- **PrefixHandler**: Maintains live routing table (upserts on announcement, deletes on withdrawal)
- **PrefixHandler**: Maintains live routing table (upserts on announcement, deletes on withdrawal,
deletes all of a peer's routes when its BGP session goes down). Routes are kept per peer IP, so
when one peer IP has sessions on two collectors, a session going down on one also removes the
routes the other still carries, until they are announced again.
- **PeeringHandler**: Extracts AS peering relationships from AS paths
5. **HTTP Request Flow**