netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Borkmann via iovisor-dev <iovisor-dev-9jONkmmOlFHEE9lA1F8Ukti2O/JbrIOy@public.gmane.org>
To: Edward Cree <ecree-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
	Alexei Starovoitov
	<alexei.starovoitov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Alexei Starovoitov <ast-b10kYP2dOMg@public.gmane.org>
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	iovisor-dev
	<iovisor-dev-9jONkmmOlFHEE9lA1F8Ukti2O/JbrIOy@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v3 net-next 00/12] bpf: rewrite value tracking in verifier
Date: Wed, 28 Jun 2017 22:38:02 +0200	[thread overview]
Message-ID: <595413AA.40502@iogearbox.net> (raw)
In-Reply-To: <788035e1-1974-b48e-3008-d294194a8b05-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>

On 06/28/2017 04:11 PM, Edward Cree wrote:
> On 28/06/17 14:50, Daniel Borkmann wrote:
>> Hi Edward,
>>
>> Did you also have a chance in the meantime to look at reducing complexity
>> along with your unification? I did run the cilium test suite with your
>> latest set from here and current # worst case processed insns that
>> verifier has to go through for cilium progs increases from ~53k we have
>> right now to ~76k. I'm a bit worried that this quickly gets us close to
>> the upper ~98k max limit starting to reject programs again. Alternative
>> is to bump the complexity limit again in near future once run into it,
>> but preferably there's a way to optimize it along with the rewrite? Do
>> you see any possibilities worth exploring?
> The trouble, I think, is that as we're now tracking more information about
>   each register value, we're less able to prune branches.  But often that
>   information is not actually being used in reaching the exit state.  So it

Agree.

>   seems like the way to tackle this would be to track what information is
>   used — or at least, which registers are read from (including e.g. writing
>   through them or passing them to helper calls) — in reaching a safe state.
>   Then only registers which are used are required to match for pruning.
> But that tracking would presumably have to propagate backwards through the
>   verifier stack, and I'm not sure how easily that could be done.  Someone
>   (was it you?) was talking about replacing the current DAG walking and
>   pruning with some kind of basic-block thing, which would help with this.
> Summary: I think it could be done, but I haven't looked into the details
>   of implementation yet; if it's not actually breaking your programs (yet),
>   maybe leave it for a followup patch series?

Could we adapt the limit to 128k perhaps as part of this set
given we know that we're tracking more meta data here anyway?
Then we could potentially avoid going via -stable later on,
biggest pain point is usually tracking differences in LLVM
code generation (e.g. differences in optimizations) along with
verifier changes to make sure that programs still keep loading
on older kernels with e.g. newer LLVM; one of the issues is that
pruning can be quite fragile. E.g. worst case adding a simple
var in a branch that LLVM assigns a stack slot that was otherwise
not used throughout the prog can cause a significant increase of
verifier work (run into this multiple times in the past and
is a bit of a pain to track down actually). If we could keep
some buffer in BPF_COMPLEXITY_LIMIT_INSNS at least when we know
that more work is needed anyway from that point onward, that
would be good.
_______________________________________________
iovisor-dev mailing list
iovisor-dev@lists.iovisor.org
https://lists.iovisor.org/mailman/listinfo/iovisor-dev

  parent reply	other threads:[~2017-06-28 20:38 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-27 12:53 [PATCH v3 net-next 00/12] bpf: rewrite value tracking in verifier Edward Cree via iovisor-dev
     [not found] ` <adc11342-737f-4e06-bce3-f0a92b5594a5-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-27 12:56   ` [PATCH v3 net-next 01/12] selftests/bpf: add test for mixed signed and unsigned bounds checks Edward Cree via iovisor-dev
     [not found]     ` <12c14f90-153c-c2c2-b2e2-834185b7ec3f-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-28 13:51       ` Daniel Borkmann via iovisor-dev
2017-06-27 12:56   ` [PATCH v3 net-next 02/12] bpf/verifier: rework value tracking Edward Cree via iovisor-dev
2017-06-28 15:15     ` Daniel Borkmann
     [not found]       ` <5953C7FE.1050205-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2017-06-28 16:07         ` Edward Cree via iovisor-dev
     [not found]           ` <71aae126-352d-d916-d64a-9d4045d0abe9-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-28 19:44             ` Daniel Borkmann via iovisor-dev
     [not found]     ` <2244b48b-f415-3239-6912-cb09f0abc546-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-28 17:09       ` Daniel Borkmann via iovisor-dev
     [not found]         ` <5953E2E5.7040106-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2017-06-28 18:28           ` Edward Cree via iovisor-dev
2017-07-06 20:26       ` Nadav Amit via iovisor-dev
2017-07-06 21:21       ` Nadav Amit via iovisor-dev
     [not found]         ` <E65DE75F-FC5F-41BC-9F7B-C03D324D8C6F-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-07 13:48           ` Edward Cree via iovisor-dev
     [not found]             ` <abd3c014-f33a-6e86-aead-be38697a2cec-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-07-07 17:45               ` Nadav Amit via iovisor-dev
     [not found]                 ` <3A96914E-3009-4E19-B138-7A636A76D9C8-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-08  0:54                   ` Nadav Amit via iovisor-dev
2017-07-12 19:13                   ` Edward Cree via iovisor-dev
     [not found]                     ` <68a2487e-f706-1b61-5c4c-20ffe6d51127-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-07-12 22:07                       ` Nadav Amit via iovisor-dev
     [not found]                         ` <12DCE590-7F67-4639-A825-61A24AC44ED3-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-07-17 17:02                           ` Edward Cree via iovisor-dev
2017-06-29  7:48     ` kbuild test robot
2017-06-27 12:57   ` [PATCH v3 net-next 03/12] nfp: change bpf verifier hooks to match new verifier data structures Edward Cree via iovisor-dev
     [not found]     ` <b8418d35-7d3f-1ee3-2bfa-cdf87e5b7c95-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-28 20:47       ` Daniel Borkmann via iovisor-dev
2017-06-29  3:47       ` Jakub Kicinski via iovisor-dev
2017-06-27 12:57   ` [PATCH v3 net-next 04/12] bpf/verifier: track signed and unsigned min/max values Edward Cree via iovisor-dev
2017-06-27 12:58   ` [PATCH v3 net-next 05/12] bpf/verifier: more concise register state logs for constant var_off Edward Cree via iovisor-dev
2017-06-27 12:58   ` [PATCH v3 net-next 06/12] selftests/bpf: change test_verifier expectations Edward Cree via iovisor-dev
2017-06-27 12:59   ` [PATCH v3 net-next 07/12] selftests/bpf: rewrite test_align Edward Cree via iovisor-dev
2017-06-27 12:59   ` [PATCH v3 net-next 08/12] selftests/bpf: add a test to test_align Edward Cree via iovisor-dev
2017-06-27 12:59   ` [PATCH v3 net-next 09/12] selftests/bpf: add test for bogus operations on pointers Edward Cree via iovisor-dev
2017-06-27 12:59   ` [PATCH v3 net-next 10/12] selftests/bpf: don't try to access past MAX_PACKET_OFF in test_verifier Edward Cree via iovisor-dev
2017-06-27 13:00   ` [PATCH v3 net-next 11/12] selftests/bpf: add tests for subtraction & negative numbers Edward Cree via iovisor-dev
2017-06-27 13:00   ` [PATCH v3 net-next 12/12] selftests/bpf: variable offset negative tests Edward Cree via iovisor-dev
2017-06-28 13:50 ` [PATCH v3 net-next 00/12] bpf: rewrite value tracking in verifier Daniel Borkmann
     [not found]   ` <5953B436.6030506-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2017-06-28 14:11     ` Edward Cree via iovisor-dev
     [not found]       ` <788035e1-1974-b48e-3008-d294194a8b05-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-28 20:38         ` Daniel Borkmann via iovisor-dev [this message]
     [not found]           ` <595413AA.40502-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2017-06-28 21:37             ` Alexei Starovoitov via iovisor-dev
2017-06-30 16:44               ` Edward Cree via iovisor-dev
     [not found]                 ` <91267d15-652a-16d9-4ee9-42958bd842aa-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-06-30 17:34                   ` [TEST PATCH] bpf/verifier: roll back ptr&const handling, and fix signed bounds Edward Cree via iovisor-dev
2017-06-30 18:15                   ` [PATCH v3 net-next 00/12] bpf: rewrite value tracking in verifier Alexei Starovoitov via iovisor-dev
     [not found]                     ` <ff1ef3ef-71ef-4c23-ede4-b8caeac561ee-b10kYP2dOMg@public.gmane.org>
2017-07-04 19:22                       ` Edward Cree via iovisor-dev
     [not found]                         ` <5fa61129-fa82-1607-3363-dfad86aecf1e-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-07-04 22:28                           ` Daniel Borkmann via iovisor-dev
2017-07-06 18:27                             ` Edward Cree
     [not found]                               ` <54b95191-697d-6b15-ec39-438c85e08adc-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org>
2017-07-07  9:14                                 ` Daniel Borkmann via iovisor-dev
     [not found]                                   ` <595F50F3.2030008-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2017-07-07 12:50                                     ` Edward Cree via iovisor-dev
2017-07-07 13:05                                       ` Daniel Borkmann
2017-07-06 14:07                           ` Edward Cree via iovisor-dev
2017-07-14 20:03 ` [iovisor-dev] " Y Song

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=595413AA.40502@iogearbox.net \
    --to=iovisor-dev-9jonkmmolfhee9la1f8ukti2o/jbrioy@public.gmane.org \
    --cc=alexei.starovoitov-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=ast-b10kYP2dOMg@public.gmane.org \
    --cc=daniel-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org \
    --cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
    --cc=ecree-s/n/eUQHGBpZroRs9YW3xA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.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 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).