This is the second series on the virtio-networking community work which builds on the concepts and architectures introduced in the first series. We will cover advanced topics such as the virtio data plane layouts, vDPA kernel framework internals, virtio-net failover and more.
Similar to the previous series the series includes solution overviews, technical deep dive and hands on blogs:
Solution overview blogs provide the readers with a high level overview of each topic focusing on the what and the why. Technical deep-dive blogs provide the reader with the a detailed explanation of each topic focusing on the how. Hands on blogs provide the reader with instruction on how to try for himself each topic.
February 6, 2020 | Thomas Nadeau, Amnon Ilan, Ariel Adam, Michael S. Tsirkin
In this post we are going to discuss the challenges network operators currently face around the ongoing certification of containerized network functions (CNFs) or virtual network functions (VNFs), and how those challenges can be addressed with virtio data path acceleration (vDPA). vDPA is an innovative open and standards-based approach for CNF/VNF network acceleration.
June 11, 2020 | Eugenio Pérez Martín
This is a technical deep dive and is relevant for those who are interested in the bits and bytes of things. It details the communication format between the different virtio parts and data plane protocols. We'll start with an overview of the virtio device, drivers and their data plane interaction. Then we'll move on to explain the details of the split virtqueue ring layout. This is followed by an overview of the packed ring layout and the advantages it brings over the split virtqueue approach.
July 8, 2020 | Eugenio Pérez Martín
This post continues where the "Virtio devices and drivers overview" leaves off. After we have explained the scenario in the previous post, we are reaching the main point: how does the data travel from the virtio-device to the driver and back?
July 15, 2020 | Eugenio Pérez Martín
This is the final post of a three-post series. While the split virtqueue shines because of the simplicity of its design, it has a fundamental problem: The avail-used buffer cycle needs to use memory in a very sparse way. This puts pressure on the CPU cache utilization, and in the case of hardware means several PCI transactions for each descriptor.
August 12, 2020 | Jason Wang, Ariel Adam
This post provides a high level overview of the vDPA (virtio data path acceleration) kernel framework merged to the Linux kernel in March 2020. This effort spanned almost three years, involved many developers and went through a number of iterations until agreed upon by the upstream community.
August 17, 2020 | Jason Wang, Ariel Adam
vDPA kernel framework part 2: vDPA bus drivers for kernel subsystem interactions (technical deep-dive)
August 27, 2020 | Jason Wang, Ariel Adam
September 3, 2020 | Jason Wang
This post is intended for developers and architects who want to understand how vDPA is integrated with the existing software stacks such as QEMU, traditional kernel subsystems (networking and block), DPDK applications etc. The post is composed of two sections: the first part focuses on the typical use cases for the vhost-vDPA bus driver. The second part focuses on several typical use cases for the virtio-vDPA bus driver.
October 14, 2020 | Cindy Lu, Jason Wang
In the previous post the internals of the vDPA kernel framework were covered. Putting the theory aside, the proof is in the pudding so now it’s time to get our hands dirty and try vDPA out. The obvious issue is the vDPA is a HW based feature requiring vendor NICs that support it. So how can we test vDPA when we don’t have such cards? What can we use instead of real hardware?