From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Daniel Mack <daniel@zonque.org>
Cc: htejun@fb.com, daniel@iogearbox.net, ast@fb.com,
davem@davemloft.net, kafai@fb.com, fw@strlen.de,
harald@redhat.com, netdev@vger.kernel.org, sargun@sargun.me,
cgroups@vger.kernel.org
Subject: Re: [PATCH v5 0/6] Add eBPF hooks for cgroups
Date: Tue, 13 Sep 2016 13:56:27 +0200 [thread overview]
Message-ID: <20160913115627.GA4898@salvia> (raw)
In-Reply-To: <1473696735-11269-1-git-send-email-daniel@zonque.org>
Hi,
On Mon, Sep 12, 2016 at 06:12:09PM +0200, Daniel Mack wrote:
> This is v5 of the patch set to allow eBPF programs for network
> filtering and accounting to be attached to cgroups, so that they apply
> to all sockets of all tasks placed in that cgroup. The logic also
> allows to be extendeded for other cgroup based eBPF logic.
1) This infrastructure can only be useful to systemd, or any similar
orchestration daemon. Look, you can only apply filtering policies
to processes that are launched by systemd, so this only works
for server processes. For client processes this infrastructure is
*racy*, you have to add new processes in runtime to the cgroup,
thus there will be time some little time where no filtering policy
will be applied. For quality of service, this may be an acceptable
race, but this is aiming to deploy a filtering policy.
2) This aproach looks uninfrastructured to me. This provides a hook
to push a bpf blob at a place in the stack that deploys a filtering
policy that is not visible to others. We have interfaces that allows
us to dump the filtering policy that is being applied, report events
to enable cooperation between several processes with similar
capabilities and so on. For the XDP thing, this ability to push
blobs may be fine as long as it will not interfer with the stack so
we can provide an alternative to DPDK in Linux. For tracing, that's
fine too since it is innocuous. And likely for other applications is
a good fit. But I don't think this is the case.
> After chatting with Daniel Borkmann and Alexei off-list, we concluded
> that __dev_queue_xmit() is the place where the egress hooks should live
> when eBPF programs need access to the L2 bits of the skb.
3) This egress hook is coming very late, the only reason I find to
place it at __dev_queue_xmit() is that bpf naturally works with
layer 2 information in place. But this new hook is placed in
_everyone's output ath_ that only works for the very specific
usecase I exposed above.
The main concern during the workshop was that a hook only for cgroups
is too specific, but this is actually even more specific than this.
I have nothing against systemd or the needs for more
programmability/flexibility in the stack, but I think this needs to
fulfill some requirements to fit into the infrastructure that we have
in the right way.
next prev parent reply other threads:[~2016-09-13 11:56 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-12 16:12 [PATCH v5 0/6] Add eBPF hooks for cgroups Daniel Mack
2016-09-12 16:12 ` [PATCH v5 1/6] bpf: add new prog type for cgroup socket filtering Daniel Mack
2016-09-12 16:12 ` [PATCH v5 2/6] cgroup: add support for eBPF programs Daniel Mack
2016-09-12 16:12 ` [PATCH v5 3/6] bpf: add BPF_PROG_ATTACH and BPF_PROG_DETACH commands Daniel Mack
[not found] ` <1473696735-11269-1-git-send-email-daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>
2016-09-12 16:12 ` [PATCH v5 4/6] net: filter: run cgroup eBPF ingress programs Daniel Mack
2016-09-12 16:12 ` [PATCH v5 5/6] net: core: run cgroup eBPF egress programs Daniel Mack
2016-09-12 16:12 ` [PATCH v5 6/6] samples: bpf: add userspace example for attaching eBPF programs to cgroups Daniel Mack
2016-09-13 11:56 ` Pablo Neira Ayuso [this message]
2016-09-13 13:31 ` [PATCH v5 0/6] Add eBPF hooks for cgroups Daniel Mack
[not found] ` <da300784-284c-0d1f-a82e-aa0a0f8ae116-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>
2016-09-13 14:14 ` Daniel Borkmann
2016-09-13 17:24 ` Pablo Neira Ayuso
2016-09-14 4:42 ` Alexei Starovoitov
2016-09-14 9:03 ` Thomas Graf
[not found] ` <20160914044217.GA44742-+o4/htvd0TDFYCXBM6kdu7fOX0fSgVTm@public.gmane.org>
2016-09-14 10:30 ` Pablo Neira Ayuso
2016-09-14 11:06 ` Thomas Graf
2016-09-14 11:36 ` Daniel Borkmann
2016-09-14 11:13 ` Daniel Mack
[not found] ` <6de6809a-13f5-4000-5639-c760dde30223-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>
2016-09-14 11:42 ` Daniel Borkmann
[not found] ` <57D937B9.2090100-FeC+5ew28dpmcu3hnIyYJQ@public.gmane.org>
2016-09-14 15:55 ` Alexei Starovoitov
2016-09-16 19:57 ` Sargun Dhillon
[not found] ` <20160916195728.GA14736-I4sfFR6g6EicJoAdRrHjTrzMkBWIpU9tytq7g7fCXyjEk0E+pv7Png@public.gmane.org>
2016-09-18 23:34 ` Sargun Dhillon
2016-09-19 16:34 ` Daniel Mack
2016-09-19 21:53 ` Sargun Dhillon
[not found] ` <20160919215311.GA9723-I4sfFR6g6EicJoAdRrHjTrzMkBWIpU9tytq7g7fCXyjEk0E+pv7Png@public.gmane.org>
2016-09-20 14:25 ` Daniel Mack
2016-09-15 6:36 ` Vincent Bernat
[not found] ` <m3y42tlldz.fsf-PiWSfznZvZU/eRriIvX0kg@public.gmane.org>
2016-09-15 8:11 ` Daniel Mack
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=20160913115627.GA4898@salvia \
--to=pablo@netfilter.org \
--cc=ast@fb.com \
--cc=cgroups@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=daniel@zonque.org \
--cc=davem@davemloft.net \
--cc=fw@strlen.de \
--cc=harald@redhat.com \
--cc=htejun@fb.com \
--cc=kafai@fb.com \
--cc=netdev@vger.kernel.org \
--cc=sargun@sargun.me \
/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).