Remove a peer's live routes when its session goes down (closes #56)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
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 prefix handler and never drops one for backpressure: one that finds the queue full is held, and queued in feed order ahead of anything else for that handler once there is room. On a down, the prefix handler 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 sent 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:
@@ -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**
|
||||
@@ -232,7 +235,9 @@ What happens at each limit:
|
||||
out-of-memory error, and the handler logs it and drops that batch. The process
|
||||
keeps running.
|
||||
- Handler queues: each of the four handler queues holds at most 20,000 messages.
|
||||
When a queue fills, the streamer drops messages instead of blocking.
|
||||
When a queue fills, the streamer drops messages instead of blocking, except a
|
||||
`STATE` message, which it holds, in feed order, until there is room: a few
|
||||
hundred bytes each, about ten a second.
|
||||
- Handler batches: while the AS, peer or prefix handler writes a batch to the
|
||||
database, the updates that arrive collect in its next batch, which stops at
|
||||
ten times the batch size: 300,000 updates for the AS handler
|
||||
|
||||
Reference in New Issue
Block a user