From: Laurent Vivier <lvivier@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
"Stefano Garzarella" <sgarzare@redhat.com>,
"Stefan Weil" <sw@weilnetz.de>,
"Jason Wang" <jasowang@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Marc-André Lureau" <marcandre.lureau@redhat.com>,
"Dr. David Alan Gilbert" <dave@treblig.org>,
"Markus Armbruster" <armbru@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Laurent Vivier" <lvivier@redhat.com>
Subject: [PATCH 0/8] net: Add passt netdev backend
Date: Wed, 18 Jun 2025 10:39:22 +0200 [thread overview]
Message-ID: <20250618083930.451313-1-lvivier@redhat.com> (raw)
This series introduces support for passt as a new network backend for
QEMU.
passt is a modern, unprivileged, user-mode networking solution that
provides guest connectivity by launching an external helper process. This
series adds the core backend and integrates it with vhost-user for
high-performance, accelerated networking.
The series is structured to first improve the general networking code
before adding the new feature. The first patch extracts from the stream
backend the functions that will be reused in the passt backend. The
following patches are a preparatory refactoring to decouple the generic
vhost layer from specific backend implementations (tap, vhost-user, etc.).
This is achieved by replacing hardcoded type checks with a callback-based
system in NetClientInfo, making the vhost infrastructure more modular and
extensible.
With the refactoring in place, subsequent patches introduce the passt
backend itself, reusing the generic stream handling logic. The final
patch adds vhost-user support to passt, which plugs cleanly into the
newly refactored vhost layer.
Some benchmarks:
Reference '-net user':
-net user,hostfwd=tcp::10001-:10001
iperf3 -c localhost -p 10001 -t 60 -4
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 14.2 GBytes 2.03 Gbits/sec 1 sender
[ 5] 0.00-60.00 sec 14.2 GBytes 2.03 Gbits/sec receiver
New backend '-netdev passt'
-netdev passt,vhost-user=off,tcp-ports=10001
iperf3 -c localhost -p 10001 -t 60 -4
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 27.1 GBytes 3.88 Gbits/sec 0 sender
[ 5] 0.00-60.03 sec 27.1 GBytes 3.88 Gbits/sec receiver
-netdev passt,vhost-user=on,tcp-ports=10001
iperf3 -c localhost -p 10001 -t 60 -4
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 224 GBytes 32.1 Gbits/sec 4 sender
[ 5] 0.00-60.05 sec 224 GBytes 32.0 Gbits/sec receiver
Thanks,
Laurent
Laurent Vivier (8):
net: Refactor stream logic for reuse in '-net passt'
net: Define net_client_set_link()
net: Introduce helper to identify vhost-user clients
net: Add get_vhost_net callback to NetClientInfo
net: Add get_acked_features callback to NetClientInfo
net: Add save_acked_features callback to NetClientInfo
net: Add passt network backend
net/passt: Implement vhost-user backend support
hmp-commands.hx | 3 +
hw/net/vhost_net-stub.c | 1 -
hw/net/vhost_net.c | 89 ++---
hw/net/virtio-net.c | 18 +-
include/net/net.h | 12 +
include/net/tap.h | 3 -
include/net/vhost-user.h | 19 --
include/net/vhost-vdpa.h | 2 -
meson.build | 6 +
meson_options.txt | 2 +
net/clients.h | 4 +
net/hub.c | 3 +
net/meson.build | 6 +-
net/net.c | 55 ++-
net/passt.c | 718 +++++++++++++++++++++++++++++++++++++++
net/stream.c | 282 ++++-----------
net/stream_data.c | 193 +++++++++++
net/stream_data.h | 31 ++
net/tap-win32.c | 5 -
net/tap.c | 20 +-
net/vhost-user-stub.c | 1 -
net/vhost-user.c | 22 +-
net/vhost-vdpa.c | 4 +-
qapi/net.json | 121 +++++++
qemu-options.hx | 18 +
25 files changed, 1293 insertions(+), 345 deletions(-)
delete mode 100644 include/net/vhost-user.h
create mode 100644 net/passt.c
create mode 100644 net/stream_data.c
create mode 100644 net/stream_data.h
--
2.49.0
next reply other threads:[~2025-06-18 8:41 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-18 8:39 Laurent Vivier [this message]
2025-06-18 8:39 ` [PATCH 1/8] net: Refactor stream logic for reuse in '-net passt' Laurent Vivier
2025-06-18 8:39 ` [PATCH 2/8] net: Define net_client_set_link() Laurent Vivier
2025-06-18 8:39 ` [PATCH 3/8] net: Introduce helper to identify vhost-user clients Laurent Vivier
2025-06-18 8:39 ` [PATCH 4/8] net: Add get_vhost_net callback to NetClientInfo Laurent Vivier
2025-06-18 8:39 ` [PATCH 5/8] net: Add get_acked_features " Laurent Vivier
2025-06-18 8:39 ` [PATCH 6/8] net: Add save_acked_features " Laurent Vivier
2025-06-18 8:39 ` [PATCH 7/8] net: Add passt network backend Laurent Vivier
2025-06-18 8:39 ` [PATCH 8/8] net/passt: Implement vhost-user backend support Laurent Vivier
2025-06-23 8:03 ` [PATCH 0/8] net: Add passt netdev backend Jason Wang
2025-06-23 8:10 ` Laurent Vivier
2025-06-24 0:40 ` Jason Wang
2025-06-24 2:57 ` Lei Yang
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=20250618083930.451313-1-lvivier@redhat.com \
--to=lvivier@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=dave@treblig.org \
--cc=eblake@redhat.com \
--cc=jasowang@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=sw@weilnetz.de \
/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).