netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: Luciano Coelho <luciano.coelho@nokia.com>
Cc: netfilter-devel@vger.kernel.org,
	Pablo Neira Ayuso <pablo@netfilter.org>,
	Samuel Ortiz <sameo@linux.intel.com>,
	Changli Gao <xiaosuo@gmail.com>
Subject: Re: [RFC] setting up throughput threshold indications to userspace
Date: Fri, 16 Jul 2010 15:01:51 +0200	[thread overview]
Message-ID: <4C40583F.40200@trash.net> (raw)
In-Reply-To: <1279268431.1603.44.camel@powerslave>

Am 16.07.2010 10:20, schrieb Luciano Coelho:
> Hi all,
> 
> I've been trying to set up some rules that will send indications to the
> userspace about the current throughput of a certain interface.  The idea
> is to let the userspace enable or disable WLAN PS mode accordingly (the
> validity of this idea is another subject ;).
> 
> This is related to the discussion we had in the thread about the NFNOTIF
> thread.
> 
> I'm thinking about having this kind of ruleset:
> 
> -A INPUT -j throughput 
> -A above -m connmark --mark 0x1 -j RETURN 
> -A above -m rateest --rateest throughput --rateest-bps1 0bit --rateest-bps2 1000bit --rateest-gt -j LOG --log-prefix "ABOVE" 
> -A above -m rateest --rateest throughput --rateest-bps1 0bit --rateest-bps2 1000bit --rateest-gt -j CONNMARK --set-xmark 0x1/0xffffffff 
> -A below -m connmark --mark 0x2 -j RETURN 
> -A below -m rateest --rateest throughput --rateest-bps1 0bit --rateest-bps2 1000bit --rateest-lt -j LOG --log-prefix "BELOW" 
> -A below -m rateest --rateest throughput --rateest-bps1 0bit --rateest-bps2 1000bit --rateest-lt -j CONNMARK --set-xmark 0x2/0xffffffff 
> -A throughput -j RATEEST --rateest-name throughput --rateest-interval 250.0ms --rateest-ewmalog 500.0ms 
> -A throughput -j above 
> -A throughput -j below 
> 
> I'm using a normal LOG just for simplicity reasons, in real life I'd use
> NFLOG instead.
> 
> The idea here is that all packets would be collected by RATEEST for rate
> estimation and then I'd check whether the throughput is above the
> threshold.  If it is, I mark it as such and print the log.  Same thing
> for below the threshold.  The RETURN rules are there to prevent more LOG
> messages from being printed (what I need is to know only when the
> throughput "crosses" the threshold).
> 
> Do you think this works?

Looks reasonable, but you could probably simplify it a bit by adding
RETURN rules to the above/below chains when the threshold is below/
above the specified value. That way you only need a single rateest
match.

> There is one problem with this solution, which is that it works in a
> per-connection basis (due to CONNMARK).  This is not exactly what I
> want.  I need to have this on a per-ruleset basis.  For that, I need to
> have a MARK (variable?) which can be set independently of connections or
> packets.  This is similar to the proposed condition match, but what is
> missing there is a way to set the condition with iptables itself,
> without requiring the userspace to change the procfs file.  This could
> probably be achieved with a "CONDITION" target or something similar.
> Any ideas?

Sounds useful.

  reply	other threads:[~2010-07-16 13:01 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-16  8:20 [RFC] setting up throughput threshold indications to userspace Luciano Coelho
2010-07-16 13:01 ` Patrick McHardy [this message]
2010-07-16 13:10   ` Luciano Coelho
2010-07-16 19:27     ` Jan Engelhardt
2010-07-19  5:30       ` Luciano Coelho
2010-08-16 13:40         ` Luciano Coelho
2010-08-16 13:51           ` Changli Gao
2010-08-16 14:01             ` Luciano Coelho
2010-08-16 14:13               ` Changli Gao
2010-08-16 14:26                 ` Luciano Coelho
2010-08-16 15:19               ` Jan Engelhardt
2010-08-17  5:27                 ` Luciano Coelho
2010-08-16 14:26           ` Changli Gao
2010-08-16 14:32             ` Luciano Coelho

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=4C40583F.40200@trash.net \
    --to=kaber@trash.net \
    --cc=luciano.coelho@nokia.com \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.org \
    --cc=sameo@linux.intel.com \
    --cc=xiaosuo@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).