This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Retry mechanism w/ DNS Format Error?


I noticed an "interesting" problem after Bind had been updated from 9.2.4 to 9.3.0: as the bitstring label support was removed, the server started returning "Format Error" error code for bitstring v6 reverse queries which, for example, RHL9 makes.

Now, apparently the RHL9 resolver code cannot cope with FormErr code quickly, but has to resort to timeouts. (I've been unable to verify this on a newer glibc because it no longer creates the bitstring queries, but I have looked at the code in CVS and unless I'm mislooking, it might be affected.)

Please take a look at the following tcpdump log, where is the only name server in resolv.conf.

08:01:37.601520 IP >  6437+ PTR? \[x20010708001000400207e9fffe7b0259/128] (44)
08:01:37.601938 IP >  6437 FormErr- [0q] 0/0/0 (12)
08:01:42.605829 IP >  6437+ PTR? \[x20010708001000400207e9fffe7b0259/128] (44)
08:01:42.606267 IP >  6437 FormErr- [0q] 0/0/0 (12)
08:01:47.616753 IP >  6438+ PTR? (89)
08:01:47.617910 IP >  6438 1/2/2 PTR (203)

The problem here is the timeouts between queries. Apparently, 10 seconds gets wasted when each server is asked twice about a name that has been deprecated and the server no longer wants to know how to parse.

Would it make sense to have a different failure strategy? Could one just skip to the next name or server _immediately_ (without the 2*5 sec timeout) upon receiving FormErr?

Pekka Savola                 "You each name yourselves king, yet the
Netcore Oy                    kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]