BumbleBee, un excelente proyecto para simplificar la creación y distribución de programas eBPF
Solo.io, la empresa de informática en la nube, microservicios, sandboxed y serverless, dio a conocer el proyecto de código abierto «BumbleBee». El nuevo proyecto simplifica la experiencia del desarrollador para construir, empaquetar y distribuir herramientas eBPF, según Solo.
BumbleBee genera automáticamente un código de espacio de usuario repetitivo para desarrollar herramientas eBPF, explicó la compañía. También brinda una experiencia similar a Docker para empaquetar un programa eBPF. Esto le permite conectarse a otros flujos de trabajo de imágenes OCI para su publicación y distribución.
Sobre BumbleBee
BumbleBee hace posible empaquetar un programa eBPF como una imagen de contenedor de Open Container Initiative (OCI) que se puede ejecutar en cualquier sistema sin volver a compilar o usar componentes adicionales en el espacio del usuario.
La interacción con el código eBPF en el kernel, incluido el procesamiento de datos provenientes del procesador eBPF, es manejada por BumbleBee, que exporta automáticamente estos datos en forma de métricas, histogramas o registros, a los que se puede acceder, por ejemplo, usando la utilidad curl. El enfoque propuesto permite al desarrollador concentrarse en escribir código eBPF y no distraerse con la organización de la interacción con este código desde el espacio del usuario, el ensamblaje y la carga en el kernel.
El CEO de Solo.io, Idit Levine, dice que:
La compañía desarrolló BumbleBee para generar automáticamente el código de espacio de usuario repetitivo que se requiere para acceder a las tecnologías eBPF que se ejecutan a nivel de kernel. BumbleBee incluye una interfaz de línea de comandos (CLI) que genera automáticamente el código de espacio de usuario para los programas eBPF mediante la exposición automática de mapas como registros, métricas e histogramas.
Para administrar los programas eBPF, se ofrece una utilidad estilo Docker «bee», con la que puede descargar inmediatamente el controlador eBPF de interés desde un repositorio externo y ejecutarlo en el sistema local.
El kit de herramientas le permite generar un marco de código C para los controladores eBPF de un tema seleccionado (actualmente solo se admiten los controladores de red y de archivos que interceptan llamadas a la pila de red y los sistemas de archivos). Basado en el marco generado, el desarrollador puede implementar rápidamente la funcionalidad que le interesa.
A diferencia de BCC (BPF Compiler Collection), BumbleBee no reconstruye completamente el código del controlador para cada versión del kernel de Linux (BCC usa la compilación sobre la marcha con Clang cada vez que se ejecuta el programa eBPF).
Para resolver los problemas de portabilidad, se están desarrollando los kits de herramientas CO-RE y libbpf, que le permiten compilar código una sola vez y usar un cargador universal especial que adapta el programa cargado al kernel actual y los tipos BTF (formato de tipo BPF).
BumbleBee es un complemento sobre libbpf y proporciona tipos adicionales para la interpretación automática y visualización de datos colocados en estructuras de mapas eBPF estándar RingBuffer y HashMap.
Para construir el programa eBPF final y guardarlo como una imagen OCI, simplemente se debe ejecutar el comando:
bee build file_with_code name:version
Y ejecutar el comando
bee run name:version
De forma predeterminada, los eventos recibidos del controlador se mostrarán en la ventana del terminal, pero si es necesario, puede obtener los datos llamando a las utilidades curl o wget en el puerto de red vinculado al controlador.
Los controladores se pueden distribuir a través de repositorios compatibles con OCI, por ejemplo, para ejecutar un controlador externo desde el repositorio ghcr.io (GitHub Container Registry), puede ejecutar el comando
bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)
Para poner el controlador en el repositorio, se ofrece el comando
bee push
Y para vincular la versión
bee tag
El mayor beneficio de eBPF es simplemente la eficiencia. El costo total de procesamiento para plataformas de seguridad, redes y almacenamiento debería disminuir a medida que más proveedores aprovechen sus capacidades.
Actualmente, eBPF es ampliamente utilizado por empresas de escala web, como proveedores de servicios en la nube. Facebook lo está utilizando como el principal equilibrador de carga definido por software en sus centros de datos, mientras que Google está utilizando el software de red Cilium de código abierto dentro de sus ofertas administradas de Kubernetes.
Sin embargo, en el futuro, Levine dice que ahora es solo cuestión de tiempo antes de que eBPF se adopte mucho más ampliamente a medida que más sistemas operativos permiten la capacidad.
Finalmente si quieres conocer más al respecto, puedes consultar los detalles en el siguiente enlace.