ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ARMO ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΊΠΈΡΠΎΠ², Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ΅Π½ΠΈΠ΅/Π·Π°ΠΏΠΈΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡΠΈΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° io_uring, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΄ΡΠ° Linux 5.1.
Π‘ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (read/write, recv/send/connect/bind/listen) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ io_uring (io_uring_enter, io_uring_setup, io_uring_register ΠΈ Ρ.ΠΏ.), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΡΠΈΠΏΠΎΠ²ΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ io_uring ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 60 ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· io_uring.
ΠΠ»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½ ΠΏΡΠΎΡΠΎΡΠΈΠΏ ΡΡΡΠΊΠΈΡΠ° Curing, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΉ ΡΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ°/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ². Π Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ° Π½Π° TCP-ΠΏΠΎΡΡ 8888 Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Ρ ΠΎΡΡΠ° ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Β«/etc/shadowΒ». ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π² root, Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΡΠΊΠΈΡ Π΄Π»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ Π½Π° Π²Π·Π»ΠΎΠΌΠ°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
Π ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΡΡΠΊΠΈΡΠ° Curing ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ΅Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Falco ΠΈ Tetragon, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ Π½Π° Ρ ΠΎΡΡΠ°Ρ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π½Π° Π±Π°Π·Π΅ Kubernetes). Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΊΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ΅ΡΠ΅Π²Π°Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π½ΠΎ Π½Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ io_uring Π΄Π»Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ Linux ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ².
ΠΠ»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ KRSI (Kernel Runtime Security Instrumentation), ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π² ΡΠ΄ΡΠ΅ Linux 5.7 ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π»ΡΠ±ΡΠΌ LSM-Ρ ΡΠΊΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, KRSI Π½Π° ΡΡΠΎΠ²Π½Π΅ LSM-Ρ ΡΠΊΠΎΠ² Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· io_uring.
Π Π°Π½Π΅Π΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° io_uring Π±ΡΠ»Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΡΠΈΡΠΈΠΊΠΈ ΠΈΠ·-Π·Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΡ
ΡΠ΅ΡΡΡΠ·Π½ΡΡ
ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π ΠΎΡΠ²Π΅Ρ Π½Π° ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΠΆΠ΅Π»Π°ΡΡΠΈΡ
ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ io_uring Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄ΡΠ°, Π² ΡΠ΄ΡΠΎ Linux 6.6 Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ sysctl io_uring_disabled. ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Google ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠΈΠ»Π° io_uring Π² ChromeOS, Android ΠΈ Π½Π° ΡΠ²ΠΎΠΈΡ
ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ
, ΠΏΠΎΡΡΠ½ΠΈΠ², ΡΡΠΎ ΠΏΠ»Π°ΡΠ΅Π²Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ Π² io_uring ΠΏΠ΅ΡΠ΅Π²Π΅ΡΠΈΠ²Π°Π΅Ρ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ io_uring Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru