Skip to content

bfd: use transport local address for BFD - #3527

Open
frezbo wants to merge 1 commit into
osrg:masterfrom
frezbo:letta/bfd-local-source-0f921afd
Open

bfd: use transport local address for BFD#3527
frezbo wants to merge 1 commit into
osrg:masterfrom
frezbo:letta/bfd-local-source-0f921afd

Conversation

@frezbo

@frezbo frezbo commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Bind outgoing BFD sessions to the neighbor transport local address so numbered peers use the same explicit source as BGP while preserving interface binding and kernel-selected defaults.

Bind outgoing BFD sessions to the neighbor transport local address so
numbered peers use the same explicit source as BGP while preserving
interface binding and kernel-selected defaults.

Signed-off-by: Noel Georgi <git@frezbo.dev>
Copilot AI review requested due to automatic review settings August 3, 2026 07:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the BFD implementation to optionally bind the source IP of outgoing BFD sessions to the neighbor’s configured transport local-address, aligning BFD’s source selection with BGP when an explicit source address is configured, while keeping the existing behavior (kernel-selected source) when unset.

Changes:

  • Plumbs transport.config.local-address through BgpServer → bfdServer → bfdPeer and uses it to set the local UDP bind address for outgoing BFD.
  • Adds tests covering local-address propagation and verifying the UDP client uses the specified local address.
  • Updates BFD documentation to describe source IP selection behavior and troubleshooting guidance.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
pkg/server/server.go Passes neighbor transport local-address into BFD peer creation and includes it in BFD peer update comparisons.
pkg/server/bfd_server.go Extends peer-add event and internal add path to carry a configured local source address into BFD peers.
pkg/server/bfd_server_test.go Adds/updates tests to assert local-address propagation for BFD peers (including via peer-groups).
pkg/server/bfd_peer.go Adds localAddress to bfdPeer and binds UDP client to it when configured (otherwise leaves IP unset for kernel selection).
pkg/server/bfd_peer_test.go Adds tests validating local UDP address construction and that dialing uses the configured local source address.
docs/sources/bfd.md Documents source IP selection from transport local-address and adds troubleshooting notes.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants