Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Apr 2004 17:54:43 -0400 
From:      Don Bowman <don@sandvine.com>
To:        'Brandon Erhart' <berhart@ErhartGroup.COM>, freebsd-net@freebsd.org
Subject:   RE: FIN_WAIT_[1,2] and LAST_ACK
Message-ID:  <FE045D4D9F7AED4CBFF1B3B813C85337045D888F@mail.sandvine.com>

next in thread | raw e-mail | index | archive | help
From: Brandon Erhart [mailto:berhart@ErhartGroup.COM]
> Hello everyone,
> 
> I am writing a network application that mirrors a given 
> website (such as a 
> suped-up "wget"). I use a lot of FDs, and was getting 
> connect() errors when 
> I would run out of local_ip:local_port tuples. I lowered the 
> MSL so that 
> TIME_WAIT would timeout very quick (yes, I know, this is 
> "bad", but I'm 
> going for sheer speed here), and it alleviated the problem a bit.
> 
> However, I have run into a new problem. I am getting a good amount of 
> blocks stuck in FIN_WAIT_1, FIN_WAIT_2 or LAST_ACK that stick 
> around for a 
> long while. I have been unable to find must information on a 
> timeout for 
> these states. I came across a small patch that modified 
> tcp_timer.c in 
> /usr/src/sys/netinet. It changed line #484 (in FreeBSD 4.9-REL) from:
> 
> if (tp->t_state != TCPS_TIME_WAIT &&
> 
> to
> 
> if (tp->t_state < FIN_WAIT_2 &&
> 
> I also tried changing that to ".. <= FIN_WAIT_2 .."
> 
> However, I still end up with quite a few stuck in FIN_WAIT_1, 
> FIN_WAIT_2 or 
> LAST_ACK after the program exits (and whilst the program is 
> running of 
> course). They don't seem to timeout in the same interval that 
> TIME_WAIT does.
> 
> Any ideas? Did I modify the right piece of code? I was told 
> to post here as 
> you all would more than likely know!
> 

Perhaps you want to lower net.inet.tcp.msl sysctl?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FE045D4D9F7AED4CBFF1B3B813C85337045D888F>