Data traffic is received by the physical NIC and placed into an Rx queue (ring buffer) within the physical NIC
The physical NIC sends the packet and a descriptor to the main memory buffer through direct memory access. The packet descriptor contains only the memory location and size of the packet
The physical NIC sends an IRQ to the CPU
The CPU transfers control to the physical NIC driver, which services the IRC receives the packet, and moves it into the network stack where it eventually arrives in a socket and is placed into a socket receive buffer.
The packet data is copied from the socket receive buffer to the OVS virtual switch
OVS processes the packet and forwards it to the virtual machine. This entails switching the packet between kernel and user space
The packet arrives at the virtual NIC of the Virtual Machine and is placed into the Rx queue
The vNIC sends the packet and packet descriptor to the virtual memory buffer through direct memory access
The virtual NIC sends an IRQ to the vCPU
The vCPU transfers control to the vNIC drive, which services the IRQ, receives the packet, and moves it to the network stack where it eventually arrives in a socket and is placed into a socket receive buffer
The packet data is copied and sent to the application in the VM