oxidecomputer / oxidecomputer/opte
need API to save/restore "device state"
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 77
- Forks
- 11
- Avg merge
- 9d 20h
- Merged PRs (30d)
- 8
Description
As part of Live Migration (RFD 71) OPTE needs to be able to save/restore dynamic state for the purpose of reincarnating the OPTE device on the destination without unnecessarily dropping packets or having to relearn all the flows.
- Add API to quiesce all traffic on an OPTE Port (keep in mind a given instance may have more than one port).
- Add API to resume traffic on an OPTE Port.
- Add API to save dynamic state of an OPTE Port.
- TCP Flow Table
- Unified Flow Table
- Layer Flows Tables
- ???
- Add API to create a port from based on saved state. In reality this will probably be two stage: 1) create the port as normal on the destination in order to configure it with all the various static rules based on what's in Nexus, but set a flag to indicate that this port is waiting to be restored from a saved stream, and 2) restore the dynamic state from a saved stream and resume the traffic (we may even want resume to be a third step perhaps).
While live migration will send the device state over a TCP stream, it would probably also be useful to add a subcommand to opteadm(1M) to save/restore to/from a file. This could be used for the purposes of both manual and automated testing. For automated testing it would allow us to test "live migration" purely in terms of OPTE itself, without requiring actual instances or any other external stuff.
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 RFD 71 and inspect the OPTE Port APIs and the opteadm(1M) entry point. Map how traffic quiescing and resumption relate to the TCP Flow Table, Unified Flow Table, and Layer Flows Tables, then determine how saved state would be created and restored. Done means the checklist's port APIs, saved-state restoration flow, and optional file-based opteadm workflow are defined and implemented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100