Windows 2000 machines all have a client-side DNS cache that keeps local copies of DNS information. This allows sites to be loaded slightly faster, without having to perform a DNS lookup each time an address is needed. A DNS entry will stay in the cache until its TTL (Time to Live) value expires; another request after that point will force a new lookup.
If a given system is used to visit a broad variety of sites, whether it's a workstation or a server, you may want to set the size of the DNS cache to better accommodate that level of traffic.
- Run REGEDT32 and browse to HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDnscacheParameters.
- Create or modify the following REG_DWORD keys, and set their values as listed:
CacheHashTableBucketSize -- 384
CacheHashTableSize -- 64000
MaxCacheEntryTtlLimit -- 301
MaxSOACacheEntryTtlLimit -- 300
The CacheHashTable parameters are used to control the maximum number of columns in the hash table used by the DNS caching resolver service; the more columns, the faster the cache lookup, although this takes slightly more RAM.
MaxSOACacheEntryTtlLimit is the longest amount of time, in seconds, the cache holds any SOA (Start of Authority) records. Because SOA records are some of the most important DNS records, they cannot be held for too long, but you can force how long they are held with this value.
MaxCacheEntryTtlLimit is, in seconds, the upper limit for any cache entry's TTL value, and it overrides any value that may have been set on a specific record that is larger. If you set this value to 1, you can force DNS to perform a lookup on every query, which in effect disables the cache -- a useful value if you are performing any debugging.
You can also dump the contents of the DNS cache to the console with the command ipconfig /displaydns, and manually empty the cache with ipconfig /flushdns (again, useful for debugging or tracing problems with DNS).
Serdar Yegulalp is the editor of the Windows 2000 Power Users Newsletter.