Aya, a primeira biblioteca a criar controladores eBPF em Rust

Linus torvalds, bem como muitos desenvolvedores Kernel e distribuições diferentes expressaram seu agrado sobre a ferrugem e até mesmo em mais de uma ocasião foi apresentado o problema da implementação de drivers nesta linguagem de programação no Kernel do Linux.

E sobre isso, vários trabalhos já foram lançados, dos quais já mencionamos aqui no blog e podemos citar, por exemplo, experiência sucesso do conjunto alternativo de utilitários, coreutils, reescrito em Rust (Isso inclui utilitários como sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln e ls).

Diante disso, Linus torvalds não se pronunciou totalmente a favor desta iniciativa e expressou os pontos negativos (você pode consultar os detalhes No link a seguir.)

Apesar das duras críticas de Linus, os trabalhos sobre implementação A ferrugem no kernel não parou de seguir em frente e recentemente a primeira versão da biblioteca Aya foi apresentada, que permite criar drivers eBPF no Rust que são executados dentro do kernel do Linux em uma máquina virtual JIT especial.

Ao contrário de outras ferramentas de desenvolvimento EBPF, Aya não usa libbpf e o compilador BCCMas oferece sua própria implementação escrita em Rust que usa o pacote libc drawer para acessar diretamente as chamadas do sistema do kernel. A construção do Aya não requer ferramentas de linguagem C ou cabeçalhos de kernel.

Para quem é não conhecem o eBPF, eles devem saber que este é um interpretador de bytecode integrado ao kernel Linux que permite criar manipuladores de operações de rede, monitorar a operação do sistema, interceptar chamadas do sistema, controlar o acesso, processar eventos com tempo, calcular a frequência e o tempo das operações e rastrear usando kprobes / uprobes / tracepoints.

Graças à compilação JIT, o bytecode é traduzido em instruções de máquina na hora e funciona com o desempenho do código nativo. O XDP fornece um meio de executar programas BPF no nível do driver de rede, com acesso direto ao buffer de pacote DMA, permitindo que você crie drivers de alto desempenho para condições de alta carga de rede.

Sobre Ayah

Dos principais recursos mencionados de Aya podemos encontrar isso tem suporte para BTF (Formato de tipo BPF), que fornece informações de tipo em pseudocódigo BPF para verificar e comparar os tipos fornecidos pelo kernel atual. O uso do BTF possibilita a criação de drivers eBPF universais que podem ser usados ​​sem a necessidade de recompilá-los com diferentes versões do kernel Linux.

Assim como o suporte para chamadas bpf para bpf, variáveis ​​globais e inicializadores, que permite desenhar programas para eBPF por analogia com programas convencionais usando aya como tempo de execução, cancelando funções tendo em conta o trabalho em eBPF.

Por outro lado, também tem o suporte para tipos de kernel internos, incluindo matrizes regulares, mapas de hash, pilhas, filas, rastreamentos de pilha e estruturas para soquetes e rastreamento de desempenho.

Também tem a capacidade de criar vários tipos de programas eBTF, incluindo programas para filtragem e gerenciamento de tráfego, cgroup e vários drivers de soquete, programas XDP e também suporte de plataforma para processamento de solicitação assíncrona no modo tokyo sem bloqueio e async-std.
Compilação rápida, sem estar vinculado à compilação do kernel ou cabeçalhos do kernel.

É importante mencionar que o projeto ainda é considerado experimental porque a API ainda não está estabilizada e continua a evoluir. Além disso, nem todas as funções concebidas ainda foram implementadas.

Até o final do ano, os desenvolvedores esperam trazer a funcionalidade do Aya no mesmo nível do libbpf e em janeiro de 2022 formam a primeira versão estável. Também está planejado combinar as partes Aya necessárias para escrever o código Rust para o kernel do Linux com os componentes do espaço do usuário usados ​​para carregar, anexar e interagir com programas eBPF.

Finalmente se você estiver interessado em saber mais sobre isso você pode verifique os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.