request drops in BIND?

KyoungSoo Park kyoungso at cs.princeton.edu
Mon May 10 14:07:51 UTC 2004


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.

Why 178 requests?
BIND's default recv buffer size is max(32KB, default buffer), and in the 
box I tested, it's 64KB.
Each request is about 64 bytes including header(UDP/IP), so the recv 
buffer should be big enough to hold all requests.
When we think about the send buffer(64KB), each response's size is about 
323Bytes, so it can only
hold up to 202 responses at any one time. Maybe it's because send buffer 
overflow, but I don't know how that happens.

You might suspect client's buffer overflow, but I use 150 different UDP 
sockets and each has its own
recv/send buffer of 64KB, so it's not a problem with the client side. 
Also, the client and server live on the same
network segment whose switch is 100 Mbps, so it's not a packet loss or 
network problem either.
Surprisingly enough, when you use just Ping(udp ping that I made to 
simulate the BIND, it gets 64-byte request/ sends
323 bytes back), then you don't see any drops at the rate of 200 burst 
requests.

I've looked at the BIND source code(9.2.3), and it seems it's dropping 
requests at some point, but I can't possibly know
those are related with the problems I see. Specifically, when there is 
some "needs" like zone transfer, dumping statistics so on,
then BIND blocks and if the time taken for those operations is bigger 
than 3 seconds, it tries to drain the udp buffer.
But it only satisfies 500 requests and drop all the others. 500 is good 
for 32KB recv buffer(500*64 ~= 32 KB), but I think most
BIND uses bigger buffer than that. But this seems not related with the 
problems I see, because my request rate is 200/sec.

Is there anyone who's familar with BIND's interaction with high requests?
Or, any reasonable guessing is greatly appreciated!

Thanks,
KyoungSoo









More information about the bind-users mailing list