BumbleBee — инструмСнтариум Π·Π° опростяванС Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ разпространСниСто Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ

ΠšΠΎΠΌΠΏΠ°Π½ΠΈΡΡ‚Π° Solo.io, която Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ Π·Π° осигуряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ систСми, микросСрвизи, ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ Π±Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΈ изчислСния, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ инструмСнтариум BumbleBee, насочСн към опростяванС Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π°, разпространСниСто ΠΈ стартиранСто Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² спСциализирана Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина Π² ядрото Π½Π° Linux ΠΈ позволяват ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° ΠΈ прослСдяванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмитС. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Π΅Π·ΠΈΠΊΠ° Go ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· Apache 2.0.

BumbleBee позволява ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° във Π²ΠΈΠ΄ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅Π½ ΠΎΠ±Ρ€Π°Π· Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ OCI (Open Container Initiative), ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС стартиран Π½Π° всякакви систСми Π±Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° компилация ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π² пространството Π½Π° потрСбитСля. ВзаимодСйствиСто с eBPF ΠΊΠΎΠ΄Π° Π² ядрото, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ ΠΎΡ‚ eBPF ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡Π°, сС ΠΏΠΎΠ΅ΠΌΠ° ΠΎΡ‚ BumbleBee, ΠΊΠΎΠΉΡ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Скспортира Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, хистограми ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅, Π΄ΠΎ ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° curl. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈ Π²ΡŠΡ€Ρ…Ρƒ написванСто Π½Π° eBPF ΠΊΠΎΠ΄ ΠΈ Π΄Π° Π½Π΅ сС разсСйва с ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° взаимодСйствиСто с Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΎΡ‚ пространството Π½Π° потрСбитСля, ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π² ядрото.

Π—Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° eBPF ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° Π² стил Docker ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° β€žbeeβ€œ, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° която ΠΌΠΎΠΆΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° сС Π·Π°Ρ€Π΅Π΄ΠΈ интСрСсуващ eBPF ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡ ΠΎΡ‚ външСн Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΡƒΠΌ ΠΈ Π΄Π° сС стартира Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° систСма. Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡƒΠΌΡŠΡ‚ позволява Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° скСлСт ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊΠ° C Π·Π° 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

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