-
Notifications
You must be signed in to change notification settings - Fork 3
client/daemon: initial route liveness probing #2017
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
3324c15 to
c5e6c98
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Adds support for Route Liveness Probing in the doublezerod client daemon, opt-in via the --route-probing-enable flag. This introduces a new probing subsystem integrated at the BGP plugin level that performs ICMP-based reachability checks for BGP-learned routes with hysteresis-based liveness policy.
- Implements route liveness probing for IBRL service with ICMP echo requests and hysteresis-based state transitions
- Adds user-space ICMP listener for probe responses over the
doublezero0interface - Integrates probing system into BGP plugin with configurable route manager abstraction
Reviewed Changes
Copilot reviewed 44 out of 45 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
tools/uping/pkg/uping/listener.go |
Changes logging from Info to Debug level for listener events |
tools/uping/cmd/uping-send/main.go |
Adds Linux-only build constraint |
tools/uping/cmd/uping-recv/main.go |
Adds Linux-only build constraint |
tools/twamp/pkg/light/stub_fallback.go |
Removes deprecated build constraint syntax |
go.mod |
Updates prometheus-community/pro-bing dependency version |
e2e/multi_client_test.go |
Disables route probing in E2E tests until containerized connectivity is resolved |
e2e/internal/rpc/agent_test.go |
Adds binary availability check for doublezero |
e2e/internal/devnet/device.go |
Increases device container memory allocation |
e2e/internal/devnet/cmd/add-client.go |
Adds route probing enable flag |
e2e/internal/devnet/client.go |
Adds route probing configuration support |
e2e/ibrl_test.go |
Removes unused parameter from test helper function |
e2e/docker/client/entrypoint.sh |
Adds client flags environment variable support |
e2e/docker/client/Dockerfile |
Adds uping tools and additional packages |
e2e/docker/base.dockerfile |
Builds uping tools in base image |
client/doublezerod/internal/services/services_test.go |
Updates service creation calls for new route manager abstraction |
client/doublezerod/internal/services/multicast.go |
Adds route manager integration |
client/doublezerod/internal/services/ibrl.go |
Adds route manager integration and fixes error message |
client/doublezerod/internal/services/edgefiltering.go |
Adds route manager integration |
client/doublezerod/internal/services/base.go |
Adds NewRouteManagerFunc type definition |
client/doublezerod/internal/runtime/run_test.go |
Updates tests for new runtime Run signature |
client/doublezerod/internal/runtime/run.go |
Refactors to accept NetlinkManager parameter |
client/doublezerod/internal/routing/routes.go |
Adds nil safety checks to Route.String() method |
client/doublezerod/internal/routing/netlink.go |
Improves error handling for route deletion |
client/doublezerod/internal/routing/errors.go |
Adds ErrRouteNotFound error |
client/doublezerod/internal/probing/ |
Complete probing subsystem implementation with worker, manager, liveness tracking, and configuration |
client/doublezerod/internal/manager/services.go |
Adds service creation functions with route manager abstraction |
client/doublezerod/internal/manager/manager.go |
Updates manager to use pluggable service creation |
client/doublezerod/internal/manager/http_test.go |
Updates tests for new manager constructor |
client/doublezerod/internal/bgp/plugin.go |
Replaces RouteReaderWriter with RouteManager interface |
client/doublezerod/internal/bgp/bgp_test.go |
Updates tests for new route manager interface |
client/doublezerod/internal/bgp/bgp.go |
Updates BGP server for route manager integration |
client/doublezerod/cmd/doublezerod/main.go |
Adds route probing command-line flags and configuration |
CHANGELOG.md |
Documents new route liveness probing feature |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
8091586 to
330297c
Compare
5c78943 to
b8d82d2
Compare
b8d82d2 to
b535b34
Compare
42fa110 to
19dce48
Compare
e9bc00b to
05fa482
Compare
6858075 to
9a23120
Compare
9a23120 to
0fc68e9
Compare
0057599 to
1726950
Compare
f0c09c7 to
3551325
Compare
Summary of Changes
doublezerodclient daemon, opt-in via the--route-probing-enableflag.IBRL,IBRLwith allocated IP, multicast).UPstate are installed in the kernel routing table.DOWNstate are withdrawn from the kernel routing table until recovery.UPandDOWN.doublezero0interface even when the corresponding route is not installed in the kernel table.doublezero0, preventing successful validation of otherwise reachable peers.Testing Verification