qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Yuri Benditovich <yuri.benditovich@daynix.com>
To: Jason Wang <jasowang@redhat.com>
Cc: "Yan Vugenfirer" <yan@daynix.com>,
	"Andrew Melnychenko" <andrew@daynix.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-devel@nongnu.org, "Michael S . Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH v5 0/7] eBPF RSS support for virtio-net
Date: Fri, 2 Apr 2021 08:21:01 +0300	[thread overview]
Message-ID: <CAOEp5Ofwu_U_g1Hq678SV8eH2UpLEpTAHDYHtYcBPk71uzN52g@mail.gmail.com> (raw)
In-Reply-To: <9046e35b-5487-c644-5186-d019255ccc70@redhat.com>

Hi Jason,

Yes, the work to support RSS in the Linux virtio-net driver is in progress.
https://bugzilla.redhat.com/show_bug.cgi?id=1912082

On Fri, Apr 2, 2021 at 5:57 AM Jason Wang <jasowang@redhat.com> wrote:
>
>
> 在 2021/3/25 下午11:35, Andrew Melnychenko 写道:
> > This set of patches introduces the usage of eBPF for packet steering
> > and RSS hash calculation:
> > * RSS(Receive Side Scaling) is used to distribute network packets to
> > guest virtqueues by calculating packet hash
> > * Additionally adding support for the usage of RSS with vhost
> >
> > The eBPF works on kernels 5.8+
> > On earlier kerneld it fails to load and the RSS feature is reported
> > only without vhost and implemented in 'in-qemu' software.
> >
> > Implementation notes:
> > Linux TAP TUNSETSTEERINGEBPF ioctl was used to set the eBPF program.
> > Added libbpf dependency and eBPF support.
> > The eBPF program is part of the qemu and presented as an array
> > of BPF ELF file data. The eBPF array file initially generated by bpftool.
> > The compilation of eBPF is not part of QEMU build and can be done
> > using provided Makefile.ebpf.
> > Added changes to virtio-net and vhost, primary eBPF RSS is used.
> > 'in-qemu' RSS used in the case of hash population and as a fallback option.
> > For vhost, the hash population feature is not reported to the guest.
> >
> > Please also see the documentation in PATCH 6/7.
> >
> > Known issues:
> > * hash population not supported by eBPF RSS: 'in-qemu' RSS used
> > as a fallback, also, hash population feature is not reported to guests
> > with vhost.
> > * IPv6 extensions still in progress.
>
>
> Hi Andrew:
>
> The patch looks good at a glance. I tend to queue it for 6.1.
>
> One issue is that, there's no easy way for testing it without a windows
> guest.
>
> Do you have plan to extend Linux driver to support RSS (e.g via ethtool?).
>
> Thanks
>
>
> >
> > Changes since v1:
> > * using libbpf instead of direct 'bpf' system call.
> > * added libbpf dependency to the configure/meson scripts.
> > * changed python script for eBPF .h file generation.
> > * changed eBPF program - reading L3 proto from ethernet frame.
> > * added TUNSETSTEERINGEBPF define for TUN.
> > * changed the maintainer's info.
> > * added license headers.
> > * refactored code.
> >
> > Changes since v2:
> > * using bpftool for eBPF skeleton generation.
> > * ebpf_rss is refactored to use skeleton generated by bpftool.
> > * added/adjasted license in comment sections and in eBPF file.
> > * rss.bpf.c and Makefile.ebpf moved to the tool/ebpf folder.
> > * virtio-net eBPF rss refactored. Now eBPF initialized during realize().
> >
> > Changes since v3:
> > * rebased to last master.
> > * fixed issue with failed build without libbpf.
> > * fixed ebpf loading without rss option.
> > * refactored labels in ebpf_rss.c
> >
> > Changes since v4:
> > * refactored configure/meson script.
> > * added checks for load_bytes in ebpf.
> > * documentation added to the index.
> > * refactored Makefile and rss.bpf.c.
> > * rebased to last master.
> >
> > Andrew (7):
> >    net/tap: Added TUNSETSTEERINGEBPF code.
> >    net: Added SetSteeringEBPF method for NetClientState.
> >    ebpf: Added eBPF RSS program.
> >    ebpf: Added eBPF RSS loader.
> >    virtio-net: Added eBPF RSS to virtio-net.
> >    docs: Added eBPF documentation.
> >    MAINTAINERS: Added eBPF maintainers information.
> >
> >   MAINTAINERS                    |   8 +
> >   configure                      |   8 +-
> >   docs/devel/ebpf_rss.rst        | 125 ++++++++
> >   docs/devel/index.rst           |   1 +
> >   ebpf/ebpf_rss-stub.c           |  40 +++
> >   ebpf/ebpf_rss.c                | 165 ++++++++++
> >   ebpf/ebpf_rss.h                |  44 +++
> >   ebpf/meson.build               |   1 +
> >   ebpf/rss.bpf.skeleton.h        | 423 +++++++++++++++++++++++++
> >   ebpf/trace-events              |   4 +
> >   ebpf/trace.h                   |   2 +
> >   hw/net/vhost_net.c             |   3 +
> >   hw/net/virtio-net.c            | 115 ++++++-
> >   include/hw/virtio/virtio-net.h |   4 +
> >   include/net/net.h              |   2 +
> >   meson.build                    |   9 +
> >   meson_options.txt              |   2 +
> >   net/tap-bsd.c                  |   5 +
> >   net/tap-linux.c                |  13 +
> >   net/tap-linux.h                |   1 +
> >   net/tap-solaris.c              |   5 +
> >   net/tap-stub.c                 |   5 +
> >   net/tap.c                      |   9 +
> >   net/tap_int.h                  |   1 +
> >   net/vhost-vdpa.c               |   2 +
> >   tools/ebpf/Makefile.ebpf       |  22 ++
> >   tools/ebpf/rss.bpf.c           | 552 +++++++++++++++++++++++++++++++++
> >   27 files changed, 1567 insertions(+), 4 deletions(-)
> >   create mode 100644 docs/devel/ebpf_rss.rst
> >   create mode 100644 ebpf/ebpf_rss-stub.c
> >   create mode 100644 ebpf/ebpf_rss.c
> >   create mode 100644 ebpf/ebpf_rss.h
> >   create mode 100644 ebpf/meson.build
> >   create mode 100644 ebpf/rss.bpf.skeleton.h
> >   create mode 100644 ebpf/trace-events
> >   create mode 100644 ebpf/trace.h
> >   create mode 100755 tools/ebpf/Makefile.ebpf
> >   create mode 100644 tools/ebpf/rss.bpf.c
> >
>


  reply	other threads:[~2021-04-02  5:22 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-25 15:35 [PATCH v5 0/7] eBPF RSS support for virtio-net Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 1/7] net/tap: Added TUNSETSTEERINGEBPF code Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 2/7] net: Added SetSteeringEBPF method for NetClientState Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 3/7] ebpf: Added eBPF RSS program Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 4/7] ebpf: Added eBPF RSS loader Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 5/7] virtio-net: Added eBPF RSS to virtio-net Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 6/7] docs: Added eBPF documentation Andrew Melnychenko
2021-03-25 15:35 ` [PATCH v5 7/7] MAINTAINERS: Added eBPF maintainers information Andrew Melnychenko
2021-03-25 15:58 ` [PATCH v5 0/7] eBPF RSS support for virtio-net no-reply
2021-04-01  7:22   ` Andrew Melnichenko
2021-04-02  2:56 ` Jason Wang
2021-04-02  5:21   ` Yuri Benditovich [this message]
2021-04-02  5:25     ` Yuri Benditovich
2021-05-14 13:43 ` Michael S. Tsirkin
2021-05-17 15:30   ` Yuri Benditovich

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=CAOEp5Ofwu_U_g1Hq678SV8eH2UpLEpTAHDYHtYcBPk71uzN52g@mail.gmail.com \
    --to=yuri.benditovich@daynix.com \
    --cc=andrew@daynix.com \
    --cc=berrange@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yan@daynix.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).