In the last decade, a number of frameworks started to appear that implement, directly in user-space with kernel-bypass mode, high-speed software data plane functionalities on commodity hardware.
Vector Packet Processor (VPP) is one such framework, representing an interesting point in the design space in that it offers (i) in user-space networking, (ii) the flexibility of a modular router (Click and variants) with (iii) the benefits brough by techniques such as batch processing that have become commonplace in high-speed networking stacks (such as netmap or DPDK). Similarly to Click, VPP lets users arrange functions as a processing graph, providing a full-blown stack of network functions. However, unlike Click where the whole tree is traversed for each packet, in VPP each node of the tree is applied to all packets in the batch — which brings significant performance benefits due to hit of the L1 instruction cache.
In this page you can find our ongoing experimental effort concerning VPP and especially: