Wydanie stosu sieciowego F-Stack 1.13, uruchamianego w przestrzeni użytkownika

Po półtora roku prac rozwojowych miał miejsce wydanie projektu F-Stack 1.13, rozwijający działający w przestrzeni użytkownika wysokowydajny stos sieciowy, oparty na frameworku DPDK i stosie TCP/IP FreeBSD (F-Stack nie jest związany z FreeBSD i jako główną platformę zastosowania rozważa Linux). Projekt jest używany w różnych produktach i usługach Tencent, największej w Chinach firmie telekomunikacyjnej. Kod rozpowszechniany na licencji BSD. Obsługiwana jest praca w Linux i FreeBSD.

F-Stack umożliwia organizację komunikacji sieciowej w aplikacjach, stosując zamiast stosu sieciowego systemu operacyjnego własny stos sieciowy, funkcjonujący w przestrzeni użytkownika i bezpośrednio współpracujący z urządzeniami sieciowymi. Oferowane są specjalizowane edycje Nginx i Redis, przetłumaczone na użycie F-Stack.

Do tworzenia aplikacji jest wspierana zarówno standardowy interfejs POSIX API (Socket, Epoll, Kqueue), uproszczający migrację istniejących aplikacji na F-Stack, jak i własny interfejs programowania oparty na współprogramach (mikropotokach), upraszczający tworzenie aplikacji sieciowych i pozwalający na ominięcie skomplikowanej logiki asynchronicznego przetwarzania żądań. F-Stack oferuje również narzędzia do uproszczenia zastosowania w aplikacjach z architekturą wieloprocesową.

Do bezpośredniej interakcji z kartą sieciową, omijając interfejsy rdzenia systemu operacyjnego, stosowany jest framework DPDK (Data Plane Development Kit), oferujący zestaw bibliotek do niskopoziomowej pracy z adapterami sieciowymi, interakcji w systemach wielordzeniowych, wykorzystania buforów pierścieniowych i dużych stron pamięci („huge page”). Użycie DPDK pozwala na odbieranie i wysyłanie pakietów sieciowych przy minimalnej liczbie cykli CPU (około 80 cykli na pakiet) oraz projektowanie wysoko wydajnych komponentów stosu sieciowego. Funkcjonalność stosu TCP/IP jest bezpośrednio zaczerpnięta z FreeBSD 11.1 i wydzielona do niezależnej od systemu operacyjnego biblioteki.

F-Stack jest pozycjonowany jako rozwiązanie, które można wykorzystać do zwiększenia wydajności przetwarzania zapytań sieciowych w sytuacjach, gdy standardowy stos TCP/IP jądra Linux staje się wąskim gardłem i ogranicza skalowanie. Zastosowanie F-Stack zapewnia znaczącą optymalizację i w niektórych sytuacjach pozwala na wielokrotne zwiększenie liczby przetwarzanych małych zapytań.

Wydanie stosu sieciowego F-Stack 1.13, uruchamianego w przestrzeni użytkownika

Wydanie stosu sieciowego F-Stack 1.13, uruchamianego w przestrzeni użytkownika

Zwiększenie wydajności osiągane jest poprzez wykluczenie takich operacji, jak kopiowanie pakietów sieciowych, planowanie wątków, obsługa przerwań oraz stosowanie wywołań systemowych. F-Stack pozwala osiągnąć maksymalny poziom wydajności sieciowej, możliwy dla używanej karty sieciowej. Na przykład, rozwiązania oparte na F-Stack wykazały możliwość obsługi 10 milionów równoległych połączeń, 5 milionów zapytań na sekundę i 1 miliona połączeń na sekundę.

W nowym wydaniu:

  • Dodano wsparcie dla VLAN;
  • Zapewniono możliwość pracy w izolowanych kontenerach opartych na Dockerze;
  • Zrealizowane interfejsy ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd oraz ff_setsockopt_freebsd;
  • Dodano parametr „idle_sleep” w celu zmniejszenia obciążenia CPU w sytuacji braku przychodzących pakietów
  • Dodano wsparcie dla architektury ARM64;
  • W przetłumaczonej na F-Stack edycji Nginx zastąpiono obsługę getpeername, getsockname i shutdown;
  • Dokonano przejścia na nową wersję DPDK 17.11.4 LTS;
  • Do zestawu dodano narzędzie ruch do wyświetlania aktualnego ruchu przetwarzanego przez aplikacje oparte na F-Stack (podobne do trafshow).

W planach na przyszłość zaznaczono wsparcie dla IPv6, udostępnienie API dla języków Python, PHP i Go, wsparcie dla API Cyptodev (Intel QAT), wykorzystanie zerocopy przy wysyłaniu pakietów, wsparcie SPDK i możliwość uruchomienia w formie procesu w tle.

Ź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