ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ мрСТовият стСк F-Stack 2.0, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π² потрСбитСлското пространство

Π‘ΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° F-Stack 2.0 Π΅ пуснат, Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΉΠΊΠΈ рСдакция Π½Π° мрСТовия стСк FreeBSD, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½ Π·Π° самостоятСлна Ρ€Π°Π±ΠΎΡ‚Π° Π² потрСбитСлското пространство ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ създадСн ΠΎΡ‚ Π½Π°ΠΉ-голямата Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° компания Π² ΠšΠΈΡ‚Π°ΠΉ, Tencent, ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π½Π΅ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ ΠΈ услуги. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° C ΠΈ сС разпространява ΠΏΠΎΠ΄ BSD Π»ΠΈΡ†Π΅Π½Π·. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π² Linux ΠΈ FreeBSD. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½ΠΈ Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° вСрсии Π½Π° Nginx 1.28 ΠΈ Π‘Π£Π‘Π” Redis 6.2.6, ΠΊΠΎΠΈΡ‚ΠΎ дСмонстрират производитСлност Π½Π°Π΄ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ сборки, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π²ΡŠΡ€Ρ…Ρƒ систСмния ΠΌΡ€Π΅ΠΆΠΎΠ² стСк.

F-Stack позволява Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° собствСн Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΌΡ€Π΅ΠΆΠΎΠ² стСк Π² прилоТСнията, нСзависим ΠΎΡ‚ мрСТовия стСк Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Ρ‰ Π² потрСбитСлското пространство ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎΡ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅. F-Stack сС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС повиши производитСлността Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ заявки Π² условия, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ стандартният TCP/IP стСк Π½Π° ядрото Π½Π° Linux става тСсСн ΠΌΠΎΠ΄Π΅Π» ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. Π’Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ F-Stack позволява достиганСто Π½Π° Ρ‚Π°Π²Π°Π½ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° производитСлност, възмоТСн Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΊΠ°Ρ€Ρ‚Π°, ΠΈ Π² някои ситуации ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° броя Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π΅ΠΌΠΈΡ‚Π΅ ΠΌΠ°Π»ΠΊΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ заявки.

ΠŸΠΎΠ²ΠΈΡˆΠ°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° производитСлността сС постига Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°Π½Π΅ Π΄ΠΎ систСмни ΠΏΠΎΠ²ΠΈΡ†ΠΈ. Π—Π° взаимодСйствиС с ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°, заобикаляйки интСрфСйситС Π½Π° ядрото Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡŠΡ‚ DPDK (Data Plane Development Kit), ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° нискоуровнСва Ρ€Π°Π±ΠΎΡ‚Π° с ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΈ. DPDK ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° намаляванС Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ спазванС Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π±Ρ€ΠΎΠΉ CPU Ρ†ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Π½Π° TCP/IP стСка ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° мрСТовия стСк Π½Π° FreeBSD 15 ΠΈ Π΅ ΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π² нСзависима Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π—Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° прилоТСния ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° стандартния POSIX API (socket, epoll, kqueue) ΠΈΠ»ΠΈ собствСн интСрфСйс, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠ½ΠΈΡˆΠΊΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ опростява ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прилоТСния ΠΈ позволява Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ слоТната Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° асинхронната ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ с Π½Π΅ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ прилоТСния с Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Ρ‡Ρ€Π΅Π· LD_PRELOAD.

Най-Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅Π»Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² новия Ρ€Π΅Π»ΠΈΠ·:

  • ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° мрСТовия стСк са ΠΎΠ±Π½ΠΎΠ²Π΅Π½ΠΈ Π΄ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ FreeBSD 15 (ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎ сС Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΎ FreeBSD 13).
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΅ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (thread_mode=1) Π² Π΅Π΄ΠΈΠ½ процСс, Π΄ΠΎΠΏΡŠΠ»Π²Π°Ρ‰ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎ наличния многопроцСсСн Ρ€Π΅ΠΆΠΈΠΌ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π»Π΅ΠΊ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (primary_slim), ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ основният процСс изпълнява само основни Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ инициализация ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°, Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΎΠΏΠ°ΡˆΠΊΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌ/ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ (rx/tx) сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° само ΠΎΡ‚ страната Π½Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ‚Π΅ процСси.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΎ ускорСниС.
    TSO (TCP Segmentation Offload) Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π°, с Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ към софтуСрна рСализация. ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π΅ Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ Π½Π° TSO (TCP Segmentation Offload, ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚Π° Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° сСгмСнти Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ) Π·Π° IPv6.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° промяна Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° MTU (Maximum Transmission Unit) ΠΈ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° jumbo ΠΊΠ°Π΄Ρ€ΠΈ.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ускорСниС Π½Π° изчислСниСто Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ суми Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функция ff_zc_recv() Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π±Π΅Π· ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ (zero-copy). ΠŸΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° Π΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π°Ρ‚Π° функция ff_zc_send() Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΈ допълнСна. ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° IPv6 функцията ff_rss_check().
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ опцията FF_KERNEL_COEXIST Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚Π½ΠΎ с мрСТовия стСк Π½Π° ядрото.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° информация Π·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² pcap дъмповС с наносСкундна точност.
  • Π’ config.ini са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π½ΠΎΠ²ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms ΠΈ reload_udp_idle_ms.
  • Π’ спСциализирана вСрсия Π½Π° nginx Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€Π΅Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° конфигурацията ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° бинарния Ρ„Π°ΠΉΠ» Π±Π΅Π· ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ (graceful_reload=1).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster