Capítulo 5. CO-RE, BTF e Libbpf
Este trabalho foi traduzido com recurso a IA. Agradecemos o teu feedback e comentários: translation-feedback@oreilly.com
No capítulo anterior encontraste o BTF (BPF Type Format) pela primeira vez. Este capítulo discute porque é que ele existe e como é usado para tornar os programas eBPF portáveis em diferentes versões do kernel. É uma parte chave da abordagem compilar uma vez, executar em todo o lado (CO-RE) do BPF, que resolve o problema de tornar os programas eBPF portáveis em diferentes versões do kernel.
Muitos programas eBPF acedem a estruturas de dados do kernel, e um programador eBPF teria de incluir ficheiros de cabeçalho Linux relevantes para que o seu código eBPF possa localizar corretamente os campos dentro dessas estruturas de dados. No entanto, o kernel do Linux está em desenvolvimento contínuo, o que significa que as estruturas de dados internas podem mudar entre diferentes versões do kernel. Se fosses pegar num ficheiro de objectos eBPF compilado numa máquina1 e o carregasses numa máquina com uma versão diferente do kernel, não haveria garantia de que as estruturas de dados seriam as mesmas.
A abordagem CO-RE é um enorme passo em frente na resolução deste problema de portabilidade de uma forma eficiente. Permite que os programas eBPF incluam informação sobre a disposição das estruturas de dados com que foram compilados, e fornece um mecanismo para ajustar como os campos são acedidos se a disposição da estrutura de dados for diferente ...