📌 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 для производительности