Cisco DNS Bug?

I’ve been running the cisco for a bit now and it has an annoying ‘feature’ in that after a while the DNS server stops resolving some sites.

The only suggestion so far is that the router is running low on RAM but that doesn’t seem likely.

For now I have a caching DNS server on my Ubuntu box, but does anyone have any bright ideas?

16 thoughts on “Cisco DNS Bug?”

  1. I’d be inclined to stick with DNS on the Ubuntu box as the router might be running out of cache space i.e. RAM as suggested above.

    This link may give you more of a clue but I’d have thought a server rather than router based DNS resolver would perform better – I have the same but with a M$ one rather than a Linux one.

    If you have few hosts, you could scrap DNS internally altogether and go for modifying the host file! just a thought!

  2. How can i tell the cache RAM state? ‘sh mem’ produces a lot of info.

    The bind9 server on ubuntu does perform better, for sure. I wanted to use DNS so any device on the network just works.

  3. I’ve only got a 2621 to go on which is a different IOS but you could try:

    sh mem statistics
                    Head    Total(b)     Used(b)     Free(b)   Lowest(b)  Largest(b)
    Processor   8149D820     8124224     4068504     4055720     4050748     3577560
          I/O    1C00000     4194304     2182296     2012008     2012008     2011964
    

    I’m assuming that if you have no free memory, the Free (b) count would be zero.

    Thinking about it logically, the more dns queries you do, the more is going to be held in the DNS table therefore with limited RAM, you will eventually run out of memory as the DNS table will fill up the available space. The router memory is always going to be at a premium anyway as the RAM on a router will be a tenth of what’s likely to be available on the Ubuntu box and its probably got more routines in it to flush the stale records more often.

  4. I’ll have a look. I did try that but nothing stood out as zero.

    You’re right about the cache filling, and there only being limited RAM, and I probably push DNS hard with Spamassassin (it does a lot of lookups), but IMO if the cache is full it should look it up from the ISP servers, not return ‘no record found’.

  5. if the cache is full it should look it up from the ISP servers, not return ‘no record found’.

    You might need to configure it to lookup to an external box in that case, which is inefficient in terms of bandwidth and probably slower.

  6. A-ha!

    But that is what it is configured to do. That’s how if fills the cache in the first place :-).

    That’s how I think it should behave too, but it doesn’t, sometimes…

  7. I’ve checked your config over and it seems to be okay as this article will verify.

    The obvious thing to do is to try and see if you can get an updated IOS image and see if that solves the problem. Cisco have their dodgy coders as well!

  8. Yep. All the config examples I’ve found say it is right, and it works *for a while*.

    I wonder if it’s because I have the advanced IP services image on (I was planning to fiddle with QoS)?

    
    f#sh ver
    Cisco IOS Software, C870 Software (C870-ADVIPSERVICESK9-M)
    Version 12.4(20)T, RELEASE SOFTWARE (fc3)
    ROM: System Bootstrap, Version 12.3(8r)YI3, RELEASE SOFTWARE
    
    System image file is "flash:c870-advipservicesk9-mz.124-20.T.bin"
    

    Won’t I need a support contract to get the image?

    Anyway, the performance with the Ubuntu bind9 DNS is markedly better, so I might just stick with it.

    By the way, here’s the memory state at the moment- though it’s not doing much DNS at the moment:

    #sh mem stat
                    Head    Total(b)     Used(b)     Free(b)   Lowest(b)  Largest(b)
    Processor   835CF260    65211808    30990508    34221300    27357968    25971972
          I/O    7400000    12582912     4036296     8546616     8546616     8546588
    
    
  9. Might be worth a punt to see if it fixes it. You’ve got 8 MB free I/O so it shouldn’t be running out of RAM. It could be filling up buffer space I suppose or running out of Stack or heap which used to be a feature of the Mac System 7 (the good old days!), so the memory management may not be that great. I wonder what you would get if you Googled “IOS memory management”? Just a thought.

    I’ve had a problem with my Semperon PC on the network recently and I’ve upgraded the XP driver for the network card and forced negotiation to 100 Full duplex which I think has stopped a lot of RX retries between it and the server. I only found it thought by loading a protocol analyser!

  10. The code must be missing some routines for scavaging stale records and then referring addresses to the next available resolver or flushing the dns table periodically. I’ve known this with M$ DNS servers but mine seems to hang together quite well probably because its low use compared to a college.

  11. It’s not often you’ll catch me defending Windows server, but IME Win2k3 or 2k DNS is very stable, even under a highish load.

  12. I have the exact same DNS problem as you on my Cisco – although I have a 2600 series. Actually I set it up this way to side step a really annoying ipsec tunnel and NAT interaction that was messing up my DNS servers. The problem I had was with the very same IOS version also. I’m going to try upgrading to see if the problem goes away. Did it fix it for you?

Comments are closed.