Windows – Configuring Windows DNS resolver cache

cachedomain-name-systemwindows

I asked this question on Stack Overflow several months ago and didn't get any useful answers. Perhaps somebody here has better info.

Note that I'm talking about the client DNS resolver cache. This message is not concerned with the Windows DNS Server.

I have a C# program that does a lot of DNS resolutions. Because the HTTPWebRequest component won't let me change the Host header, I can't create my own internal DNS cache. So I have to depend on the Windows DNS cache, which doesn't appear amenable to change.

There's a reasonably good TechNet article about the DNS cache Registry settings in Windows Server 2003, but I haven't been able to prove that setting them does anything in XP, Server 2003, Vista, or Server 2008. All the other pages I found through a Google search either reference that page or paraphrase it, sometimes incorrectly.

Windows' ipconfig command has a /displaydns switch that will output the contents of the cache. To my knowledge, that's the only way to determine the size of the DNS cache. In my experiments on a 32 bit Windows XP box with 2 GB of memory, no matter what I set the DNS cache registry values to, I always end up with between 30 and 40 items in the cache–even after doing thousands of DNS resolutions. On my 64-bit Windows 2008 machine with 16 GB of memory, I always get between 270 and 300 items in the cache.

I'm stumped. I don't know what the answer is, but I figure one of the following is the case:

  1. It's not possible to change the size of the DNS resolver cache.
  2. It is possible, but the documentation is wrong.
  3. The documentation is correct as far as it goes, but it’s incomplete.
  4. The documentation is correct and complete, but I’m too dumb to make sense of it.
  5. The documented registry entries actually changed the size of the cache, but ipconfig isn’t showing me all the entries that are in the cache.

Can anybody tell me if it's possible to configure the size of the DNS resolver cache in Windows XP, Vista, or Server 2008?

Best Answer

another way to verify would be to look at DNS traffic flowing on the wire. i.e. if your application makes a query for domainX at 2 PM and you don't see corresponding DNS packet at 2 PM in trace than that name got resolved using client side cache.

I know, it is kind of convoluted way to confirm the cache size. I concur there should be better way to confirm this.

Try shooting a question in Microsoft official forums or try sending a email to networking team

here. http://blogs.msdn.com/wndp/