ืžื™ืงืจื•ืกื•ืคื˜ ื”ื›ื™ื ื” ื™ื™ืฉื•ื eBPF ืขื‘ื•ืจ Windows

ืžื™ืงืจื•ืกื•ืคื˜ ืคืจืกืžื” ื™ื™ืฉื•ื ืฉืœ ืชืช-ื”ืžืขืจื›ืช eBPF ืขื‘ื•ืจ Windows, ื”ืžืืคืฉืจืช ืœืš ืœื”ืคืขื™ืœ ืžื˜ืคืœื™ื ืฉืจื™ืจื•ืชื™ื™ื ื”ืคื•ืขืœื™ื ื‘ืจืžืช ืœื™ื‘ืช ืžืขืจื›ืช ื”ื”ืคืขืœื”. eBPF ืžืกืคืง ืžืชื•ืจื’ืžืŸ ื‘ืชื™ื ืžื•ื‘ื ื” ื‘ืชื•ืš ื”ืœื™ื‘ื”, ื”ืžืืคืฉืจ ืœื™ืฆื•ืจ ืžื˜ืคืœื™ ืชืคืขื•ืœ ืจืฉืช ื”ื˜ืขื•ื ื™ื ืžื—ืœืœ ื”ืžืฉืชืžืฉ, ืœืฉืœื•ื˜ ื‘ื’ื™ืฉื” ื•ืœื ื˜ืจ ืืช ืคืขื•ืœืช ื”ืžืขืจื›ื•ืช. eBPF ื ื›ืœืœ ื‘ืœื™ื‘ืช ืœื™ื ื•ืงืก ืžืื– ื’ืจืกื” 3.18 ื•ืžืืคืฉืจ ืœืš ืœื˜ืคืœ ื‘ื—ื‘ื™ืœื•ืช ืจืฉืช ื ื›ื ืกื•ืช/ื™ื•ืฆืื•ืช, ื”ืขื‘ืจืช ืžื ื•ืช, ื ื™ื”ื•ืœ ืจื•ื—ื‘ ืคืก, ื™ื™ืจื•ื˜ ืฉื™ื—ื•ืช ืžืขืจื›ืช, ื‘ืงืจืช ื’ื™ืฉื” ื•ืžืขืงื‘. ื”ื•ื“ื•ืช ืœืฉื™ืžื•ืฉ ื‘ืงื•ืžืคื™ืœืฆื™ื” ืฉืœ JIT, ืงื•ื“ ื‘ื™ื™ื˜ ืžืชื•ืจื’ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื” ืœื”ื•ืจืื•ืช ืžื›ื•ื ื” ื•ืžื‘ื•ืฆืข ืขื ื‘ื™ืฆื•ืขื™ื ืฉืœ ืงื•ื“ ื”ื™ื“ื•ืจ. eBPF ืขื‘ื•ืจ Windows ื”ื•ื ืงื•ื“ ืคืชื•ื— ืชื—ืช ืจื™ืฉื™ื•ืŸ MIT.

ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-eBPF ืขื‘ื•ืจ Windows ืขื ื›ืœื™ eBPF ืงื™ื™ืžื™ื ื•ืžืกืคืง API ื’ื ืจื™ ื”ืžืฉืžืฉ ืœื™ื™ืฉื•ืžื™ eBPF ื‘-Linux. ื‘ื™ืŸ ื”ื™ืชืจ, ื”ืคืจื•ื™ืงื˜ ืžืืคืฉืจ ืœื”ื“ืจ ืงื•ื“ ืฉื ื›ืชื‘ ื‘-C ืœืชื•ืš eBPF bytecode ื‘ืืžืฆืขื•ืช ืžื”ื“ืจ eBPF ื”ืกื˜ื ื“ืจื˜ื™ ืžื‘ื•ืกืก Clang ื•ืœื”ืคืขื™ืœ ืžื˜ืคืœื™ eBPF ืฉื›ื‘ืจ ื ื•ืฆืจื• ืขื‘ื•ืจ ืœื™ื ื•ืงืก ืขืœ ื’ื‘ื™ ืœื™ื‘ืช Windows, ื”ืžืกืคืงื™ื ืฉื›ื‘ืช ืชืื™ืžื•ืช ืžื™ื•ื—ื“ืช ื•ืชื•ืžื›ื™ื ื‘-Libbpf ื”ืกื˜ื ื“ืจื˜ื™. API ืขื‘ื•ืจ ืชืื™ืžื•ืช ืขื ื™ื™ืฉื•ืžื™ื ื”ืžืงื™ื™ืžื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืชื•ื›ื ื™ื•ืช eBPF. ื–ื” ื›ื•ืœืœ ืฉื›ื‘ื•ืช ื”ืžืกืคืงื•ืช ื•ื•ื™ื ื“ืžื•ื™ื™ ืœื™ื ื•ืงืก ืขื‘ื•ืจ XDP (eXpress Data Path) ื•-socket bind, ืชื•ืš ื”ืคืฉื˜ื” ืฉืœ โ€‹โ€‹ื’ื™ืฉื” ืœืžื—ืกื ื™ืช ื”ืจืฉืช ื•ืœืžื ื”ืœื™ ื”ื”ืชืงืŸ ืฉืœ Windows. ื”ืชื•ื›ื ื™ื•ืช ื›ื•ืœืœื•ืช ืžืชืŸ ืชืื™ืžื•ืช ืžืœืื” ืœืจืžืช ืงื•ื“ ืžืงื•ืจ ืขื ืžืขื‘ื“ื™ Linux eBPF ืกื˜ื ื“ืจื˜ื™ื™ื.

