Compute and hypervisor domains
The compute domain provides the computational and storage resources to the VNF.
|User space||Guest user||Guest app||Guest app|
|User space||Guest kernel||Guest OS|
|User space||Host user||Qemu||runc/liblxc|
|Kernel space||Host kernel||kvm||cgroups, namespaces|
In OPNFV, the only supported hypervisor is Qemu/kvm. Qemu is a user space component that provides abstractions for most hardware components.
StorPerf: The Storage Performance Benchmarking for NFVI (StorPerf) project is developing tests to benchmark the performance of the storage system
Yardstick: The Infrastructure verification (Yardstick) has general test cases for measuring the CPU and memory performance of the hardware
NFV hypervisors-kvm: The NFV Hypervisors-kvm project maintains a real-time Linux kernel and patches to the Linux kvm hypervisor that improve its latency
Open source projects
Linux kernel: The operating system. The Linux interface evolves slowly and there are no dependencies from the OPNFV stack to the actual kernel version. The NFV Hypervisors-kvm uses a real-time Linux kernel which has better real-time performance.
|QEMU||QEMU can emulate different hardware architectures. The relevant ones are ARM architecture, x86_64 architecture, Q35 and 440FX mother boards, and haswell/broadwell CPUs|
Infrastructure networking domain
The infrastructure networking domain covers the networking on a single server. The virtual machine typically uses the virtio interface to communicate with the host, although it is also possible to use SR-IOV and connect to the network interface card directly. The VM sees a network interface PCI device, which is implemented typically by the vhost component on the host. The vhost is connected to a virtual switch (vswitch) which is a software abstraction of a switch.
Open source projects
OpenvSwitch: Open vSwitch is a virtual switch that supports a large number of different protocols such as OpenFlow, ovsdb, NetFlow, sFlow, LACP, in addition to the standard routing and forwarding protocols. It has a user space component but in the standard configuration the data path is implemented as a Linux kernel module. OpenvSwitch supports OpenFlow version 1.0 and parts of later specifications.
Vector Packet Processing (VPP): The Vector Packet Processing (VPP) is part of the fd.io project and can be used as a virtual switch, in addition to general packet processing. It can integrate with OpenStack through an OpenDaylight SDN controller.Contrail vRouterThe Contrail vRouter acts as a virtual router when OpenContrail is used as an SDN controller.