Files
linux/include/net
Florian Westphal e1bf168774 netfilter: nat: Revert "netfilter: nat: convert nat bysrc hash to rhashtable"
This reverts commit 870190a9ec.

It was not a good idea. The custom hash table was a much better
fit for this purpose.

A fast lookup is not essential, in fact for most cases there is no lookup
at all because original tuple is not taken and can be used as-is.
What needs to be fast is insertion and deletion.

rhlist removal however requires a rhlist walk.
We can have thousands of entries in such a list if source port/addresses
are reused for multiple flows, if this happens removal requests are so
expensive that deletions of a few thousand flows can take several
seconds(!).

The advantages that we got from rhashtable are:
1) table auto-sizing
2) multiple locks

1) would be nice to have, but it is not essential as we have at
most one lookup per new flow, so even a million flows in the bysource
table are not a problem compared to current deletion cost.
2) is easy to add to custom hash table.

I tried to add hlist_node to rhlist to speed up rhltable_remove but this
isn't doable without changing semantics.  rhltable_remove_fast will
check that the to-be-deleted object is part of the table and that
requires a list walk that we want to avoid.

Furthermore, using hlist_node increases size of struct rhlist_head, which
in turn increases nf_conn size.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=196821
Reported-by: Ivan Babrou <ibobrik@gmail.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
2017-09-08 18:55:50 +02:00
..
2017-07-11 06:08:58 -04:00
2017-04-05 10:15:20 +02:00
2017-04-24 12:35:56 -04:00
2016-07-08 12:20:57 +02:00
2016-04-25 16:44:27 -04:00
2016-04-25 16:44:27 -04:00
2016-06-09 23:41:03 -07:00
2015-03-06 21:50:02 -05:00
2017-08-31 14:42:19 -07:00
2015-09-17 17:18:37 -07:00
2016-02-16 20:21:48 -05:00
2017-04-14 10:06:42 +02:00
2016-05-20 18:03:16 -04:00
2016-04-27 22:48:25 -04:00
2017-02-03 15:16:45 -05:00
2017-06-15 12:12:40 -04:00
2016-08-17 19:36:23 -04:00
2016-10-03 02:00:22 -04:00
2016-07-08 12:20:57 +02:00
2016-03-23 22:09:58 -04:00
2016-12-25 17:21:22 +01:00
2017-01-09 16:07:41 -05:00
2015-03-12 22:58:12 -04:00
2017-06-15 12:12:40 -04:00
2016-05-03 16:08:14 -04:00