ИздаванС Π½Π° мрСТовия стСк 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