All of lore.kernel.org
 help / color / mirror / Atom feed
From: don-nf@isis.cs3-inc.com (Don Cohen)
To: netfilter-devel@lists.samba.org
Subject: Re: performance issues (nat / conntrack)
Date: Tue, 25 Jun 2002 10:00:47 -0700	[thread overview]
Message-ID: <15640.41407.432907.402311@isis.cs3-inc.com> (raw)
In-Reply-To: <20020625151007.980D14140@lists.samba.org>

 > From: "Jean-Michel Hemstedt" <jean-michel.hemstedt@alcatel.be>
 > I suppose that due to the load, packets are dropped not because of conntrack
 > but because they simply can't be processed, and thus conntrack misses packets
 > of existing connections (such as FIN, RST) and can't thus recover due to its 
 > timeouts.

But I believe that conntrack is exactly what's causing the load.  If
the machine is busy creating connections then it's clearly going to
lose packets.  I imagine that the packets that are dropped are those
arriving at full queues.  So fin's and rst's could very well be
dropped if they arrive on interfaces that are receiving lots of other
stuff while the cpu is busy building conntrack records.

 > From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
 > > We don't even need to have a full table to get into troubles. If at one
 > > point, the vast majority of the conntrack entries are unused, but still
 > > in hash, then you get more and more collisions, which decreases the
 > > hash efficiency.
 > 
 > What kind of collisions? Do you mean, that we end up in the same hash
 > entry and the linked list in the entry becomes too long? There is not much
 > wizardy we can do about it:

Not true.  See my proposed bucket size limit.  I hope to find some
formulae to post on this later.

 > - increase the hash size (i.e buy more RAM) if the hash is small
 > - create better hash function, if one can deliberately hit the same entry.
 > 
 > By the way, so far nobody has ever proved that the hash function is
 > not good enough.

I suspect the hash function is fine.  I propose to insert code that
does printk whenever a bucket size exceeds some threshold and then
invite all the readers of this list to try it and report their
results.  Obviously an attacker can arrange to attack one bucket,
but I think the solution is limiting the size of each bucket.
He still has no way of attacking a particular client/server pair or
a particular client or particular server.

 > > There's another side effect: when the system get's loaded (because of
 > > hash exhaustion or hash collisions), it can't process all packets arriving
 > > which means that conntrack will not see some FIN or RST packets allowing
 > > it to recover... This is a kind of 'vicious circle', or point of failure.
 > 
 > This is not true. If those FIN/RST packets belong to already existing
 > connections, then those are in the conntrack hash and data can be updated.
 > If those packets do not belong to an existing connection, then either they
 > can create a new entry and we are fine, or conntrack is full and the
 > packets will be dropped - we are fine again.

I think what happens is that it's not hash collisions but conntrack
record creation that takes a long time, and that pretty much all
packets are likely to be lost when the cpu is saturated with that
activity.  In that case it's true that connections are not garbage
collected as fast as they should be.

 > From: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
 > If conntrack missed packets such a way, then the destination would miss as
 > well and the sender should resend them. No problem.

Other than the delay.  And if there's a high probability of drop then
you get multiple delays, with each delay being longer than the last.

       reply	other threads:[~2002-06-25 17:00 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20020625151007.980D14140@lists.samba.org>
2002-06-25 17:00 ` Don Cohen [this message]
2002-06-25 21:47   ` performance issues (nat / conntrack) Jean-Michel Hemstedt
2002-06-26 14:50     ` Harald Welte
2002-06-26 18:04       ` Jean-Michel Hemstedt
     [not found] <20020623132739.12D52455E@lists.samba.org>
2002-06-24  4:46 ` Don Cohen
2002-06-24  6:06   ` Patrick Schaaf
     [not found]     ` <15638.48245.84830.480715@isis.cs3-inc.com>
2002-06-24  6:48       ` Patrick Schaaf
2002-06-24  6:54         ` Don Cohen
2002-06-24  7:13           ` Patrick Schaaf
2002-06-24 15:18             ` Don Cohen
2002-06-25  2:44               ` Harald Welte
     [not found] <20020621132640.2C326472B@lists.samba.org>
2002-06-21 17:35 ` Don Cohen
2002-06-21 18:26   ` Jean-Michel Hemstedt
2002-06-23  9:14   ` Jean-Michel Hemstedt
2002-06-25 10:38     ` Jozsef Kadlecsik
2002-06-25 11:11       ` Jean-Michel Hemstedt
2002-06-25 11:48         ` Jozsef Kadlecsik
2002-06-20 19:48 Jean-Michel Hemstedt
2002-06-22 16:51 ` Harald Welte
2002-06-23  9:15   ` Jean-Michel Hemstedt
2002-06-25 11:33     ` Jozsef Kadlecsik
2002-06-25 12:47       ` Harald Welte
2002-06-25 14:23         ` Jozsef Kadlecsik
     [not found]         ` <025001c21c50$763fa880$0489cb8a@etbx180>
2002-06-25 16:07           ` Harald Welte
2002-06-25 21:08         ` Jozsef Kadlecsik
2002-06-25 13:21       ` Jean-Michel Hemstedt
2002-06-25 13:51         ` Harald Welte
2002-06-25 14:33           ` Jozsef Kadlecsik
2002-06-25 14:51           ` Jean-Michel Hemstedt
2002-06-25 16:11             ` Harald Welte
2002-06-25 13:52         ` Patrick Schaaf
2002-06-25 14:53         ` Jozsef Kadlecsik
2002-06-25 15:22           ` Balazs Scheidler
2002-06-25 10:35 ` Jozsef Kadlecsik
2002-06-25 12:42   ` Jean-Michel Hemstedt
2002-06-25 13:50     ` Patrick Schaaf
2002-06-25 19:03       ` Harald Welte
2002-06-25 13:56     ` Alex Bennee
2002-06-25 14:17     ` Jozsef Kadlecsik
2002-06-25 15:13       ` Balazs Scheidler
2002-06-25 19:06         ` Harald Welte
2002-06-26  8:18           ` Balazs Scheidler
2002-06-27  2:21       ` Andrew Smith
2002-06-27 11:24         ` Harald Welte
2002-06-29  5:25           ` Andrew Smith
2002-06-25 19:01     ` Harald Welte

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=15640.41407.432907.402311@isis.cs3-inc.com \
    --to=don-nf@isis.cs3-inc.com \
    --cc=netfilter-devel@lists.samba.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.