📌 VPP
Vector Packet Processing VPP — высокопроизводительный фреймворк для обработки сетевых пакетов в пространстве пользователя с использованием векторной (batch) обработки, основанный на DPDK.
🧠 Как работает
VPP реализует собственный сетевой стек, в котором пакеты обрабатываются в виде батчей (векторов) — сразу по 64 пакета, минимизируя переключения и улучшая кэш-локальность.
Характеристики:
- Использует DPDK или AF_XDP для получения пакетов
 - Работает как модульный граф: каждый узел (node) выполняет простую операцию
 - Поддерживает IPv4, IPv6, MPLS, IPsec, NAT, L2, L3
 - Управляется через CLI, API, gRPC и VPPctl
 
⚙️ Где применяется
| Область | Применение | 
|---|---|
| NFV | vRouter, vFirewall, vSwitch | 
| 5G Core | UPF, GTP-U, SCTP | 
| SDN | VPP как 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 для производительности