oxidecomputer / oxidecomputer/opte
Need to handle internal DNS resolutions through the control plane
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 77
- Forks
- 11
- Avg merge
- 9d 20h
- Merged PRs (30d)
- 8
Description
We need to handle requests for resolving internal DNS names from guests. We have an internal DNS server in the control plane (though not clear if / when that's populated with records for guests). We need to
- Intercept DNS packets from the guest (UDP port 53, over either IPv4 / IPv6)
- Look it up in DNS. There are a bunch of choices here:
- Directly look it up in the DNS server, which is probably high-latency, but maybe least work
- Have a separate process / thread that's either syncing DNS records from the DNS server or getting updates from it, and query that local cache
- Something else? One big issue here is that OPTE is currently generally designed to return the response to a packet immediately, not at a later time. E.g., for DHCPv6
Solicitrequests, we just look up the data for that guest in itsVpcCfg, and build aReplywith the right options. If we need a high-latency query to service the request, that (currently) needs to just be a blocking call. I have no idea how that plays with kernel threads, or if we need to include machinery to run that in a task and get "await" its response.
- Inject the response back in the layer-processing code via a
Hairpinaction.
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 0021 and the OPTE layer-processing code that handles guest packets, including the existing VpcCfg-based DHCPv6 response path. Determine how internal DNS records should be obtained and how a delayed lookup fits the current immediate-response model; done means handling guest UDP port 53 over IPv4 and IPv6 and injecting the response with a Hairpin action.
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
- 25/100