oxidecomputer / oxidecomputer/omicron

Switch zone services need per-rack distinction in DNS

Open
#5,201 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

multi-rack networking
Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

Currently we do not differentiate switch zone services by rack, nor do we differentiate them by which switch "slot" (0/1, top or bottom) they manage. However, this information is required since the switch configuration per-rack and per-slot will not necessarily be the same. We are currently getting around the lack of per-slot identification in DNS by querying the co-resident MGS service and learning the location from it, but we should resolve both of these problems by changing how we register the services in DNS.

Example of how we do it today:
https://github.com/oxidecomputer/omicron/blob/05b37debe3b76c42188c2efafee56b65e7605674/nexus/src/app/background/sync_switch_port_settings.rs#L238-L258

Possible solution:
Dendrite and MGS are both in the same zone, and IIUC Dendrite registers itself with DNS. Dendrite (and other services like it) could first query MGS to learn what slot / location they manage, and provide that as part of the information / name registered to DNS. If we could figure out a way to provide a rack ID to the sled-agents / switch zones upon startup, the switch zone service could also provide that information during their registration to DNS.

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 the DNS-related behavior referenced in nexus/src/app/background/sync_switch_port_settings.rs, especially the linked lines, and trace how switch services currently use the co-resident MGS service to learn their location. Then investigate the Dendrite, MGS, sled-agent, and switch-zone registration paths mentioned in the issue. Done means DNS registrations distinguish both rack and managed switch slot without relying on the current workaround.

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
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.