All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Menno Smits <menno@netboxblue.com>
Cc: netfilter-devel@lists.netfilter.org
Subject: Re: conntrack table filling up due to missing ACKs near the end of a TCP session
Date: Fri, 30 Jun 2006 16:53:11 +0200	[thread overview]
Message-ID: <44A53AD7.9000007@trash.net> (raw)
In-Reply-To: <44A53301.1090603@netboxblue.com>

Menno Smits wrote:
> Hi all,
> 
> I'm seeing a problem on a customer box that acts as a primary MX and is
>  running netfilter. The secondary MXs (run by the ISP) appear to be
> broken and cause the conntrack table on the primary MX to fill up.
> 
> What happens is this:
> 
> - secondary connects to deliver mail
> - connection is established and SMTP conversation takes place
> - secondary issues QUIT
> - primary sends response "221 Bye"
> - primary sends FIN
> - secondary sends FIN
> - primary ACKs FIN from secondary
> 
> The secondary never ACKs the last data packet ("221 Bye") or FIN sent by
> the primary. Later the primary retries the "221 Bye" packets several
> times. Interestingly the secondary also sends a Keep-Alive soon after it
> sends it's FIN.
> 
> This happens for every inbound connection from the secondaries and the
> result is 1000's of ESTABLISHED entries with 5 day timeouts in the
> conntrack table. The table eventually fills up causing packet loss. The
> conntrack entries are all of the form:
> 
> tcp      6 24826 ESTABLISHED src=pri.ma.ry.ip dst=sec.ond.ary.ip
> sport=25 dport=54334 packets=3 bytes=183 [UNREPLIED] src=sec.ond.ary.ip
> dst=pri.ma.ry.ip sport=54334 dport=25 packets=0 bytes=0 mark=0 use=1
> 
> The primary is blocking packets that aren't NEW, ESTALISHED or RELATED.
> This could be contributing to the problem but I haven't looked closely
> at this.

If you look at the byte counters, the connection seems to consist
only of three packets sent by the primary. I guess one of them
was an ACK, which through connection pick-up places the conntrack
in ESTABLISHED state. The first question would be why they're not
properly associated with the real connection. Please try
"echo 255 > /proc/net/ipv4/netfilter/ip_conntrack_log_invalid".
As a work-around you could disable connection pickup or drop
outgoing TCP packets with state NEW but no SYN.

  reply	other threads:[~2006-06-30 14:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-30 14:19 conntrack table filling up due to missing ACKs near the end of a TCP session Menno Smits
2006-06-30 14:53 ` Patrick McHardy [this message]
2006-07-03 17:07   ` Menno Smits
2006-07-03 18:19     ` Patrick McHardy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=44A53AD7.9000007@trash.net \
    --to=kaber@trash.net \
    --cc=menno@netboxblue.com \
    --cc=netfilter-devel@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.