Microsoft quiere extender eBPF del kernel de Linux para Windows
Después del Subsistema de Windows para Linux (WSL), que ha sido bien recibido por los diversos usuarios del sistema operativo, Microsoft decidió tomar prestada otra tecnología importante de la comunidad Linux, eBPF (Filtro de paquetes extendido de Berkeley) y llevarla a Windows.
La compañía dijo que no se trataría de una bifurcación de eBPF, sí que este se utilizará en proyectos existentes, incluido el proyecto IOVisor uBPF y el verificador PREVAIL, para ejecutar programas y API de eBPF en sus propios sistemas operativos, incluidos Windows 10 y Windows Server 2016 (o superior).
Durante los últimos cinco años, Microsoft, que a principios de este milenio todavía veía a Linux como el cáncer de la industria informática, se ha convertido en uno de los que más aportan al desarrollo del kernel.
Con WSL, abrió el camino para múltiples aplicaciones en Windows, permitiendo a los administradores de sistemas y programadores utilizar herramientas y servicios de Linux directamente desde Windows sin tener que virtualizar nada más o construir infraestructuras complejas.
Ahora Microsoft elige agregar eBPF a Windows, ya que esta es una tecnología bien conocida por su capacidad de programación y agilidad, especialmente para extender el kernel de un sistema operativo, para casos de uso como protección contra ataques DoS y observabilidad.
Es una máquina virtual basada en el registro diseñada para ejecutarse en una arquitectura RISC personalizada de 64 bits a través de la compilación JIT en el kernel de Linux. Como tal, los programas eBPF son particularmente adecuados para la depuración y el análisis del sistema, como el seguimiento del sistema de archivos y las llamadas de registro.
Se ha comparado la relación de eBPF con el kernel de Linux con la relación de JavaScript con las páginas web, permite modificar el comportamiento del kernel de Linux cargando un programa eBPF que se ejecuta, sin modificar el código fuente del kernel ni cargar un módulo del kernel.
eBPF representa una de las mayores innovaciones del kernel de Linux de la última década. Y como había cierto interés en adaptar la tecnología a otros sistemas operativos, Microsoft decidió darle una oportunidad al software de Windows. El proyecto, denominado ebpf-for-windows, es de código abierto y está disponible en GitHub.
«El proyecto ebpf-for-windows tiene como objetivo permitir a los desarrolladores utilizar las cadenas de herramientas y las interfaces de programación de aplicaciones (API) familiares de eBPF en versiones existentes de Windows», explicó en una publicación del blog Monday Dave Thaler, ingeniero de software asociado de Microsoft, y Poorna Gaddehosur, ingeniera de software senior de Microsoft.
«Basado en el trabajo de otros, este proyecto toma varios proyectos eBPF de código abierto existentes y agrega la capa intermedia para que se ejecuten sobre Windows».
La compañía no lo llama bifurcación eBPF. Por lo tanto, los desarrolladores de Windows podrán utilizar herramientas como clang para generar el código de bytes.
eBPF del código fuente que se puede insertar en cualquier aplicación o utilizar con la línea de comandos netsh de Windows. Según la empresa, esto se hace a través de una biblioteca compartida que utiliza las API de Libbpf.
La biblioteca pasa la EBPF código de bytes a través de la PREVAIL en un entorno de seguridad de Windows que permite que un componente del núcleo confiar en un demonio en modo de usuario firmado con una clave de confianza.
Los ingenieros de Microsoft dicen que el proyecto tiene como objetivo proporcionar compatibilidad con el código eBPF utilizando ganchos y ayudantes que existen tanto en Linux como en Windows.
“Linux proporciona muchos enlaces y ayudantes, algunos de los cuales son muy específicos de Linux (utilizando estructuras de datos internas de Linux, por ejemplo) que no serían aplicables a otras plataformas”, dijeron.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace. Mientras que para los que estén interesados en poder dar un vistazo al repositorio de eBPF en GitHub, pueden hacerlo desde el siguiente enlace.