ИздадСн ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ стСк 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