oxidecomputer / oxidecomputer/opte

need API to save/restore "device state"

Open
#22 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

mvp
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.