Slow name-server lookups

Richard B. Johnson (root@chaos.analogic.com)
Mon, 1 Mar 1999 13:33:07 -0500 (EST)


Hello..

In trying to locate the reason for slow nameserver lookups using
V2.2.2, I find:

This is what nslookup does. It use UDP which is connectionless, saving
the time for a 'connection' to be established and its attendent overhead.

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
sendto(3, "\232\331\1\0\0\1\0\0\0\0\0\0\003"...,
45, 0, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("204.178.40.210")}, 16) = 45
SYS_142(0x4, 0xbfffeb54, 0, 0, 0xbfffe918) = 1
recvfrom(3, "\232\331\205\200\0\1\0\1\0\1\0\1"...,
1024, 0, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("204.178.40.210")}, [16]) = 143
close(3) = 0

This is what glibc-2.0.6 gethostbyname() does.

socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("204.178.40.210")}, 16) = 0
send(3, "K\32\1\0\0\1\0\0\0\0\0\0\ngfils-"..., 41, 0) = 41
SYS_142(0x4, 0xbfffe3f0, 0, 0, 0xbfffe3dc) = 1
recvfrom(3, "K\32\205\200\0\1\0\1\0\1\0\1\ngf"...,
1024, 0, {sin_family=AF_INET, sin_port=htons(53),
sin_addr=inet_addr("204.178.40.210")}, [16]) = 110
close(3) = 0

It takes time to establish a connection. Looking at the glibc-2.0.6 code
I see that the 'connection' is a trick to get a 'connection-refused'
message from the server if a nameserver isn't running on the respective
host. So glibc-2.0.6 compromises the speed of nameserver lookups as a
debugging convenience for those who failed to enter the correct
name-server IP address in their configuration files???

In the case of the current problem, I observe that it is the connection
that takes a long time, not the UDP datagram messages which run through
at millisecond intervals just fine.

Cheers,
Dick Johnson
***** FILE SYSTEM WAS MODIFIED *****
Penguin : Linux version 2.2.2 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
Wisdom : It's not a Y2K problem. It's a Y2Day problem.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/