VPP (Vector Packet Processing): framework networking ad alte prestazioni
VPP (Vector Packet Processing) è un framework networking open-source, ad alte prestazioni, in userspace sviluppato da Cisco (ora FD.io / Linux Foundation Collaborative Project). Processa pacchetti in vettori (batch) piuttosto che individualmente, massimizzando efficienza cache CPU e parallelismo a livello istruzione.
Architettura core
- Vector Processing: Pacchetti raccolti in vettori (tipicamente 256) → processati attraverso grafo diretto di nodi (ogni nodo = funzione: input, classify, lookup, rewrite, output). Ammortizza overhead per-pacchetto (chiamate funzioni, cache miss, branch prediction).
- Operazione userspace: Gira in user mode (DPDK-based) — bypassa kernel network stack, niente context switch, accesso diretto NIC via poll-mode drivers (PMDs).
- Architettura plugin: Estensibile via shared libraries: routing, ACL, NAT, IPsec, load balancing, segment routing (SRv6), telemetria, memif, virtio.
- Separazione control plane: Data plane (VPP) + control plane (processo separato: GoBGP, FRR, custom gRPC/REST API).
- Multi-threading: Worker thread pinnati a core CPU; ring buffer lock-free per comunicazione inter-thread.
Caratteristiche prestazionali
- 10–50+ Mpps/core (dipende feature set, dimensione pacchetto, CPU)
- Latenza sub-microsecondo (data plane)
- Scaling lineare con core (NUMA-aware)
Casi d'uso
- vCPE / uCPE (universal CPE), vRouter, vBNG, vFirewall
- 5G UPF (User Plane Function), MEC (Multi-access Edge Computing)
- Service Provider: BNG, CGNAT, DPI, load balancing
- Enterprise: SD-WAN edge, microsegmentazione
- Cloud/NFV: VPP come VNF/CNF in OpenStack, Kubernetes (FD.io CSIT, VPP K8s Operator)
- Test & Misura: TRex, generatori traffico basati VPP
Getting Started
- GitHub:
fdio/vpp (licenza Apache 2.0)
- Docs:
docs.fd.io
- Binari: pacchetti Ubuntu, CentOS, RHEL, Debian; immagini Docker; box Vagrant.
- Richiede: NIC compatibile DPDK (Intel XL710, X710, E810, Mellanox ConnectX, virtio).
VPP è il motore data plane dietro Cisco Meraki, Cisco SD-WAN, Comcast, NTT e numerosi deployment telco/cloud.