Date: Wed, 8 Aug 2012 18:47:51 -0700 From: Learner Study <learner.study@gmail.com> To: freebsd-net@freebsd.org Cc: Learner Study <learner.study@gmail.com> Subject: TCP: Out of order RST handling Message-ID: <CAP8%2BhKW3b9xP%2BcRvCJrtV4bHdfKh0FbGB4%2BUthLvBFgfb_W_ow@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Greetings, I've a question on out of order RSTs handling... Assume a TCP session between node #1 and node #2 and there is some data transfer happening in both directions. Assume there are some pkt drops happening also in the direction of node #1 to node #2. node #1 sends a RST but seq number of RST happens to be out of order. Per the seq/last_ack/rcv_nxt checks in tcp_input.c, depending on if the seqnum is in the window, the RST may be dropped. Assume, due to various checks, RST is dropped. TCP state machine of Node #2 doesn't know about this dropped RST and would keep the session alive. Node #1 sends another RST, which is dropped again inside node #2 due to various OOO checks...and this keeps going on. Such TCP sessions on node #2 stay for ever....node #1 won't reTx any dropped pkts, so I'm not sure of the recovery from this state. Could someone let me know how is node #2 supposed to recover. Due to continuous RST traffic, Keepalive timer gets reset also...so that won't kick-in also... Thank You.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAP8%2BhKW3b9xP%2BcRvCJrtV4bHdfKh0FbGB4%2BUthLvBFgfb_W_ow>