CNI baseado em eBPF e camada de rede, segurança e observabilidade para clusters Kubernetes, com políticas L3-L7 baseadas em identidade e substituição do kube-proxy.
eunomia-bpf/bpf-developer-tutorial
Tutorial passo a passo de eBPF com exemplos curtos e executáveis em C, Go e Rust, baseado principalmente em libbpf e CO-RE.
- Estrelas
- 4,333
- Forks
- 607
- Issues abertas
- 25
- Último commit
- há 3 dias
O que é?
Este projeto é um tutorial prático de desenvolvimento eBPF que vai dos conceitos básicos a tópicos avançados. Cada diretório contém um exemplo independente de ferramenta eBPF, muitos com apenas cerca de vinte linhas de código, para que os desenvolvedores vejam como escrever e carregar um programa específico.
Os exemplos usam CO-RE (Compile Once, Run Everywhere) e são baseados principalmente em libbpf. Algumas lições usam eunomia-bpf, a biblioteca eBPF do Cilium, libbpf-rs e outros frameworks, em C, Go e Rust. Os tópicos abrangem observabilidade (kprobes, uprobes, tracepoints, latência de escalonamento e vazamentos de memória), redes (XDP, tc, TCX, sockops e balanceamento de carga), segurança (hooks do LSM e alterações nos argumentos de syscalls) e trabalho com GPU ou escalonador.
O repositório também oferece templates iniciais para projetos em C/libbpf, Go, Rust e eunomia-bpf, incluindo Makefiles, Dockerfiles e configuração do GitHub Actions.
Recursos principais
- 01As lições avançam de programas simples com kprobe e tracepoint até XDP, LSM e tracing de GPU.
- 02Os exemplos são escritos em C com libbpf e CO-RE, e algumas lições também incluem versões em Go e Rust.
- 03Cada lição fica em um diretório independente, com instruções próprias de build.
- 04Os templates iniciais oferecem Makefile, Dockerfile e configuração de CI para novos projetos eBPF.
- 05Inclui uma matriz de compatibilidade para verificar o suporte do kernel e da toolchain.
Casos de uso
- Aprender a desenvolver com eBPF passo a passo, começando por um primeiro programa hello-world.
- Encontrar um exemplo funcional de um hook específico, como uprobe, XDP ou LSM, para adaptar.
- Iniciar um novo projeto eBPF com libbpf, Go ou Rust a partir de um template.
- Estudar como rastrear programas de espaço de usuário, como Nginx, MySQL ou goroutines de Go, com eBPF.
Início rápido
- 1
Clone o repositório
git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git - 2
Acesse o diretório do projeto e sincronize os submódulos
cd bpf-developer-tutorial && git submodule update --init --recursive - 3
Siga as instruções de compilação no diretório de uma lição, como src/11-bootstrap ou src/1-helloworld
Antes de usar
- Cada lição é um exemplo separado, com etapas próprias de compilação, portanto não há um único comando para compilar tudo.
- Programas eBPF exigem um kernel Linux com suporte a BPF e, normalmente, acesso root ou privilegiado para serem executados.
Em coleções
Tópicos
Perguntas frequentes
- O que é bpf-developer-tutorial?
- Tutorial passo a passo de eBPF com exemplos curtos e executáveis em C, Go e Rust, baseado principalmente em libbpf e CO-RE. Este projeto é um tutorial prático de desenvolvimento eBPF que vai dos conceitos básicos a tópicos avançados. Cada diretório contém um exemplo independente de ferramenta eBPF, muitos com apenas cerca de vinte linhas de código, para que os desenvolvedores vejam como escrever e carregar um programa específico.
- bpf-developer-tutorial é gratuito? Qual é a licença?
- bpf-developer-tutorial é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- bpf-developer-tutorial ainda é mantido?
- Manutenção ativa. O último commit de bpf-developer-tutorial foi em 4 de nov. de 2026.
- Para que posso usar bpf-developer-tutorial?
- Aprender a desenvolver com eBPF passo a passo, começando por um primeiro programa hello-world. Encontrar um exemplo funcional de um hook específico, como uprobe, XDP ou LSM, para adaptar. Iniciar um novo projeto eBPF com libbpf, Go ou Rust a partir de um template. Estudar como rastrear programas de espaço de usuário, como Nginx, MySQL ou goroutines de Go, com eBPF.
- Como instalar bpf-developer-tutorial?
- Clone o repositório: git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git Acesse o diretório do projeto e sincronize os submódulos: cd bpf-developer-tutorial && git submodule update --init --recursive Siga as instruções de compilação no diretório de uma lição, como src/11-bootstrap ou src/1-helloworld
- Onde consigo bpf-developer-tutorial?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/eunomia-bpf/bpf-developer-tutorial
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Biblioteca C e plataforma que encapsulam o libbpf para compilar e carregar programas eBPF, com suporte à compilação remota e ao backport de recursos para versões antigas do kernel.
Linguagem e ferramenta de tracing de alto nível para Linux que usa eBPF para rastrear eventos do kernel e do espaço de usuário com sobrecarga mínima.
CLI de análise de rede baseado em eBPF que captura tráfego HTTP, Redis, MySQL, Kafka e DNS e mostra onde a latência ocorre no kernel.
Toolkit que empacota programas eBPF como Gadgets em imagens OCI para coletar e inspecionar dados do sistema em clusters Kubernetes e hosts Linux.
Monitor de terminal no estilo top que exibe programas eBPF em execução, tempo de execução, eventos por segundo e uso estimado de CPU.