📌 VPP

Vector Packet Processing VPP — высокопроизводительный фреймворк для обработки сетевых пакетов в пространстве пользователя с использованием векторной (batch) обработки, основанный на DPDK.

🧠 Как работает

VPP реализует собственный сетевой стек, в котором пакеты обрабатываются в виде батчей (векторов) — сразу по 64 пакета, минимизируя переключения и улучшая кэш-локальность.

Характеристики:

  • Использует DPDK или AF_XDP для получения пакетов
  • Работает как модульный граф: каждый узел (node) выполняет простую операцию
  • Поддерживает IPv4, IPv6, MPLS, IPsec, NAT, L2, L3
  • Управляется через CLI, API, gRPC и VPPctl

⚙️ Где применяется

ОбластьПрименение
NFVvRouter, vFirewall, vSwitch
5G CoreUPF, GTP-U, SCTP
SDNVPP как dataplane для ODL, ONOS
Edge ComputingЛёгкие шлюзы и CPE

💻 Пример (vppctl CLI)

# Установить интерфейс в up
vppctl set interface state TenGigabitEthernet0/8/0 up
 
# Добавить IP-адрес
vppctl set interface ip address TenGigabitEthernet0/8/0 192.168.1.1/24
 
# Показать статистику
vppctl show interface

🧩 Архитектура VPP

[ DPDK / AF_XDP ]
       ↓
[ RX Node ] → [ Parser ] → [ IP Lookup ] → [ TX Node ]
                         ↘ [ ACL ], [ NAT ], [ QoS ]

📐 Особенности

МодульНазначение
Graph EngineОбработка в виде графа узлов
VLIB + VNETБазовые библиотеки фреймворка
CLI / APIУправление VPP
Host StackВстроенный userspace TCP/IP стек

✅ Преимущества

  • Пропускная способность: десятки миллионов pps

  • Расширяемая архитектура (граф узлов)

  • Полная userspace-реализация: легко контейнеризуется

❌ Недостатки

  • Высокий порог входа для конфигурирования

  • Большой объём бинарных зависимостей

  • Требует CPU pinning и HugePages для производительности