oxidecomputer / oxidecomputer/omicron

Tracking issue for customer DNS

Open
#2,155 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

This issue tracks a few related to DNS provided to customers. This is generally laid out in RFD 21. Briefly, the ultimate goal is that the only DNS server provided to guests is the address we've reserved for it in each VPC Subnet, the third address in the subnet, e.g. 192.168.1.2 or fd12:3456::2. All DNS resolutions will go through OPTE, which will eventually intercept these and pass them on to the control plane in a TBD manner for resolution.

What happens next depends on the name being resolved. For an internal DNS name, e.g., inst-name.az-name.inst.vpc-name.project-name.org-name.internal, we need to resolve this by finding the primary VPC-private IP address for that instance. For an external name, e.g., inst-name.az-name.inst.vpc-name.project-name.org-name.oxide.acme.com, we need to resolve this by returning an external IP address, either Ephemeral or Floating, assigned to that instance. Same goes for resolution of Floating IPs directly. For any other request, we need to recursively resolve that by querying a DNS server that the customer needs to tell us about at rack setup time.

There's another aspect to DNS we need to provide, which is resolving requests for external IP addresses to clients outside the Oxide rack. This is a bit more straightforward. We need an API for the customer to tell us which address from an IP Pool we want that server to listen on, but it's otherwise "just" a normal server that resolves external names (e.g., inst-name.az-name.inst.vpc-name.project-name.org-name.oxide.acme.com) to the external IP address for that object. There may also be value in creating a Nexus HTTP API for making the same request too, I'm not sure.

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 section of RFD 21 and trace the OPTE/control-plane boundary described in the issue. No files or tests are named; first turn the guest resolution, external resolution, and customer-configured upstream requirements into concrete deliverables, with completion defined by explicit behavior for each request type.

Written by the indexing model from the issue text.

Assessment

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.