netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* iptables-nft fails to restore huge rulesets
@ 2021-03-31  9:13 Phil Sutter
  2021-03-31 13:35 ` Florian Westphal
  0 siblings, 1 reply; 6+ messages in thread
From: Phil Sutter @ 2021-03-31  9:13 UTC (permalink / raw)
  To: Pablo Neira Ayuso, Florian Westphal; +Cc: netfilter-devel

Hi,

I'm currently trying to fix for an issue in Kubernetes realm[1]:
Baseline is they are trying to restore a ruleset with ~700k lines and it
fails. Needless to say, legacy iptables handles it just fine.

Meanwhile I found out there's a limit of 1024 iovecs when submitting the
batch to kernel, and this is what they're hitting.

I can work around that limit by increasing each iovec (via
BATCH_PAGE_SIZE) but keeping pace with legacy seems ridiculous:

With a scripted binary-search I checked the maximum working number of
restore items of:

(1) User-defined chains
(2) rules with merely comment match present
(3) rules matching on saddr, daddr, iniface and outiface

Here's legacy compared to nft with different factors in BATCH_PAGE_SIZE:

legacy		32 (stock)	  64		   128          256
----------------------------------------------------------------------
1'636'799	1'602'202	- NC -		  - NC -       - NC -
1'220'159	  302'079	604'160		1'208'320      - NC -
3'532'040	  242'688	485'376		  971'776    1'944'576

At this point I stopped as the VM's 20GB RAM became the limit
(iptables-nft-restore being OOM-killed instead of just failing).

What would you suggest? Should I just change BATCH_PAGE_SIZE to make it
"large enough" or is there a better approach?

Cheers, Phil

[1] https://github.com/kubernetes/kubernetes/issues/96018

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-04-01 17:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-31  9:13 iptables-nft fails to restore huge rulesets Phil Sutter
2021-03-31 13:35 ` Florian Westphal
2021-03-31 14:41   ` Phil Sutter
2021-03-31 20:51     ` Pablo Neira Ayuso
2021-04-01 10:30       ` Phil Sutter
2021-04-01 11:44         ` Pablo Neira Ayuso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).