BumbleBee - ืขืจื›ืช ื›ืœื™ื ืœืคื™ืฉื•ื˜ ื”ื™ืฆื™ืจื” ื•ื”ื”ืคืฆื” ืฉืœ ืชื•ื›ื ื™ื•ืช eBPF

Solo.io, ื—ื‘ืจื” ื”ืžืคืชื—ืช ืžื•ืฆืจื™ื ืœื”ืคืขืœืช ืžืขืจื›ื•ืช ืขื ืŸ, ืฉื™ืจื•ืชื™ ืžื™ืงืจื•, ืงื•ื ื˜ื™ื™ื ืจื™ื ืžื‘ื•ื“ื“ื™ื ื•ืžื—ืฉื•ื‘ ืœืœื ืฉืจืชื™ื, ืคืจืกืžื” ืืช BumbleBee, ืขืจื›ืช ื›ืœื™ื ื‘ืงื•ื“ ืคืชื•ื— ืฉืžื˜ืจืชื” ืœืคืฉื˜ ืืช ื”ื”ื›ื ื”, ื”ื”ืคืฆื” ื•ื”ื”ืฉืงื” ืฉืœ ืชื•ื›ื ื™ื•ืช eBPF ื”ืคื•ืขืœื•ืช ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืžื™ื•ื—ื“ืช ื‘ืคื ื™ื ืœื™ื‘ืช ืœื™ื ื•ืงืก ื•ืœืืคืฉืจ ืขื™ื‘ื•ื“ ืคืขื•ืœื•ืช ืจืฉืช, ื‘ืงืจืช ื’ื™ืฉื” ื•ืžืขืจื›ื•ืช ื ื™ื˜ื•ืจ. ื”ืงื•ื“ ื›ืชื•ื‘ ื‘-Go ื•ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ Apache 2.0.

BumbleBee ืžืืคืฉืจืช ืœืืจื•ื– ืชื•ื›ื ื™ืช eBPF ื›ืชืžื•ื ืช ืงื•ื ื˜ื™ื™ื ืจ ื‘ืคื•ืจืžื˜ OCI (Open Container Initiative), ืื•ืชื” ื ื™ืชืŸ ืœื”ืคืขื™ืœ ื‘ื›ืœ ืžืขืจื›ืช ืœืœื ื”ื™ื“ื•ืจ ืžื—ื“ืฉ ื•ืฉื™ืžื•ืฉ ื‘ืจื›ื™ื‘ื™ื ื ื•ืกืคื™ื ื‘ื—ืœืœ ื”ืžืฉืชืžืฉ. ื”ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืงื•ื“ eBPF ื‘ืœื™ื‘ื”, ืœืจื‘ื•ืช ืขื™ื‘ื•ื“ ื ืชื•ื ื™ื ื”ืžื’ื™ืขื™ื ืžื”ืžื˜ืคืœ eBPF, ื ืฉืœื˜ืช ืขืœ ื™ื“ื™ BumbleBee, ืืฉืจ ืžื™ื™ืฆืืช ื ืชื•ื ื™ื ืืœื• ืื•ื˜ื•ืžื˜ื™ืช ื‘ืฆื•ืจื” ืฉืœ ืžื“ื“ื™ื, ื”ื™ืกื˜ื•ื’ืจืžื•ืช ืื• ื™ื•ืžื ื™ื, ืืœื™ื”ื ื ื™ืชืŸ ืœื’ืฉืช, ืœืžืฉืœ, ื‘ืืžืฆืขื•ืช ื›ืœื™ ืขื–ืจ ืชืœืชืœื™ื. ื”ื’ื™ืฉื” ื”ืžื•ืฆืขืช ืžืืคืฉืจืช ืœืžืคืชื— ืœื”ืชืžืงื“ ื‘ื›ืชื™ื‘ืช ืงื•ื“ eBPF ื•ืœื ืœื”ื™ื•ืช ืžื•ืกื—ืช ืขืœ ื™ื“ื™ ืืจื’ื•ืŸ ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืงื•ื“ ื–ื” ืžืžืจื—ื‘ ื”ืžืฉืชืžืฉ, ื”ืจื›ื‘ื” ื•ื˜ืขื™ื ื” ืœืชื•ืš ื”ืœื™ื‘ื”.

