Eine „DPDK-dock-Entwicklungsumgebung", bestehend aus einer interaktiven Shell, die DPDK-Thread-Operationen steuern kann, und einer DPDK-Thread-Ausführungsumgebung (sd-plane)
Language: English | 日本語 | Français | 中文 | Deutsch | Italiano | 한국어 | ไทย | Español
- Hochleistungs-Paketverarbeitung: Zero-Copy-Paketverarbeitung im Benutzerbereich mit DPDK
- Layer 2/3-Weiterleitung: Integrierte L2- und L3-Weiterleitung mit ACL-, LPM- und FIB-Unterstützung
- Paketgenerierung: Integrierter Paketgenerator für Tests und Benchmarking
- Netzwerkvirtualisierung: TAP-Interface-Unterstützung und VLAN-Switching-Funktionen
- CLI-Verwaltung: Interaktive Befehlszeilenschnittstelle für Konfiguration und Überwachung
- Multi-Threading: Kooperatives Threading-Modell mit Workern pro Kern
- Hauptanwendung: Zentrale Router-Logik und Initialisierung
- DPDK-Module: L2/L3-Weiterleitung und Paketgenerierung
- CLI-System: Befehlszeilenschnittstelle mit Vervollständigung und Hilfe
- Threading: lthread-basiertes kooperatives Multitasking
- Virtualisierung: TAP-Interfaces und virtuelles Switching
- OS: Ubuntu 24.04 LTS (derzeit unterstützt)
- NICs: Treiber | Unterstützte NICs
- Speicher: Hugepage-Unterstützung erforderlich
- CPU: Multi-Core-Prozessor empfohlen
Das Projekt wurde getestet auf:
- Topton (N305/N100): Mini-PC mit 10G NICs (getestet)
- Partaker (J3160): Mini-PC mit 1G NICs (getestet)
- Intel Generic PC: Mit Intel x520 / Mellanox ConnectX5
- Andere CPUs: Sollte mit AMD-, ARM-Prozessoren usw. funktionieren
Installation der Abhängigkeiten
Für Intel Core i3-n305/Celeron j3160 ist eine schnelle Installation mit Debian-Paketen möglich.
Das vorkompilierte Debian-Paket herunterladen und installieren:
# Das neueste Paket für n305 herunterladen
wget https://www.yasuhironet.net/download/n305/sdplane_0.1.4-36_amd64.deb
wget https://www.yasuhironet.net/download/n305/sdplane-dbgsym_0.1.4-36_amd64.ddeb
# oder für j3160
wget https://www.yasuhironet.net/download/j3160/sdplane_0.1.4-35_amd64.deb
wget https://www.yasuhironet.net/download/j3160/sdplane-dbgsym_0.1.4-35_amd64.ddeb
# Paket installieren
sudo apt install ./sdplane_0.1.4-*_amd64.deb
sudo apt install ./sdplane-dbgsym_0.1.4-*_amd64.ddebHinweis: Die Verwendung dieser vorkompilierten Binärdatei auf anderen CPUs kann SIGILL (Illegale Anweisung) verursachen. In diesem Fall müssen Sie selbst kompilieren. Überprüfen Sie yasuhironet.net Downloads für die neueste Paketversion.
Springen Sie zu 5. Systemkonfiguration.
Kompilierung und Installation aus dem Quellcode
Erstellung und Installation des Debian-Pakets
sdplane verwendet Konfigurationsdateien, um das Startverhalten und die Laufzeitumgebung zu definieren.
systemd/sdplane.service: systemd Service-Dateinetplan/01-netcfg.yaml: Netzwerkkonfiguration mit netplan
- Beispiel-Konfigurationsdateien für verschiedene Anwendungen
- Start-Skripte und Konfigurationsprofile
# Grundlegende Ausführung
sudo ./sdplane/sdplane
# Mit Konfigurationsdatei ausführen
sudo ./sdplane/sdplane -f /path/to/config-file
# Verbindung zum CLI (von einem anderen Terminal)
telnet localhost 9882
# Die interaktive Shell ist jetzt verfügbar
sdplane> help
sdplane> show versionVirtualisierungsfähigkeiten müssen aktiviert werden:
- Intel: Intel VT-d
- AMD: AMD IOMMU / AMD-V
Diese Optionen müssen in den BIOS-Einstellungen aktiviert werden. Die GRUB-Konfiguration muss möglicherweise auch geändert werden:
# /etc/default/grub
GRUB_CMDLINE_LINUX="iommu=pt intel_iommu=on"Änderungen anwenden:
sudo update-grub
sudo reboot# Konfigurationsdatei für automatisches Laden erstellen
sudo tee /etc/modules-load.d/vfio-pci.conf > /dev/null <<EOF
vfio-pci
EOFDie Treiber-Installation ist über den folgenden Link erforderlich:
https://network.nvidia.com/products/ethernet-drivers/linux/mlnx_en/
Führen Sie während der Installation ./install --dpdk aus.
Die Option --dpdk ist obligatorisch.
Kommentieren Sie die folgenden Einstellungen in sdplane.conf aus, da sie nicht benötigt werden:
#set device {pcie-id} driver unbind
#set device {pcie-id} driver {driver-name} driver_override
#set device {pcie-id} driver {driver-name} bindFür Mellanox-NICs müssen Sie den Befehl update port status ausführen, um die Port-Informationen zu aktualisieren.
Sie können den Befehl dpdk-devbind.py in DPDK verwenden, um die PCIe-Busnummern der NICs zu überprüfen:
# Netzwerkgeräte-Status anzeigen
dpdk-devbind.py -s
# Beispiel-Ausgabe:
Network devices using kernel driver
===================================
0000:04:00.0 'NetXtreme BCM5720 Gigabit Ethernet PCIe 165f' numa_node=0 if=eno8303 drv=tg3 unused= *Active*
0000:b1:00.0 'MT27800 Family [ConnectX-5] 1017' numa_node=1 if=enp177s0np0 drv=mlx5_core unused= *Active*Wenn Sie rib-manager, neigh-manager und netlink-thread Worker konfigurieren, müssen sie in dieser Reihenfolge konfiguriert werden, falls sie verwendet werden.
Nur ein Befehl, der rte_eal_init() aufruft, sollte aus der Konfigurationsdatei aufgerufen werden. Die Funktion rte_eal_init() wird von Befehlen wie rte_eal_init, pktgen init, l2fwd init und l3fwd init aufgerufen.
Umfassende Benutzerhandbücher und Befehlsreferenzen sind verfügbar:
- Benutzerhandbuch - Vollständige Übersicht und Befehlsklassifizierung
Anwendungshandbücher:
- L2 Repeater-Anwendung - Einfache Layer 2-Paketweiterleitung mit MAC-Lernen
- Enhanced Repeater-Anwendung - VLAN-bewusstes Switching mit TAP-Interfaces
- Paketgenerator-Anwendung - Hochleistungs-Traffic-Generierung und Tests
Konfigurationshandbücher:
- RIB & Routing - RIB- und Routing-Funktionen
- Enhanced Repeater - Enhanced Repeater-Konfiguration
- Port-Verwaltung & Statistiken - DPDK-Port-Verwaltung und Statistiken
- Worker & lcore Management & Thread-Informationen - Worker-Threads, lcore und Thread-Informationen Verwaltung
- System-Information & Überwachung - Systeminformationen und Überwachung
- Geräteverwaltung - Geräte- und Treiberverwaltung
Entwicklerhandbücher:
- DPDK-Integrationshandbuch - Wie man DPDK-Anwendungen integriert
- Debug & Logging - Debug- und Logging-Funktionen
- Warteschlangen-Konfiguration - Warteschlangen-Konfiguration und -verwaltung
- TAP-Interface - TAP-Interface-Verwaltung
- VTY & Shell-Verwaltung - VTY- und Shell-Verwaltung
- lthread-Verwaltung - Kooperative leichte Thread-Verwaltung
- Paketgenerierung - Paketgenerierung mit PKTGEN
- DPDK-Anwendungs-Integrationshandbuch - Wie man DPDK-Anwendungen mit dem DPDK-dock-Ansatz in sdplane integriert
- Alle Entwicklerdokumentation ist in
doc/enthalten - Integrationshandbücher und Beispiele sind in
doc/manual/de/
Dieses Projekt folgt den GNU Coding Standards. Um den Code zu überprüfen und zu formatieren:
# Stil überprüfen (benötigt clang-format 18.1.3+)
./style/check_gnu_style.sh check
# Code automatisch formatieren
./style/check_gnu_style.sh update
# Unterschiede anzeigen
./style/check_gnu_style.sh diffErforderliche Tools installieren:
# Für Ubuntu 24.04
sudo apt install clang-format-18Dieses Projekt steht unter der MIT-Lizenz - siehe die Datei LICENSE für Details.
- GitHub: https://github.com/kait-cronos/sdplane-oss
- Issues: https://github.com/kait-cronos/sdplane-oss/issues
Evaluierungsgeräte können zusätzliche Funktionen und Software-Modifikationen enthalten.
Für Anfragen zu Evaluierungsgeräten kontaktieren Sie uns über GitHub Issues oder direkt per E-Mail.
