BumbleBee - ืึท ื˜ืึธืึธืœืงื™ื˜ ืฆื• ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื“ื™ ืฉืึทืคื•ื ื’ ืื•ืŸ ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืคื•ืŸ eBPF ืžื’ื™ืœื”

Solo.io, ืึท ืคื™ืจืžืข ื•ื•ืึธืก ื“ืขื•ื•ืขืœืึธืคึผืก ืคึผืจืึธื“ื•ืงื˜ืŸ ืคึฟืึทืจ ืคืœื™ืกื ื“ื™ืง ื•ื•ืึธืœืงืŸ ืกื™ืกื˜ืขืžืขืŸ, ืžื™ืงืจืึธืกืขืจื•ื•ื™ืกืขืก, ืืคื’ืขื–ื•ื ื“ืขืจื˜ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื•ืŸ ืกืขืจื•ื•ืขืจืœืขืกืก ืงืึทืžืคึผื™ื•ื˜ื™ื ื’, ื”ืื˜ ืืจื•ื™ืก BumbleBee, ืึทืŸ ืึธืคึฟืŸ ืžืงื•ืจ ื˜ืึธืึธืœืงื™ื˜ ืึทื™ืžืขื“ ืฆื• ืกื™ืžืคึผืœืึทืคื™ื™ื™ื ื’ ื“ื™ ืฆื•ื’ืจื™ื™ื˜ื•ื ื’, ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืื•ืŸ ืงืึทื˜ืขืจ ืคื•ืŸ eBPF ืžื’ื™ืœื” ื•ื•ืึธืก ืœื•ื™ืคืŸ ืื™ืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืึทืฉื™ืŸ ื™ืŸ ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ ืื•ืŸ ืœืึธื–ืŸ ืคึผืจืึทืกืขืกื™ื ื’ ื ืขืฅ ืึทืคึผืขืจื™ื™ืฉืึทื ื–, ืงืึธื ื˜ืจืึธืœ ืึทืงืกืขืก ืื•ืŸ ืžืึธื ื™ื˜ืึธืจ ืกื™ืกื˜ืขืžืขืŸ. ื“ืขืจ ืงืึธื“ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Go ืื•ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืื•ื ื˜ืขืจ ื“ื™ Apache 2.0 ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

BumbleBee ืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ืคึผืขืงืœ ืึทืŸ eBPF ืคึผืจืึธื’ืจืึทื ื•ื•ื™ ืึท ืงืึทื ื˜ื™ื™ื ืขืจ ื‘ื™ืœื“ ืื™ืŸ ื“ื™ OCI (Open Container Initiative) ืคึฟืึธืจืžืึทื˜, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ืื•ื™ืฃ ืงื™ื™ืŸ ืกื™ืกื˜ืขื ืึธืŸ ืจืขืงืึธืžืคึผื™ืœืึทื˜ื™ืึธืŸ ืื•ืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื ืึธืš ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืื™ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ. ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ื™ eBPF ืงืึธื“ ืื™ืŸ ื“ื™ ื”ืึทืจืฅ, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืคึผืจืึทืกืขืกื™ื ื’ ืคื•ืŸ ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื“ื™ eBPF ื”ืึทื ื“ืœืขืจ, ืื™ื– ืื™ื‘ืขืจื’ืขื ื•ืžืขืŸ ื“ื•ืจืš BumbleBee, ื•ื•ืึธืก ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืขืงืกืคึผืึธืจืฅ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ืžืขื˜ืจื™ืงืก, ื›ื™ืกื˜ืึทื’ืจืึทืžื– ืึธื“ืขืจ ืœืึธื’ืก, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึทืงืกืขืกื˜, ืœืžืฉืœ, ื ื™ืฆืŸ ื“ื™ ืงืขืจืœ ื ื•ืฆืŸ. ื“ื™ ืคืืจื’ืขืœื™ื™ื’ื˜ ืฆื•ื’ืึทื ื’ ืึทืœืึทื•ื– ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืฆื• ืคืึธืงื•ืก ืื•ื™ืฃ ืฉืจื™ื™ื‘ืŸ eBPF ืงืึธื“ ืื•ืŸ ื ื™ื˜ ื–ื™ื™ืŸ ื“ื™ืกื˜ืจืึทืงื˜ืึทื“ ื“ื•ืจืš ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืžื™ื˜ ื“ืขื ืงืึธื“ ืคึฟื•ืŸ ื‘ืึทื ื™ืฆืขืจ ืคึผืœืึทืฅ, ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื•ืŸ ืœืึธื•ื“ื™ื ื’ ืื™ืŸ ื“ื™ ืงืขืจืŸ.

