VOSYSwitch, the Virtual Open Systems user space virtual switch to boost NFV telco Networking Infrastructures
The number of Virtual Machines (VM) to run in telco networking servers, small cells edge data-centers, telecommunication services and HPC cloud infrastructures is continuously increasing. The Network Functions Virtualization (NFV) disruptive paradigm requires Virtual Networking Functions (VNF) to rely on fast and reliable networking dynamic connections, which can guarantee at the same time very high bandwidth combined with the flexibility of the Software Defined Networking (SDN) requirements.
In such highly virtualized environments, virtual switch technology is used to enable virtual machines accessing the Network Interface Controller (NIC) in order to achieve a twofold target; firstly, the virtual switch abstracts the guest access to the network, thus easing virtual machines migration between servers having different NIC devices. Secondly, virtual switch is a cheaper solution than direct device assignment (i.e., VFIO), while enabling the SDN guidelines of providing remote management and VNFs programmability.
Some virtual switch technologies, such as Open Virtual Switch (OVS), can guarantee NIC hardware independence by implementing an abstraction software layer between the VM and the NIC, but at a cost of an heavy additional overhead. Historically, these solutions have been designed to run in the linux kernel space, thus relying on performance-penalizing context switches to carry on data handling between VMs (which are executed in user space) and the network card which is driven in the kernel space. For this reason, user space virtual switches have been considered as a better option, but with the colossal challenge to raise the performance at the level of the rigid hardware switches.
Top level architecture of the Virtual Open Systems NFV VOSYSwitch product offer
Precisely, to address this challenging equation while boosting the performance of networking virtual machinnes (VNFs), Virtual Open Systems has developed Virtual Open SYstems virtual Switch (VOSYSwitch), an user space virtual switch based on the open source SnabbSwitch core components. Virtual Open Systems is one of the main contributors of the SnabbSwitch programming effort, by fisrt designing and implementing, among others, the vhost-user key component and other functionalities including continuous integration, deployment and integration in OpenStack. VOSYSwitch implements the NIC driver in user space, thus getting rid of annoying context switches during packets handling operations, thus achieving near native performance.
High performance Ethernet networking stack for x86 and ARMv8 telecommunication servers
VOSYSwitch is a virtualized ethernet networking stack to solve problems and stringent requirements for network service providers in a context where SDN and NFV are boosting more networking into servers.
Such a virtual switch solution leverages on Virtual Open Systems's long lasting design, development and benchmarking effort and experience in virtual switch networking solutions (e.g., SnabbSwitch, OVS), as well as on x86/ARM virtualization technologies and components (i.e., vhost-user, KVM and KVM-on-ARM, VFIO, OpenStack, etc.). VOSYSwitch is integrated in OpenStack; it provides support for OpenFlow, for accelerated VM to VM communication, IPv6, VxLAN, GRE, IGMP snooping, etc. From its first Intel based implementation, VOSYSwitch outperforms the open source available OVS virtual switch, providing performance many times faster than OVS with 64 bytes small packets forwarding from the NIC to a VM.
In addition, while providing a fantastic flexibility by design along with SDN support, VOSYSwitch performance is comparable with direct hardware assignment technologies such as VFIO and SR-IOV. Virtual Open Systems has extensively compared VOSYSwitch with OVS, OVS-DPDK, SR-IOV and VFIO, whose benchmarking results are shared with any interested partner willing to come in contact. Finally, VOSYSwitch design is architecture agnostic, thus seamlessly meant also for ARMv8 accelerated heterogeneous servers.