De netstack F-Stack 1.24 is gepubliceerd en is een bewerking van de netstack van FreeBSD, die in de gebruikersruimte werkt en het DPDK-framework gebruikt voor maximale prestaties. Het project is opgericht door het grootste telecombedrijf in China, Tencent, en wordt gebruikt in zijn producten en diensten. De code is geschreven in C en wordt verspreid onder de BSD-licentie. Ondersteuning voor Linux en FreeBSD wordt geboden.
F-Stack stelt applicaties in staat een eigen lokale netstack te gebruiken, onafhankelijk van de netstack van het besturingssysteem, die in de gebruikersruimte functioneert en rechtstreeks met netwerkhardware werkt. F-Stack positioneert zich als een oplossing die de prestaties van netwerkverzoekverwerkers verhoogt in situaties waar de standaard TCP/IP-netstack van de Linux-kernel een knelpunt wordt en de schaalbaarheid beperkt — in sommige gevallen maakt het project het mogelijk het aantal verwerkte kleine netwerkverzoeken aanzienlijk te verhogen. In theorie stelt F-Stack in staat de plafond van netwerkprestaties te bereiken dat mogelijk is voor de gebruikte netwerkaart.
De prestatieverbetering wordt bereikt door het uitsluiten van operaties zoals netwerppakketkopieën, threadplanning, interruptverwerking en het gebruik van systeemoproepen. Voor interactie met de netwerkadapter wordt het DPDK (Data Plane Development Kit) framework gebruikt, dat een set bibliotheken ontwikkelt voor laagdrempelige interactie met netwerkadapters. DPDK maakt het mogelijk om overhead te verminderen en binnen een minimaal aantal CPU-cycli te blijven bij het ontvangen of verzenden van netwerppakketten.
De functionaliteit van de TCP/IP-netstack komt overeen met de netstack van FreeBSD 13 en is uit dit besturingssysteem in een onafhankelijke bibliotheek gehaald. Voor de ontwikkeling van applicaties kan de standaard POSIX API (socket, epoll, kqueue) of een eigen programmeerinterface op basis van micro-threads worden gebruikt, die het maken van netwerapplicaties vereenvoudigt en het mogelijk maakt zonder complexe logica voor asynchrone verwerking van verzoeken te werken.
Het project ondersteunt vertaalde versies voor het gebruik van F-Stack in multi-protocol de server Nginx 1.25.2 en Redis-database 6.2.6, die prestaties boven de gebruikelijke configuraties demonstreren die draaien bovenop de systeem netwerksstack.
De meest opvallende wijzigingen in de nieuwe release:
- In het configuratiebestand config.ini is de mogelijkheid toegevoegd om te kiezen tussen het gebruik van KNI (Kernel NIC Interface) en virtio_user als transport voor het verzenden van pakketten tussen de kernel en de packet processing applicatie op basis van DPDK. De mogelijkheid om ratelimit voor KNI te gebruiken is toegevoegd.
- Er is ondersteuning toegevoegd voor het inschakelen van de netwerksstack-instelling "net.add_addr_allfibs=1" om adressen aan alle routeringstabellen toe te voegen.
- De API ff_get_traffic is toegevoegd voor het verkrijgen van verkeer, bijvoorbeeld voor het implementeren van QoS (Quality of Service).
- De functies pthread_create en pthread_join zijn toegevoegd, die vergelijkbaar zijn met soortgelijke functies uit POSIX.
- De API ff_dpdk_raw_packet_send is toegevoegd voor het rechtstreeks verzenden van raw-pakketten door de applicatie via DPDK, in plaats van via een socket.
- Ondersteuning voor automatische VLAN-configuratie, routering en policy routing is geïmplementeerd.
- De overstap naar DPDK-versie 22.11.6 LTS is gerealiseerd.
- In de implementatie van Nginx bovenop F-Stack is ondersteuning toegevoegd voor de stream-module.
Bron: opennet.ru
