Skip to content

Add bgp.local_role plugin for RFC 9234 BGP Roles on FRR and BIRD#3428

Closed
jbemmel wants to merge 8 commits into
ipspace:devfrom
jbemmel:feature/bgp-local-role
Closed

Add bgp.local_role plugin for RFC 9234 BGP Roles on FRR and BIRD#3428
jbemmel wants to merge 8 commits into
ipspace:devfrom
jbemmel:feature/bgp-local-role

Conversation

@jbemmel
Copy link
Copy Markdown
Collaborator

@jbemmel jbemmel commented May 28, 2026

Implements EBGP local role and strict-mode attributes with integration tests, topology validation. Initially supported on FRR and Bird.

jbemmel and others added 8 commits May 28, 2026 11:33
Implements EBGP local role and strict-mode attributes with integration tests,
topology validation, and Bird support via the BGP module template (no extra shell script).

Co-authored-by: Cursor <cursoragent@cursor.com>
…les.

Validate strict mode only when a local role is set, and emit BIRD require roles
only inside the local role block.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Use a single intf_neighbors pass over all session types and branch on
EBGP apply versus IBGP validation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Run validation on FRR probes so the DUT can be FRR or BIRD; add an
upstream provider and assert the peer does not receive its prefix.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use defaults.bgp.local_role_strict instead of repeating it on every link.

Co-authored-by: Cursor <cursoragent@cursor.com>
Allows bgp.local_role plugin validation with none nodes in integration tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ipspace
Copy link
Copy Markdown
Owner

ipspace commented May 29, 2026

@jbemmel -- I love that you did this. It has been on my to-do list forever, but since only FRR was supporting it, it never got to the front of it.

However, would you agree it makes sense to include this in something like bgp.session, because it's really a session attribute, or maybe bgp.policy because it filters stuff? Also I would call the attribute bgp.role, not bgp.local_role

@jbemmel
Copy link
Copy Markdown
Collaborator Author

jbemmel commented May 29, 2026

@jbemmel -- I love that you did this. It has been on my to-do list forever, but since only FRR was supporting it, it never got to the front of it.

However, would you agree it makes sense to include this in something like bgp.session, because it's really a session attribute, or maybe bgp.policy because it filters stuff? Also I would call the attribute bgp.role, not bgp.local_role

Sure, I merely followed - what I believed to be - your preference for an independent plugin. But it's a simple flag, we can call it what you like and merge it with whatever component you prefer

@ipspace
Copy link
Copy Markdown
Owner

ipspace commented May 29, 2026

Sure, I merely followed - what I believed to be - your preference for an independent plugin.

Thank you!

But it's a simple flag

And that's exactly why I thought it would fit better into one of the existing plugins that already deal with this stuff.

we can call it what you like

Let's go with bgp.role

and merge it with whatever component you prefer

Whichever one you prefer (or is easier to fit into), with a tiny preference for bgp.policy (because it is a sort of route filtering policy)

@jbemmel
Copy link
Copy Markdown
Collaborator Author

jbemmel commented May 29, 2026

Replaced by #3429

@jbemmel jbemmel closed this May 29, 2026
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