Издаден е мрежовият стек F-Stack 1.13, изпълняващ се в пространството на потребителя

След година и половина разработки се състоя издание на проекта F-Stack 1.13, разработващ високопроизводителен мрежови стек, функциониращ в пространството на потребителя, основан на рамката DPDK и TCP/IP стека на FreeBSD (F-Stack не е свързан с FreeBSD и разглежда Linux като основна платформа за приложение). Проектът се използва в различни продукти и услуги Tencent, най-голямата телекомуникационна компания в Китай. Кодът разпространява е под лиценз BSD. Поддържа работа в Linux и FreeBSD.

F-Stack предлага възможност за организиране на мрежово взаимодействие в приложения, като вместо мрежовия стек на операционната система се използва собствен мрежов стек, функциониращ в пространството на потребителя и работещ директно с мрежовото оборудване. Предоставят се специализирани издания на Nginx и Redis, адаптирани за използване с F-Stack.

За разработка на приложения поддерживается са налични както стандартният Posix API (Socket, Epoll, Kqueue), улесняващ прехода на съществуващи приложения към F-Stack, така и собствен интерфейс на основата на корутини (микропотоците), който опростява създаването на мрежови приложения и позволява избягване на сложна логика за асинхронна обработка на заявки. F-Stack предлага и средства за опростяване на приложението в многопроцесорна архитектура.

За взаимодействие с мрежовата карта, заобикаляйки интерфейсите на ядрата на операционната система, се използва рамката DPDK (Data Plane Development Kit), предоставяща набор от библиотеки за ниско ниво работа с мрежови адаптери, взаимодействие в многоядрени системи, използване на кръгови буфери и големи страници памет („huge page“). Използването на DPDK дава възможност за приемане и изпращане на мрежови пакети, извършвайки минимален брой цикли на CPU (около 80 цикъла на пакет) и разработване на високопроизводителни компоненти на мрежовия стек. Функционалността на TCP/IP стека е наследена от FreeBSD 11.1 и е отделена в независима от операционната система библиотека.

F-Stack се позиционира като решение, което може да се прилага за повишаване на производителността на обработката на мрежови заявки в условия, при които работата на стандартния TCP/IP стек на ядрото на Linux става тесен бутон и ограничава мащабирането. При това, използването на F-Stack осигурява значителна оптимизация и позволява в някои ситуации да се увеличи числото на обработваните дребни заявки многократно.

Издаден е мрежовият стек F-Stack 1.13, изпълняващ се в пространството на потребителя

Издаден е мрежовият стек F-Stack 1.13, изпълняващ се в пространството на потребителя

Увеличението на производителността се постига чрез изключване на такива операции, като копиране на мрежови пакети, планиране на потоци, обработка на прекъсвания и използване на системни повиквания. F-Stack позволява да се достигне таванът на мрежовата производителност, възможен за използваната мрежова карта. Например, решения на база F-Stack демонстрираха възможност за обработка на 10 млн. паралелни връзки, 5 млн. заявки в секунда и 1 млн. връзки в секунда.

В новото издание:

  • Добавена е поддръжка на VLAN;
  • Осигурена е възможност за работа в изолирани контейнери на база Docker;
  • Реализирани са интерфейси ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd и ff_setsockopt_freebsd;
  • Добавен е параметърът „idle_sleep“ за намаляване на натоварването на CPU в ситуация на отсъствие на входящи пакети.
  • Добавена е поддръжка на компилация за архитектура ARM64;
  • В преведената на F-Stack редакция на Nginx са заменени обработчиците getpeername, getsockname и shutdown;
  • Осуществен е преход на новата версия DPDK 17.11.4 LTS;
  • Добавена е утилита traffic за визуализиране на текущия трафик, обработван от приложения, базирани на F-Stack (напомня trafshow).

От плановете за бъдеще се отбелязва поддръжка на IPv6, предоставяне на API за езици Python, PHP и Go, поддръжка на API Cyptodev (Intel QAT), използване на zerocopy при изпращане на пакети, поддръжка SPDK и възможност за стартиране под формата на фонов процес.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster