oxidecomputer / oxidecomputer/dendrite

Allow fec/speed settings to be modified without destroying link

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

Nobody has claimed this yet.

Dominant language
Rust
Stars
20
Forks
3
Avg merge
3d 11h
Merged PRs (30d)
4

Description

Many settings (addresses, routes, etc) in dendrite and omicron refer to a link by name. Right now if we want to change low-level settings on a link (e.g., if we swap out a transceiver), we have to delete and re-create that link. If the link re-creation fails for any reason, all of those remaining settings will be pointing at a non-existent entity. While the tofino SDE will not allow us to change settings on an existing link, there is no reason that limitation should be propagated all the way through dendrite and omicron.

We should add to dendrite the notion of a disconnected link (name subject to discussion) which exists for configuration purposes, but doesn't actually connect to a port on the ASIC. This gives us a transitional state in which a link can live while we are doing the SDE-level destroy/re-create. It also gives us a sane state in which to leave the link should the re-create operation fail. We could also make this an explicit user-requested transition, which could be triggered prior to performing a transceiver swap.

Contributor guide

No contributing guide indexed for this repository

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

No file or test is named. Start by tracing how dendrite represents links and preserves settings that reference them, then clarify the disconnected-link state and transition semantics with maintainers. Done means a link can remain available for configuration while its ASIC connection is recreated, including when recreation fails.

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
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.