One of our applications uses a cross-platform TCP connectivity layer. That layer has a connectivity stress-test. The test launches about 20 client threads and about 20 server threads; then each client does a connect/small-data-exchange/close with several randomly chosen server threads.
The test is done for all four connectivity variants (IPv4 to ipv4, ipv6 to ipv6, ipv4 to dual-mode, and ipv6 to dual-mode). It passes on everywhere except on one particular 64-bit Linux machine four machines all of which are running Redhat 2.6.18-8.el5. IPv4 connectivity (both to ipv4 and to dual-mode) passes on this machine these machines, but IPv6 can only handle about a tenth of what it should be able to. Its gets mostly timeout errors, with a few connection-reset errors.
CPU, memory, descriptors, etc. are not the issue. I've reviewed the network settings on this machine, nothing seems to have been messed with.
Using localhost vs host name changes nothing. (In particular, I'm ruling out a faulty network card, as it fails on loop-back.)
netstat shows nothing unusual. (A lot of sockets in TIME_WAIT, but that's expected given the nature of the test.)
I'd appreciate any thoughts on what the issue could be.