ืžื™ืงืจื•ืกื•ืคื˜ ื”ื›ื™ื ื” ื™ื™ืฉื•ื eBPF ืขื‘ื•ืจ Windows

ื”ื”ื‘ื“ืœ ื”ืขื™ืงืจื™ ื‘ื™ืŸ ื”ื˜ืžืขืช eBPF ืขื‘ื•ืจ Windows ื”ื•ื ื”ืฉื™ืžื•ืฉ ื‘ืžืืžืช bytecode ื—ืœื•ืคื™, ืฉื”ื•ืฆืข ื‘ืžืงื•ืจ ืขืœ ื™ื“ื™ ืขื•ื‘ื“ื™ VMware ื•ื—ื•ืงืจื™ื ืžืื•ื ื™ื‘ืจืกื™ื˜ืื•ืช ืงื ื“ื™ื•ืช ื•ื™ืฉืจืืœื™ื•ืช. ื”ืžืืžืช ืคื•ืขืœ ื‘ืชื”ืœื™ืš ื ืคืจื“ ื•ืžื‘ื•ื“ื“ ื‘ืžืจื—ื‘ ื”ืžืฉืชืžืฉ ื•ืžืฉืžืฉ ืœืคื ื™ ื”ืคืขืœืช ืชื•ื›ื ื™ื•ืช BPF ื›ื“ื™ ืœื–ื”ื•ืช ืฉื’ื™ืื•ืช ื•ืœื—ืกื•ื ืคืขื™ืœื•ืช ื–ื“ื•ื ื™ืช ืืคืฉืจื™ืช.

ืœืฆื•ืจืš ืื™ืžื•ืช, eBPF ืขื‘ื•ืจ Windows ืžืฉืชืžืฉ ื‘ืฉื™ื˜ืช ื ื™ืชื•ื— ืกื˜ื˜ื™ืช ื”ืžื‘ื•ืกืกืช ืขืœ ืคืจืฉื ื•ืช ืžื•ืคืฉื˜ืช, ืฉื‘ื”ืฉื•ื•ืื” ืœืืžืช eBPF ืขื‘ื•ืจ ืœื™ื ื•ืงืก, ืžื“ื’ื™ืžื” ืฉื™ืขื•ืจ ื—ื™ื•ื‘ื™ ืฉื’ื•ื™ ื ืžื•ืš ื™ื•ืชืจ, ืชื•ืžื›ืช ื‘ื ื™ืชื•ื— ืœื•ืœืื•ืช ื•ืžืกืคืงืช ืžื“ืจื’ื™ื•ืช ื˜ื•ื‘ื”. ื”ืฉื™ื˜ื” ืœื•ืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ื“ืคื•ืกื™ ื‘ื™ืฆื•ืข ืื•ืคื™ื™ื ื™ื™ื ืจื‘ื™ื ื”ืžืชืงื‘ืœื™ื ืžื ื™ืชื•ื— ืชื•ื›ื ื™ื•ืช eBPF ืงื™ื™ืžื•ืช.

ืœืื—ืจ ื”ืื™ืžื•ืช, ื”-bytecode ืžื•ืขื‘ืจ ืœืžืชื•ืจื’ืžืŸ ื”ืคื•ืขืœ ื‘ืจืžืช ื”ืงืจื ืœ, ืื• ืขื•ื‘ืจ ื“ืจืš ืžื”ื“ืจ JIT, ื•ืœืื—ืจ ืžื›ืŸ ื‘ื™ืฆื•ืข ืงื•ื“ ื”ืžื›ื•ื ื” ื”ืžืชืงื‘ืœ ืขื ื–ื›ื•ื™ื•ืช ืœื™ื‘ื”. ื›ื“ื™ ืœื‘ื•ื“ื“ ืžื˜ืคืœื™ eBPF ื‘ืจืžืช ื”ืœื™ื‘ื”, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื ื’ื ื•ืŸ HVCI (HyperVisor-enforced Code Integrity), ื”ืžืฉืชืžืฉ ื‘ื›ืœื™ ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื›ื“ื™ ืœื”ื’ืŸ ืขืœ ืชื”ืœื™ื›ื™ื ื‘ืงืจื ืœ ื•ืžืกืคืง ืื™ืฉื•ืจ ืœืชืงื™ื ื•ืช ื”ืงื•ื“ ื”ืžื‘ืฆืข ื‘ืืžืฆืขื•ืช ื—ืชื™ืžื” ื“ื™ื’ื™ื˜ืœื™ืช. ื”ืžื’ื‘ืœื” ืฉืœ HVCI ื”ื™ื ืฉื”ื•ื ื™ื›ื•ืœ ืœืืžืช ืจืง ืชื•ื›ื ื™ื•ืช eBPF ืžืคื•ืจืฉ ื•ืœื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืฉื™ืœื•ื‘ ืขื JIT (ื™ืฉ ืœืš ื‘ื—ื™ืจื” ื‘ื™ืŸ ื‘ื™ืฆื•ืขื™ื ืื• ืื‘ื˜ื—ื” ื ื•ืกืคืช).

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

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