Linux Netfilter development
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Trevor Cordes <netfilter@tecnopolis.ca>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: expose named set element count
Date: Tue, 20 Oct 2026 18:51:39 +0200	[thread overview]
Message-ID: <atecG6WNYa6Y2kLL@chamomile> (raw)
In-Reply-To: <ateYUFIPFZshosqX@chamomile>

On Tue, Oct 20, 2026 at 06:35:31PM +0200, Pablo Neira Ayuso wrote:
> On Tue, Oct 20, 2026 at 08:17:44AM -0500, Trevor Cordes wrote:
> > Hi!  I have an application that can create very large named sets
> > (dynamically) of IPs.  For monitoring and testing purposes it is useful to
> > get a count of elements currently in a set.
> > 
> > Currently I an running "nft list table inet mytable |wc".  But once the ip
> > set grows to much over 100k IPs, that command can take around 90 minutes
> > on my system!  During that time the nft command takes 98% CPU.  That makes
> > monitoring in this manner nearly impossible.
> > 
> > I think the in-kernel code tracks the current number of elements.  Can we
> > expose this through the Netlink interface so users can get an instant
> > count of elements with virtually 0 CPU usage?  (Note, I'm not talking the
> > "size" data point, I'm talking the actual IPs currently in the set.)
> > 
> > Less importantly, I'm wondering what is making nft take so long to list
> > these huge sets.  Maybe the IP numeric sorting and formatting?  If it's
> > all the sorting, maybe an nft option to disable sorting would help?  Or an
> > option to disable formatting and have nft just dump the whole wad of IPs
> > on one line per set?
> > 
> > Thanks so much.  Please CC: my on replies because I'm not sure my
> > subscribe request is working or going anywhere.  The listserv may not like
> > my mail smarthost.
> 
> There is a count field in more recent userspace nft and kernels, what
> nft and kernel versions are you running?

nft list ruleset
table ip t {
        set s {
                type ipv4_addr
                size 10 # count 1
                counter
                elements = { 1.1.1.1 counter packets 1 bytes 11 }
        }
}

Userspace supports is available since nftables 1.1.5:
$ git describe --contains 8ff87c8fd483eb3fdab5839cccaf100b593fe92e
v1.1.4~48

And Linux kernel needs to >= v6.17:
$ git describe --contains 0014af802193a
v6.16-rc1~132^2~190^2

      reply	other threads:[~2026-10-20 16:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-20 13:17 expose named set element count Trevor Cordes
2026-10-20 16:35 ` Pablo Neira Ayuso
2026-10-20 16:51   ` Pablo Neira Ayuso [this message]

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=atecG6WNYa6Y2kLL@chamomile \
    --to=pablo@netfilter.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=netfilter@tecnopolis.ca \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox