ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ Solo.io, ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ°Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΈ Π±Π΅ΡΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ BumbleBee, Π½Π°ΡΠ΅Π»Π΅Π½Π½ΡΠΉ Π½Π° ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ, ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Π²Π½ΡΡΡΠΈ ΡΠ΄ΡΠ° Linux ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.
BumbleBee Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΠ°Π·Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ OCI (Open Container Initiative), ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π° Π»ΡΠ±ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ eBPF-ΠΊΠΎΠ΄ΠΎΠΌ Π² ΡΠ΄ΡΠ΅, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΡ ΠΈΠ· eBPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ , Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ BumbleBee, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅ΡΡΠΈΠΊ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΠ², Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ curl. ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° eBPF ΠΈ Π½Π΅ ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΡΡ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΠ±ΠΎΡΠΊΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΡ Π² ΡΠ΄ΡΠΎ.
ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π² ΡΡΠΈΠ»Π΅ Docker ΡΡΠΈΠ»ΠΈΡΠ° «bee», ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠΉ eBPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ eBPF-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²Ρ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ). ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠΊΠ°ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ BCC (BPF Compiler Collection) Π² BumbleBee Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ΄ΡΠ° Linux (BCC ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π½Π° Π»Π΅ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Clang ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ CO-RE ΠΈ libbpf, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ, Π°Π΄Π°ΠΏΡΠΈΡΡΡΡΠΈΠΉ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΡΠ΄ΡΡ ΠΈ ΡΠΈΠΏΠ°ΠΌ BTF (BPF Type Format). BumbleBee ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΎΠΉ Π½Π°Π΄ libbpf ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΡΡΠ°ΡΠ½ΡΡ Π΄Π»Ρ eBPF map-ΡΡΡΡΠΊΡΡΡΠ°Ρ RingBuffer ΠΈ HashMap.
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ OCI-ΠΎΠ±ΡΠ°Π·Π° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ «bee build ΡΠ°ΠΉΠ»_Ρ_ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠΌΡ:Π²Π΅ΡΡΠΈΡ», Π° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ «bee run ΠΈΠΌΡ:Π²Π΅ΡΡΠΈΡ». ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΎΠΊΠ½ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π½ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΠ²ΡΠΈΡΡ ΡΡΠΈΠ»ΠΈΡΠ°ΠΌΠΈ curl ΠΈΠ»ΠΈ wget ΠΊ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠΌΡ ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΌΡ ΠΏΠΎΡΡΡ. ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡ ΡΠ΅ΡΠ΅Π· OCI-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ghcr.io (GitHub Container Registry) ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ «bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)». ΠΠ»Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° «bee push», Π° Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ — «bee tag».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru