From: Stefano Garzarella <sgarzare@redhat.com> To: 傅关丞 <fuguancheng@bytedance.com> Cc: "Michael S. Tsirkin" <mst@redhat.com>, jasowang@redhat.com, stefanha@redhat.com, davem@davemloft.net, kuba@kernel.org, arseny.krasnov@kaspersky.com, andraprs@amazon.com, Colin King <colin.king@canonical.com>, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [External] Re: [PATCH 0/4] Add multi-cid support for vsock driver Date: Wed, 4 Aug 2021 17:23:49 +0200 [thread overview] Message-ID: <20210804152349.o4vh233xjdruh4pv@steredhat> (raw) In-Reply-To: <CAKv9dH5KbN25m8_Wmej9WXgJWheRV5S-tyPCdjUHHEFoWk-V1w@mail.gmail.com> On Wed, Aug 04, 2021 at 03:09:41PM +0800, 傅关丞 wrote: >Sorry I cannot figure out a good use case. > >It is normal for a host to have multiple ip addresses used for >communication. >So I thought it might be nice to have both host and guest use multiple >CIDs for communication. >I know this is not a very strong argument. Maybe there could be a use case for guests (which I don't see now), but for the host it seems pointless. The strength of vsock is that the guest knows that using CID=2 always reaches the host. Moreover we have recently merged VMADDR_FLAG_TO_HOST that when set allows you to forward any packet to the host, regardless of the CID (not yet supported by vhost-vsock). > >The vsock driver does not work if one of the two peers doesn't support >multiple CIDs. This is absolutely to be avoided. I think the virtio device feature negotiation can help here. > >I have a possible solution here, but there may be some problems with it >that I haven't noticed. > >Hypervisors will use different ways to send CIDs setup to the kernel based >on their vsock setup. > >------For host------- >If host vsock driver supports multi-cid, the hypervisor will use the >modified VHOST_VSOCK_SET_GUEST_CID call to set its CIDs. >Otherwise, the original call is used. > >------For guest------- >Now the virtio_vsock_config looks like this: >u64 guest_cid >u32 num_guest_cid; >u32 num_host_cid; >u32 index; >u64 cid; > >If the guest vsock driver supports multi-cid, it will read num_guest_cid >and num_host_cid from the device config space. >Then it writes an index register, which is the cid it wants to read. After >hypervisors handle this issue, it can read the cid >from the cid register. > >If it does not support multi-cid, it will just read the guest_cid from the >config space, which should work just fine. > Why not add a new device feature to enable or disable multi-cid? > >-------Communication-------- >For communication issues, we might need to use a new feature bit. Let's >call it VHOST_VSOCK_SUPPORT_MULTI_CID. >The basic idea is that this feature bit is set when both host and guest >support using multiple CIDs. After negotiation, if the feature bit >is set, the host can use all the CIDs specified to communicate with the >guest. Otherwise, the first cid passed in will >be used as the guest_cid to communicate with guests. I think the same feature bit can be used for the virtio_vsock_config, no? > >Also, if the bit is set for guests, all the CIDs can be used to communicate >with the host. Otherwise, the first cid with index 0 will be >used as the guest_cid while the VMADDR_HOST_CID will be used for host cid. We already have VMADDR_FLAG_TO_HOST to forward all packets to the host, we only need to support in some way in vhost-vsock. Thanks, Stefano
WARNING: multiple messages have this Message-ID (diff)
From: Stefano Garzarella <sgarzare@redhat.com> To: 傅关丞 <fuguancheng@bytedance.com> Cc: andraprs@amazon.com, kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, stefanha@redhat.com, Colin King <colin.king@canonical.com>, kuba@kernel.org, arseny.krasnov@kaspersky.com, davem@davemloft.net Subject: Re: [External] Re: [PATCH 0/4] Add multi-cid support for vsock driver Date: Wed, 4 Aug 2021 17:23:49 +0200 [thread overview] Message-ID: <20210804152349.o4vh233xjdruh4pv@steredhat> (raw) In-Reply-To: <CAKv9dH5KbN25m8_Wmej9WXgJWheRV5S-tyPCdjUHHEFoWk-V1w@mail.gmail.com> On Wed, Aug 04, 2021 at 03:09:41PM +0800, 傅关丞 wrote: >Sorry I cannot figure out a good use case. > >It is normal for a host to have multiple ip addresses used for >communication. >So I thought it might be nice to have both host and guest use multiple >CIDs for communication. >I know this is not a very strong argument. Maybe there could be a use case for guests (which I don't see now), but for the host it seems pointless. The strength of vsock is that the guest knows that using CID=2 always reaches the host. Moreover we have recently merged VMADDR_FLAG_TO_HOST that when set allows you to forward any packet to the host, regardless of the CID (not yet supported by vhost-vsock). > >The vsock driver does not work if one of the two peers doesn't support >multiple CIDs. This is absolutely to be avoided. I think the virtio device feature negotiation can help here. > >I have a possible solution here, but there may be some problems with it >that I haven't noticed. > >Hypervisors will use different ways to send CIDs setup to the kernel based >on their vsock setup. > >------For host------- >If host vsock driver supports multi-cid, the hypervisor will use the >modified VHOST_VSOCK_SET_GUEST_CID call to set its CIDs. >Otherwise, the original call is used. > >------For guest------- >Now the virtio_vsock_config looks like this: >u64 guest_cid >u32 num_guest_cid; >u32 num_host_cid; >u32 index; >u64 cid; > >If the guest vsock driver supports multi-cid, it will read num_guest_cid >and num_host_cid from the device config space. >Then it writes an index register, which is the cid it wants to read. After >hypervisors handle this issue, it can read the cid >from the cid register. > >If it does not support multi-cid, it will just read the guest_cid from the >config space, which should work just fine. > Why not add a new device feature to enable or disable multi-cid? > >-------Communication-------- >For communication issues, we might need to use a new feature bit. Let's >call it VHOST_VSOCK_SUPPORT_MULTI_CID. >The basic idea is that this feature bit is set when both host and guest >support using multiple CIDs. After negotiation, if the feature bit >is set, the host can use all the CIDs specified to communicate with the >guest. Otherwise, the first cid passed in will >be used as the guest_cid to communicate with guests. I think the same feature bit can be used for the virtio_vsock_config, no? > >Also, if the bit is set for guests, all the CIDs can be used to communicate >with the host. Otherwise, the first cid with index 0 will be >used as the guest_cid while the VMADDR_HOST_CID will be used for host cid. We already have VMADDR_FLAG_TO_HOST to forward all packets to the host, we only need to support in some way in vhost-vsock. Thanks, Stefano _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-08-04 15:25 UTC|newest] Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-02 12:07 [PATCH 0/4] Add multi-cid support for vsock driver fuguancheng 2021-08-02 12:07 ` [PATCH 1/4] VSOCK DRIVER: Add multi-cid support for guest fuguancheng 2021-08-02 20:10 ` Michael S. Tsirkin 2021-08-02 20:10 ` Michael S. Tsirkin 2021-08-02 20:11 ` Michael S. Tsirkin 2021-08-02 20:11 ` Michael S. Tsirkin 2021-08-02 20:20 ` Michael S. Tsirkin 2021-08-02 20:20 ` Michael S. Tsirkin 2021-08-02 21:53 ` kernel test robot 2021-08-02 21:53 ` kernel test robot 2021-08-02 12:07 ` [PATCH 2/4] VSOCK DRIVER: support communication using additional guest cid fuguancheng 2021-08-02 20:13 ` Michael S. Tsirkin 2021-08-02 20:13 ` Michael S. Tsirkin 2021-08-02 12:07 ` [PATCH 3/4] VSOCK DRIVER: support specifying additional cids for host fuguancheng 2021-08-02 15:56 ` kernel test robot 2021-08-02 15:56 ` kernel test robot 2021-08-02 17:50 ` kernel test robot 2021-08-02 17:50 ` kernel test robot 2021-08-02 12:07 ` [PATCH 4/4] VSOCK DRIVER: support communication using host additional cids fuguancheng 2021-08-02 13:42 ` [PATCH 0/4] Add multi-cid support for vsock driver Stefano Garzarella 2021-08-02 13:42 ` Stefano Garzarella [not found] ` <CAKv9dH5KbN25m8_Wmej9WXgJWheRV5S-tyPCdjUHHEFoWk-V1w@mail.gmail.com> 2021-08-04 15:23 ` Stefano Garzarella [this message] 2021-08-04 15:23 ` [External] " Stefano Garzarella 2021-08-02 20:21 ` Michael S. Tsirkin 2021-08-02 20:21 ` Michael S. Tsirkin
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=20210804152349.o4vh233xjdruh4pv@steredhat \ --to=sgarzare@redhat.com \ --cc=andraprs@amazon.com \ --cc=arseny.krasnov@kaspersky.com \ --cc=colin.king@canonical.com \ --cc=davem@davemloft.net \ --cc=fuguancheng@bytedance.com \ --cc=jasowang@redhat.com \ --cc=kuba@kernel.org \ --cc=kvm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mst@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=stefanha@redhat.com \ --cc=virtualization@lists.linux-foundation.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: linkBe 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.