1. Overview¶
This section describes an overview of SPP’s extensions, spp_vf and
spp_mirror.
SPP provides a connectivity between DPDK processes as a virtual patch panel.
However, It is not sufficient considering more practical usecases.
For instance, you might need a classification for incoming packets if you have
multiple processes as destinations. You might also need to duplicate packets
for monitoring or inspection.
spp_vf is a SPP secondary process for forwarding packets to multiple
destination ports with a MAC address classification. It is also supported to
merge from several source ports to aggregate packets to a destination port.
spp_mirror is an another kind of secondary process to duplicate incoming
packets. This feature is intended to use as a
TaaS
feature for port mirroring introduced in OpenStack.
1.1. spp_vf¶
spp_vf provides a SR-IOV like network feature.
spp_vf forwards incoming packets to several destination VMs by referring
MAC address like as a Virtual Function (VF) of SR-IOV.
spp_vf is a multi-process and multi-thread application.
Each of spp_vf has one manager thread and worker threads called as
components.
The manager thread provides a function for parsing a command and creating the
components.
The component threads have its own multiple components, ports and classifier
tables including Virtual MAC address.
This is an example of network configuration, in which one
classifier_mac,
one merger and four forwarders are running in spp_vf process
for two destinations of vhost interface.
Incoming packets from rx on host1 are sent to each of vhosts of VM
by looking up destination MAC address in the packet.
1.2. spp_mirror¶
spp_mirror is an implementation of
TaaS
as a SPP secondary process for port mirroring.
TaaS stands for TAP as a Service.
spp_mirror consists of one manager thread and worker threads as similar to
spp_vf, but just one worker role for mirroring.
Fig. 1.9 shows an overview of use of spp_mirror
in which spp_mirror process receives packets from ring:0 in spp_vf
for duplicating the packets for monitoring.
Worker thread mirror has two of tx rings for forwaring the packets to the
destination and a monitor application running on VM3.