ืœื ื™ื”ื•ืœ ืชื•ื›ื ื™ื•ืช eBPF, ืžื•ืฆืข ื›ืœื™ "ื“ื‘ื•ืจื”" ื‘ืกื’ื ื•ืŸ Docker, ืฉื‘ืืžืฆืขื•ืชื• ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืžื™ื“ ืืช ื”ืžื˜ืคืœ eBPF ื”ืžืขื ื™ื™ืŸ ืžืžืื’ืจ ื—ื™ืฆื•ื ื™ ื•ืœื”ืคืขื™ืœ ืื•ืชื• ื‘ืžืขืจื›ืช ื”ืžืงื•ืžื™ืช. ืขืจื›ืช ื”ื›ืœื™ื ืžืืคืฉืจืช ืœื™ืฆื•ืจ ืžืกื’ืจืช ืงื•ื“ ื‘-C ืขื‘ื•ืจ ืžื˜ืคืœื™ eBPF ืฉืœ ื ื•ืฉื ื ื‘ื—ืจ (ื›ืจื’ืข ื ืชืžื›ื™ื ืจืง ืžื˜ืคืœื™ื ืœืคืขื•ืœื•ืช ืจืฉืช ื•ืงื‘ืฆื™ื ื”ืžื™ื™ืจื˜ื•ืช ืงืจื™ืื•ืช ืœืขืจื™ืžืช ื”ืจืฉืช ื•ืžืขืจื›ื•ืช ื”ืงื‘ืฆื™ื). ื‘ื”ืชื‘ืกืก ืขืœ ื”ืžืกื’ืจืช ืฉื ื•ืฆืจื”, ื”ืžืคืชื— ื™ื›ื•ืœ ืœื™ื™ืฉื ื‘ืžื”ื™ืจื•ืช ืืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืฉื‘ื” ื”ื•ื ืžืขื•ื ื™ื™ืŸ.

ืฉืœื ื›ืžื• BCC (ืื•ืกืฃ ืžื”ื“ืจ BPF), BumbleBee ืœื ื‘ื•ื ื” ืžื—ื“ืฉ ืœื—ืœื•ื˜ื™ืŸ ืืช ืงื•ื“ ื”ืžื˜ืคืœ ืขื‘ื•ืจ ื›ืœ ื’ืจืกื” ืฉืœ ืœื™ื‘ืช ืœื™ื ื•ืงืก (BCC ืžืฉืชืžืฉ ื‘ื”ื™ื“ื•ืจ ืชื•ืš ื›ื“ื™ ืฉื™ืžื•ืฉ ื‘-Clang ื‘ื›ืœ ืคืขื ืฉืชื•ื›ื ื™ืช eBPF ืžื•ืคืขืœืช). ื›ื“ื™ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื‘ื ื™ื™ื“ื•ืช, ืžืคืชื—ื™ื ื”ื›ืœื™ื CO-RE ื•-libbpf, ื”ืžืืคืฉืจื™ื ืœื‘ื ื•ืช ืงื•ื“ ืคืขื ืื—ืช ื‘ืœื‘ื“ ื•ืœื”ืฉืชืžืฉ ื‘ื˜ื•ืขืŸ ืื•ื ื™ื‘ืจืกืœื™ ืžื™ื•ื—ื“ ืฉืžืชืื™ื ืืช ื”ืชื•ื›ื ื™ืช ื”ื ื˜ืขื ืช ืœื’ืจืขื™ืŸ ื”ื ื•ื›ื—ื™ ื•ืœืคื•ืจืžื˜ BTF Type. BumbleBee ื”ื•ื ืชื•ืกืฃ ืœlibbpf ื•ืžืกืคืง ืกื•ื’ื™ื ื ื•ืกืคื™ื ืœืคืจืฉื ื•ืช ื•ืชืฆื•ื’ื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื ืชื•ื ื™ื ื”ืžืžื•ืงืžื™ื ื‘ืžื‘ื ื™ ื”ืžืคื” ื”ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœ eBPF RingBuffer ื•- HashMap.

ื›ื“ื™ ืœื‘ื ื•ืช ืืช ืชื•ื›ื ื™ืช ื”-eBPF ื”ืกื•ืคื™ืช ื•ืœืฉืžื•ืจ ืื•ืชื” ื›ืชืžื•ื ืช OCI, ืคืฉื•ื˜ ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” "bee build file_with_code name:version", ื•ื›ื“ื™ ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” "bee run name:version". ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืื™ืจื•ืขื™ื ืฉื”ืชืงื‘ืœื• ืžื”ืžื˜ืคืœ ื™ื•ืขื‘ืจื• ืœื—ืœื•ืŸ ื”ืžืกื•ืฃ, ืืš ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ื ื™ืชืŸ ืœื”ืฉื™ื’ ื ืชื•ื ื™ื ื‘ืืžืฆืขื•ืช ื›ืœื™ ืขื–ืจ curl ืื• wget ืœื™ืฆื™ืืช ื”ืจืฉืช ื”ืžื—ื•ื‘ืจืช ืœืžื˜ืคืœ. ื ื™ืชืŸ ืœื”ืคื™ืฅ ืžื˜ืคืœื™ื ื“ืจืš ืžืื’ืจื™ื ืชื•ืืžื™ OCI, ืœืžืฉืœ, ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื˜ืคืœ ื—ื™ืฆื•ื ื™ ืžืžืื’ืจ ghcr.io (GitHub Container Registry), ืืชื” ื™ื›ื•ืœ ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(ื’ืจืกืช ื“ื‘ื•ืจื”)". ื›ื“ื™ ืœืžืงื ืžื˜ืคืœ ื‘ืžืื’ืจ, ืžื•ืฆืขืช ื”ืคืงื•ื“ื” "ื“ื‘ื•ืจื” ืœื“ื—ื•ืฃ", ื•ื›ื“ื™ ืœืื’ื“ ื’ืจืกื”, "ืชื’ ื“ื‘ื•ืจื”".

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”