Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Aug 2014 15:50:31 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-net@freebsd.org
Cc:        David Bar <david.bar@gmail.com>
Subject:   Re: Question about tcp keep-alive timer
Message-ID:  <201408111550.31642.jhb@freebsd.org>
In-Reply-To: <CAM4OgwywTtkFQaCiaj1TGxSOZRF9PHGiaKugr-MCUhC3VKNeSg@mail.gmail.com>
References:  <CAM4OgwywTtkFQaCiaj1TGxSOZRF9PHGiaKugr-MCUhC3VKNeSg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday, August 10, 2014 4:09:55 pm David Bar wrote:
> Hi
> 
> 
> (Forgive me if this topic has been discussed before. I didn't find it in
> the archives)
> 
> In tcp_input(), when a packet is received on an established socket the code
> re-arms the keep-alive timer, for each packet.
> Here:
> 
https://svnweb.freebsd.org/base/release/10.0.0/sys/netinet/tcp_input.c?revision=260789&view=markup#l1518
> 
> Isn't this a waste to do this for each packet?
> 
> The setting of the timer when the connection becomes established should
> suffice if there was a small change in tcp_timer_keep().
> If tcp_timer_keep() would first checks if tp->t_rcvtime is recent (newer
> than the TT_KEEPIDLE time), and would just re-arm the timer to go off
> later, then we would keep the same functionality.
> 
> I can't think of any downsides to this idea. Any good reason why this
> hasn't been done before?

I think it is just a tradeoff between having the timer run at all.  However, I 
suspect that with high packet rates it probably is cheaper to have the timer 
run periodically and reschedule itself if it notices it isn't needed as you 
suggested.  Do you want to write up a patch and test it?

-- 
John Baldwin



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