[CRIU] [PATCH] tcp: add an ability to dump and restore window parameters

David Miller davem at davemloft.net
Thu Jun 30 05:16:07 PDT 2016


From: Andrey Vagin <avagin at openvz.org>
Date: Mon, 27 Jun 2016 15:33:56 -0700

> We found that sometimes a restored tcp socket doesn't work.
> 
> A reason of this bug is incorrect window parameters and in this case
> tcp_acceptable_seq() returns tcp_wnd_end(tp) instead of tp->snd_nxt. The
> other side drops packets with this seq, because seq is less than
> tp->rcv_nxt ( tcp_sequence() ).
> 
> Data from a send queue is sent only if there is enough space in a
> window, so when we restore unacked data, we need to expand a window to
> fit this data.
> 
> This was in a first version of this patch:
> "tcp: extend window to fit all restored unacked data in a send queue"
> 
> Then Alexey recommended me to restore window parameters instead of
> adjusted them according with data in a sent queue. This sounds resonable.
> 
> rcv_wnd has to be restored, because it was reported to another side
> and the offered window is never shrunk.
> One of reasons why we need to restore snd_wnd was described above.
> 
> Cc: Pavel Emelyanov <xemul at parallels.com>
> Cc: "David S. Miller" <davem at davemloft.net>
> Cc: Alexey Kuznetsov <kuznet at ms2.inr.ac.ru>
> Cc: James Morris <jmorris at namei.org>
> Cc: Hideaki YOSHIFUJI <yoshfuji at linux-ipv6.org>
> Cc: Patrick McHardy <kaber at trash.net>
> Signed-off-by: Andrey Vagin <avagin at openvz.org>

Applied to net-next, thanks.


More information about the CRIU mailing list