En nuestro post anterior, exploramos cómo eBPF permite interactuar con el kernel de Linux para monitorear y controlar el sistema en tiempo real. Pero, ¿cómo está organizado el kernel internamente? ¿Dónde exactamente se pueden “enganchar” herramientas como eBPF?
En este anexo, profundizaremos en los subsistemas del kernel y los puntos de interacción (hooks) que hacen posible modificar su comportamiento sin necesidad de recompilarlo.
1. Visión General de los Subsistemas del Kernel
El kernel de Linux está estructurado en módulos especializados que trabajan juntos para gestionar recursos y procesos. A continuación, exploramos los principales subsistemas y su relación con eBPF.

Imagen 1: Subsistemas Linux
1.1. Interfaz de Llamadas al Sistema (System Call Interface)
Es el puente entre aplicaciones de usuario y el kernel. Aquí se procesan todas las solicitudes de servicios como abrir archivos o crear procesos.
- eBPF en acción: Engancharse a llamadas como
open()
oexecve()
para auditar accesos o bloquear operaciones sospechosas.
1.2. Gestión de Procesos (Process Management)
Controla la creación, ejecución y finalización de procesos. Incluye el planificador de tareas (scheduler) y mecanismos de sincronización.
- eBPF en acción: Identificar procesos que consumen demasiados recursos o detectar comportamientos anómalos en ejecución.
1.3. Gestión de Memoria (Memory Management)
Administra la asignación y liberación de memoria, incluyendo la memoria virtual, el sistema de paging y la caché.
- eBPF en acción: Monitorear patrones de uso de memoria y detectar aplicaciones con fugas de memoria (memory leaks).
1.4. Sistema de Archivos Virtual (VFS)
Proporciona una interfaz uniforme para interactuar con diferentes sistemas de archivos como ext4 o btrfs.
- eBPF en acción: Analizar operaciones de lectura/escritura en discos y medir el rendimiento de archivos críticos.
1.5. E/S de Bloques (Block I/O)
Optimiza el acceso a dispositivos de almacenamiento, gestionando la planificación de E/S y el caché de páginas.
- eBPF en acción: Priorizar ciertos tipos de operaciones de E/S o detectar cuellos de botella en el rendimiento de discos.
1.6. Controladores de Dispositivos (Device Drivers)
Permiten que el kernel interactúe con hardware específico como tarjetas de red, discos y otros periféricos.
- eBPF en acción: Filtrar tráfico de red en la tarjeta de red o agregar métricas en controladores de almacenamiento.
1.7. Subsistema de Red (Network)
Implementa la pila de protocolos TCP/IP y maneja el tráfico entrante y saliente.
- eBPF en acción: Rechazar paquetes sospechosos en ataques DDoS o medir latencias en conexiones activas.
2. ¿Dónde se Pueden Enganchar los Programas eBPF?
Los hooks son puntos estratégicos dentro del kernel donde se pueden insertar fragmentos de código (como eBPF) para observar o modificar su comportamiento. A continuación, algunos ejemplos clave:
2.1. Hooks en la Capa de Red
- XDP (eXpress Data Path): Permite procesar paquetes en la tarjeta de red antes de que ingresen al sistema. Útil para filtros rápidos.
- TC (Traffic Control): Modifica el tráfico de red en la pila del kernel.
- Netfilter: Filtra y manipula paquetes en diferentes etapas de su procesamiento.
2.2. Hooks en la Interfaz de Llamadas al Sistema
- Syscalls: Permite interceptar funciones clave como
open()
,read()
, oexecve()
para auditoría y control de accesos.
2.3. Hooks en la Gestión de Procesos
- Kprobes/Uprobes: Permiten analizar funciones internas del kernel y aplicaciones en espacio de usuario para depuración avanzada.
3. ¿Por Qué es Importante Entender los Subsistemas y Hooks?
- Optimización de Rendimiento: Detectar y corregir cuellos de botella en el sistema (red, disco, memoria, CPU).
- Seguridad Mejorada: Implementar políticas avanzadas de control de accesos en capas críticas.
- Extensibilidad sin recompilar: eBPF permite engancharse en cualquier subsistema sin modificar el código base del kernel.
4. Conclusión
Comprender la arquitectura interna del kernel de Linux y los mecanismos de enganche (hooks) es fundamental para aprovechar herramientas como eBPF. Mientras que en el post anterior exploramos sus usos prácticos, este anexo proporciona el contexto técnico necesario para entender dónde y cómo eBPF interactúa con el sistema operativo.
📚 Recursos para Profundizar
✅ Diagrama de Subsistemas del Kernel – Leibniz Universität Hannover
✅ Documentación Oficial del Kernel – Kernel.org