Skip to content

outlet/routing: buffer BMP messages to avoid being flagged as "stuck"#2245

Merged
vincentbernat merged 2 commits into
mainfrom
fix/bmp-buffering
Feb 21, 2026
Merged

outlet/routing: buffer BMP messages to avoid being flagged as "stuck"#2245
vincentbernat merged 2 commits into
mainfrom
fix/bmp-buffering

Conversation

@vincentbernat

Copy link
Copy Markdown
Member

When flushing RIBs or receiving a big update, some BMP receivers may not process the packets in a timely fashion and may be flagged as stuck, closing the connection. The workaround was to increase the kernel buffer.

Instead, we separate BMP message processing into a goroutine for I/O processing and a goroutine for handling received messages, with a configurable buffered channels between them.

Fix #2092

This may be better than #2244 as performance may be better (but no benchmark for that).

@codecov

codecov Bot commented Feb 17, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 64.55696% with 28 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.83%. Comparing base (a64e45a) to head (6cc9dd0).
⚠️ Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
outlet/routing/provider/bmp/serve.go 56.25% 24 Missing and 4 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2245      +/-   ##
==========================================
- Coverage   84.94%   84.83%   -0.11%     
==========================================
  Files         231      231              
  Lines       13963    14029      +66     
==========================================
+ Hits        11861    11902      +41     
- Misses       1401     1421      +20     
- Partials      701      706       +5     
Flag Coverage Δ
e2e 42.92% <65.33%> (+0.09%) ⬆️
unittests 84.00% <56.96%> (-0.27%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vincentbernat vincentbernat added the service::outlet Impact the outlet service label Feb 20, 2026
When flushing RIBs or receiving a big update, some BMP receivers may not
process the packets in a timely fashion and may be flagged as stuck,
closing the connection. The workaround was to increase the kernel
buffer.

Instead, we separate BMP message processing into a goroutine for I/O
processing and a goroutine for handling received messages, with a
configurable buffered channels between them.

Fix #2092

This may be better than #2244 as performance may be better (but no
benchmark for that).
Also:
- preinitialize some metrics
- curry some metrics (better performance)
@vincentbernat vincentbernat merged commit 0674ad0 into main Feb 21, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

service::outlet Impact the outlet service

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reduce lock contention when receiving a lot of BMP messages

1 participant