Netværksstakken F-Stack 1.24 er offentliggjort, som er en redaktion af netværksstakken FreeBSD, der kører i brugerrummet og anvender DPDK-rammeværket for at opnå maksimal ydeevne. Projektet er skabt af Kinas største telekommunikationsselskab Tencent og anvendes i deres produkter og tjenester. Koden er skrevet i C og distribueres under BSD-licensen. Der understøttes drift i Linux og FreeBSD.
F-Stack gør det muligt at bruge en lokal netværksstak i applikationer, som ikke er afhængig af operativsystemets netværksstak, fungerer i brugerrummet og arbejder direkte med netværksudstyret. F-Stack positioneres som en løsning til at forbedre ydeevnen af netværksanmodningsbehandlere, når den standard TCP/IP-stak i Linux-kernen bliver en flaskehals og begrænser skalerbarheden — i nogle situationer giver projektet mulighed for at øge antallet af behandlede små netværksanmodninger mange gange. Teoretisk set tillader F-Stack at nå den maksimale netværksydelse, der er mulig for det anvendte netværkskort.
Ydeevneforøgelsen opnås ved at eliminere operationer såsom kopiering af netværkspakker, planlægning af tråde, behandling af afbrydelser og anvendelse af systemopkald. For at interagere med netværkskortet, uden om operativsystemets kernegrænseflader, anvendes DPDK (Data Plane Development Kit)-rammen, der udvikler et sæt biblioteker til lavniveauarbejde med netværksadaptere. DPDK muliggør at reducere overheaden og holde sig inden for et minimum antal CPU-cyklusser ved modtagelse eller afsendelse af netværkspakker.
Funktionaliteten af TCP/IP-stacken svarer til netværksstakken i FreeBSD 13 og er adskilt fra dette operativsystem i et uafhængigt bibliotek. Til udvikling af applikationer kan standard POSIX-API'en (socket, epoll, kqueue) eller et eget programmeringsinterface baseret på mikrotreads anvendes, hvilket forenkler oprettelsen af netværksapplikationer og muliggør at undgå kompleks logik til asynkron behandling af anmodninger.
Projektet understøtter oversættelser til brug af F-Stack i redaktioner af multiprotokol server Nginx 1.25.2 og Redis-database 6.2.6, der demonstrerer ydeevne over normale versioner, der kører over det systemnetværksstack.
De mest mærkbare ændringer i den nye udgave:
- I konfigurationsfilen config.ini er der tilføjet mulighed for at vælge mellem at bruge KNI (Kernel NIC Interface) og virtio_user som transportmiddel til at overføre pakker mellem kernen og DPDK-baserede pakkebehandlingsapplikationer. Der er tilføjet mulighed for at bruge ratelimit for KNI.
- Tilføjet support til at aktivere netværksstakindstillingen "net.add_addr_allfibs=1" for at tilføje adresser til alle rutetabeller.
- Tilføjet API ff_get_traffic til at hente trafik, for eksempel til implementering af QoS (Quality of Service).
- Tilføjet funktioner pthread_create og pthread_join, der minder om de tilsvarende funktioner fra POSIX.
- Tilføjet API ff_dpdk_raw_packet_send til at sende rå pakker direkte gennem DPDK, i stedet for via en socket.
- Understøttelse af automatisk konfiguration af VLAN, ruting og policy routing er implementeret.
- Overgangen til DPDK version 22.11.6 LTS er udført.
- I implementeringen af Nginx ovenpå F-Stack er der tilføjet support til stream-modulet.
Kilde: opennet.ru