ืฆื• ืคื™ืจืŸ eBPF ืžื’ื™ืœื”, ืึท ื“ืึธืงืงืขืจ-ื ื•ืกื— "ื‘ื™ืŸ" ืื™ื– ื’ืขืคึฟื™ื ื˜, ืžื™ื˜ ื•ื•ืึธืก ืื™ืจ ืงืขื ืขืŸ ืžื™ื“ ืืจืืคืงืืคื™ืข ื“ื™ eBPF ื”ืึทื ื“ืœืขืจ ืคื•ืŸ ืื™ื ื˜ืขืจืขืก ืคึฟื•ืŸ ืึท ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ืœื•ื™ืคืŸ ืขืก ืื•ื™ืฃ ื“ื™ ื”ื™ื’ืข ืกื™ืกื˜ืขื. ื“ื™ ื˜ืึธืึธืœืงื™ื˜ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืึท ืงืึธื“ ืคืจื™ื™ืžื•ื•ืขืจืง ืื™ืŸ C ืคึฟืึทืจ eBPF ื”ืึทื ื“ืœืขืจืก ืคื•ืŸ ืึท ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ ื˜ืขืžืข (ื“ืขืจื•ื•ื™ื™ึทืœ ื‘ืœื•ื™ื– ื”ืึทื ื“ืœืขืจืก ืคึฟืึทืจ ื ืขืฅ ืื•ืŸ ื˜ืขืงืข ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื•ื•ืึธืก ื™ื ื˜ืขืจืกืขืคึผื˜ ืงืึทืœืœืก ืฆื• ื“ื™ ื ืขืฅ ืึธื ืœื™ื™ื’ืŸ ืื•ืŸ ื˜ืขืงืข ืกื™ืกื˜ืขืžืขืŸ ื–ืขื ืขืŸ ื’ืขืฉื˜ื™ืฆื˜). ื‘ืึทื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ืคืจื™ื™ืžื•ื•ืขืจืง, ื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืขื ืขืŸ ื’ืขืฉื•ื•ื™ื ื“ ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ื™ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื•ื•ืึธืก ืขืจ ืื™ื– ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืื™ืŸ.

ื ื™ื˜ ืขื ืœืขืš BCC (BPF ืงืึธืžืคึผื™ืœืขืจ ืงืึทืœืขืงืฉืึทืŸ), BumbleBee ื˜ื•ื˜ ื ื™ืฉื˜ ื’ืึธืจ ืจื™ื‘ื™ืœื“ ื“ื™ ื”ืึทื ื“ืœืขืจ ืงืึธื“ ืคึฟืึทืจ ื™ืขื“ืขืจ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืœื™ื ื•ืงืก ืงืขืจืŸ (BCC ื ื™ืฆื˜ ืื•ื™ืฃ-ื“ืขื-ืคืœื™ืขืŸ ื–ืึทืžืœื•ื ื’ ืžื™ื˜ ืงืœืึทื ื’ ื™ืขื“ืขืจ ืžืึธืœ ื•ื•ืขืŸ ื“ื™ eBPF ืคึผืจืึธื’ืจืึทื ืื™ื– ืœืึธื ื˜ืฉื˜). ืฆื• ืกืึธืœื•ื•ืข ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ืคึผืึธืจื˜ืึทื‘ื™ืœื™ื˜ื™, ื“ื™ CO-RE ืื•ืŸ Libbpf ืžื›ืฉื™ืจื™ื ื–ืขื ืขืŸ ื“ืขื•ื•ืขืœืึธืคึผืขื“, ืึทืœืึทื•ื™ื ื’ ืื™ืจ ืฆื• ื‘ื•ื™ืขืŸ ืงืึธื“ ื‘ืœื•ื™ื– ืึทืžืึธืœ ืื•ืŸ ื ื•ืฆืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื•ื ื™ื•ื•ืขืจืกืึทืœ ืœืึธื•ื“ืขืจ ื•ื•ืึธืก ืึทื“ืึทืคึผื˜ ื“ื™ ืœืึธื•ื“ื™ื“ ืคึผืจืึธื’ืจืึทื ืฆื• ื“ื™ ืงืจืึทื ื˜ ืงืขืจืŸ ืื•ืŸ BTF ื˜ื™ืคึผ ืคึฟืึธืจืžืึทื˜. BumbleBee ืื™ื– ืึทืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• Libbpf ืื•ืŸ ื’ื™ื˜ ื ืึธืš ื˜ื™ื™ืคึผืก ืคึฟืึทืจ ืึธื˜ืึทืžืึทื˜ื™ืง ื™ื ื˜ืขืจืคึผืจื™ื˜ื™ื™ืฉืึทืŸ ืื•ืŸ ื•ื•ื™ื™ึทื– ืคื•ืŸ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื ืึธืจืžืึทืœ eBPF ืžืึทืคึผืข ืกื˜ืจืึทืงื˜ืฉืขืจื– RingBuffer ืื•ืŸ HashMap.

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

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’