Let’s start first with packet processing overheads, even though network packet is so precious to Network workload it is just an I/O operation to OS & Hyper-visors, there is no special priority, because general operation of I/O involves interrupting driven System call i.e. from application (User-level) to Guest OS (Kernel) and I/O Operation i.e. from Guest OS (Kernel) to I/O Device Driver (Eg:NIC).
Below are few overhead highlights:
Interrupt handling: In general OS & Hypervisor follows Interrupt driven approach to Network I/O operation. It starts from the incoming frame (or packet) hitting NIC (Network Interface Card), NIC process packet and generates interrupt to Kernel (OS) about processed frame memory location, Kernel acknowledges interrupting and schedules softIRQ to hands the frame to the network stack.
System Call: Network stack needs to initiate system calls from Kernel (OS) to specific application packet destined (User-level).
Context Switching: Moving the packet from OS (Kernel) to Application (User level) requires saving of registers and state transformation from the currently executing thread, this switching threads & hand over works like halt, save and start from one to another thread kind of process.
With the above overheads and below packet variation needs a special acceleration to network packets to run SDN/NFV Virtual Network Function (VNF) workloads on top of general purpose COTS.
DPDK (Datapath development kit): DPDK is a set of software libraries designed for high-speed packet processing. DPDK provides a framework for application and a network stack (net-dev) to be developed, that work directly with the hardware for processing of network traffic, minimizing interrupts, System calls, and context switching. DPDK leverages existing Intel Processor technologies like SIMD instructions (Singles Instruction Multiple Data), Huge-pages memory, multiple Memory channels and Caching to provide acceleration with its own libraries.
The Network workloads running its own application sits with network stack in user space and calls DPDK libraries for data plane functions, this includes processing incoming network frames at User-level for exception processing than previous OS processing at Kernel level. DPDK libraries utilize special CPU cores & Memory at initialization time, including buffer pools, descriptor rings, and lock-less queues.
DPDK is an Intel’s drive to accelerate Network Virtualization, presently it is through the BSD open source license agreement and officially released source code package. In April 2013 at www.dpdk.org formally established an independent open source community Platform for developers to provide support. Participants in the open source community have significantly advanced the technological innovation and rapid evolution of DPDK, and it has evolved into a key technology for SDN and NFV.
All the prominent Networking vendors leveraging DPDK to develop their network application and offering software-based products, this brings a shift in Networking world from traditional Hardware-based Network device offering to Software based without compromising in performance. This software’s works well in Bare-metal server installation with expected line-rate speeds, but when it comes to Virtualization (VM) on top of Hypervisor fall back to same old low performance.
In Virtualization Case Hypervisor needs to abstract, emulate and isolate the available resources like CPU, Memory and I/O components. It is comparatively easy to virtualize CPU and memory with certain modifications to process virtualization techniques, but virtualization of I/O devices is a challenge. It’s because I/O devices are shared among Virtual Machines (VM), rate at which events arrived at I/O is high, I/O devices are comparatively slower than CPUs, bringing I/O isolation is mandatory for VM’s, all these cases need frequent intervention of Hyper-Visor Virtual Machine Manager process (VMM). Network packet processing through NIC is at I/O level, apart from processing at Kernel it needs to process again at VMM level. Even though DPDK software network acceleration is available at VM level, its VMM’s responsibility to process at the kernel level and emulate same again to VM, this brings the need of Network acceleration at the Hypervisor level.
How Benison Uses DPDK?
Benison Technologies leverages Intel DPDK for designing and developing virtual appliances with higher performance and scalability on latest IA platforms. We assist network equipment manufacturers (NEMs) and telecom operators in developing, optimizing, deploying and maintaining Intel DPDK based virtual appliances projects.