Date: Tue, 3 Jun 2014 17:53:50 -0400 From: suraj sandhu <surajsandhu.bsd@gmail.com> To: freebsd-net@freebsd.org Subject: Query regarding net.inet.tcp.nolocaltimewait Message-ID: <CAAFvPEFAhq87KbL2OiX=0PHy=_Zo0G1omCLxi6%2BO3b4Owya0dg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, I am using FreeBsd 8.2 and the behavior I am trying to understand is why there is no final ACK being sent by the client if net.inet.tcp.nolocaltimewait is set. Due to this server side communication need to rely upon receiving the RST for clean-up. Especially in the cases where client port is reused soon after the the connection being closed, additional resets are triggered. 198 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L198> void 199 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L199> tcp_twstart <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tcp_twstart>(struct tcpcb <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tcpcb> *tp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tp>) 200 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L200> { 201 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L201> struct tcptw <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tcptw> *tw; 202 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L202> struct inpcb <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inpcb> *inp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inp> = tp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tp>->t_inpcb; 203 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L203> int acknow; 204 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L204> struct socket <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=socket> *so <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=so>; 205 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L205> 206 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L206> INP_INFO_WLOCK_ASSERT <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=INP_INFO_WLOCK_ASSERT>(&V_tcbinfo <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=V_tcbinfo>); */* tcp_tw_2msl_reset(). */* 207 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L207> INP_WLOCK_ASSERT <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=INP_WLOCK_ASSERT>(inp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inp>); 208 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L208> 209 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L209> if (V_nolocaltimewait <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=V_nolocaltimewait> && in_localip <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=in_localip>(inp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inp>->inp_faddr <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inp_faddr>)) { 210 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L210> tp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tp> = tcp_close <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tcp_close>(tp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tp>);<==== Closing the connection without sending Final ACK. 211 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L211> if (tp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=tp> != NULL <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=NULL>) 212 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L212> INP_WUNLOCK <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=INP_WUNLOCK>(inp <http://fxr.watson.org/fxr/source/netinet/ident?v=FREEBSD82;i=inp>); 213 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L213> return; 214 <http://fxr.watson.org/fxr/source/netinet/source/netinet/tcp_timewait.c?v=FREEBSD82#L214> } ... ... I will really appreciate any feedback on it. -Suraj
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAAFvPEFAhq87KbL2OiX=0PHy=_Zo0G1omCLxi6%2BO3b4Owya0dg>