GCC азыр eBPFге компиляциялоо үчүн серверди камтыйт

GCC компилятор топтомуна киргизилген кабыл алынган Linux өзөгүнө орнотулган байт код котормочу үчүн программаларды түзүү үчүн код eGMP. JIT компиляциясын колдонуунун аркасында ядронун байт-коду машинанын көрсөтмөлөрүнө тез которулат жана жергиликтүү коддун аткаруусу менен аткарылат. eBPF колдоосу менен патчтар кабыл алынган GCC 10 чыгаруу иштелип чыккан филиалга.

Байткодду түзүү үчүн бэкендден тышкары, GCC eBPF үчүн libgcc портун жана ядро ​​менен камсыздалган жүктөгүчтөрдү колдонуу менен eBPF виртуалдык машинасында кодду аткарууга мүмкүндүк берген ELF файлдарын түзүү үчүн куралдарды камтыйт. GCCде eBPFди колдоо үчүн патчтарды Oracle компаниясынын инженерлери даярдашкан берилген GNU binutils менен eBPF колдоосу. GDB үчүн симулятор жана патчтар дагы иштелип чыгууда, алар eBPF программаларын ядрого жүктөбөстөн оңдоого мүмкүндүк берет.

eBPF үчүн программалар C тилинин бир бөлүгүндө аныкталып, компиляцияланып, ядрого жүктөлүшү мүмкүн. Аткаруу алдында eBPF котормочу байт кодду уруксат берилген нускамаларды колдонуу үчүн текшерет жана кодго белгилүү бир эрежелерди киргизет (мисалы, циклдер жок).
Башында, LLVM негизделген куралдар Linux боюнча eBPF түзүү үчүн колдонулган. GCCдеги eBPF колдоосу кызыктуу, анткени ал кошумча көз карандылыкты орнотпостон, Linux ядросун жана eBPF программаларын куруу үчүн бир инструментти колдонууга мүмкүндүк берет.

eBPF программалары түрүндө сиз тармактын операциясынын иштеткичтерин түзө аласыз, трафикти чыпкалай аласыз, өткөрүү жөндөмдүүлүгүн башкара аласыз, системаларды көзөмөлдөй аласыз, тутумдук чалууларды токтото аласыз, кирүү мүмкүнчүлүгүн көзөмөлдөй аласыз, операциялардын жыштыгын жана убактысын эсептей аласыз жана kprobes/uprobes/tracepoints аркылуу байкоо жүргүзө аласыз.

Source: opennet.ru

Комментарий кошуу