avi
avi

Reputation: 1

VHOST-USER interface between ovs-dpdk and a VM

I'm trying to understand the packet life-cycle in ovs-dpdk (running on host) communicating with a VM through vhost-user interface:

  1. packet is received via physical port to the device.
  2. DMA transfer to mempools on huge-pages allocated by dpdk-ovs - in user-space.

  3. ovs-dpdk copies this packet to the shared-vring of the associated guest (shared between ovs-dpdk userspace process and guest)

  4. no more copies in the guest - i.e. when any application running on the guest wants to consume the packet - there is a zero copy between the shared-vring and the guest application.

Is that correct? How is part 4 implemented ? This is a communication between OS in guest and application in guest, so how this is implemented with zero copy?

Upvotes: 0

Views: 404

Answers (1)

Andriy Berestovskyy
Andriy Berestovskyy

Reputation: 8534

no more copies in the guest - i.e. when any application running on the guest wants to consume the packet - there is a zero copy between the shared-vring and the guest application. Is that correct?

Not really. It is correct if you run a DPDK application in the guest. But if you run a normal kernel in the guest, there will be another copy between guest kernel and guest user space.

How is part 4 implemented ?

See above. It is true only for DPDK applications.

Upvotes: 1

Related Questions