lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAMB2axNKxW4gnd6qiSNYdm2zPxJkbbLgZz9P-Kh7SS0Sb1Yw=Q@mail.gmail.com>
Date: Fri, 25 Jul 2025 22:53:35 -0700
From: Amery Hung <ameryhung@...il.com>
To: Stefano Garzarella <sgarzare@...hat.com>
Cc: stefanha@...hat.com, mst@...hat.com, jasowang@...hat.com, 
	xuanzhuo@...ux.alibaba.com, davem@...emloft.net, edumazet@...gle.com, 
	kuba@...nel.org, pabeni@...hat.com, kys@...rosoft.com, haiyangz@...rosoft.com, 
	wei.liu@...nel.org, decui@...rosoft.com, bryantan@...are.com, 
	vdasa@...are.com, pv-drivers@...are.com, dan.carpenter@...aro.org, 
	simon.horman@...igine.com, oxffffaa@...il.com, kvm@...r.kernel.org, 
	virtualization@...ts.linux-foundation.org, netdev@...r.kernel.org, 
	linux-kernel@...r.kernel.org, linux-hyperv@...r.kernel.org, 
	bpf@...r.kernel.org, bobby.eshleman@...edance.com, jiang.wang@...edance.com, 
	amery.hung@...edance.com, xiyou.wangcong@...il.com
Subject: Re: [RFC PATCH net-next v6 00/14] virtio/vsock: support datagrams

On Tue, Jul 22, 2025 at 7:35 AM Stefano Garzarella <sgarzare@...hat.com> wrote:
>
> Hi Amery,
>
> On Wed, Jul 10, 2024 at 09:25:41PM +0000, Amery Hung wrote:
> >Hey all!
> >
> >This series introduces support for datagrams to virtio/vsock.
>
> any update on v7 of this series?
>

Hi Stefano,

Sorry that I don't have personal time to work on v7. Since I don't
think people involved in this set are still working on it, I am
posting my v7 WIP here to see if anyone is interested in finishing it.
Would greatly appreciate any help.

Link: https://github.com/ameryhung/linux/tree/vsock-dgram-v7

Here are the things that I haven't address in the WIP:

01/14
- Arseniy suggested doing skb_put(dg->payload_size) and memcpy(dg->payload_size)

07/14
- Remove the double transport lookup in the send path by passing
transport to dgram_enqueue
- Address Arseniy's comment about updating vsock_virtio_transport_common.h

14/14
- Split test/vsock into smaller patches

Finally the spec change discussion also needs to happen.



