Skip to content

Commit c77737b

Browse files
edumazetummakynes
authored andcommitted
netfilter: conntrack: adopt safer max chain length
Customers using GKE 1.25 and 1.26 are facing conntrack issues root caused to commit c9c3b68 ("netfilter: conntrack: make max chain length random"). Even if we assume Uniform Hashing, a bucket often reachs 8 chained items while the load factor of the hash table is smaller than 0.5 With a limit of 16, we reach load factors of 3. With a limit of 32, we reach load factors of 11. With a limit of 40, we reach load factors of 15. With a limit of 50, we reach load factors of 24. This patch changes MIN_CHAINLEN to 50, to minimize risks. Ideally, we could in the future add a cushion based on expected load factor (2 * nf_conntrack_max / nf_conntrack_buckets), because some setups might expect unusual values. Fixes: c9c3b68 ("netfilter: conntrack: make max chain length random") Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 4a02426 commit c77737b

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

net/netfilter/nf_conntrack_core.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ static DEFINE_MUTEX(nf_conntrack_mutex);
9696
#define GC_SCAN_MAX_DURATION msecs_to_jiffies(10)
9797
#define GC_SCAN_EXPIRED_MAX (64000u / HZ)
9898

99-
#define MIN_CHAINLEN 8u
100-
#define MAX_CHAINLEN (32u - MIN_CHAINLEN)
99+
#define MIN_CHAINLEN 50u
100+
#define MAX_CHAINLEN (80u - MIN_CHAINLEN)
101101

102102
static struct conntrack_gc_work conntrack_gc_work;
103103

0 commit comments

Comments
 (0)