Networking/Archive/Necko/DNS/ResolverIntegration: Difference between revisions
< Networking | Archive
Jump to navigation
Jump to search
m (Manuel Bucher moved page Necko/DNS/ResolverIntegration to Networking/Archive/Necko/DNS/ResolverIntegration: move to necko archive) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Template:Archived}} | |||
= Summary = | = Summary = | ||
Line 8: | Line 10: | ||
* Steve Workman (Mozilla) | * Steve Workman (Mozilla) | ||
* Josh Aas (Mozilla) | * Josh Aas (Mozilla) | ||
* Wouter Wijngaards (NLNet) | * Wouter Wijngaards (NLNet Labs) | ||
The current plan is to use NLNet's libunbound along with Chromium's OS configuration detection code. We estimate (very roughly) that this will total 100-150k lines of code. | The current plan is to use NLNet's libunbound along with Chromium's OS configuration detection code. We estimate (very roughly) that this will total 100-150k lines of code. | ||
Line 14: | Line 16: | ||
Chromium's code for reading OS configurations lives in their "src/net/dns" directory. We're primarily interested in the list of DNS servers we should be using. | Chromium's code for reading OS configurations lives in their "src/net/dns" directory. We're primarily interested in the list of DNS servers we should be using. | ||
The libunbound code is developed by [http://nlnetlabs.nl/ NLNet Labs]. The libunbound site is [http://unbound. | The libunbound code is developed by [http://nlnetlabs.nl/ NLNet Labs]. The libunbound site is [http://unbound.net unbound.net]. | ||
= Code Structure = | = Code Structure = |
Latest revision as of 08:49, 24 April 2023
ARCHIVED
This page has been archived and its contents may be out of date.
Summary
We're planning to integrate a DNS resolver into Gecko. Our primary motivation is performance, but we're also interested in a number of new security features such as DNSSEC.
For performance in particular we want better parallelism, access to TTL, better ordering of IPv4 and IPv6 queries.
Primary engineers:
- Steve Workman (Mozilla)
- Josh Aas (Mozilla)
- Wouter Wijngaards (NLNet Labs)
The current plan is to use NLNet's libunbound along with Chromium's OS configuration detection code. We estimate (very roughly) that this will total 100-150k lines of code.
Chromium's code for reading OS configurations lives in their "src/net/dns" directory. We're primarily interested in the list of DNS servers we should be using.
The libunbound code is developed by NLNet Labs. The libunbound site is unbound.net.
Code Structure
- netwerk/dns/* directories:
- cache (code for caching results, likely using sqlite)
- os-config (code from Chromium for OS configuration)
- os-resolver (fallback code using operating system resolver)
- resolver (libunbound)
Work Items
- [Josh] Bring in system integration code from Chromium.
- [Wouter] Add ability to configure libunbound to build only the library, not the daemon.
- [Wouter/Brian] Make libunbound work with NSS instead of OpenSSL. Do this by making a build-time option to compile with NSS. Brian Smith from Mozilla will help.
- [Josh] Configure libunbound to use minimal threads with 256 query max per thread.
- [Josh] Detect errors using libunbound and fall back to using the OS resolver.
- [Josh] Optimize caching values within libunbound, add subsystem to cache to disk.
- [?] Eliminate unnecessary code and dependencies, perhaps even the entirety of ldns.
- [?] Turn on DNSSEC.