Wydanie stosu sieciowego F-Stack 1.24, realizowanego w przestrzeni użytkownika

Opublikowana została sieciowa stos F-Stack 1.24, będąca edycją stosu sieciowego FreeBSD, działającego w przestrzeni użytkownika i wykorzystującego framework DPDK dla osiągnięcia maksymalnej wydajności. Projekt został stworzony przez największą chińską firmę telekomunikacyjną Tencent i jest wykorzystywany w jej produktach i usługach. Kod napisany jest w języku C i rozpowszechniany na licencji BSD. Obsługuje działanie w Linux i FreeBSD.

F-Stack umożliwia aplikacjom korzystanie z własnego lokalnego stosu sieciowego, niezależnego od stosu sieciowego systemu operacyjnego, funkcjonującego w przestrzeni użytkownika i bezpośrednio współpracującego ze sprzętem sieciowym. F-Stack jest pozycjonowany jako rozwiązanie pozwalające zwiększyć wydajność przetwarzania zapytań sieciowych w sytuacjach, gdy standardowy stos TCP/IP jądra Linux staje się wąskim gardłem i ogranicza skalowalność — w niektórych sytuacjach projekt umożliwia kilkukrotne zwiększenie liczby przetwarzanych małych zapytań sieciowych. Teoretycznie F-Stack pozwala osiągnąć pułap wydajności sieciowej, możliwy do osiągnięcia dla używanej karty sieciowej.

Wydajność zwiększa się dzięki wyeliminowaniu takich operacji jak kopiowanie pakietów sieciowych, planowanie wątków, przetwarzanie przerwań oraz wykorzystanie wywołań systemowych. Do interakcji z kartą sieciową, omijając interfejsy jądra systemu operacyjnego, wykorzystywany jest framework DPDK (Data Plane Development Kit), rozwijający zestaw bibliotek do niskopoziomowej pracy z adapterami sieciowymi. DPDK pozwala na zmniejszenie narzutów i osiągnięcie minimalnej liczby cykli CPU podczas odbierania lub wysyłania pakietów sieciowych.

Funkcjonalność stosu TCP/IP odpowiada stosowi sieciowemu FreeBSD 13 i została wydzielona z tej systemu operacyjnego do niezależnej biblioteki. Do tworzenia aplikacji można korzystać ze standardowego API POSIX (socket, epoll, kqueue) lub z własnego interfejsu programistycznego opartego na mikrowątkach, co upraszcza tworzenie aplikacji sieciowych i pozwala obejść się bez skomplikowanej logiki asynchronicznego przetwarzania zapytań.

Projekt wspiera edycje wieloprotokołowe przetłumaczone na wykorzystanie F-Stack. serwera Nginx 1.25.2 i baza danych Redis 6.2.6, demonstrujące wydajność wyższą niż standardowe kompilacje działające na bazie systemowego stosu sieciowego.

Najbardziej zauważalne zmiany w nowej wersji:

  • W pliku konfiguracyjnym config.ini dodano możliwość wyboru między używaniem KNI (Kernel NIC Interface) a virtio_user jako transportu do przesyłania pakietów między jądrem a aplikacją do przetwarzania pakietów opartą na DPDK. Dodano możliwość wykorzystania ratelimit dla KNI.
  • Dodano wsparcie dla włączenia ustawienia stosu sieciowego „net.add_addr_allfibs=1” w celu dodania adresów do wszystkich tabel routingu.
  • Dodano API ff_get_traffic do uzyskiwania informacji o ruchu, na przykład do realizacji QoS (Quality of Service).
  • Dodano funkcje pthread_create i pthread_join, przypominające podobne funkcje z POSIX.
  • Dodano API ff_dpdk_raw_packet_send do wysyłania surowych pakietów z aplikacji bezpośrednio przez DPDK, a nie przez gniazdo.
  • Wprowadzono wsparcie dla automatycznej konfiguracji VLAN, routingu i routingu polityk.
  • Zrealizowano przejście na wersję DPDK 22.11.6 LTS.
  • W implementacji Nginx na bazie F-Stack dodano wsparcie dla modułu stream.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster