Network: Cisco VPP (Vector Packet Processing)

  • Очень много презентаций о 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

  • 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)

Leave a Reply