All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pablo Neira <pablo@eurodev.net>
To: Harald Welte <laforge@netfilter.org>
Cc: Netfilter Development Mailinglist
	<netfilter-devel@lists.netfilter.org>,
	Patrick McHardy <kaber@trash.net>
Subject: Re: [PATCH 1/2] updates for [nf|ct]netlink and event API
Date: Thu, 30 Jun 2005 02:27:02 +0200	[thread overview]
Message-ID: <42C33C56.10708@eurodev.net> (raw)
In-Reply-To: <20050629201625.GY25641@sunbeam.de.gnumonks.org>

Harald Welte wrote:
> On Wed, Jun 29, 2005 at 09:52:52PM +0200, Patrick McHardy wrote:
> 
>>>So I think that we can group event, say:
>>>
>>>level 1 (weak):
>>>    - IPCT_NEW
>>>    - IPCT_DESTROY
>>>
>>>level 2 (normal):
>>>    - IPCT_NEW
>>>    - IPCT_UPDATE
>>>    - IPCT_STATUS
>>>    - ...
>>>    - IPCT_DESTROY
>>>
>>>At reserve some groups to let the user define some level whenever he
>>>wants. Although such level would be unique.
>>>
>>>OTOH, there are 10 events currently, why is that bad creating a group
>>>per event?
>>
>>I don't think its bad, but I fear hitting the 32 group limit some day.
>>Probably that fear is unfounded and we're never going to reach 32
>>different types of events. Harald, what do you think?
> 
> 
> I think it's not all that much of a problem.  I doubt that conntrack
> will get 22 more events anytime soon.  The other problem is, don't we
> overlap with other nfnetlink-based groups?
> 
> nfnetlink acts as a a multiplex between netlink and the higher layers,
> so I guess we only have 32groups for nfnetlink as a whole... and there
> is other stuff like ip_queue and ULOG that is to be ported on top of
> nfnetlink...

You're right, we can't do that. In short:

nfnetlink currently relies on the fact that is the user program that 
decides if a packet was sent to it or not. In case that it wasn't, the 
program drops it.

Say we've got ip_queue and ip_conntrack_netlink on top of nfnetlink: 
ip_queue sends a packet to user space and ip_conntrack_netlink sends 
event notifications. If both the ipqueue userspace program and 
libctnetlink are subscribed to the same group, they both will receive 
spam from each other.

To avoid this spamming situation, every subsystem could reserve just one 
group and user programs must get subscribed to the corresponding group 
that is interested in. In conclusion, nfnetlink would support up to 32 
subsystems but user space programs won't get spam from other subsystem.

So, back to ip_conntrack_netlink, we still have the performance issue 
with regards to the events. Userspace programs will decide if the event 
received is interesting for them or not.

a) We could extend netlink code with some kind of ioctl that sets a mask 
to say what kind of events are interesting for a given userspace program.

b) The fact that we can send events and nobody's listening to them is 
more difficult to catch up. Maybe a function that checks if there are 
listeners available before sending an event could help: In that case 
such function would be kind of racy because we can lose some messages 
while a userspace program is binding to a given netlink socket. This 
isn't that annoying, I prefer losing a couple of messages than hurting 
performance generating messages that won't be ever delivered.

--
Pablo

  reply	other threads:[~2005-06-30  0:27 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-27 18:02 [PATCH 1/2] updates for [nf|ct]netlink and event API Pablo Neira
2005-06-27 20:26 ` Harald Welte
2005-06-28  2:00   ` Pablo Neira
2005-06-28  2:12     ` Pablo Neira
2005-06-28  2:15       ` Pablo Neira
2005-06-28  3:53     ` Patrick McHardy
2005-06-28  7:07       ` Harald Welte
2005-07-04 12:59       ` Amin Azez
2005-06-28  7:06     ` Harald Welte
2005-06-27 21:31 ` Patrick McHardy
2005-06-28  2:15   ` Pablo Neira
2005-06-28  3:56     ` Patrick McHardy
2005-06-27 22:40 ` Patrick McHardy
2005-06-28  2:16   ` Pablo Neira
2005-06-28  4:03     ` Patrick McHardy
2005-06-28  7:13   ` Harald Welte
2005-06-28 16:02     ` Patrick McHardy
2005-06-29 19:13       ` Pablo Neira
2005-06-29 19:52         ` Patrick McHardy
2005-06-29 20:16           ` Harald Welte
2005-06-30  0:27             ` Pablo Neira [this message]
2005-06-30  0:53               ` Patrick McHardy
2005-06-30  9:47                 ` Pablo Neira
2005-06-30 21:30                   ` Patrick McHardy
2005-06-30  0:34           ` Pablo Neira
2005-06-30  1:00             ` Patrick McHardy
2005-06-30  1:49               ` Thomas Graf
2005-06-30  1:53                 ` Patrick McHardy
2005-06-30 12:03                   ` Thomas Graf
2005-06-30 13:27                     ` Patrick McHardy
2005-06-30 18:02                       ` Thomas Graf
2005-06-30 21:26                         ` Patrick McHardy
2005-06-30 21:34                           ` Thomas Graf
2005-06-30 21:49                             ` David S. Miller
2005-06-30 22:08                               ` Thomas Graf
2005-06-30 22:08                                 ` David S. Miller
2005-06-30 17:06               ` ctnetlink attributes [was: Re: [PATCH 1/2] updates for [nf|ct]netlink and event API] Pablo Neira
2005-07-11 16:30                 ` Amin Azez
2005-07-11 16:50                   ` Jan Engelhardt
2005-07-11 17:11                     ` Harald Welte
2005-07-11 17:40                       ` Jan Engelhardt
2005-07-12  7:54                         ` Harald Welte
2005-07-11 17:10                   ` Harald Welte
2005-07-11 17:45                     ` Jan Engelhardt
2005-07-12  7:55                       ` Harald Welte
2005-07-12  8:18                     ` Amin Azez
2005-06-28 23:44 ` [PATCH 1/2] updates for [nf|ct]netlink and event API Josh Samuelson
2005-06-29 19:14   ` Pablo Neira
2005-07-11 11:34 ` NETLINK_NETFILTER and NETLINK_FIB_LOOKUP Amin Azez
2005-07-11 16:32 ` [PATCH 1/2] updates for [nf|ct]netlink and event API Amin Azez

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=42C33C56.10708@eurodev.net \
    --to=pablo@eurodev.net \
    --cc=kaber@trash.net \
    --cc=laforge@netfilter.org \
    --cc=netfilter-devel@lists.netfilter.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.