GCC include acum un backend pentru compilare la eBPF

Inclus în suita de compilare GCC admis cod pentru compilarea programelor pentru interpretul bytecode încorporat în nucleul Linux eGMP. Datorită utilizării compilației JIT, codul octet al nucleului este tradus din mers în instrucțiuni de mașină și executat cu performanța codului nativ. Patch-uri cu suport eBPF admis în ramura din care este dezvoltată versiunea GCC 10.

Pe lângă un backend pentru generarea de bytecode, GCC include un port libgcc pentru eBPF și instrumente pentru generarea de fișiere ELF care fac posibilă executarea codului în mașina virtuală eBPF folosind încărcătoare furnizate de kernel. Patch-uri pentru a susține eBPF în GCC au fost pregătite de inginerii de la Oracle, care deja au făcut-o furnizate Suport eBPF în GNU binutils. Un simulator și patch-uri pentru GDB sunt, de asemenea, în dezvoltare, care vă vor permite să depanați programele eBPF fără a le încărca în nucleu.

Programele pentru eBPF pot fi definite într-un subset al limbajului C, compilate și încărcate în nucleu. Înainte de execuție, interpretul eBPF verifică bytecode-ul pentru utilizarea instrucțiunilor permise și impune anumite reguli asupra codului (de exemplu, fără bucle).
Inițial, instrumentele bazate pe LLVM au fost folosite pentru a compila eBPF pe Linux. Suportul eBPF în GCC este interesant, deoarece vă permite să utilizați un set de instrumente pentru a construi nucleul Linux și programele eBPF, fără a instala dependențe suplimentare.

Sub formă de programe eBPF, puteți crea gestionatori de operațiuni de rețea, filtra traficul, gestionați lățimea de bandă, monitoriza sistemele, interceptați apelurile de sistem, controlați accesul, numărați frecvența și timpul operațiunilor și efectuați urmărirea folosind kprobes/uprobes/tracepoints.

Sursa: opennet.ru

Adauga un comentariu