Kasama na ngayon sa GCC ang isang backend para sa compilation sa eBPF

Kasama sa GCC compiler suite pinagtibay code para sa pag-compile ng mga programa para sa bytecode interpreter na nakapaloob sa Linux kernel eGMP. Salamat sa paggamit ng JIT compilation, ang kernel bytecode ay isinalin sa mabilisang mga tagubilin sa makina at naisakatuparan sa pagganap ng native code. Mga patch na may suporta sa eBPF tinanggap sa sangay kung saan binuo ang paglabas ng GCC 10.

Bilang karagdagan sa isang backend para sa pagbuo ng bytecode, ang GCC ay may kasamang libgcc port para sa eBPF at mga tool para sa pagbuo ng mga ELF file na ginagawang posible na magsagawa ng code sa eBPF virtual machine gamit ang mga kernel-provided loader. Ang mga patch upang suportahan ang eBPF sa GCC ay inihanda ng mga inhinyero mula sa Oracle, na mayroon na ibinigay suporta sa eBPF sa mga binutil ng GNU. Ang isang simulator at mga patch para sa GDB ay ginagawa din, na magbibigay-daan sa iyong i-debug ang mga programang eBPF nang hindi nilo-load ang mga ito sa kernel.

Ang mga programa para sa eBPF ay maaaring tukuyin sa isang subset ng wikang C, na pinagsama-sama at na-load sa kernel. Bago ang pagpapatupad, sinusuri ng interpreter ng eBPF ang bytecode para sa paggamit ng mga pinahihintulutang tagubilin at nagpapataw ng ilang partikular na panuntunan sa code (halimbawa, walang mga loop).
Sa una, ang mga tool na nakabatay sa LLVM ay ginamit upang i-compile ang eBPF sa Linux. Ang suporta sa eBPF sa GCC ay kawili-wili dahil pinapayagan ka nitong gumamit ng isang toolkit upang buuin ang Linux kernel at mga programa ng eBPF, nang hindi nag-i-install ng mga karagdagang dependency.

Sa anyo ng mga programang eBPF, maaari kang lumikha ng mga tagapangasiwa ng pagpapatakbo ng network, mag-filter ng trapiko, mamahala ng bandwidth, magmonitor ng mga system, humarang sa mga tawag sa system, kontrolin ang pag-access, bilangin ang dalas at oras ng mga operasyon, at magsagawa ng pagsubaybay gamit ang mga kprobes/uprobes/tracepoint.

Pinagmulan: opennet.ru

Magdagdag ng komento