Thread (13 messages) 13 messages, 2 authors, 2025-12-19

Re:Re: Implement initial driver for virtio-RDMA devices(kernel), virtio-rdma device model(qemu) and vhost-user-RDMA backend device(dpdk)

From: 熊伟民 <hidden>
Date: 2025-12-19 02:27:26
Also in: lkml

At 2025-12-19 00:20:28, "Leon Romanovsky" [off-list ref] wrote:
On Wed, Dec 17, 2025 at 04:49:47PM +0800, Xiong Weimin wrote:
quoted
Hi all,

This testing instructions aims to introduce an emulating a soft ROCE 
device with normal NIC(no RDMA).
What is it? We already have one soft RoCE device implemented in the
kernel (drivers/infiniband/sw/rxe), which doesn't require any QEMU
changes at all.
Thanks
The framwork of vhost_user_rdma(dpdk)/virtio-rdma driver(kernel) is actually 
a userspace RDMA backend optimized for virtualization, while rxe (Soft-RoCE) 
is a kernel-based software RDMA implementation. Key advantages include:
1. Zero-Copy Architecture: vhost_user_rdma uses shared memory between VMs and 
host processes, eliminating data copies.rxe requires kernel-mediated data copies, 
adding latency.


2. Polling Mode: Avoids VM-Exit interrupts by using busy-wait polling, reducing 
CPU context switches.


3. QEMU/KVM Native Support: vhost_user_rdma integrates directly with hypervisors 
via vhost-user protocol.rxe requires PCI device passthrough ( e.g., VFIO), 
complicating deployment.


4. Features Support: vhost_user_rdma enables live migration, multi-queue virtio, 
and NUMA-aware I/O processing.


5. Userspace Processing: Operates entirely in userspace ( e.g., with SPDK), bypassing
the kernel network stack. rxe relies on the Linux kernel network stack, consuming more 
CPU resources.


6. Resource Efficiency: Achieves lower latency in benchmarks for VM-to-VM communication. 


7. vhost-user Backend: DPDK provides a vhost-user library that implements the vhost-user 
protocol in userspace. This library enables efficient communication between the hypervisor 
(QEMU) and the userspace networking stack (like a DPDK-based application). For RDMA, this 
means that the vhost-user backend can directly handle RDMA operations without going through 
the kernel.


Thanks 






Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help