Skip to content

Pr3559 - #3583

Merged
fujita merged 7 commits into
osrg:masterfrom
fujita:pr3559
Sep 2, 2026
Merged

Pr3559#3583
fujita merged 7 commits into
osrg:masterfrom
fujita:pr3559

Conversation

@fujita

@fujita fujita commented Sep 2, 2026

Copy link
Copy Markdown
Member

No description provided.

rastislavs and others added 7 commits September 2, 2026 10:37
Add proto API for configuring TCP-AO for peers,
and retrieval of peer-level TCP-AO state.

Signed-off-by: Rastislav Szabo <rastislav.szabo@isovalent.com>
Add OpenConfig-based TCP-AO configuartion hooks
for neighbors and peer-groups.

We keep TCP-AO config at the neighbor and peer-group level
(along with TTL security and BFD config), not in the TransportConfig,
since transport changes cause peer re-configuration and TCP-AO
preferred key can change frequently during the peer lifetime.
Wire TCP-AO peer proto API and OpenConfig configuration hooks.
The TCP-AO peer model marks send-id mandatory but leaves keychain
optional, which is backwards. The keychain reference is what attaches a
peer to a key set, and an empty keychain is what the Go side reads as
"TCP-AO not configured". So the model demanded the leaf that only has
meaning once a keychain is named, and allowed the one that enables the
feature to be omitted.

Both leaves sit inside the tcp-ao presence container, so RFC 7950
section 3 keeps the mandatory node from propagating past it and section
7.17 does not require a when statement on the augment. bgp_configs.go
needs no regeneration because bgpyang2golang.py never reads mandatory.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
Whether a peer uses TCP-AO is decided by the keychain string alone. An
empty keychain makes the conversion emit no API message, and a send-id
set without a keychain is dropped with it. That rule lived only in an
early return, where nothing stated it was deliberate.

Send-id 0 needs pinning down for the same reason. RFC 5925 section 3.1
says "MKT IDs MUST support any value, 0-255 inclusive.  There are no
reserved ID values.", so 0 names the key with SendID 0 rather than
standing in for "not set".

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
proto3 has no 8-bit integer, so send_id crosses the API as a uint32 and
the conversion to the config model has to reject anything a KeyID cannot
hold. RFC 5925 section 3.1 says "MKT IDs MUST support any value, 0-255
inclusive.  There are no reserved ID values.", which puts the
interesting cases right at the boundary: 0 and 255 must pass and 256
must not.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
OverwriteNeighborConfigWithPeerGroup had no tests, so the peer group
fallback for the new tcp-ao container was unverified. Dropping its
overwriteConfig call would have gone unnoticed.

The fallback also works per leaf, driven by which keys the config file
actually set. A neighbor that names only a keychain still takes send-id
from its peer group, which is worth stating because the two leaves read
like one setting.

Assisted-by: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
@fujita
fujita merged commit a1136ee into osrg:master Sep 2, 2026
42 checks passed
@fujita
fujita deleted the pr3559 branch September 2, 2026 06:13
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