From: Pablo Neira Ayuso <pablo@netfilter.org>
To: "Maciej Żenczykowski" <zenczykowski@gmail.com>
Cc: Chenbo Feng <chenbofeng.kernel@gmail.com>,
Linux NetDev <netdev@vger.kernel.org>,
netfilter-devel@vger.kernel.org, kernel-team@android.com,
Lorenzo Colitti <lorenzo@google.com>,
Chenbo Feng <fengc@google.com>
Subject: Re: [PATCH net-next] netfilter: xt_quota: fix the behavior of xt_quota module
Date: Tue, 2 Oct 2018 12:51:25 +0200 [thread overview]
Message-ID: <20181002105125.uv7mcitvaalpjueo@salvia> (raw)
In-Reply-To: <CANP3RGf4pnPYiLoLNqULz-ELUT18qDctmi3kUw6qpkppwtcXmg@mail.gmail.com>
On Tue, Oct 02, 2018 at 03:38:24AM -0700, Maciej Żenczykowski wrote:
> > Well, you will need a kernel + userspace update anyway, right?
>
> It's true you need new iptables userspace to *see* during dump and/or
> manually *set* during restore the remain counter.
>
> However, (and I believe Chenbo tested this) just a new kernel is
> enough to fix the problem of modifications within the table resetting
> the counter.
> This is because the data gets copied out of kernel and back into
> kernel by old iptables without any further modifications.
> ie. the new kernel not clearing the field on copy to userspace and
> honouring it on copy to kernel is sufficient.
I see, Willem removed this behaviour in newer kernels. The private
area is now zeroed, is that what you mean right? So I guess this
cannot be done transparently.
Anyway, I think the --remain approach to fix this longstanding
problem from iptables :-).
> So iptables-save | iptables-restore doesn't work, but iptables -A foo does.
>
> (currently iptables -t X -{A,D} foo clears all xt_quota counters in
> table X even when foo is utterly unrelated)
>
> >> I mean: Instead of using atomic64_set() to set the counter to 1 once
> >> we went over quota,
> >
> > incomplete sentence, sorry:
> >
> > I mean: Instead of using atomic64_set() to set the counter to 1 once
> > we go overquota, we just keep updating 'consumed' bytes.
>
> I guess it's a fair point that with a u64 we won't ever realistically
> overflow the number of sent bytes, so this could be a running counter
> of matched bytes...
>
> and we don't even need to update it if it was over the quota when we
> first looked at it, so we'll go over by at most # of cpus * max size
> of gso packet bytes.
>
> > ie. we don't express things in 'remaining bytes' logic, but we account
> > for 'bytes we already consumed'. So we never go negative - I know
> > understand what you mean about -1... I think we are each other
> > thinking from our respective approach proposal.
>
> I guess our decision was probably driven by xt_quota2 use on android
> where infinite quota is often used as a temporary placeholder.
I see, thanks for explaining.
Thanks.
next prev parent reply other threads:[~2018-10-02 17:34 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-02 1:23 [PATCH net-next iptables] Rework the xt_quota module Chenbo Feng
2018-10-02 1:23 ` [PATCH iptables] extensions: libxt_quota: Allow setting the remaining quota Chenbo Feng
2018-10-08 23:16 ` Pablo Neira Ayuso
2018-10-02 1:23 ` [PATCH net-next] netfilter: xt_quota: fix the behavior of xt_quota module Chenbo Feng
2018-10-02 7:59 ` Pablo Neira Ayuso
2018-10-02 8:24 ` Maciej Żenczykowski
2018-10-02 8:25 ` Maciej Żenczykowski
2018-10-02 10:11 ` Pablo Neira Ayuso
2018-10-02 10:15 ` Pablo Neira Ayuso
2018-10-02 10:38 ` Maciej Żenczykowski
2018-10-02 10:51 ` Pablo Neira Ayuso [this message]
2018-10-02 10:52 ` Pablo Neira Ayuso
2018-10-02 17:45 ` Chenbo Feng
2018-10-02 18:15 ` Pablo Neira Ayuso
2018-10-02 18:28 ` Chenbo Feng
2018-10-02 18:43 ` Pablo Neira Ayuso
2018-10-02 22:22 ` Maciej Żenczykowski
2018-10-03 9:19 ` Pablo Neira Ayuso
2018-10-03 9:26 ` Maciej Żenczykowski
2018-10-03 9:28 ` Pablo Neira Ayuso
2018-10-03 15:37 ` Pablo Neira Ayuso
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=20181002105125.uv7mcitvaalpjueo@salvia \
--to=pablo@netfilter.org \
--cc=chenbofeng.kernel@gmail.com \
--cc=fengc@google.com \
--cc=kernel-team@android.com \
--cc=lorenzo@google.com \
--cc=netdev@vger.kernel.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=zenczykowski@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