-
Notifications
You must be signed in to change notification settings - Fork 3
client/daemon: initial route liveness probing #2092
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
base: main
Are you sure you want to change the base?
Conversation
0ef86ac to
7e86765
Compare
| // UnmarshalControlPacket parses a 40-byte control message from the wire | ||
| // into a ControlPacket. It validates the version and length fields and | ||
| // extracts all header values using big-endian order. | ||
| func UnmarshalControlPacket(b []byte) (*ControlPacket, error) { |
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.
nit: any reason to not call these Read and Write methods?
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.
You mean ReadControlPacket([] byte) and p.Write()?
How about something like ParseControlPacket([] byte) and p.ToBytes()?
| for _, s := range m.sessions { | ||
| s.mu.Lock() | ||
| prev := s.state | ||
| s.state = StateAdminDown |
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.
Am I understanding this admin down scenario correctly:
- The local state of all sessions are set to admin down
- These sessions will then be skipped in the tx/rx portion of the scheduler
- Since no control packets are being processed or sent, the remote endpoints will implicitly notice the admin down event due to timeouts, thus remove their local route
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.
Yeah exactly, on the peer-side their session ends up as just a down. On the local-side it's in admin_down state.
Admin down can be for individual routes/sessions too, doesn't have to be all.
393ece8 to
aa71f39
Compare
aa71f39 to
58e3d6c
Compare
Summary of Changes
doublezerodthat continuously validates BGP-learned routes via UDP probes using a BFD-like protocol, dynamically installing or withdrawing them from the kernel routing table based on observed reachability.tools/upingpackage that was added for previous ICMP-based implementation.Testing Verification