oxidecomputer / oxidecomputer/omicron
dns server does not behave well with DNS size limits
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Description
This issue is deliberately a little vague, but what I mean is:
- The DNS server appears to happily send DNS responses that are larger than 512 bytes. I'm not sure if this is actually wrong or not but it seems to break hickory-dns. This appeared to be a cause of the problems in #5912 that have been rather painful to debug.
- I don't see any code in the DNS server for supporting EDNS.
- I don't see any code in the DNS server for supporting TCP.
More research needed to confirm but I think we should probably have the DNS server:
- truncate non-EDNS, UDP messages at 512 bytes (and set the "truncated" bit)
- support EDNS for larger response sizes
- support TCP for larger response sizes
I gather there's some max size negotiation that can happen, at least with EDNS (not sure about non-EDNS), and we should presumably honor that.
Once we've done that, we may want to configure our clients to always use EDNS or TCP instead of always trying without those and then retrying when they see the truncated response.
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 by reproducing the DNS response-size problem associated with #5912 and investigate the DNS server behavior described here, including hickory-dns compatibility. Confirm the applicable size negotiation rules, then define completion as correct 512-byte truncation for non-EDNS UDP responses, EDNS support for larger responses, and TCP support for larger responses.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100