From: Jesper Dangaard Brouer <brouer@redhat.com>
To: John Fastabend <john.fastabend@gmail.com>
Cc: "Alexander Lobakin" <alexandr.lobakin@intel.com>,
"Toke Høiland-Jørgensen" <toke@redhat.com>,
"Saeed Mahameed" <saeed@kernel.org>,
"Raczynski, Piotr" <piotr.raczynski@intel.com>,
"Zhang, Jessica" <jessica.zhang@intel.com>,
"Kubiak, Marcin" <marcin.kubiak@intel.com>,
"Joseph, Jithu" <jithu.joseph@intel.com>,
"kurt@linutronix.de" <kurt@linutronix.de>,
"Maloor, Kishen" <kishen.maloor@intel.com>,
"Gomes, Vinicius" <vinicius.gomes@intel.com>,
"Brandeburg, Jesse" <jesse.brandeburg@intel.com>,
"Swiatkowski, Michal" <michal.swiatkowski@intel.com>,
"Plantykow, Marta A" <marta.a.plantykow@intel.com>,
"Ong, Boon Leong" <boon.leong.ong@intel.com>,
"Desouza, Ederson" <ederson.desouza@intel.com>,
"Song, Yoong Siang" <yoong.siang.song@intel.com>,
"Czapnik, Lukasz" <lukasz.czapnik@intel.com>,
bpf@vger.kernel.org, xdp-hints@xdp-project.net,
brouer@redhat.com, "David Ahern" <dsahern@gmail.com>
Subject: Re: AF_XDP metadata/hints
Date: Wed, 26 May 2021 20:44:18 +0200 [thread overview]
Message-ID: <20210526204418.532a0604@carbon> (raw)
In-Reply-To: <60ae7847b066e_5ff320887@john-XPS-13-9370.notmuch>
On Wed, 26 May 2021 09:33:11 -0700
John Fastabend <john.fastabend@gmail.com> wrote:
> Alexander Lobakin wrote:
> > From: John Fastabend <john.fastabend@gmail.com>
> > Date: Wed, 26 May 2021 08:35:49 -0700
> >
[...]
> > >> >
> > >> > I assume we need to stay compatible and respect the existing config
> > >> > interfaces, right?
> >
> > Again, XDP Hints won't change any netdev features and stuff, only
> > compose provide the hardware provided fields that are currently
> > inaccessible by the XDP prog and say cpumap code, but that are
> > highly needed (cpumap builds skbs without csums -> GRO layer
> > consumes CPU time to calculate it manually, without RSS hash ->
> > Flow Dissector consumes CPU time to calculate it manually +
> > possible NAPI bucket misses etc.).
>
> Thats a specific cpumap problem correct?
No, it is not a specific cpumap problem. It is actually a general
XDP_REDIRECT problem. The veth container use-case is also hit by this
slowdown due to lacking HW-csum and RSS-hash, as describe by Alexander.
It also exists for redirect into Virtual Machines, which is David
Ahern's use-case actually.
> In general checksums work as expected?
Nope, the checksums are non-existing for XDP_REDIRECT'ed packets.
> [...]
> I'm not convinced hashes and csum are so interesting but show me some
> data.
Checksum overhead measurements for veth container use-case see here[1].
[1] https://github.com/xdp-project/xdp-project/blob/master/areas/core/xdp_frame01_checksum.org
> Also my admittedly rough understanding of cpumap is that it helps
> the case where hardware RSS is not sufficient.
I feel the need to explain what I'm using cpumap for, so bear with me.
In xdp-cpumap-tc[2] the XDP cpumap redirect solves the TC Qdisc locking
problem. This runs in production at an ISP that uses MQ+HTB shaping.
It makes sure customer assigned IP-addresses (can be multiple) are
redirected to the same CPU. Thus, the customer specific HTB shaper
works correctly. (Multiple HTB qdisc are attached under MQ [6]).
[2] https://github.com/xdp-project/xdp-cpumap-tc
[6] https://github.com/xdp-project/xdp-cpumap-tc/blob/master/bin/tc_mq_htb_setup_example.sh
In traffic-pacing-edt[3] the cpumap code[4] maps VLAN tagged traffic to
the same CPU. This allows the TC-BPF code[5] to be "concurrency
correct" as it updates the VLAN based EDT-rate-limit BPF-map without any
atomic operations. This runs in production at another ISP, that need
to shape (traffic pace) 1Gbit/s customer on a 10Gbit/s link due to
crappy 1G GPON switches closer to the end-customer. It would be useful
to get the offloaded VLAN info in XDP-metadata.
[3] https://github.com/xdp-project/bpf-examples/tree/master/traffic-pacing-edt
[4] https://github.com/xdp-project/bpf-examples/blob/master/traffic-pacing-edt/xdp_cpumap_qinq.c
[5] https://github.com/xdp-project/bpf-examples/blob/master/traffic-pacing-edt/edt_pacer_vlan.c
> Seeing your coming from the Intel hardware side why not fix the RSS
> root problem instead of using cpumap at all? I think your hardware is
> flexible enough.
Yes, please fix i40e hardware/firmware to support Q-in-Q packets. We
are actaully hitting this at a customer site. But my above cpumap
use-cases were not due to bad RSS-hashing.
> I would really prefer to see example use cases that are more generic
> than the cpumap case.
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
next prev parent reply other threads:[~2021-05-26 18:44 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <dc2c38cdccfa5eca925cfc9d59b0674e208c9c9d.camel@intel.com>
[not found] ` <2226aeaab7a4ca8e4f26413514bf54ab2c81ea36.camel@intel.com>
[not found] ` <DM6PR11MB2780A8C5410ECB3C9700EAB5CA579@DM6PR11MB2780.namprd11.prod.outlook.com>
[not found] ` <PH0PR11MB487034313697F395BB5BA3C5E4579@PH0PR11MB4870.namprd11.prod.outlook.com>
[not found] ` <DM4PR11MB5422733A87913EFF8904C17184579@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <20210507131034.5a62ce56@carbon>
[not found] ` <DM4PR11MB5422FE9618B3692D48FCE4EA84549@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <20210510185029.1ca6f872@carbon>
[not found] ` <DM4PR11MB54227C25DFD4E882CB03BD3884539@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <20210512102546.5c098483@carbon>
[not found] ` <DM4PR11MB542273C9D8BF63505DC6E21784519@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <7b347a985e590e2a422f837971b30bd83f9c7ac3.camel@nvidia.com>
[not found] ` <DM4PR11MB5422762E82C0531B92BDF09A842B9@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <DM4PR11MB5422269F6113268172B9E26A842A9@DM4PR11MB5422.namprd11.prod.outlook.com>
[not found] ` <DM4PR11MB54224769926B06EE76635A6484299@DM4PR11MB5422.namprd11.prod.outlook.com>
2021-05-21 13:31 ` AF_XDP metadata/hints Jesper Dangaard Brouer
2021-05-21 17:53 ` Saeed Mahameed
2021-05-23 11:54 ` Toke Høiland-Jørgensen
2021-05-25 14:20 ` Alexander Lobakin
2021-05-26 4:51 ` John Fastabend
2021-05-26 11:49 ` Jesper Dangaard Brouer
2021-05-26 13:06 ` Toke Høiland-Jørgensen
2021-05-26 15:35 ` John Fastabend
2021-05-26 15:41 ` John Fastabend
2021-05-26 15:54 ` Alexander Lobakin
2021-05-26 16:33 ` John Fastabend
2021-05-26 18:44 ` Jesper Dangaard Brouer [this message]
2021-05-26 16:41 ` Alexei Starovoitov
2021-05-26 17:01 ` John Fastabend
2021-05-26 17:38 ` Jesper Dangaard Brouer
2021-05-26 14:49 ` Jesper Dangaard Brouer
2021-06-05 0:32 ` Desouza, Ederson
2021-06-11 19:25 ` Alexander Lobakin
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=20210526204418.532a0604@carbon \
--to=brouer@redhat.com \
--cc=alexandr.lobakin@intel.com \
--cc=boon.leong.ong@intel.com \
--cc=bpf@vger.kernel.org \
--cc=dsahern@gmail.com \
--cc=ederson.desouza@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=jessica.zhang@intel.com \
--cc=jithu.joseph@intel.com \
--cc=john.fastabend@gmail.com \
--cc=kishen.maloor@intel.com \
--cc=kurt@linutronix.de \
--cc=lukasz.czapnik@intel.com \
--cc=marcin.kubiak@intel.com \
--cc=marta.a.plantykow@intel.com \
--cc=michal.swiatkowski@intel.com \
--cc=piotr.raczynski@intel.com \
--cc=saeed@kernel.org \
--cc=toke@redhat.com \
--cc=vinicius.gomes@intel.com \
--cc=xdp-hints@xdp-project.net \
--cc=yoong.siang.song@intel.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 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.