[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [PATCH v5 3/7] transport-fabrics: introduce Virtio-oF Protocol Data Unit
Introduce Virtio-oF PDU for Virtio-oF queue, add Stream Data Transfers
and Keyed Data Transfers mechanism.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
transport-fabrics.tex | 68 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 68 insertions(+)
diff --git a/transport-fabrics.tex b/transport-fabrics.tex
index 54d7558..d562b2c 100644
--- a/transport-fabrics.tex
+++ b/transport-fabrics.tex
@@ -45,3 +45,71 @@ \subsection{Virtio-oF Qualified Name}\label{sec:Virtio Transport Options / Virti
\item The maximum name is 256 bytes in length, including the NUL character.
\item There is no strict style limitation.
\end{itemize}
+
+
+\subsection{Protocol Data Unit}\label{sec:Virtio Transport Options / Virtio Over Fabrics / Protocol Data Unit}
+This section defines Virtio-oF Protocol Data Unit (PDU) for both the Virtio-oF control queue and Virtio-oF virtqueue.
+
+Virtio-oF PDU is a unit of information exchanged between a Virtio-oF initiator and a Virtio-oF target:
+\begin{itemize}
+\item A request Virtio-oF PDU from Virtio-oF initiator to Virtio-oF target contains command and associated data, if present.
+\item A response Virtio-oF PDU from Virtio-oF target to Virtio-oF initiator contains completion and associated data, if present.
+\end{itemize}
+
+\subsubsection{Stream Data Transfers}\label{sec:Virtio Transport Options / Virtio Over Fabrics / Protocol Data Unit/ Stream Data Transfers}
+Stream-based (i.e. TCP/IP) Virtio-oF queue transfers Virtio-oF PDUs in a streaming fashion.
+
+The layout in a stream:
+\begin{lstlisting}
+PDUx and PDUz contain a command only, PDUy contains a command and data:
+
+ +----+ +---------+ +----+
+ |PDUx| | PDUy | |PDUz|
+ ... +----+ ... +----+----+ ... +----+ ...
+ |CMD | |CMD |Data| |CMD |
+ +----+ +---------+ +----+
+
+PDUl contains completion only, PDUm and PDUn contain completion and data:
+
+ +----+ +---------+ +---------+
+ |PDUl| | PDUm | | PDUn |
+ ... +----+ ... +----+----+ ... +----+----+ ...
+ |COMP| |COMP|Data| |COMP|Data|
+ +----+ +---------+ +---------+
+\end{lstlisting}
+
+\subsubsection{Keyed Data Transfers}\label{sec:Virtio Transport Options / Virtio Over Fabrics / Protocol Data Unit/ Keyed Data Transfers}
+Message-based (i.e. RDMA) Virtio-oF queue transfers Virtio-oF PDUs in a message fashion, and uses the following structure to describe the remote data:
+
+\begin{lstlisting}
+struct virtio_of_keyed_desc {
+ /* the remote address of data */
+ le64 addr;
+ /* the length of data */
+ le32 length;
+ /* the key to access the remote data */
+ le32 key;
+};
+\end{lstlisting}
+
+A Virtio-oF control queue supports 1 keyed descriptor, and a Virtio-oF virtqueue supports 1 or more keyed descriptors.
+
+The PDUs of messages:
+\begin{lstlisting}
+PDUx contains a command only, PDUy contains a command and 1 descriptor,
+and PDUz contains a command and k - j + 1 descriptors.
+
+ +----+ +---------+ +--------------------+
+ |PDUx| | PDUy | | PDUz |
+ ... +----+ ... +----+----+ ... +----+-----+---+-----+ ...
+ |CMD | |CMD |DESC| |CMD |DESCj|...|DESCk|
+ +----+ +---------+ +----------+---+-----+
+
+PDUl, PDUm, and PDUn contain completion only.
+
+ +----+ +----+ +----+
+ |PDUl| |PDUm| |PDUn|
+ ... +----+ ... +----+ ... +----+ ...
+ |COMP| |COMP| |COMP|
+ +----+ +----+ +----+
+\end{lstlisting}
--
2.25.1
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]