From: Stefan Hajnoczi <stefanha@redhat.com>
To: zhenwei pi <pizhenwei@bytedance.com>
Cc: parav@nvidia.com, mst@redhat.com, jasowang@redhat.com,
virtio-comment@lists.oasis-open.org, houp@yusur.tech,
helei.sig11@bytedance.com, xinhao.kong@duke.edu
Subject: [virtio-comment] Re: [PATCH v2 01/11] transport-fabrics: introduce Virtio Over Fabrics overview
Date: Wed, 31 May 2023 10:00:02 -0400 [thread overview]
Message-ID: <20230531140002.GC1248296@fedora> (raw)
In-Reply-To: <20230504081910.238585-2-pizhenwei@bytedance.com>
[-- Attachment #1: Type: text/plain, Size: 4691 bytes --]
On Thu, May 04, 2023 at 04:19:00PM +0800, zhenwei pi wrote:
> In the past years, virtio supports lots of device specifications by
> PCI/MMIO/CCW. These devices work fine in the virtualization environment.
>
> Introduce Virtio Over Fabrics transport to support "network defined
> peripheral devices". With this transport, Many Virtio based devices
> transparently work over fabrics. Note that the balloon device may not
> make sense. Shared memory regions won't work.
>
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
> ---
> content.tex | 1 +
> transport-fabrics.tex | 31 +++++++++++++++++++++++++++++++
> 2 files changed, 32 insertions(+)
> create mode 100644 transport-fabrics.tex
>
> diff --git a/content.tex b/content.tex
> index cff548a..f899c3a 100644
> --- a/content.tex
> +++ b/content.tex
> @@ -582,6 +582,7 @@ \chapter{Virtio Transport Options}\label{sec:Virtio Transport Options}
> \input{transport-pci.tex}
> \input{transport-mmio.tex}
> \input{transport-ccw.tex}
> +\input{transport-fabrics.tex}
>
> \chapter{Device Types}\label{sec:Device Types}
>
> diff --git a/transport-fabrics.tex b/transport-fabrics.tex
> new file mode 100644
> index 0000000..0dc031b
> --- /dev/null
> +++ b/transport-fabrics.tex
> @@ -0,0 +1,31 @@
> +\section{Virtio Over Fabrics}\label{sec:Virtio Transport Options / Virtio Over Fabrics}
> +
> +This section defines specification to Virtio that enables operation over other
> +interconnects. A central goal of Virtio Over Fabrics is to maintain consistency
> +with the PCI device, so Virtio based devices transparently work over PCI or
> +fabrics.
The reader wants to know what VIRTIO Over Fabrics is, not how it relates
to other Transports that they may not be very familiar with.
Fabrics is a Transport and any Transport is capable of supporting the
VIRTIO device model. Therefore I don't think the stated aim should be to
match PCI specifically. Just being a Transport is already enough. PCI is
not special.
I suggest something like:
Virtio Over Fabrics enables operation over interconnects that rely
primarily on message passing. Supported interconnects include TODO.
> +
> +Virtio Over Fabrics uses reliable connection to transmit data, the reliable
"uses a reliable connection"
> +connection betweens two rules:
"connection facilitates communication between entities playing the following roles:"
> +
> +\begin{itemize}
> +\item An initiator functions as an Virtio Over Fabrics client. An initiator
"as a Virtio ..."
> +typically serves the same purpose to a machine as a Virtio device, issues
> +commands to remote side.
This says that the driver talks to the initiator instead of a local
device and the initiator forwards commands to the actual device on the
remote side?
I find this sentence confusing because I associate the initiator with
the driver, not the device.
Maybe:
The initiator sends commands from the driver to the target.
> +\item A target functions as an Virtio Over Fabrics server. An target typically
"A target"
> +handles commands from the initiator side and responses completions.
The concept of the device is missing here. For symmetry it may be good
to say something like:
The target forwards commands to the device and sends responses back to
the initiator.
> +\end{itemize}
> +
> +Virtio Over Fabrics has the following differences from the PCI based
> +specification:
> +
> +\begin{itemize}
> +\item Instead of memory sharing mechanism of virtqueue, there is a one-to-one
> +mapping between virtqueue and the reliable connection which executes the vring
> +data transmission.
> +\item An additional control connection is required to execute control commands
> +which is similar to read/write register on a PCI device.
> +\item Virtio Over Fabrics does not define an interrupt mechanism that allows an
> +initiator to generate a host interrupt. It is the responsibility of the host
> +fabric interface to generate host interrupts.
> +\end{itemize}
As mentioned above, comparing against PCI requires that the reader is
familiar with PCI. I think it would be preferrable to explain the unique
characteristics of Virtio Over Fabrics in a self-contained way:
The basic organization of Virtio Over Fabrics is as follows:
\begin{itemize}
\item A reliable connection carries control commands that are not specific to a virtqueue.
\item Each virtqueue has its own reliable connection.
\item There is no interrupt mechanism since the arrival of data on the fabric already indicates when there is activity.
\end{itemize}
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-05-31 14:00 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-04 8:18 [virtio-comment] [PATCH v2 00/11] Introduce Virtio Over Fabrics zhenwei pi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 01/11] transport-fabrics: introduce Virtio Over Fabrics overview zhenwei pi
2023-05-04 8:57 ` David Hildenbrand
2023-05-04 9:46 ` zhenwei pi
2023-05-04 10:05 ` Michael S. Tsirkin
2023-05-04 10:12 ` David Hildenbrand
2023-05-04 10:50 ` Re: " zhenwei pi
2023-05-31 14:00 ` Stefan Hajnoczi [this message]
2023-06-02 1:17 ` [virtio-comment] Re: " zhenwei pi
2023-06-05 2:39 ` [virtio-comment] " Parav Pandit
2023-06-05 2:39 ` Parav Pandit
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 02/11] transport-fabrics: introduce Virtio Qualified Name zhenwei pi
2023-05-31 14:06 ` Stefan Hajnoczi
2023-06-02 1:50 ` zhenwei pi
2023-06-05 2:40 ` Parav Pandit
2023-06-05 7:57 ` zhenwei pi
2023-06-05 17:05 ` Stefan Hajnoczi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 03/11] transport-fabircs: introduce Segment Descriptor Definition zhenwei pi
2023-05-31 14:23 ` Stefan Hajnoczi
2023-06-02 3:08 ` zhenwei pi
2023-06-05 2:40 ` [virtio-comment] " Parav Pandit
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 04/11] transport-fabrics: introduce Stream Transmission zhenwei pi
2023-05-31 15:20 ` Stefan Hajnoczi
2023-06-02 2:26 ` zhenwei pi
2023-06-05 16:11 ` Stefan Hajnoczi
2023-06-06 3:13 ` zhenwei pi
2023-06-06 13:09 ` Stefan Hajnoczi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 05/11] transport-fabrics: introduce Keyed Transmission zhenwei pi
2023-05-31 16:20 ` [virtio-comment] " Stefan Hajnoczi
2023-06-01 9:02 ` zhenwei pi
2023-06-01 11:33 ` Stefan Hajnoczi
2023-06-01 13:09 ` zhenwei pi
2023-06-01 19:13 ` Stefan Hajnoczi
2023-06-01 21:23 ` Stefan Hajnoczi
2023-06-02 0:55 ` zhenwei pi
2023-06-05 17:21 ` Stefan Hajnoczi
2023-06-05 2:41 ` Parav Pandit
2023-06-05 8:41 ` zhenwei pi
2023-06-05 11:45 ` Parav Pandit
2023-06-05 12:50 ` zhenwei pi
2023-06-05 13:12 ` Parav Pandit
2023-06-06 7:13 ` zhenwei pi
2023-06-06 21:52 ` Parav Pandit
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 06/11] transport-fabrics: introduce command set zhenwei pi
2023-05-31 17:10 ` [virtio-comment] " Stefan Hajnoczi
2023-06-02 5:15 ` [virtio-comment] " zhenwei pi
2023-06-05 16:30 ` Stefan Hajnoczi
2023-06-06 1:31 ` [virtio-comment] " zhenwei pi
2023-06-06 13:34 ` Stefan Hajnoczi
2023-06-07 2:58 ` [virtio-comment] " zhenwei pi
2023-06-08 16:41 ` Stefan Hajnoczi
2023-06-08 17:01 ` [virtio-comment] " Parav Pandit
2023-06-09 1:39 ` [virtio-comment] " zhenwei pi
2023-06-09 2:06 ` [virtio-comment] " Parav Pandit
2023-06-09 3:55 ` zhenwei pi
2023-06-11 20:56 ` Parav Pandit
2023-06-06 2:02 ` [virtio-comment] " zhenwei pi
2023-06-06 13:44 ` Stefan Hajnoczi
2023-06-07 2:03 ` [virtio-comment] " zhenwei pi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 07/11] transport-fabrics: introduce opcodes zhenwei pi
2023-05-31 17:11 ` [virtio-comment] " Stefan Hajnoczi
[not found] ` <20230531205508.GA1509630@fedora>
2023-06-02 8:39 ` [virtio-comment] " zhenwei pi
2023-06-05 16:46 ` Stefan Hajnoczi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 08/11] transport-fabrics: introduce status of completion zhenwei pi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 09/11] transport-fabrics: add TCP&RDMA binding zhenwei pi
[not found] ` <20230531210255.GC1509630@fedora>
2023-06-02 9:07 ` [virtio-comment] Re: " zhenwei pi
2023-06-05 16:57 ` Stefan Hajnoczi
2023-06-06 1:41 ` [virtio-comment] " zhenwei pi
2023-06-06 13:51 ` Stefan Hajnoczi
2023-06-07 2:15 ` zhenwei pi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 10/11] transport-fabrics: add device initialization zhenwei pi
[not found] ` <20230531210925.GD1509630@fedora>
2023-06-02 9:11 ` zhenwei pi
2023-05-04 8:19 ` [virtio-comment] [PATCH v2 11/11] transport-fabrics: support inline data for keyed transmission zhenwei pi
2023-05-29 0:56 ` [virtio-comment] PING: [PATCH v2 00/11] Introduce Virtio Over Fabrics zhenwei pi
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=20230531140002.GC1248296@fedora \
--to=stefanha@redhat.com \
--cc=helei.sig11@bytedance.com \
--cc=houp@yusur.tech \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=parav@nvidia.com \
--cc=pizhenwei@bytedance.com \
--cc=virtio-comment@lists.oasis-open.org \
--cc=xinhao.kong@duke.edu \
/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