Skip site navigation (1)Skip section navigation (2)
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>