From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bobby Eshleman <bobby.eshleman@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
Bobby Eshleman <bobby.eshleman@bytedance.com>,
Cong Wang <cong.wang@bytedance.com>,
Jiang Wang <jiang.wang@bytedance.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Jason Wang <jasowang@redhat.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
kvm@vger.kernel.org, virtualization@lists.linux-foundation.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hyperv@vger.kernel.org
Subject: Re: [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc
Date: Mon, 15 Aug 2022 16:39:08 -0400 [thread overview]
Message-ID: <20220815162524-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <cover.1660362668.git.bobby.eshleman@bytedance.com>
On Mon, Aug 15, 2022 at 10:56:03AM -0700, Bobby Eshleman wrote:
> Hey everybody,
>
> This series introduces datagrams, packet scheduling, and sk_buff usage
> to virtio vsock.
>
> The usage of struct sk_buff benefits users by a) preparing vsock to use
> other related systems that require sk_buff, such as sockmap and qdisc,
> b) supporting basic congestion control via sock_alloc_send_skb, and c)
> reducing copying when delivering packets to TAP.
>
> The socket layer no longer forces errors to be -ENOMEM, as typically
> userspace expects -EAGAIN when the sk_sndbuf threshold is reached and
> messages are being sent with option MSG_DONTWAIT.
>
> The datagram work is based off previous patches by Jiang Wang[1].
>
> The introduction of datagrams creates a transport layer fairness issue
> where datagrams may freely starve streams of queue access. This happens
> because, unlike streams, datagrams lack the transactions necessary for
> calculating credits and throttling.
>
> Previous proposals introduce changes to the spec to add an additional
> virtqueue pair for datagrams[1]. Although this solution works, using
> Linux's qdisc for packet scheduling leverages already existing systems,
> avoids the need to change the virtio specification, and gives additional
> capabilities. The usage of SFQ or fq_codel, for example, may solve the
> transport layer starvation problem. It is easy to imagine other use
> cases as well. For example, services of varying importance may be
> assigned different priorities, and qdisc will apply appropriate
> priority-based scheduling. By default, the system default pfifo qdisc is
> used. The qdisc may be bypassed and legacy queuing is resumed by simply
> setting the virtio-vsock%d network device to state DOWN. This technique
> still allows vsock to work with zero-configuration.
>
> In summary, this series introduces these major changes to vsock:
>
> - virtio vsock supports datagrams
> - virtio vsock uses struct sk_buff instead of virtio_vsock_pkt
> - Because virtio vsock uses sk_buff, it also uses sock_alloc_send_skb,
> which applies the throttling threshold sk_sndbuf.
> - The vsock socket layer supports returning errors other than -ENOMEM.
> - This is used to return -EAGAIN when the sk_sndbuf threshold is
> reached.
> - virtio vsock uses a net_device, through which qdisc may be used.
> - qdisc allows scheduling policies to be applied to vsock flows.
> - Some qdiscs, like SFQ, may allow vsock to avoid transport layer congestion. That is,
> it may avoid datagrams from flooding out stream flows. The benefit
> to this is that additional virtqueues are not needed for datagrams.
> - The net_device and qdisc is bypassed by simply setting the
> net_device state to DOWN.
>
> [1]: https://lore.kernel.org/all/20210914055440.3121004-1-jiang.wang@bytedance.com/
Given this affects the driver/device interface I'd like to
ask you to please copy virtio-dev mailing list on these patches.
Subscriber only I'm afraid you will need to subscribe :(
> Bobby Eshleman (5):
> vsock: replace virtio_vsock_pkt with sk_buff
> vsock: return errors other than -ENOMEM to socket
> vsock: add netdev to vhost/virtio vsock
> virtio/vsock: add VIRTIO_VSOCK_F_DGRAM feature bit
> virtio/vsock: add support for dgram
>
> Jiang Wang (1):
> vsock_test: add tests for vsock dgram
>
> drivers/vhost/vsock.c | 238 ++++----
> include/linux/virtio_vsock.h | 73 ++-
> include/net/af_vsock.h | 2 +
> include/uapi/linux/virtio_vsock.h | 2 +
> net/vmw_vsock/af_vsock.c | 30 +-
> net/vmw_vsock/hyperv_transport.c | 2 +-
> net/vmw_vsock/virtio_transport.c | 237 +++++---
> net/vmw_vsock/virtio_transport_common.c | 771 ++++++++++++++++--------
> net/vmw_vsock/vmci_transport.c | 9 +-
> net/vmw_vsock/vsock_loopback.c | 51 +-
> tools/testing/vsock/util.c | 105 ++++
> tools/testing/vsock/util.h | 4 +
> tools/testing/vsock/vsock_test.c | 195 ++++++
> 13 files changed, 1176 insertions(+), 543 deletions(-)
>
> --
> 2.35.1
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bobby Eshleman <bobby.eshleman@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
Wei Liu <wei.liu@kernel.org>, Cong Wang <cong.wang@bytedance.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Bobby Eshleman <bobby.eshleman@bytedance.com>,
Jiang Wang <jiang.wang@bytedance.com>,
Dexuan Cui <decui@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
Eric Dumazet <edumazet@google.com>,
netdev@vger.kernel.org, Stefan Hajnoczi <stefanha@redhat.com>,
kvm@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
linux-hyperv@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc
Date: Mon, 15 Aug 2022 16:39:08 -0400 [thread overview]
Message-ID: <20220815162524-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <cover.1660362668.git.bobby.eshleman@bytedance.com>
On Mon, Aug 15, 2022 at 10:56:03AM -0700, Bobby Eshleman wrote:
> Hey everybody,
>
> This series introduces datagrams, packet scheduling, and sk_buff usage
> to virtio vsock.
>
> The usage of struct sk_buff benefits users by a) preparing vsock to use
> other related systems that require sk_buff, such as sockmap and qdisc,
> b) supporting basic congestion control via sock_alloc_send_skb, and c)
> reducing copying when delivering packets to TAP.
>
> The socket layer no longer forces errors to be -ENOMEM, as typically
> userspace expects -EAGAIN when the sk_sndbuf threshold is reached and
> messages are being sent with option MSG_DONTWAIT.
>
> The datagram work is based off previous patches by Jiang Wang[1].
>
> The introduction of datagrams creates a transport layer fairness issue
> where datagrams may freely starve streams of queue access. This happens
> because, unlike streams, datagrams lack the transactions necessary for
> calculating credits and throttling.
>
> Previous proposals introduce changes to the spec to add an additional
> virtqueue pair for datagrams[1]. Although this solution works, using
> Linux's qdisc for packet scheduling leverages already existing systems,
> avoids the need to change the virtio specification, and gives additional
> capabilities. The usage of SFQ or fq_codel, for example, may solve the
> transport layer starvation problem. It is easy to imagine other use
> cases as well. For example, services of varying importance may be
> assigned different priorities, and qdisc will apply appropriate
> priority-based scheduling. By default, the system default pfifo qdisc is
> used. The qdisc may be bypassed and legacy queuing is resumed by simply
> setting the virtio-vsock%d network device to state DOWN. This technique
> still allows vsock to work with zero-configuration.
>
> In summary, this series introduces these major changes to vsock:
>
> - virtio vsock supports datagrams
> - virtio vsock uses struct sk_buff instead of virtio_vsock_pkt
> - Because virtio vsock uses sk_buff, it also uses sock_alloc_send_skb,
> which applies the throttling threshold sk_sndbuf.
> - The vsock socket layer supports returning errors other than -ENOMEM.
> - This is used to return -EAGAIN when the sk_sndbuf threshold is
> reached.
> - virtio vsock uses a net_device, through which qdisc may be used.
> - qdisc allows scheduling policies to be applied to vsock flows.
> - Some qdiscs, like SFQ, may allow vsock to avoid transport layer congestion. That is,
> it may avoid datagrams from flooding out stream flows. The benefit
> to this is that additional virtqueues are not needed for datagrams.
> - The net_device and qdisc is bypassed by simply setting the
> net_device state to DOWN.
>
> [1]: https://lore.kernel.org/all/20210914055440.3121004-1-jiang.wang@bytedance.com/
Given this affects the driver/device interface I'd like to
ask you to please copy virtio-dev mailing list on these patches.
Subscriber only I'm afraid you will need to subscribe :(
> Bobby Eshleman (5):
> vsock: replace virtio_vsock_pkt with sk_buff
> vsock: return errors other than -ENOMEM to socket
> vsock: add netdev to vhost/virtio vsock
> virtio/vsock: add VIRTIO_VSOCK_F_DGRAM feature bit
> virtio/vsock: add support for dgram
>
> Jiang Wang (1):
> vsock_test: add tests for vsock dgram
>
> drivers/vhost/vsock.c | 238 ++++----
> include/linux/virtio_vsock.h | 73 ++-
> include/net/af_vsock.h | 2 +
> include/uapi/linux/virtio_vsock.h | 2 +
> net/vmw_vsock/af_vsock.c | 30 +-
> net/vmw_vsock/hyperv_transport.c | 2 +-
> net/vmw_vsock/virtio_transport.c | 237 +++++---
> net/vmw_vsock/virtio_transport_common.c | 771 ++++++++++++++++--------
> net/vmw_vsock/vmci_transport.c | 9 +-
> net/vmw_vsock/vsock_loopback.c | 51 +-
> tools/testing/vsock/util.c | 105 ++++
> tools/testing/vsock/util.h | 4 +
> tools/testing/vsock/vsock_test.c | 195 ++++++
> 13 files changed, 1176 insertions(+), 543 deletions(-)
>
> --
> 2.35.1
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-08-16 0:42 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-15 17:56 [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc Bobby Eshleman
2022-08-15 17:56 ` [PATCH 1/6] vsock: replace virtio_vsock_pkt with sk_buff Bobby Eshleman
2022-08-16 2:30 ` [virtio-dev] " Bobby Eshleman
2022-08-16 2:30 ` Bobby Eshleman
2022-08-15 17:56 ` [PATCH 2/6] vsock: return errors other than -ENOMEM to socket Bobby Eshleman
2022-08-15 20:01 ` kernel test robot
2022-08-15 20:01 ` kernel test robot
2022-08-15 23:13 ` kernel test robot
2022-08-15 23:13 ` kernel test robot
2022-08-16 2:16 ` kernel test robot
2022-08-16 2:16 ` kernel test robot
2022-08-16 2:30 ` Bobby Eshleman
2022-08-16 2:30 ` [virtio-dev] " Bobby Eshleman
2022-08-17 5:28 ` Arseniy Krasnov
2022-09-26 13:21 ` Stefano Garzarella
2022-09-26 13:21 ` Stefano Garzarella
2022-09-26 21:30 ` Bobby Eshleman
2022-08-15 17:56 ` [PATCH 3/6] vsock: add netdev to vhost/virtio vsock Bobby Eshleman
2022-08-16 2:31 ` [virtio-dev] " Bobby Eshleman
2022-08-16 2:31 ` Bobby Eshleman
2022-08-16 16:38 ` Michael S. Tsirkin
2022-08-16 16:38 ` Michael S. Tsirkin
2022-08-16 6:18 ` Bobby Eshleman
2022-08-16 18:07 ` Jakub Kicinski
2022-08-16 7:02 ` Bobby Eshleman
2022-08-16 23:07 ` Jakub Kicinski
2022-08-16 8:29 ` Bobby Eshleman
2022-08-17 1:15 ` Jakub Kicinski
2022-08-16 10:50 ` Bobby Eshleman
2022-08-17 17:20 ` Michael S. Tsirkin
2022-08-17 17:20 ` Michael S. Tsirkin
2022-08-18 4:34 ` Jason Wang
2022-08-18 4:34 ` Jason Wang
2022-08-17 1:23 ` [External] " Cong Wang .
2022-09-06 10:58 ` Michael S. Tsirkin
2022-09-06 10:58 ` Michael S. Tsirkin
2022-08-18 14:20 ` Bobby Eshleman
2022-08-15 17:56 ` [PATCH 4/6] virtio/vsock: add VIRTIO_VSOCK_F_DGRAM feature bit Bobby Eshleman
2022-08-16 2:31 ` [virtio-dev] " Bobby Eshleman
2022-08-16 2:31 ` Bobby Eshleman
2022-09-26 13:17 ` Stefano Garzarella
2022-09-26 13:17 ` Stefano Garzarella
2022-09-26 21:52 ` Bobby Eshleman
2022-08-15 17:56 ` [PATCH 5/6] virtio/vsock: add support for dgram Bobby Eshleman
2022-08-15 21:02 ` kernel test robot
2022-08-15 21:02 ` kernel test robot
2022-08-16 2:32 ` [virtio-dev] " Bobby Eshleman
2022-08-16 2:32 ` Bobby Eshleman
2022-08-17 5:01 ` [virtio-dev] " Arseniy Krasnov
2022-08-16 9:57 ` Bobby Eshleman
2022-08-16 9:57 ` Bobby Eshleman
2022-08-18 8:24 ` Arseniy Krasnov
2022-08-17 5:42 ` Arseniy Krasnov
2022-08-16 9:58 ` Bobby Eshleman
2022-08-16 9:58 ` Bobby Eshleman
2022-08-18 8:35 ` Arseniy Krasnov
2022-08-16 20:52 ` Bobby Eshleman
2022-08-16 20:52 ` Bobby Eshleman
2022-08-19 4:30 ` Arseniy Krasnov
2022-08-15 17:56 ` [PATCH 6/6] vsock_test: add tests for vsock dgram Bobby Eshleman
2022-08-16 2:32 ` [virtio-dev] " Bobby Eshleman
2022-08-16 2:32 ` Bobby Eshleman
2022-08-15 20:39 ` Michael S. Tsirkin [this message]
2022-08-15 20:39 ` [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc Michael S. Tsirkin
2022-08-16 1:55 ` Bobby Eshleman
2022-08-16 2:29 ` Bobby Eshleman
2022-08-16 2:29 ` [virtio-dev] " Bobby Eshleman
2022-08-16 7:00 ` Stefano Garzarella
2022-08-16 2:35 ` Bobby Eshleman
2022-08-17 6:54 ` Michael S. Tsirkin
2022-08-17 6:54 ` Michael S. Tsirkin
2022-08-16 9:42 ` Bobby Eshleman
2022-08-17 17:02 ` Michael S. Tsirkin
2022-08-17 17:02 ` Michael S. Tsirkin
2022-08-16 11:08 ` Bobby Eshleman
2022-08-17 17:53 ` Michael S. Tsirkin
2022-08-17 17:53 ` Michael S. Tsirkin
2022-08-16 12:10 ` Bobby Eshleman
2022-08-18 4:28 ` Jason Wang
2022-08-18 4:28 ` Jason Wang
2022-09-06 9:00 ` Stefano Garzarella
2022-09-06 9:00 ` Stefano Garzarella
2022-09-06 13:26 ` Stefan Hajnoczi
2022-09-06 13:26 ` Stefan Hajnoczi
2022-08-18 14:39 ` Bobby Eshleman
2022-09-08 8:30 ` Stefano Garzarella
2022-09-08 8:30 ` Stefano Garzarella
2022-09-08 14:36 ` Call to discuss vsock netdev/sk_buff [was Re: [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc] Stefano Garzarella
2022-09-08 14:36 ` Stefano Garzarella
2022-09-09 18:13 ` Bobby Eshleman
2022-09-12 18:12 ` Stefano Garzarella
2022-09-12 18:12 ` Stefano Garzarella
2022-09-09 23:33 ` Bobby Eshleman
2022-09-16 3:51 ` Stefano Garzarella
2022-09-16 3:51 ` Stefano Garzarella
2022-09-10 16:29 ` Bobby Eshleman
2022-09-26 13:42 ` [PATCH 0/6] virtio/vsock: introduce dgrams, sk_buff, and qdisc Stefano Garzarella
2022-09-26 13:42 ` Stefano Garzarella
2022-09-26 21:44 ` Bobby Eshleman
2022-09-27 17:45 ` Stefano Garzarella
2022-09-27 17:45 ` Stefano Garzarella
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=20220815162524-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=bobby.eshleman@bytedance.com \
--cc=bobby.eshleman@gmail.com \
--cc=bobbyeshleman@gmail.com \
--cc=cong.wang@bytedance.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=haiyangz@microsoft.com \
--cc=jasowang@redhat.com \
--cc=jiang.wang@bytedance.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.com \
--cc=sthemmin@microsoft.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=wei.liu@kernel.org \
/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.