VPP (Vector Packet Processing) är ett öppen källkod, höghastighets, userspace-nätverksramverk utvecklat av Cisco (nu FD.io / Linux Foundation Collaborative Project). Det bearbetar paket i vektorer (batchar) snarare än individuellt, vilket maximerar CPU-cacheeffektivitet och instruktionsnivå-parallellitet.
Kärnarkitektur
- Vektorbearbetning: Paket samlas i vektorer (typiskt 256) → bearbetas genom en riktad graf av noder (varje nod = en funktion: inmatning, klassificering, sökning, omskrivning, utmatning). Amorterar per-paket overhead (funktionsanrop, cache-missar, grenprediktion).
- Userspace-drift: Kör i användarläge (DPDK-baserat) – kringgår kärnans nätverksstack, inga kontextväxlar, direkt NIC-åtkomst via poll-mode drivers (PMDs).
- Plugin-arkitektur: Utbyggbart via delade bibliotek: routing, ACL, NAT, IPsec, lastbalansering, segmentrouting (SRv6), telemetri, memif, virtio.
- Kontrollplan-separation: Dataplan (VPP) + kontrollplan (separat process: GoBGP, FRR, anpassat gRPC/REST API).
- Multitråding: Arbetstrådar fästs vid CPU-kärnor; låsfria ringbuffertar för kommunikation mellan trådar.
Prestandaegenskaper
- 10–50+ Mpps/kärna (beroende på funktionsuppsättning, paketstorlek, CPU)
- Sub-mikrosekundslatens (dataplan)
- Linjär skalning med kärnor (NUMA-medveten)
Användningsfall
- vCPE / uCPE (universal CPE), vRouter, vBNG, vFirewall
- 5G UPF (User Plane Function), MEC (Multi-access Edge Computing)
- Tjänsteleverantör: BNG, CGNAT, DPI, lastbalansering
- Företag: SD-WAN edge, mikrosegmentering
- Moln/NFV: VPP som VNF/CNF i OpenStack, Kubernetes (FD.io CSIT, VPP K8s Operator)
- Test & Mätning: TRex, VPP-baserade trafikgeneratorer
Kom igång
- GitHub:
fdio/vpp (Apache 2.0 licens)
- Dokumentation:
docs.fd.io
- Binärer: Ubuntu, CentOS, RHEL, Debian-paket; Docker-images; Vagrant-boxar.
- Kräver: DPDK-kompatibel NIC (Intel XL710, X710, E810, Mellanox ConnectX, virtio).
VPP är dataplanmotorn bakom Cisco Meraki, Cisco SD-WAN, Comcast, NTT och många telco/moln-distributioner.