[Dnsmasq-discuss] Google's DNS servers

Tom Metro tmetro+dnsmasq at gmail.com
Sun Jan 17 07:42:35 GMT 2010


Perette Barella wrote:
> Plus then you've got more complexity down the road (more stuff to
> install, need to adapt future code changes to it/it to future code
> changes, maintain configurations that work with it, etc.).

If it proved to be useful, and was integrated into Dnsmasq, there could 
be as few as 2 config settings. One to enable predictive caching. 
Another to set the limit on how many records to cache (either record 
count or percentage of cache to dedicate to pre-seeded records).

The database used to persistently store the list of most frequently 
queried domains could be just a text file (similar to the lease file), 
so no database configuration required.

(There's no need to be able to access random records from the database 
for reading (cache seeding would iterate over them sequentially). You 
might, however, want to be able to write random records to the database 
if you gather statics in real time, rather than analyzing query logs 
after the fact. It's a trade-off between one approach that requires a 
separate analysis process and depends on query logging (or the 
equivalent) or keeping a larger database that can handle random updates 
without showing down queries.)


> All that introduces processing overhead (and memory, etc.).

Obviously there will be a hit on memory...or at least the memory 
available for caching non-seeded records will be reduced. Processing 
overhead might be minimal - at least the impact imposed on Dnsmasq's 
code to respond to and issue queries. Statistical analysis could be 
performed by a separate process. Pre-seeding at startup would need to be 
a separate process or thread.

Simon would know best, but my guess is that it would probably be most 
memory efficient to have Dnsmasq extend its cached record structure in 
memory to add an "auto refresh" flag, which causes the record expiration 
code to refresh that record, rather than expiring it. (Alternatively 
pre-seeding and refreshing could be relegated to a separate process, 
perhaps receiving record expiration events from Dnsmasq via dbus, but 
the second process would then need to have a redundant copy of the 
domains flagged for pre-seeding in memory, or an indexed database. The 
prototype I suggested would use the latter.)


> ...introduce a lot of complexity because you need algorithms making
> somewhat subjective calls on what to keep in caches, etc.

I don't think it would be all that complex or subjective. Caching 
algorithms are fairly well understood, and the rules for what to keep 
should be fairly simple. But it wouldn't be a trivial change, if integrated.

  -Tom

-- 
Tom Metro
Venture Logic, Newton, MA, USA
"Enterprise solutions through open source."
Professional Profile: http://tmetro.venturelogic.com/



More information about the Dnsmasq-discuss mailing list