- Очень много презентаций о VPP на сайте fd.io
-
- Разобрал только эту “How to Push Extreme Limits of Performance and Scale with Vector Packet Processing Technology”
-
- Netgate TNSR – один из известных комерческих проектов, использующих VPP
- Есть даже аппаратные ускорения VPP на базе спец. чипов типа DPU Marvell® OCTEON 10 DPU Platform, помимо множества других offload (ML, encryption, TPM) и программируемости
- VPP is a rapid packet processing development platform for highly performing network applications. It creates a vector of packet indices and processes them using a directed graph of nodes – resulting in a highly performant solution (14 MPPS on single Core).
-
- At 10GE, 64B frames can arrive at 14.88Mfps – that’s 67nsec per frame (1 млр наносекунд/14млн).
- With 2 GHz CPU that’s 134 clock cycles per frame (2млрд герц/14млн). (в презе была некорректная логика расчета, удалил)
- BUT it takes ~70nsec to access memory – too slow for required time budget.
- Efficiency of dealing with packets within the computer is essential
- Moving packets: receiving on physical interfaces (NICs) and virtual interfaces (VNFs) => Need optimized drivers for both; should not rely on memory access.
- Processing packets: Header manipulation, encaps/decaps, lookups, classifiers, counters => Need packet processing optimized for CPU platforms
-
- CIST стенд.
- В своем автостенде CSIT проверяют (Automated):
- VPP functionality per specifications (RFCs)
- VPP performance and efficiency (PPS, CPP – Cycles per Packet)
-
- Network data plane – throughput Non-Drop Rate, bandwidth, PPS, packet delay; Нагрузочное тестирование VPP – отдельная история (zero loss/NDR, повторяемость результата, latency), но они проводят эти тесты совместно с PDR (0.5 loss tolerance).
- Network Control Plane, Management Plane Interactions (memoryleaks!)
-
- В своем автостенде CSIT проверяют (Automated):
-
Runs as a Linux user-space application
- It runs on commodity CPUs and leverages DPDK
- Ships as part of both embedded & server products, in volume
- Active development since 2002 OMG
- Кеймы применения разные – облачные сценарии (SDN, NFV, Cloud); Universal CPE, Cloud Load Balancer, BRAS (Broadband network gateway), Intrusion Prevention System (IPS, по факту известно мне только о IDS)
- VPP в контексте vlan очень похож на cisco ASR – vlan нет, но есть сабинтерфейсв и bridge domains, так же есть и l2vpn!
- yandex использует VPP (linkmeup telecom 98)
- Kaspersky разрабатывает dataplane NGFW на базе VPP (публичные вакансии)
- (dpdk, vpp) VPP не обязательно использует DPDK, у него есть свои native драйвера, с которыми он даже работает лучше, но в основном все используют с DPDK (и яндекс, но поглядывают на native; linkmeup telecom 98)
- vpp больше фреймворк
- dpdk больше набор библиотек, причем некоторые функции dpdk поддерживают векторизацию
- В vpp есть плагин с constant time lookup для ACL, который интересен для firewall с большим количеством rules
- (linkmeup 98) По сути работает близко к napi, только вместо прерываний VPP эвристически ожидает следующие пакеты (десятки) того же потока/одного вектора и соответственно весь этот набор пакетов требует только одного lookup/решения/графа, если эвристика VPP не сработала – пакет обрабатывается «как обычно» (чаще срабатывает 🙂 )
- Нужно минимизировать использование if в пакетной обработке т.к. каждый if стоит дорог при том что без них совсем невозможно 🙂 (грубо на глаз 1 if = -50к пакетов Cisco VPP)