Skip to content

Conversation

@snormore
Copy link
Contributor

@snormore snormore commented Nov 7, 2025

Summary of Changes

Testing Verification

  • Unit test coverage for liveness sub-package.
  • Verified in existing multi-client e2e test.
  • Deployed and tested successfully in DZ devnet.

@snormore snormore force-pushed the snor/client-route-liveness-bfd branch 8 times, most recently from 0ef86ac to 7e86765 Compare November 9, 2025 14:41
@snormore snormore marked this pull request as ready for review November 10, 2025 13:27
// 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) {
Copy link
Contributor

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?

Copy link
Contributor Author

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
Copy link
Contributor

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:

  1. The local state of all sessions are set to admin down
  2. These sessions will then be skipped in the tx/rx portion of the scheduler
  3. 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

Copy link
Contributor Author

@snormore snormore Nov 10, 2025

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.

@snormore snormore force-pushed the snor/client-route-liveness-bfd branch from 393ece8 to aa71f39 Compare November 11, 2025 14:04
@snormore snormore force-pushed the snor/client-route-liveness-bfd branch from aa71f39 to 58e3d6c Compare November 11, 2025 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants