GCC ҳоло як пуштибониро барои таҳияи eBPF дар бар мегирад

Ба маҷмӯи компилятори GCC дохил карда шудааст қабул шудааст код барои тартиб додани барномаҳо барои тарҷумаи байткод, ки дар ядрои Linux сохта шудааст eGMP. Ба шарофати истифодаи компиляцияи JIT, байт-коди ядро ​​​​ба зудӣ ба дастурҳои мошинӣ тарҷума карда мешавад ва бо иҷрои рамзи аслӣ иҷро карда мешавад. Часбҳо бо дастгирии eBPF кабул карда шуд ба филиале, ки аз он нашрияи GCC 10 таҳия шудааст.

Илова ба пуштибонии тавлиди байткод, GCC дорои порти libgcc барои eBPF ва асбобҳо барои тавлиди файлҳои ELF мебошад, ки имкон медиҳад кодро дар мошини виртуалии eBPF бо истифода аз боркунакҳои аз ядро ​​таъминшуда иҷро кунанд. Часбҳоро барои дастгирии eBPF дар GCC муҳандисони Oracle, ки аллакай таҳия карда буданд, омода кардаанд дода шудааст Дастгирии eBPF дар GNU binutils. Симулятор ва часбчаҳо барои GDB низ дар ҳоли таҳия ҳастанд, ки ба шумо имкон медиҳад, ки барномаҳои eBPF-ро бе боркунии онҳо ба ядро ​​ислоҳ кунед.

Барномаҳо барои eBPF метавонанд дар зермаҷмӯи забони Си муайян карда шаванд, тартиб дода шаванд ва ба ядро ​​бор карда шаванд. Пеш аз иҷроиш, тарҷумони eBPF байт-кодро барои истифодаи дастурҳои иҷозатдодашуда тафтиш мекунад ва ба код қоидаҳои муайянро ҷорӣ мекунад (масалан, ҳалқаҳо нест).
Дар аввал, асбобҳои дар асоси LLVM барои тартиб додани eBPF дар Linux истифода мешуданд. Дастгирии eBPF дар GCC ҷолиб аст, зеро он ба шумо имкон медиҳад, ки як абзорро барои сохтани ядрои Linux ва барномаҳои eBPF бидуни насб кардани вобастагии иловагӣ истифода баред.

Дар шакли барномаҳои eBPF, шумо метавонед коркардкунандагони амалиёти шабакаро эҷод кунед, трафикро филтр кунед, фарохмаҷро идора кунед, системаҳоро назорат кунед, зангҳои системаро боздоред, дастрасиро назорат кунед, басомад ва вақти амалиётҳоро ҳисоб кунед ва бо истифода аз kprobes/uprobes/tracepoints пайгирӣ кунед.

Манбаъ: opennet.ru

Илова Эзоҳ