Skip to content

feat: derive VPC identifier from the network's fabric identity - #11

Closed
scotwells wants to merge 1 commit into
mainfrom
feat/network-fabric-identity
Closed

feat: derive VPC identifier from the network's fabric identity#11
scotwells wants to merge 1 commit into
mainfrom
feat/network-fabric-identity

Conversation

@scotwells

@scotwells scotwells commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

A network that spans two locations ends up with two unrelated VPC identifiers, because each cell invents one at random and checks it only against its own cluster. Galactic reads that as two different networks: it names the edge VRF device from the identifier and derives the Route Target from it, so the two locations neither share a device nor exchange routes.

This is the consumer half of that fix. It derives the identifier from a single identity allocated once for the network, so every cell reaches the same value. A network with no identity keeps drawing a random one, and a VPC that already holds an identifier is never renumbered.

Superseded by #12, which allocates the identity in this repo rather than reading a field projected from network-services-operator. Kept open for the problem statement and review history.

Related: datum-cloud/enhancements#870

Each cell runs its own copy of the NetworkContext reconciler, and each one
drew a random VPC identifier checked only against the VPCs in its own
cluster. One network spanning two locations therefore ended up with two
unrelated identifiers, which galactic reads as two different networks: the
edge VRF device is named from the VPC alone, and the Route Target is derived
from it, so neither location imports or exports the other's routes.

When the network carries an identity allocated for it, the VPC identifier is
now rendered from that value, so every cell reaches the same one. A network
without one keeps drawing a random identifier exactly as before, and a VPC
that already holds an identifier is never renumbered.

Key changes:
- Add identifier.VPCBase62 to render a known 48-bit value, alongside the
  existing random draw
- Read the allocated identity from NetworkContext spec and derive the
  identifier from it when present
- Fall back to the existing random allocation when no identity is present
@scotwells
scotwells marked this pull request as ready for review August 27, 2026 01:03
@scotwells
scotwells requested a review from a team as a code owner August 27, 2026 01:03
@scotwells

Copy link
Copy Markdown
Collaborator Author

Superseded by #12, now merged. That change allocates the identity in this repo rather than reading a field projected from network-services-operator, so the approach here no longer applies. The problem statement and review history stay on the record.

@scotwells scotwells closed this Aug 27, 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