Re: NAT stops forwarding ACKs after PMTU discovery

Eric Dumazet
2013-08-19T00:03:12Z

On Sun, 2013-08-18 at 17:00 -0700, Eric Dumazet wrote:

> Code like this seems very suspect to me :
>
> before(sack, receiver->td_end + 1)
>

My suggestion would be to try :

diff --git a/net/netfilter/nf_conntrack_proto_tcp.c b/net/netfilter/nf_conntrack_proto_tcp.c
index 2f80107..1862902 100644
--- a/net/netfilter/nf_conntrack_proto_tcp.c
+++ b/net/netfilter/nf_conntrack_proto_tcp.c
@@ -656,12 +656,12 @@ static bool tcp_in_window(const struct nf_conn *ct,
pr_debug("tcp_in_window: I=%i II=%i III=%i IV=%i\n",
before(seq, sender->td_maxend + 1),
(in_recv_win ? 1 : 0),
- before(sack, receiver->td_end + 1),
+ before(sack, receiver->td_end + MAXACKWINDOW(sender) + 1),
after(sack, receiver->td_end - MAXACKWINDOW(sender) - 1));

if (before(seq, sender->td_maxend + 1) &&
in_recv_win &&
- before(sack, receiver->td_end + 1) &&
+ before(sack, receiver->td_end + MAXACKWINDOW(sender) + 1) &&
after(sack, receiver->td_end - MAXACKWINDOW(sender) - 1)) {
/*
* Take into account window scaling (RFC 1323).