Re: ESTABLISHED tcp conntrack timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pablo,

Thanks very much for your reply. I will describe the test later. Could
you please let me know more clearly in case the TCP_CONNTRACK_UNACK is
set if
IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED is set? Does it indicate some UNACK
packets due to network congestion, but eventually the ACK is sent, so
no packet restransmission happens. Actually I did not see any packet
restransmission in my wireshark trace.

Best regards,
Naruto

<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Virus-free. www.avg.com
<http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>

On Thu, 11 Apr 2019 at 17:21, Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> wrote:
>
> Hi,
>
> Dropping Cc to netdev and netfilter, no need to Cc everyone :-)
>
> On Wed, Apr 10, 2019 at 05:47:35PM +0700, Naruto Nguyen wrote:
> > Hello everyone,
> >
> > When duplicating tcp conntrack from main name space to another network
> > namespace, I see that sometimes timeout value for an established tcp
> > connection in another network namespace has been changed from 432000
> > to 300 like below, even it is in ASSURED
> >
> > 03:05:53.773
> > tcp      6 300 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:05:56.018
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:05:58.267
> > tcp      6 300 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:00.511
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:02.767
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:05.024
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:07.318
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:09.578
> > tcp      6 431999 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:11.833
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:14.082
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:16.315
> > tcp      6 299 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:25.314
> > tcp      6 431999 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:27.571
> > tcp      6 431999 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:29.815
> > tcp      6 431999 ESTABLISHED src=10.172.1.6 dst=11.35.4.5 sport=70752
> > dport=7050 src=11.35.4.5 dst=10.172.1.6 sport=7050 dport=70752
> > [ASSURED] mark=0 use=1
> > 03:06:32.065
> >
> > In nf_conntrack_proto_tcp.c, I see that 2 constants have 5 mins set
> >
> > [TCP_CONNTRACK_RETRANS] = 5 MINS,
> > [TCP_CONNTRACK_UNACK] = 5 MINS,
> >
> > and the code
> >
> > if (ct->proto.tcp.retrans >= tn->tcp_max_retrans &&
> >        timeouts[new_state] > timeouts[TCP_CONNTRACK_RETRANS])
> >        timeout = timeouts[TCP_CONNTRACK_RETRANS];
> > else if ((ct->proto.tcp.seen[0].flags | ct->proto.tcp.seen[1].flags) &
> >        IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
> >        timeouts[new_state] > timeouts[TCP_CONNTRACK_UNACK])
> >        timeout = timeouts[TCP_CONNTRACK_UNACK];
> > else
> >        timeout = timeouts[new_state];
> >
> > but I am not sure this code cause the above issue. For the second
> > TCP_CONNTRACK_UNACK, it only happens for [UNREPLIED] instead of
> > [ASSURED]. Could you please let me know how the time out value can be
> > changed for an established tcp connection and how to prevent this
> > change?
>
> Probably you're seeing retransmission, did you have a look at packet
> traces?
>
> Could you describe you testbed, your kernel, and so on?
>
> Thanks.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux