Onload®️ ist ein leistungsstarker Netzwerk-Stack auf Benutzerebene, der TCP- und UDP-Netzwerk-E/A für Anwendungen beschleunigt, die die BSD-Sockets unter Linux verwenden.
OpenOnload umfasst eine gemeinsam genutzte Bibliothek auf Benutzerebene, die netzwerkbezogene Systemaufrufe abfängt, den Protokollstapel implementiert und Kernelmodule unterstützt. Es ist mit der vollständigen Systemaufruf-API kompatibel, einschließlich der Aspekte, die normalerweise für Netzwerke auf Benutzerebene problematisch sind, wie z. B. fork(), exec(), das Weiterleiten von Sockets über Unix-Domänen-Sockets und das Vorantreiben des Protokolls, wenn die Anwendung nicht geplant ist .
OpenOnload wird als Quellcode verteilt. Anweisungen zum Bauen, Verpacken und Installieren finden Sie unter DEVELOPING.md
Wenn durch Onload zu beschleunigende Schnittstellen vorhanden sind, die keine AMD Solarflare-Schnittstellen sind, führen Sie Folgendes aus, um diese Schnittstellen zu registrieren, die mit AF_XDP beschleunigt werden sollen:
echo ens2f0 > /sys/module/sfc_resource/afxdp/register
Die zu ladende Anwendung sollte gestartet werden, indem der Befehlszeile onload
vorangestellt wird.
Das öffentlich gehostete Repository ist ein von der Community unterstütztes Projekt. Wenn Probleme in diesem Repository gemeldet werden, wird davon ausgegangen, dass Benutzer von der Spitze des Git-Baums ausgehen, um aktuelle Änderungen abzurufen, und nicht die offiziellen Versionen von Onload verwenden, die normalerweise vor dem Erscheinen der letzten Kernel-Änderungen veröffentlicht wurden, da dies wahrscheinlich dazu führen wird Es werden viele doppelte Probleme aufgeworfen. Inkompatibilitäten, die durch neuere Kernel-Versionen entstanden sind, werden hier in diesem Repository wahrscheinlich schnell behoben.
Unterstützte Versionen von OpenOnload sind unter https://www.xilinx.com/support/download/nic-software-and-drivers.html#open verfügbar. Bitte melden Sie Probleme zu unterstützten Versionen von Onload an [email protected].
Dieser Quellbaum ist mit den folgenden Linux-Kerneln und -Distributionen kompatibel:
Onload bietet optimale Netzwerkbeschleunigung und zusätzliche Funktionen mithilfe der nativen ef_vi-Hardwareschnittstelle, die von AMD Solarflare-Netzwerkadaptern bereitgestellt wird, im Vergleich zur Verwendung des AF_XDP-Mechanismus von Linux. In diesem Modus ist keine Kernel- und Treiberunterstützung für AF_XDP erforderlich.
Eine Version des „sfc“-Netztreibers für AMD Solarflare-Netzwerkadapter ist im Lieferumfang enthalten.
Die folgenden Adapter können OpenOnload ohne AF_XDP unterstützen:
OpenOnload kann Anwendungen auf Nicht-Solarflare-Netzwerkadaptern mit Unterstützung für AF_XDP beschleunigen.
Um Zero-Copy zu unterstützen, benötigt Onload AF_XDP-Netzwerkadaptertreiber, um die erforderlichen AF_XDP-Primitive zu implementieren. Normalerweise unterstützen die neuesten Treiber der Netzwerkadapterhersteller diese Grundelemente.
Die AF_XDP-Unterstützung ist eine von der Community unterstützte laufende Arbeit, die derzeit nicht in Release-Qualität ist.
Wenn ein Netdriver AF_XDP im nativen Modus nicht unterstützt, versucht Onload, bei der Registrierung einer Schnittstelle den generischen XDP-Modus zu verwenden. Damit es funktioniert, muss vor der Registrierung der Schnittstelle ein Userland-Helper eingerichtet werden:
$ make -C ./src/tools/bpf_link_helper/
$ echo $( realpath ./src/tools/bpf_link_helper/bpf-link-helper ) | sudo tee /sys/module/sfc_resource/parameters/bpf_link_helper
OpenOnload kann ohne SFC-Treiber erstellt werden:
make
: Variable HAVE_SFC=0
verwenden;onload_build
& onload_install
: Parameter --no-sfc
verwenden;onload_tool reload
: Verwenden Sie den Parameter --onload-only
.Es kann auch ohne EFCT- und AUX-Unterstützung erstellt werden:
make
: Variable HAVE_EFCT=0
verwenden;onload_build
: Verwenden Sie den Parameter --no-efct
. Bitte sehen Sie sich CONTRIBUTING.md an
Diese Datei: (c) Copyright 2020-2024 Advanced Micro Devices, Inc.