oxidecomputer / oxidecomputer/omicron
Push NAT state to Dendrite, rather than having Dendrite pull it
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
This is the Omicron side of https://github.com/oxidecomputer/dendrite/issues/83.
Today, dpd pulls NAT state periodically from Nexus and updates its ASIC tables with the latest generation. That makes dpd a client of Nexus's internal API, which complicates updates. Instead, we'd like to push this information from Nexus to dpd, periodically and possibly whenever the state changes.
Nexus also has a separate background task that pulls the latest generation number from dpd, and cleans up database records for out-of-date NAT entries. I'm not sure if pushing the NAT state will impact that task, but it could.
Note that today, dpd only pulls IPv4 NAT entries. As part of migrating this, we probably want to ensure we propagate IPv6 NAT entries as well.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Dendrite issue 83 and trace the current dpd pull of NAT state from Nexus, along with Nexus's background task that reads the latest generation from dpd. Define the push path and its update cadence, account for IPv4 and IPv6 entries, and verify that cleanup of out-of-date NAT records still works.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend-api-design, distributed-systems, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100