request drops in BIND?

KyoungSoo Park kyoungso at cs.princeton.edu
Mon May 10 15:17:18 UTC 2004


Hi Barry,

>>Hi BIND hackers(or anyone interested in BIND's performance),
>>
>>To know BIND's reliability & performance, I tested BIND 9.2.3 by sending 
>>burst requests and
>>seeing how many actually get back.
>>When I did 200 requests of a single local domain name(the result should 
>>be cached in the BIND) at the same time,
>>I see about 20 - 22 responses are usually missing.
>>
>>The BIND server that I configured is for testing only, so there is no 
>>user except for me.
>>I wonder why it starts failing to respond at the burst request rate 178 
>>requests/sec.
>>When I looked through tcpdump, then it seems the BIND gets all requests, but
>>it seems it's dropping requests inside the server.
>>    
>>
>
>Are you sure about that?  It could be getting dropped in the UDP stack 
>*after* tcpdump has reported that the packet was received.  You should 
>enable BIND's debugging -- if it intentionally drops a request, I would 
>expect it to log a debugging message.
>  
>
Yes. I'm quite positive. I did this many times, but see almost the same 
phenomenon.
Getting dropped in the UDP stack doesn't seem to explain all, because 
all I did was to send 200 requests/sec at once
(it's about 2 Mbps rate), and the total size of all 200 requests should 
be smaller than the recv buffer.
Also, I did the same test using my UDP Ping, and it worked perfectly fine.

Yes. I think it's a good idea to enable the debugging option and see 
what happens.

>When we were having performance problems on our caching nameservers, we 
>noticed that queries to the virtual address that we publicized to our 
>customers would frequently time out, but queries sent to the server's 
>"real" address would have no problems.  So the problem was that the 
>per-socket buffer was overflowing (BIND uses a separate UDP socket for 
>each of the server's addresses).
>  
>
What if there is only one IP address(no virtual address) for all the 
customers?
64KB of default buffer seems not enough for handling bulk requests. It's 
not only used for getting requests
but also used for getting responses from the remote name servers(such as 
gTDL servers). Those responses
are usually big(300bytes), so it's possible that with only 218 
responses(=218*300 = 64KB), the buffer would fill up
not even counting the requests' size. I think BIND's buffer should be at 
least a couple times bigger(ex. 10 times)
to handle bulk requests. Bursty requests are always happening!

Thanks,
KyoungSoo









More information about the bind-users mailing list