2 ms·
This definitely add per-packet latency and processing, that's why the recommended way to run VPP with high performance is to use some kind of network accelerato
by teleforce 3y ago
This definitely add per-packet latency and processing, that's why the recommended way to run VPP with high performance is to use some kind of network accelerator library, the same way the VPP based solutions like TNSR by Netgate will work best with DPDK for kernel bypass, or use similar technique like XDP with eBPF but XDP does not bypass the kernel hence eBPF is needed.
For Linux user space solutions without kernel bypass if the above mentioned network accelerators are not installed (devices in customer's premise, etc), the recommended way is to use Netmap since it enabled direct access to the network interface card (NIC) buffers from user space otherwise you are at the mercy of Linux own notorious sk_buff [1].
Another alternative perhaps for more efficient buffering in Linux is to use PF_ring or the the-kid-on-block IO_ring but not sure they are being currently being utilized in VPP or not.
For good introduction on Linux Networking acceleration technology, this presentation is a good start [2].
[1] VPP docs: Create netmap:
https://docs.fd.io/vpp/17.04/clicmd_src_vnet_devices_netmap.html https://docs.fd.io/vpp/17.04/clicmd_src_vnet_devices_netmap....
[2] Linux Networking: The meaning of acronyms eBPF, DPDK, XDP, VPP [video]:
https://news.ycombinator.com/item?id=38376380 https://news.ycombinator.com/item?id=38376380