Efter halvandet års udvikling projektudgivelse , udvikle en brugerplads, højtydende netværksstack baseret på rammen и TCP/IP FreeBSD-stak (F-Stack er ikke bundet til FreeBSD og betragter FreeBSD som den primære platform til brug) Linux). Проект используется в различных продуктах и сервисах , Kinas største teleselskab. Kode under BSD-licensen. Arbejde i er understøttet Linux og FreeBSD.
F-Stack gør det muligt at organisere netværksinteraktion i applikationer ved i stedet for operativsystemets netværksstak at bruge sin egen netværksstak, som opererer i brugerrummet og arbejder direkte med netværksudstyr. specialiserede udgaver af Nginx og Redis konverteret til at bruge F-Stack.
Til applikationsudvikling både standard Posix API (Socket, Epoll, Kqueue), som forenkler overførslen af eksisterende applikationer til F-Stack, og en proprietær softwaregrænseflade baseret på coroutines (mikrotråde), som forenkler oprettelsen af netværksapplikationer og giver dig mulighed for at undvære den komplekse logik i asynkron anmodningsbehandling. F-Stack leverer også værktøjer til at forenkle implementeringen i applikationer med multi-proces arkitektur.
For at interagere med netværkskortet, uden om operativsystemets kernegrænseflader, bruges en ramme (Data Plane Development Kit), предоставляющий набор библиотек для низкоуровневой работы с сетевыми адаптерами, взаимодействия в многоядерных системах, задействования кольцевых буферов и больших страниц памяти («huge page»). Использование DPDK даёт возможность принимать и отправлять сетевые пакеты с выполнением минимального числа циклов CPU (около 80 циклов на пакет) и разрабатывать высокопроизводительные компоненты сетевого стека. Непосредственно функциональность TCP/IP стека заимствована из FreeBSD 11.1 и выделена в независимую от операционной системы библиотеку.
F-Stack позиционируется как решение, которое можно применять для повышения производительности обработчиков сетевых запросов в условиях, когда работа штатный TCP/IP kernel stak Linux становится узким местом и ограничивает масштабирование. При этом применение F-Stack даёт достаточно ощутимую оптимизацию и позволяет в некоторых ситуациях увеличить число обрабатываемых мелких запросов в разы.
Ydeevneforbedringer opnås ved at eliminere operationer såsom kopiering af netværkspakker, planlægning af tråde, håndtering af afbrydelser og brug af systemopkald. F-Stack giver dig mulighed for at opnå den maksimalt mulige netværksydelse for det netværkskort, du bruger. For eksempel har F-Stack-baserede løsninger demonstreret evnen til at håndtere 10 millioner samtidige forbindelser, 5 millioner anmodninger i sekundet og 1 million forbindelser i sekundet.
I den nye udgivelse:
- Tilføjet VLAN-understøttelse;
- Muligheden for at arbejde i isolerede containere baseret på Docker er blevet givet;
- Grænsefladerne ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd og ff_setsockopt_freebsd er implementeret;
- Tilføjet "idle_sleep" parameter for at reducere CPU-belastning i tilfælde af ingen indgående pakker
- Tilføjet støtte til bygning til ARM64-arkitektur;
- I Nginx-udgaven, der er oversat til F-Stack, er getpeername, getsockname og shutdown-handlere blevet erstattet;
- Overgangen til den nye version af DPDK 17.11.4 LTS er gennemført;
- Værktøjet er blevet tilføjet til sammensætningen for at vise aktuel trafik behandlet af F-Stack-baserede applikationer (svarende til trafshow).
Fra planer for fremtiden IPv6 support, leverer API til Python, PHP og Go sprog, understøtter Cyptodev API(), brug nulkopi, når du sender pakker, support og evnen til at køre som en baggrundsproces.
Kilde: opennet.ru