> Thanks,
> Stefano
>
> >
> >It is a spin-off (and smaller version) of this series from the summer:
> >  https://lore.kernel.org/all/cover.1660362668.git.bobby.eshleman@bytedance.com/
> >
> >Please note that this is an RFC and should not be merged until
> >associated changes are made to the virtio specification, which will
> >follow after discussion from this series.
> >
> >Another aside, the v4 of the series has only been mildly tested with a
> >run of tools/testing/vsock/vsock_test. Some code likely needs cleaning
> >up, but I'm hoping to get some of the design choices agreed upon before
> >spending too much time making it pretty.
> >
> >This series first supports datagrams in a basic form for virtio, and
> >then optimizes the sendpath for all datagram transports.
> >
> >The result is a very fast datagram communication protocol that
> >outperforms even UDP on multi-queue virtio-net w/ vhost on a variety
> >of multi-threaded workload samples.
> >
> >For those that are curious, some summary data comparing UDP and VSOCK
> >DGRAM (N=5):
> >
> >       vCPUS: 16
> >       virtio-net queues: 16
> >       payload size: 4KB
> >       Setup: bare metal + vm (non-nested)
> >
> >       UDP: 287.59 MB/s
> >       VSOCK DGRAM: 509.2 MB/s
> >
> >Some notes about the implementation...
> >
> >This datagram implementation forces datagrams to self-throttle according
> >to the threshold set by sk_sndbuf. It behaves similar to the credits
> >used by streams in its effect on throughput and memory consumption, but
> >it is not influenced by the receiving socket as credits are.
> >
> >The device drops packets silently.
> >
> >As discussed previously, this series introduces datagrams and defers
> >fairness to future work. See discussion in v2 for more context around
> >datagrams, fairness, and this implementation.
> >
> >Signed-off-by: Bobby Eshleman <bobby.eshleman@...edance.com>
> >Signed-off-by: Amery Hung <amery.hung@...edance.com>
> >---
> >Changes in v6:
> >- allow empty transport in datagram vsock
> >- add empty transport checks in various paths
> >- transport layer now saves source cid and port to control buffer of skb
> >  to remove the dependency of transport in recvmsg()
> >- fix virtio dgram_enqueue() by looking up the transport to be used when
> >  using sendto(2)
> >- fix skb memory leaks in two places
> >- add dgram auto-bind test
> >- Link to v5: https://lore.kernel.org/r/20230413-b4-vsock-dgram-v5-0-581bd37fdb26@bytedance.com
> >
> >Changes in v5:
> >- teach vhost to drop dgram when a datagram exceeds the receive buffer
> >  - now uses MSG_ERRQUEUE and depends on Arseniy's zerocopy patch:
> >       "vsock: read from socket's error queue"
> >- replace multiple ->dgram_* callbacks with single ->dgram_addr_init()
> >  callback
> >- refactor virtio dgram skb allocator to reduce conflicts w/ zerocopy series
> >- add _fallback/_FALLBACK suffix to dgram transport variables/macros
> >- add WARN_ONCE() for table_size / VSOCK_HASH issue
> >- add static to vsock_find_bound_socket_common
> >- dedupe code in vsock_dgram_sendmsg() using module_got var
> >- drop concurrent sendmsg() for dgram and defer to future series
> >- Add more tests
> >  - test EHOSTUNREACH in errqueue
> >  - test stream + dgram address collision
> >- improve clarity of dgram msg bounds test code
> >- Link to v4: https://lore.kernel.org/r/20230413-b4-vsock-dgram-v4-0-0cebbb2ae899@bytedance.com
> >
> >Changes in v4:
> >- style changes
> >  - vsock: use sk_vsock(vsk) in vsock_dgram_recvmsg instead of
> >    &sk->vsk
> >  - vsock: fix xmas tree declaration
> >  - vsock: fix spacing issues
> >  - virtio/vsock: virtio_transport_recv_dgram returns void because err
> >    unused
> >- sparse analysis warnings/errors
> >  - virtio/vsock: fix unitialized skerr on destroy
> >  - virtio/vsock: fix uninitialized err var on goto out
> >  - vsock: fix declarations that need static
> >  - vsock: fix __rcu annotation order
> >- bugs
> >  - vsock: fix null ptr in remote_info code
> >  - vsock/dgram: make transport_dgram a fallback instead of first
> >    priority
> >  - vsock: remove redundant rcu read lock acquire in getname()
> >- tests
> >  - add more tests (message bounds and more)
> >  - add vsock_dgram_bind() helper
> >  - add vsock_dgram_connect() helper
> >
> >Changes in v3:
> >- Support multi-transport dgram, changing logic in connect/bind
> >  to support VMCI case
> >- Support per-pkt transport lookup for sendto() case
> >- Fix dgram_allow() implementation
> >- Fix dgram feature bit number (now it is 3)
> >- Fix binding so dgram and connectible (cid,port) spaces are
> >  non-overlapping
> >- RCU protect transport ptr so connect() calls never leave
> >  a lockless read of the transport and remote_addr are always
> >  in sync
> >- Link to v2: https://lore.kernel.org/r/20230413-b4-vsock-dgram-v2-0-079cc7cee62e@bytedance.com
> >
> >
> >Bobby Eshleman (14):
> >  af_vsock: generalize vsock_dgram_recvmsg() to all transports
> >  af_vsock: refactor transport lookup code
> >  af_vsock: support multi-transport datagrams
> >  af_vsock: generalize bind table functions
> >  af_vsock: use a separate dgram bind table
> >  virtio/vsock: add VIRTIO_VSOCK_TYPE_DGRAM
> >  virtio/vsock: add common datagram send path
> >  af_vsock: add vsock_find_bound_dgram_socket()
> >  virtio/vsock: add common datagram recv path
> >  virtio/vsock: add VIRTIO_VSOCK_F_DGRAM feature bit
> >  vhost/vsock: implement datagram support
> >  vsock/loopback: implement datagram support
> >  virtio/vsock: implement datagram support
> >  test/vsock: add vsock dgram tests
> >
> > drivers/vhost/vsock.c                   |   62 +-
> > include/linux/virtio_vsock.h            |    9 +-
> > include/net/af_vsock.h                  |   24 +-
> > include/uapi/linux/virtio_vsock.h       |    2 +
> > net/vmw_vsock/af_vsock.c                |  343 ++++++--
> > net/vmw_vsock/hyperv_transport.c        |   13 -
> > net/vmw_vsock/virtio_transport.c        |   24 +-
> > net/vmw_vsock/virtio_transport_common.c |  188 ++++-
> > net/vmw_vsock/vmci_transport.c          |   61 +-
> > net/vmw_vsock/vsock_loopback.c          |    9 +-
> > tools/testing/vsock/util.c              |  177 +++-
> > tools/testing/vsock/util.h              |   10 +
> > tools/testing/vsock/vsock_test.c        | 1032 ++++++++++++++++++++---
> > 13 files changed, 1638 insertions(+), 316 deletions(-)
> >
> >--
> >2.20.1
> >
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