This blog series provides a detailed tutorial on how to install Open vSwitch with DPDK on Arm servers. It also demonstrates how to setup the environment for the two most common tests performed with the OvS-DPDK datapath — PHY-PHY and PHY-VM-PHY (vHost Loopback).
Open vSwitch, commonly abbreviated as OvS, is an open source multilayer virtual switch. It is designed to support packet distribution across multiple physical servers and is very well suited to function as a virtual switch in VM environments. Please refer to the links at the end of this blog for more details about OvS.
OvS has been included as a Linux kernel module from Linux version 3.10 and up. It is also capable of operating entirely in user space without assistance from a kernel module using DPDK. DPDK consists of libraries to accelerate packet processing workloads running on a wide variety of CPU architectures.
In native OvS, the Linux network stack handles and forwards packets in the kernel datapath. First packets of the flow are sent to the user space daemon for packet processing and once processed, the corresponding actions are installed in the kernel datapath. For achieving high packet processing rates, this continuous context switching between the kernel and user space proves to be costly. It limits the achievable packet throughput to that of the forwarding bandwidth of the Linux network stack. Integrating OvS with DPDK enables direct transfer of packets between user space and the physical interface, bypassing the kernel network stack. As a result, it offers a significant performance boost over Linux kernel forwarding. 
This blog series provides the user with the precise steps to install and test OvS with DPDK on Arm platforms. Although the OvS official documentation captures this material comprehensively and has been referenced in this blog series, there are very limited CPU architecture-specific details provided in it. This guide highlights those architecture-specific details to get the most optimal OvS-DPDK environment on Arm platforms.
For the purpose of this blog series, I am using the Neoverse N1 Software Development Platform (N1SDP) which is an enterprise class reference board based on the Neoverse N1 core. You can also replicate these tutorials on any other Arm-based platform of your choice.
Next Blog in Series