GCC agora inclúe un backend para compilar a eBPF

Incluído no conxunto de compiladores GCC aceptado código para compilar programas para o intérprete de bytecode integrado no núcleo de Linux eGMP. Grazas ao uso da compilación JIT, o bytecode do núcleo tradúcese sobre a marcha en instrucións de máquina e execútase co rendemento do código nativo. Parches con soporte eBPF aceptada na rama desde a que se desenvolve a versión GCC 10.

Ademais dun backend para a xeración de bytecode, GCC inclúe un porto libgcc para eBPF e ferramentas para xerar ficheiros ELF que permiten executar código na máquina virtual eBPF mediante cargadores proporcionados polo núcleo. Os parches para soportar eBPF en GCC foron preparados por enxeñeiros de Oracle, que xa o tiñan fornecido Soporte eBPF en GNU binutils. Tamén están en desenvolvemento un simulador e parches para GDB, que che permitirán depurar programas eBPF sen cargalos no núcleo.

Os programas para eBPF pódense definir nun subconxunto da linguaxe C, compilarse e cargarse no núcleo. Antes da execución, o intérprete eBPF verifica o bytecode para ver o uso de instrucións permitidas e impón certas regras ao código (por exemplo, sen bucles).
Inicialmente, utilizáronse ferramentas baseadas en LLVM para compilar eBPF en Linux. O soporte eBPF en GCC é interesante porque permite usar un kit de ferramentas para construír o kernel de Linux e os programas eBPF, sen instalar dependencias adicionais.

En forma de programas eBPF, pode crear controladores de operacións de rede, filtrar o tráfico, xestionar o ancho de banda, supervisar sistemas, interceptar chamadas ao sistema, controlar o acceso, contar a frecuencia e o tempo das operacións e realizar o rastrexo mediante kprobes/uprobes/tracepoints.

Fonte: opennet.ru

Engadir un comentario