Introduciuse a biblioteca Aya para crear controladores eBPF en Rust

Preséntase a primeira versión da biblioteca Aya, que permite crear controladores eBPF na linguaxe Rust que se executan dentro do núcleo de Linux nunha máquina virtual especial con JIT. A diferenza doutras ferramentas de desenvolvemento eBPF, Aya non usa libbpf nin o compilador bcc, senón que ofrece a súa propia implementación escrita en Rust, que usa o paquete libc crate para acceder directamente ás chamadas do sistema do núcleo. A construción de Aya non require ferramentas de linguaxe C nin ficheiros de cabeceira do núcleo. O código da biblioteca distribúese baixo as licenzas MIT e Apache 2.0.

Características clave:

  • Soporte para BTF (BPF Type Format), que proporciona información de tipo en pseudocódigo BPF para a comprobación de tipos e a asignación de tipos proporcionados polo núcleo actual. O uso de BTF fai posible crear controladores eBPF universais que se poden usar sen recompilar con diferentes versións do núcleo de Linux.
  • Soporte para chamadas "bpf-to-bpf", variables globais e inicializadores, o que permite deseñar programas para eBPF dun xeito similar aos programas habituais que usan aya como tempo de execución que redefine as funcións tendo en conta o traballo en eBPF.
  • Soporte para varios tipos de núcleo, incluíndo matrices normais, mapas hash, pilas, colas, rastrexos de pila, así como estruturas de seguimento de sockets e rendemento.
  • Capacidade para crear varios tipos de programas eBTF, incluíndo programas para filtrar e xestionar o tráfico, manejadores de cgroup e varias operacións de socket, programas XDP.
  • Soporte para plataformas para o procesamento de solicitudes asíncronos en modo non bloqueador tokio e async-std.
  • Montaxe rápida, sen ningunha conexión coa montaxe do núcleo e os ficheiros de cabeceira do núcleo.

O proxecto aínda se considera experimental: a API aínda non se estabiliza e segue a desenvolverse. Ademais, todas as oportunidades previstas aínda non se realizaron. A finais de ano, os desenvolvedores esperan levar a funcionalidade de Aya á paridade con libbpf e en xaneiro de 2022 crear a primeira versión estable. Tamén hai plans para combinar as partes de Aya necesarias para escribir código Rust para o núcleo de Linux cos compoñentes de espazo de usuario utilizados para cargar, conectar e interactuar cos programas eBPF.

Lembremos que eBPF é un intérprete de bytecode integrado no núcleo de Linux, que permite crear controladores de operacións de rede, supervisar o funcionamento do sistema, interceptar chamadas do sistema, controlar o acceso, procesar eventos mantendo o tempo, calcular a frecuencia e o tempo das operacións, realizar rastrexar usando kprobes/uprobes/tracepoints. Grazas ao uso da compilación JIT, o bytecode tradúcese sobre a marcha en instrucións da máquina e execútase co rendemento do código nativo. XDP ofrece ferramentas para executar programas BPF a nivel de controlador de rede, coa posibilidade de acceder directamente ao búfer de paquetes DMA, o que lle permite crear procesadores de alto rendemento para traballar baixo unha gran carga de rede.

Fonte: opennet.ru

Engadir un comentario