Introduzida a biblioteca Aya para criar manipuladores eBPF em Rust

É apresentada a primeira versão da biblioteca Aya, que permite criar manipuladores eBPF na linguagem Rust que rodam dentro do kernel Linux em uma máquina virtual especial com JIT. Ao contrário de outras ferramentas de desenvolvimento eBPF, Aya não usa libbpf e o compilador bcc, mas oferece sua própria implementação escrita em Rust, que usa o pacote libc crate para acessar diretamente as chamadas do sistema do kernel. Construir Aya não requer ferramentas de linguagem C ou arquivos de cabeçalho do kernel. O código da biblioteca é distribuído sob as licenças MIT e Apache 2.0.

Principais características:

  • Suporte para BTF (BPF Type Format), que fornece informações de tipo em pseudocódigo BPF para verificação de tipo e mapeamento para tipos fornecidos pelo kernel atual. O uso do BTF possibilita a criação de manipuladores eBPF universais que podem ser utilizados sem recompilação com diferentes versões do kernel Linux.
  • Suporte para chamadas “bpf-to-bpf”, variáveis ​​globais e inicializadores, o que permite projetar programas para eBPF de forma semelhante aos programas regulares que usam aya como tempo de execução que redefine funções levando em consideração o trabalho em eBPF.
  • Suporte para vários tipos de kernel, incluindo arrays regulares, mapas de hashes, pilhas, filas, rastreamentos de pilha, bem como estruturas de soquete e rastreamento de desempenho.
  • Capacidade de criar vários tipos de programas eBTF, incluindo programas para filtragem e gerenciamento de tráfego, manipuladores de cgroups e diversas operações de soquete, programas XDP.
  • Suporte para plataformas para processamento de solicitações assíncronas em modo sem bloqueio tokio e async-std.
  • Montagem rápida, sem qualquer conexão com a montagem do kernel e arquivos de cabeçalho do kernel.

O projeto ainda é considerado experimental - a API ainda não foi estabilizada e continua em desenvolvimento. Além disso, todas as oportunidades planeadas ainda não foram concretizadas. Até o final do ano, os desenvolvedores esperam trazer a funcionalidade do Aya à paridade com o libbpf e, em janeiro de 2022, criar a primeira versão estável. Também há planos para combinar as partes do Aya necessárias para escrever o código Rust para o kernel Linux com os componentes do espaço do usuário usados ​​para carregar, anexar e interagir com programas eBPF.

Lembremos que eBPF é um interpretador de bytecode embutido no kernel Linux, que permite criar manipuladores de operação de rede, monitorar a operação do sistema, interceptar chamadas do sistema, controlar o acesso, processar eventos enquanto mantém o tempo, calcular a frequência e o tempo das operações, realizar rastreamento usando kprobes/uprobes/tracepoints. Graças ao uso da compilação JIT, o bytecode é traduzido dinamicamente em instruções de máquina e executado com o desempenho do código nativo. O XDP fornece ferramentas para executar programas BPF no nível do driver de rede, com a capacidade de acessar diretamente o buffer de pacotes DMA, o que permite criar processadores de alto desempenho para trabalhar sob carga pesada de rede.

Fonte: opennet.ru

Adicionar um comentário