Die Veröffentlichung des Netzwerk-Stacks F-Stack 1.24, der im Benutzermodus ausgeführt wird.

Die veröffentlichte Netzwerk-Stacks F-Stack 1.24 ist eine Edition des Netzwerk-Stacks von FreeBSD, die im Benutzermodus arbeitet und das DPDK-Framework für maximale Leistung nutzt. Das Projekt wurde von der größten Telekommunikationsfirma in China, Tencent, ins Leben gerufen und wird in ihren Produkten und Dienstleistungen eingesetzt. Der Code ist in C geschrieben und steht unter der BSD-Lizenz. Es wird sowohl in Linux als auch in FreeBSD unterstützt.

F-Stack ermöglicht es, in Anwendungen einen eigenen lokalen Netzwerk-Stack zu verwenden, der unabhängig vom Netzwerk-Stack des Betriebssystems funktioniert, im Benutzermodus agiert und direkt mit der Netzwerkausrüstung arbeitet. F-Stack wird als Lösung positioniert, die die Leistung von Netzwerk-Request-Handlern erhöht, wenn der Standard-TCP/IP-Stack des Linux-Kernels zum Engpass wird und die Skalierbarkeit einschränkt — in einigen Situationen ermöglicht das Projekt, die Anzahl der verarbeiteten kleinen Netzwerk-Requests um ein Vielfaches zu steigern. Theoretisch ermöglicht F-Stack, die Obergrenze der Netzwerkleistung zu erreichen, die für die verwendete Netzwerkkarte möglich ist.

Die Leistungssteigerung erfolgt durch den Ausschluss von Operationen wie dem Kopieren von Netzwerkpaketen, der Planung von Threads, der Behandlung von Unterbrechungen und der Anwendung von Systemaufrufen. Zur Interaktion mit der Netzwerkkarte, ohne die Schnittstellen des Betriebssystemkerns zu nutzen, wird das DPDK-Framework (Data Plane Development Kit) angewendet, das eine Sammlung von Bibliotheken für die niederstufige Arbeit mit Netzwerkadaptern bereitstellt. DPDK ermöglicht es, die Overheadkosten zu senken und die Anzahl der CPU-Zyklen beim Empfangen oder Senden von Netzwerkpaketen zu minimieren.

Die Funktionalität des TCP/IP-Stacks entspricht dem Netzwerkstack von FreeBSD 13 und wurde aus diesem Betriebssystem in eine unabhängige Bibliothek ausgelagert. Für die Entwicklung von Anwendungen kann die Standard-API POSIX (socket, epoll, kqueue) oder eine eigene Programmierschnittstelle auf Basis von Mikro-Threads verwendet werden, die die Erstellung von Netzwerk-Anwendungen vereinfacht und es ermöglicht, auf komplexe asynchrone Logik bei der Verarbeitung von Anfragen zu verzichten.

Das Projekt unterstützt Übersetzungen, die auf die Verwendung von F-Stack in multithreaded Editionen umgestellt werden. Server Nginx 1.25.2 und Redis DB 6.2.6, die eine überdurchschnittliche Leistung im Vergleich zu herkömmlichen Builds aufweisen, die über den systemeigenen Netzwerkstack laufen.

Die auffälligsten Änderungen in der neuen Version sind:

  • Im Konfigurationsfile config.ini wurde die Möglichkeit hinzugefügt, zwischen der Verwendung von KNI (Kernel NIC Interface) und virtio_user als Transport für die Paketübertragung zwischen dem Kernel und der DPDK-basierten Paketverarbeitungsanwendung zu wählen. Ratlimit für KNI kann jetzt ebenfalls verwendet werden.
  • Die Unterstützung für die Aktivierung der Netzwerkkonfiguration "net.add_addr_allfibs=1" wurde hinzugefügt, um Adressen in allen Routing-Tabellen hinzuzufügen.
  • Die API ff_get_traffic wurde hinzugefügt, um Verkehr zu überwachen, beispielsweise zur Umsetzung von QoS (Quality of Service).
  • Die Funktionen pthread_create und pthread_join wurden hinzugefügt, die ähnliche Funktionen aus POSIX nachahmen.
  • Die API ff_dpdk_raw_packet_send wurde hinzugefügt, um raw-Pakete direkt über DPDK anstatt über einen Socket zu senden.
  • Die Unterstützung für die automatische VLAN-Konfiguration, die Routing und Policy-Routing implementiert, wurde realisiert.
  • Der Übergang zur DPDK-Version 22.11.6 LTS wurde vollzogen.
  • In der Umsetzung von Nginx über F-Stack wurde die Unterstützung für das Stream-Modul hinzugefügt.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster