1.2: VPP Architecture

FD.io
25 Jul 201660:53

Summary

TLDRDas Video bietet einen umfassenden Überblick über VPP (Vector Packet Processing) und seine leistungsstarken Funktionen für Netzwerkdatenverarbeitung. Es erklärt die Architektur von VPP, die Verwendung von Input-Nodes wie DPDK und Plugins, sowie die Nutzung der VPP-eigenen Pufferstruktur, um die Datenverarbeitung effizient zu gestalten. Ein wichtiger Punkt ist die Fähigkeit von VPP, auf verschiedenen Kernen zu skalieren und NUMA-aware zu arbeiten, um die Leistung zu optimieren. Darüber hinaus wird das CLI und die schnelle Binary API hervorgehoben, mit der VPP einfach in verschiedene Programmiersprachen integriert werden kann. Die Skalierbarkeit und Multithreading-Fähigkeiten von VPP ermöglichen eine effiziente Verarbeitung großer Paketmengen.

Takeaways

  • 😀 VPP verwendet verschiedene Input-Knoten, darunter DPDK, Ttap, Vhost, User und Netmap, die entweder im Polling- oder Interrupt-Modus arbeiten können.
  • 😀 Wenn der Verkehr zunimmt, wechselt VPP dynamisch von Interrupt-Modus zu Polling-Modus, um die Effizienz zu steigern.
  • 😀 VPP nutzt das native VBuffer-Paketstruktur, bei der DPDK mbufs in VBuffers umgewandelt werden, um die Interoperabilität zu gewährleisten, ohne zusätzliche Konvertierungskosten.
  • 😀 Plugins in VPP sind einfach als Shared Libraries integriert, ohne Performance-Einbußen im Vergleich zum nativen VPP-Code.
  • 😀 Mit Plugins können neue Graphknoten erstellt werden, jedoch ist das Ändern bestehender Knoten nur durch einen Neustart von VPP möglich.
  • 😀 Das CLI in VPP dient hauptsächlich zu Debugging-Zwecken; der bevorzugte Weg zur Programmierschnittstelle ist die Binary API für schnelle und effiziente Interaktionen.
  • 😀 Die Binary API in VPP ermöglicht die schnelle Programmierung von Routen und anderen Konfigurationen, mit einer Leistungsfähigkeit von mehr als einer Million Routen pro Sekunde.
  • 😀 Die Binary API unterstützt mehrere Programmiersprachen, einschließlich C, Java und Python, und ermöglicht die einfache Erweiterung um neue Bindings.
  • 😀 VPP verwendet 'embarrassing parallelism' für die Verarbeitung von Paketen, bei dem ein Paket immer auf demselben Kern verarbeitet wird, was die Leistung optimiert.
  • 😀 VPP ist NUMA-bewusst und stellt sicher, dass die Verarbeitung von Daten auf dem lokalen CPU-Socket erfolgt, um unnötige Datenübertragungen zwischen den CPUs zu vermeiden.

Q & A

  • Was ist das Hauptziel von VPP (Vector Packet Processing)?

    -Das Hauptziel von VPP ist es, eine leistungsstarke und skalierbare Plattform zur Paketverarbeitung im Netzwerk bereitzustellen. VPP optimiert den Datenverkehr und nutzt verschiedene Techniken wie Parallelismus und NUMA-Bewusstsein, um eine hohe Leistung zu gewährleisten.

  • Wie kann VPP mit verschiedenen Netzwerk-Treibern umgehen?

    -VPP unterstützt eine Vielzahl von Netzwerk-Treibern, darunter DPDK, Tap, Vhost-user und Netmap. Diese Treiber können in verschiedenen Modi wie Polling oder Interrupt betrieben werden, je nach den Anforderungen und der Last des Netzwerks.

  • Was ist der Unterschied zwischen Interrupt- und Polling-Modus in VPP?

    -Im Interrupt-Modus verarbeitet VPP eingehende Pakete nur, wenn eine Unterbrechung vom Treiber ausgelöst wird, wodurch CPU-Ressourcen gespart werden. Im Polling-Modus überwacht VPP kontinuierlich den Verkehr, um Pakete sofort zu verarbeiten, was in Hochlastszenarien erforderlich sein kann.

  • Was ist ein VB-Puffer in VPP und wie wird er genutzt?

    -Der VB-Puffer ist eine native Datenstruktur in VPP, die zur Speicherung von Paketdaten verwendet wird. Wenn VPP mit DPDK läuft, wird der VB-Puffer in die DPDK-Mbuf-Datenstruktur integriert, um eine nahtlose Verarbeitung ohne Konvertierungskosten zu ermöglichen.

  • Wie funktioniert das Plugin-System in VPP?

    -VPP verwendet ein Plugin-System, bei dem Plugins als gemeinsam genutzte Bibliotheken geladen werden. Diese Plugins können neue Funktionen hinzufügen, z. B. das Erstellen benutzerdefinierter Paketverarbeitungsgraphen, ohne die vorhandenen VPP-Kernfunktionen zu verändern.

  • Kann ein Plugin bestehende VPP-Knoten direkt ändern?

    -Nein, Plugins können keine bestehenden VPP-Knoten direkt ändern. Sie können jedoch neue Knoten für benutzerdefinierte Funktionen hinzufügen oder sich für bestimmte Pakettypen anmelden, um diese zu verarbeiten, wie z. B. das Empfangen von UDP-Paketen auf einem bestimmten Port.

  • Was ist der Debug-CLI in VPP und wie wird er verwendet?

    -Der Debug-CLI ist ein Werkzeug zur Fehlerbehebung in VPP, das es Entwicklern ermöglicht, die VPP-Instanz zu überwachen und zu steuern. Es dient hauptsächlich zur Entwicklung neuer Funktionen und zur Durchführung von Tests und Debugging, während die echte Interaktion mit VPP über die Binary API erfolgt.

  • Was ist die Binary API in VPP und warum ist sie wichtig?

    -Die Binary API ist eine schnelle und effiziente Schnittstelle für die Kommunikation mit VPP. Sie ermöglicht es Anwendungen, Pakete und andere Daten effizient zu verwalten und mit VPP zu interagieren, wobei sie für die Verarbeitung von mehr als einer Million Routen pro Sekunde optimiert ist.

  • Wie funktioniert der Multi-Core-Parallelen-Modus in VPP?

    -VPP nutzt den sogenannten 'embarrassing parallelism', bei dem Pakete auf bestimmten Kernen verarbeitet werden und nicht zwischen Kernen hin und her verschoben werden. Dies hilft, die Leistung zu optimieren, indem die Verarbeitung eines Pakets auf demselben Kern erfolgt, ohne Kontextwechsel zwischen den Kernen.

  • Was bedeutet NUMA-Bewusstsein in VPP und wie wird es genutzt?

    -NUMA-Bewusstsein (Non-Uniform Memory Access) bedeutet, dass VPP versucht, den Speicher lokal auf dem CPU-Socket zu verwenden, auf dem die VPP-Instanz läuft. Dies hilft, die Performance zu verbessern, indem das Überqueren des QPI-Busses zwischen CPU-Sockets vermieden wird.

Outlines

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Mindmap

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Keywords

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Highlights

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード

Transcripts

plate

このセクションは有料ユーザー限定です。 アクセスするには、アップグレードをお願いします。

今すぐアップグレード
Rate This

5.0 / 5 (0 votes)

関連タグ
VPPNetzwerkoptimierungPacketverarbeitungMultithreadingDPDKPluginsLeistungssteigerungScalabilityBinary APIVPP-ArchitekturCLI-Debugging
英語で要約が必要ですか?