Sockets stuck in SYN_RCVD (re(4), RELENG_7, i386)

Oliver Fromme olli at lurza.secnetix.de
Wed Nov 21 01:56:28 PST 2007


Pyun YongHyeon wrote:
 > On Tue, Nov 20, 2007 at 04:19:18PM +0100, Oliver Fromme wrote:
 > > Some additional information.
 > > 
 > > Today I have run the re(4) interface at 100 Mbps for a few
 > > hours.  The count did still increase, so it's not a GigE-
 > > only problem.
 > > 
 > > The I disabled RXCSUM,TXCSUM on the interface.  Again, the
 > > counter still increased.  So hardware checksumming isn't
 > > the cause of the problem either.
 > > 
 > > Anything else I could try?
 > 
 > re(4) is not smart enough to analyze packet payload. The hardware
 > also doesn't have a feature like TCP header split so I think re(4)
 > wouldn't have influence with TCP traffics by itself.

I see.  So it does not seem to be a bug in re(4).

My first suspect were the IPFW rules.  But they're quite
simple (only 20 rules) and I'm sure they're correct.
Apart from that, if it was a faulty rule that blocks
SYN+ACK packets or similar, then no TCP connections would
work at all.  And even in that case, the default timeout
for SYN_RCVD is very short (45 seconds I think), but not
several days.

So my current suspect is a bug in the syncache code.
That bug is probably triggered by something exceptional,
because I don't see the problem on any other machine,
not even on the one which is almost identical in hardware
and OS.

I would like to ask everybody to have a look at the
output from "sysctl net.inet.tcp.syncache.count".
Does anybody else have a non-zero value that slowly
increases?  If so, it would be interesting to find out
if there are any similarities with my machine.

 > Your dmesg indicates that you're using slightly old rgephy(4) on 7.0.
 > I touched rgephy(4) to support a newer PHY and fixed several bugs. If
 > speed/duplex mismatch was the cause of the issue you can see lots
 > of input errors from the output of "netstat -ndi" output. If so, try
 > latest rgephy(4).

I don't think that's the cause.  I tried with and without
auto-select, forcing the interface to 100 and GigE, and
all of that did not affect the behaviour at all.  The
error counters are all zero:

Name  Mtu Network  Address    Ipkts Ierrs    Opkts Oerrs  Coll Drop
re0  1500 <Link#1> [...]   28363007     0 25430349     0     0    0

 > > > net.inet.tcp.syncache.count: 702
 > > 
 > > It's now at 731.

And now at 832.  So it grows by more than 100 entries per
day.

Best regards
   Oliver

-- 
Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M.
Handelsregister: Registergericht Muenchen, HRA 74606,  Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün-
chen, HRB 125758,  Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart

FreeBSD-Dienstleistungen, -Produkte und mehr:  http://www.secnetix.de/bsd

 > Can the denizens of this group enlighten me about what the
 > advantages of Python are, versus Perl ?
"python" is more likely to pass unharmed through your spelling
checker than "perl".
        -- An unknown poster and Fredrik Lundh


More information about the freebsd-current mailing list