CNI basado en eBPF y capa de redes, seguridad y observabilidad para clústeres de Kubernetes, con políticas L3-L7 basadas en identidades y sustitución de kube-proxy.
eunomia-bpf/bpf-developer-tutorial
Tutorial paso a paso de eBPF con ejemplos breves y ejecutables en C, Go y Rust, basado principalmente en libbpf y CO-RE.
- Estrellas
- 4,333
- Forks
- 607
- Issues abiertos
- 25
- Último commit
- anteayer
¿Qué es?
Este proyecto es un tutorial práctico de desarrollo con eBPF que avanza desde los conceptos básicos hasta temas avanzados. Cada directorio contiene un ejemplo independiente de una herramienta eBPF, muchos de ellos de apenas unas veinte líneas de código, para que los desarrolladores vean cómo se escribe y carga un programa concreto.
Los ejemplos usan CO-RE (Compile Once, Run Everywhere) y se basan principalmente en libbpf; algunas lecciones usan eunomia-bpf, la biblioteca eBPF de Cilium, libbpf-rs y otros frameworks, en C, Go y Rust. Los temas abarcan observabilidad (kprobes, uprobes, tracepoints, latencia de planificación, fugas de memoria), redes (XDP, tc, TCX, sockops, balanceo de carga), seguridad (hooks de LSM, cambios en los argumentos de llamadas al sistema) y tareas relacionadas con GPU o planificación.
El repositorio también incluye plantillas iniciales para proyectos con C/libbpf, Go, Rust y eunomia-bpf, con Makefiles, Dockerfiles y configuración de GitHub Actions.
Funciones clave
- 01Las lecciones avanzan desde programas sencillos con kprobe y tracepoint hasta XDP, LSM y tracing de GPU.
- 02Los ejemplos están escritos en C con libbpf y CO-RE; algunas lecciones también incluyen variantes en Go y Rust.
- 03Cada lección está en un directorio independiente con sus propias instrucciones de compilación.
- 04Las plantillas iniciales incluyen Makefile, Dockerfile y configuración de CI para nuevos proyectos eBPF.
- 05Incluye una matriz de compatibilidad para comprobar la compatibilidad del kernel y la cadena de herramientas.
Casos de uso
- Aprender a desarrollar con eBPF paso a paso, empezando por un primer programa hello-world.
- Encontrar un ejemplo funcional de un hook concreto, como uprobe, XDP o LSM, y adaptarlo.
- Iniciar un nuevo proyecto eBPF con libbpf, Go o Rust a partir de una plantilla.
- Estudiar cómo rastrear con eBPF programas de espacio de usuario como Nginx, MySQL o rutinas de Go.
Inicio rápido
- 1
Clona el repositorio
git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git - 2
Entra en el directorio del proyecto y sincroniza los submódulos
cd bpf-developer-tutorial && git submodule update --init --recursive - 3
Sigue las instrucciones de compilación del directorio de una lección, como src/11-bootstrap o src/1-helloworld
Antes de usarlo
- Cada lección es un ejemplo independiente con sus propios pasos de compilación, por lo que no hay un único comando para compilarlo todo.
- Los programas eBPF requieren un kernel de Linux compatible con BPF y, por lo general, permisos de root o acceso privilegiado para ejecutarse.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es bpf-developer-tutorial?
- Tutorial paso a paso de eBPF con ejemplos breves y ejecutables en C, Go y Rust, basado principalmente en libbpf y CO-RE. Este proyecto es un tutorial práctico de desarrollo con eBPF que avanza desde los conceptos básicos hasta temas avanzados. Cada directorio contiene un ejemplo independiente de una herramienta eBPF, muchos de ellos de apenas unas veinte líneas de código, para que los desarrolladores vean cómo se escribe y carga un programa concreto.
- ¿bpf-developer-tutorial es gratuito? ¿Qué licencia tiene?
- bpf-developer-tutorial es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿bpf-developer-tutorial sigue mantenido?
- Mantenimiento activo. El último commit de bpf-developer-tutorial fue el 4 nov 2026.
- ¿Para qué puedo usar bpf-developer-tutorial?
- Aprender a desarrollar con eBPF paso a paso, empezando por un primer programa hello-world. Encontrar un ejemplo funcional de un hook concreto, como uprobe, XDP o LSM, y adaptarlo. Iniciar un nuevo proyecto eBPF con libbpf, Go o Rust a partir de una plantilla. Estudiar cómo rastrear con eBPF programas de espacio de usuario como Nginx, MySQL o rutinas de Go.
- ¿Cómo se instala bpf-developer-tutorial?
- Clona el repositorio: git clone https://github.com/eunomia-bpf/bpf-developer-tutorial.git Entra en el directorio del proyecto y sincroniza los submódulos: cd bpf-developer-tutorial && git submodule update --init --recursive Sigue las instrucciones de compilación del directorio de una lección, como src/11-bootstrap o src/1-helloworld
- ¿Dónde consigo bpf-developer-tutorial?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/eunomia-bpf/bpf-developer-tutorial
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Biblioteca C y plataforma que envuelven libbpf para compilar y cargar programas eBPF, con compilación remota y compatibilidad retroactiva con distintas versiones del kernel.
Lenguaje y herramienta de tracing de alto nivel para Linux que usa eBPF para rastrear eventos del kernel y del espacio de usuario con una sobrecarga mínima.
CLI de análisis de red basado en eBPF que captura tráfico HTTP, Redis, MySQL, Kafka y DNS, y muestra dónde se produce la latencia en el kernel.
Kit de herramientas que empaqueta programas eBPF como Gadgets en imágenes OCI para recopilar e inspeccionar datos del sistema en clústeres de Kubernetes y hosts Linux.
Monitor de terminal estilo top que muestra los programas eBPF en ejecución, su tiempo de ejecución, eventos por segundo y uso estimado de CPU.