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

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° стСк F-Stack 1.24, прСдставляваща рСдакция Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° стСк FreeBSD, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° Π² потрСбитСлското пространство ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° DPDK Π·Π° постиганС Π½Π° максимална производитСлност. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ създадСн ΠΎΡ‚ Π½Π°ΠΉ-голямата Ρ‚Π΅Π»Π΅ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° компания Π² ΠšΠΈΡ‚Π°ΠΉ Tencent ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π½Π΅ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ ΠΈ услуги. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· BSD. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π°Π±ΠΎΡ‚Π° Π² Linux ΠΈ FreeBSD.

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

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

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

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ, ΠΏΡ€Π΅Π²Π΅Π΄Π΅Π½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ с F-Stack. ΡΡŠΡ€Π²ΡŠΡ€ Nginx 1.25.2 ΠΈ Π‘Π£Π‘Π” Redis 6.2.6 дСмонстрират производитСлност Π½Π°Π΄ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈΡ‚Π΅ вСрсии, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π²ΡŠΡ€Ρ…Ρƒ систСмния ΠΌΡ€Π΅ΠΆΠΎΠ² стСк.

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

  • Π’ конфигурационния Ρ„Π°ΠΉΠ» config.ini Π΅ прСдоставСна Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° KNI (Kernel NIC Interface) ΠΈ virtio_user ΠΊΠ°Ρ‚ΠΎ транспорт Π·Π° прСнос Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ядрото ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° DPDK. Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ratelimit Π·Π° KNI.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° настройката Π½Π° мрСТовия стСк Β«net.add_addr_allfibs=1Β» Π·Π° добавянС Π½Π° адрСси във всички Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ API ff_get_traffic Π·Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° QoS (Quality of Service).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pthread_create ΠΈ pthread_join, наподобяващи ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ POSIX.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ API ff_dpdk_raw_packet_send Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° raw-ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€Π΅Π· DPDK, Π° Π½Π΅ Ρ‡Ρ€Π΅Π· сокСт.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Π° настройка Π½Π° VLAN, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΈ policy routing.
  • Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½ Π΅ ΠΏΡ€Π΅Ρ…ΠΎΠ΄ към вСрсия DPDK 22.11.6 LTS.
  • Π’ рСализацията Π½Π° Nginx Π½Π°Π΄ F-Stack Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° stream.

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

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