Articulo de referencia

eBPF

Daniel Borkmann {{cite web|url=https://www.linuxfoundation.org/press-release/facebook-google-isovalent-microsoft-and-netflix-launch-ebpf-foundation-as-part-of-the-linux-foundati...

eBPF es una tecnología que puede ejecutar programas en un contexto privilegiado como el núcleo del sistema operativo . [ 5 ] Es el sucesor del mecanismo de filtrado Berkeley Packet Filter (BPF, donde la "e" originalmente significaba "extendido") en Linux y también se utiliza en partes del núcleo de Linux que no son de red.

Se utiliza para extender de forma segura y eficiente las capacidades del núcleo en tiempo de ejecución sin necesidad de modificar el código fuente del núcleo ni cargar módulos del núcleo . [ 6 ] La seguridad se garantiza mediante un verificador integrado en el núcleo que realiza un análisis estático del código y rechaza los programas que se bloquean, se cuelgan o interfieren negativamente con el núcleo. [ 7 ] [ 8 ]

Este modelo de validación difiere de los entornos aislados , donde el entorno de ejecución está restringido y el entorno de ejecución no tiene conocimiento del programa. [ 9 ] Ejemplos de programas que se rechazan automáticamente son los programas sin garantías de salida sólidas (es decir, bucles for/while sin condiciones de salida) y los programas que desreferencian punteros sin comprobaciones de seguridad. [ 10 ]

Diseño

Los programas cargados que superaron el verificador se interpretan o se compilan justo a tiempo (JIT) en el núcleo para un rendimiento de ejecución nativo. El modelo de ejecución está orientado a eventos y, con pocas excepciones, se ejecuta hasta su finalización , [ 2 ] lo que significa que los programas pueden adjuntarse a varios puntos de conexión en el núcleo del sistema operativo y se ejecutan al activarse un evento. Los casos de uso de eBPF incluyen (pero no se limitan a) redes como XDP , rastreo y subsistemas de seguridad . [ 5 ] Dada la eficiencia y flexibilidad de eBPF, que abrieron nuevas posibilidades para resolver problemas de producción, Brendan Gregg lo denominó "superpoderes para Linux". [ 11 ] Linus Torvalds dijo: "BPF ha sido realmente útil, y su verdadero poder reside en cómo permite a las personas escribir código especializado que no se habilita hasta que se solicita". [ 12 ] Debido a su éxito en Linux, el entorno de ejecución de eBPF se ha portado a otros sistemas operativos como Windows . [ 4 ]

Historia

eBPF evolucionó a partir del clásico filtro de paquetes de Berkeley (cBPF, nombre aplicado retroactivamente). En su nivel más básico, introdujo el uso de diez registros de 64 bits (en lugar de dos registros de 32 bits para cBPF), una semántica de salto diferente, una instrucción de llamada y la convención de paso de registros correspondiente, nuevas instrucciones y una codificación diferente para estas instrucciones. [ 13 ]

Arquitectura y conceptos

Mapas eBPF

Los mapas eBPF son almacenes de clave/valor eficientes que residen en el espacio del kernel y pueden usarse para compartir datos entre múltiples programas eBPF o para comunicarse entre una aplicación de espacio de usuario y el código eBPF que se ejecuta en el kernel. Los programas eBPF pueden aprovechar los mapas eBPF para almacenar y recuperar datos en una amplia gama de estructuras de datos. El kernel principal proporciona implementaciones de mapas. Existen varios tipos, [ 44 ] incluyendo mapas hash, matrices y búferes circulares.

En la práctica, los mapas eBPF se utilizan normalmente para escenarios como un programa en el espacio de usuario que escribe información de configuración para que la recupere un programa eBPF, un programa eBPF que almacena el estado para su posterior recuperación por otro programa eBPF (o una ejecución futura del mismo programa), o un programa eBPF que escribe resultados o métricas en un mapa para que los recupere un programa en el espacio de usuario que presentará los resultados. [ 45 ]

Máquina virtual eBPF

La máquina virtual eBPF se ejecuta dentro del núcleo y recibe un programa en forma de instrucciones de código de bytes eBPF , que se convierten en instrucciones de máquina nativas que se ejecutan en la CPU. Las primeras implementaciones de eBPF interpretaban el código de bytes eBPF, pero esto se ha reemplazado por un proceso de compilación Just-in-Time (JIT) por razones de rendimiento y seguridad. [ 45 ]

La máquina virtual eBPF consta de once registros de 64 bits con subregistros de 32 bits, un contador de programa y un espacio de pila BPF de 512 bytes. Estos registros de propósito general mantienen un registro del estado cuando se ejecutan los programas eBPF. [ 46 ]  

Llamadas de cola

Las llamadas de cola pueden llamar y ejecutar otro programa eBPF y reemplazar el contexto de ejecución , de forma similar a como funciona la llamada al sistema execve() para los procesos regulares. Esto permite que un programa eBPF llame a otro programa eBPF. Las llamadas de cola se implementan como un salto largo, reutilizando el mismo marco de pila . Son particularmente útiles en eBPF, donde la pila está limitada a 512 bytes. Durante el tiempo de ejecución, se puede agregar o reemplazar funcionalidad de forma atómica, alterando así el comportamiento de ejecución del programa BPF. [ 46 ] Un caso de uso común para las llamadas de cola es distribuir la complejidad de los programas eBPF entre varios programas. Otro caso de uso es reemplazar o extender la lógica reemplazando el contenido del array del programa mientras está en uso. Por ejemplo, para actualizar una versión del programa sin tiempo de inactividad o para habilitar/deshabilitar lógica. [ 47 ]

Llamadas de BPF a BPF

En el desarrollo de software, se considera una buena práctica agrupar el código común en una función , encapsulando la lógica para su reutilización. Antes del kernel de Linux 4.16 y LLVM 6.0, un programa típico de C eBPF tenía que indicar explícitamente al compilador que insertara una función en línea , lo que resultaba en un archivo objeto BPF con funciones duplicadas. Esta restricción se eliminó y los compiladores eBPF convencionales ahora admiten la escritura de funciones de forma natural en los programas eBPF. Esto reduce el tamaño del código eBPF generado, lo que facilita su uso por parte de la caché de instrucciones de la CPU. [ 45 ] [ 46 ]

Verificador eBPF

El verificador es un componente central de eBPF, y su principal responsabilidad es asegurar que un programa eBPF sea seguro para ejecutar. Realiza un análisis estático del código de bytes de eBPF para garantizar su seguridad. El verificador analiza el programa para evaluar todas las posibles rutas de ejecución. Recorre las instrucciones en orden y las evalúa. El proceso de verificación comienza con una búsqueda en profundidad a través de todas las posibles rutas del programa; el verificador simula la ejecución de cada instrucción utilizando interpretación abstracta [ 48 ] , rastreando el estado de los registros y la pila. Si alguna instrucción pudiera conducir a un estado inseguro, la verificación falla. Este proceso continúa hasta que se hayan analizado todas las rutas o se encuentre una violación. Dependiendo del tipo de programa, el verificador comprueba las violaciones de reglas específicas. Estas reglas pueden incluir verificar que un programa eBPF siempre finalice en un tiempo razonable (sin bucles infinitos ni recursión infinita ), verificar que un programa eBPF no pueda leer memoria arbitraria, ya que esto podría permitir que un programa filtre información confidencial, verificar que los programas de red no puedan acceder a memoria fuera de los límites del paquete , ya que la memoria adyacente podría contener información confidencial, verificar que los programas no puedan bloquearse mutuamente , por lo que cualquier spinlock mantenido debe liberarse y solo se puede mantener un bloqueo a la vez para evitar bloqueos mutuos en varios programas, y verificar que los programas no puedan leer memoria no inicializada. Esta no es una lista exhaustiva de las comprobaciones que realiza el verificador, y existen excepciones a estas reglas. Un ejemplo es que los programas de rastreo tienen acceso a funciones auxiliares que les permiten leer memoria de forma controlada, pero estos tipos de programas requieren privilegios de root y, por lo tanto, no representan un riesgo de seguridad. [ 47 ] [ 45 ]

Con el tiempo, el verificador eBPF ha evolucionado para incluir nuevas características y optimizaciones, como la compatibilidad con bucles limitados, la eliminación de código muerto , la verificación función por función y las funciones de devolución de llamada .

eBPF CO-RE (compila una vez, ejecuta en todas partes)

Los programas eBPF utilizan la memoria y las estructuras de datos del kernel. Algunas estructuras pueden modificarse entre diferentes versiones del kernel, alterando la distribución de la memoria. Dado que el kernel de Linux se desarrolla continuamente, no hay garantía de que las estructuras de datos internas permanezcan iguales entre diferentes versiones. CO-RE es un concepto fundamental en el desarrollo moderno de eBPF que permite que los programas eBPF sean portables entre diferentes versiones y configuraciones del kernel. Aborda el desafío de las variaciones en la estructura del kernel entre diferentes distribuciones y versiones de Linux . CO-RE comprende BTF (BPF Type Format), un formato de metadatos que describe los tipos utilizados en el kernel y los programas eBPF, y proporciona información detallada sobre la distribución de las estructuras, los desplazamientos de los campos y los tipos de datos. Permite el acceso en tiempo de ejecución a los tipos del kernel, lo cual es crucial para el desarrollo y la verificación de programas BPF. BTF se incluye en la imagen del kernel de los kernels habilitados para BTF. El compilador (por ejemplo, LLVM) emite reubicaciones especiales. Estas reubicaciones capturan descripciones de alto nivel de la información a la que el programa eBPF pretende acceder. La biblioteca libbpf adapta los programas eBPF para que funcionen con la estructura de datos del kernel de destino donde se ejecutan, incluso si esta estructura es diferente de la del kernel donde se compiló el código. Para ello, libbpf necesita la información de reubicación BPF CO-RE generada por Clang como parte del proceso de compilación. [ 45 ] El programa eBPF compilado se almacena en un archivo objeto de formato ejecutable y enlazable (ELF) . Este archivo contiene información de tipo BTF y reubicaciones generadas por Clang . El formato ELF permite que el cargador eBPF (por ejemplo, libbpf) procese y ajuste el programa BPF dinámicamente para el kernel de destino . [ 49 ]

Herrada

El alias eBPF se usa a menudo indistintamente con BPF, [ 2 ] [ 50 ] por ejemplo por la comunidad del kernel de Linux. eBPF y BPF se mencionan como nombres de tecnología, al igual que LLVM . [ 2 ] eBPF evolucionó a partir del lenguaje máquina para la máquina virtual de filtrado en el Berkeley Packet Filter como una versión extendida, pero a medida que sus casos de uso superaron las redes, hoy en día "eBPF" se interpreta preferentemente como un pseudoacrónimo . [ 2 ]

La abeja es el logotipo oficial de eBPF. En la primera Cumbre de eBPF se realizó una votación y la mascota de la abeja fue nombrada "eBee". [ 51 ] [ 52 ] El logotipo fue creado originalmente por Vadim Shchekoldin. [ 52 ] Anteriormente existieron mascotas no oficiales de eBPF, [ 53 ] pero no tuvieron una adopción generalizada.

Gobernancia

La Fundación eBPF se creó en agosto de 2021 con el objetivo de ampliar las contribuciones realizadas para extender las potentes capacidades de eBPF y crecer más allá de Linux. [ 1 ] Entre los miembros fundadores se encuentran Meta , Google , Isovalent, Microsoft y Netflix . El propósito es recaudar, presupuestar y gastar fondos en apoyo de varios proyectos de código abierto, datos abiertos y/o estándares abiertos relacionados con las tecnologías eBPF [ 54 ] para impulsar aún más el crecimiento y la adopción del ecosistema eBPF. Desde su creación, también se unieron Red Hat , Huawei , Crowdstrike , Tigera, DaoCloud, Datoms y FutureWei. [ 55 ]

Adopción

eBPF ha sido adoptado por varios usuarios de producción a gran escala, por ejemplo:

  • Meta utiliza eBPF a través de su balanceador de carga de capa 4 Katran para todo el tráfico que va a facebook.com [ 56 ] [ 57 ] [ 58 ] [ 31 ]
  • Google utiliza eBPF en GKE , desarrolló y utiliza BPF LSM para reemplazar la auditoría y utiliza eBPF para la red [ 29 ] [ 59 ] [ 60 ] [ 61 ]
  • Cloudflare utiliza eBPF para el equilibrio de carga y la protección DDoS y la aplicación de seguridad [ 62 ] [ 63 ] [ 64 ] [ 65 ] [ 66 ]
  • Netflix utiliza eBPF para la observabilidad de la red en toda la flota y el diagnóstico del rendimiento [ 67 ] [ 68 ]
  • Dropbox utiliza eBPF a través de Katran para el equilibrio de carga de capa 4 [ 69 ]
  • Android utiliza eBPF para NAT46 y monitorización del tráfico [ 70 ] [ 71 ] [ 72 ]
  • Samsung Galaxy utiliza eBPF para soluciones de red [ 73 ]
  • Yahoo! Inc utiliza eBPF a través de Cilium para el balanceo de carga de capa 4 [ 74 ]
  • LinkedIn utiliza eBPF para la observabilidad de la infraestructura [ 75 ]
  • Alibaba utiliza eBPF para el balanceo de carga de pods de Kubernetes [ 76 ]
  • Datadog utiliza eBPF para la aplicación de seguridad y redes de pods de Kubernetes [ 77 ] [ 78 ] [ 79 ]
  • Trip.com utiliza eBPF para la red de pods de Kubernetes [ 80 ] [ 81 ]
  • Shopify utiliza eBPF para la detección de intrusiones a través de Falco [ 82 ].
  • DoorDash utiliza eBPF a través de BPFAgent para la monitorización a nivel de kernel [ 83 ].
  • Microsoft adaptó eBPF y XDP a Windows [ 84 ] [ 85 ] [ 86 ]
  • Seznam utiliza eBPF a través de Cilium para el balanceo de carga de capa 4 [ 87 ].
  • DigitalOcean utiliza eBPF y XDP para limitar la velocidad de acceso a los servicios internos en su red virtual [ 88 ].
  • CapitalOne utiliza eBPF para la red de pods de Kubernetes [ 89 ]
  • Bell Canada utiliza eBPF para modernizar las redes de telecomunicaciones con SRv6 [ 90 ]
  • Elastic_NV utiliza eBPF para el perfilado de código como parte de su oferta de observabilidad [ 91 ].
  • Apple utiliza eBPF para la seguridad de los pods de Kubernetes [ 92 ]
  • Sky utiliza eBPF para la red de pods de Kubernetes [ 93 ]
  • Walmart utiliza eBPF para el equilibrio de carga de capa 4 [ 94 ] [ 95 ]
  • Huawei utiliza eBPF a través de su sistema de arranque seguro DIGLIM [ 96 ].
  • Ikea utiliza eBPF para la red de pods de Kubernetes [ 97 ]
  • El New York Times utiliza eBPF para la creación de redes [ 98 ]
  • Red Hat utiliza eBPF a gran escala para el equilibrio de carga y el rastreo en su nube privada.
  • Palantir Technologies utiliza eBPF para depurar problemas de red en clústeres de Kubernetes a gran escala [ 99 ].
  • Bloombase utiliza eBPF para la detección y mitigación de amenazas en la capa de almacenamiento en red.

Seguridad

Debido a la facilidad de programación, eBPF se ha utilizado como herramienta para implementar ataques de canal lateral de temporización microarquitectónica como Spectre contra microprocesadores vulnerables . [ 100 ] Si bien eBPF sin privilegios implementa mitigaciones contra Spectre v1, v2 y v4 para x86-64 , [ 101 ] [ 102 ] el uso sin privilegios finalmente ha sido deshabilitado por la comunidad del kernel por defecto para proteger a los usuarios de arquitecturas no compatibles y limitar el impacto de futuras vulnerabilidades de hardware. [ 103 ] En x86-64, Spectre v1 se mitiga a través de una combinación de imposición de límites sin bifurcación (por ejemplo, instrucciones de enmascaramiento) y la verificación de rutas de ejecución especulativas. Spectre v4 se mitiga exclusivamente a través de barreras de especulación (es decir, lfence) y Spectre v2 se mitiga a través de retpoline cuando está disponible [ 104 ] o barreras de especulación. Estas medidas de mitigación impiden que programas eBPF maliciosos filtren información confidencial propiedad del núcleo (por ejemplo, direcciones del núcleo), pero no están diseñadas para evitar que programas eBPF inocuos filtren accidentalmente información confidencial que poseen o procesan (por ejemplo, claves criptográficas almacenadas como números). [ 102 ]

Véase también

Referencias

  1. 1 2 3 "Meta, Google, Isovalent, Microsoft y Netflix lanzan la Fundación eBPF como parte de la Fundación Linux" . Fundación Linux . 12 de agosto de 2021. Consultado el 1 de julio de 2022 .
  2. 1 2 3 4 5 "BPF Internals" . Conferencia USENIX LISA 2021. 1 de junio de 2021. Consultado el 1 de julio de 2022 .
  3. "eBPF y Kubernetes: Pequeños ayudantes para escalar microservicios" . CNCF KubeCon + CloudNativeCon Europe 2020. 19 de agosto de 2020. Consultado el 1 de julio de 2022 .
  4. 1 2 3 "Cómo hacer que eBPF funcione en Windows" . Blog de código abierto de Microsoft . 10 de mayo de 2021. Consultado el 1 de julio de 2022 .
  5. 1 2 "Documentación de eBPF: ¿Qué es eBPF?" . eBPF.io . Consultado el 1 de julio de 2022 .
  6. "eBPF - Repensando el núcleo de Linux" . QCon 2020. Consultado el 1 de julio de 2022 .
  7. "Programas seguros: la base de BPF" . Cumbre eBPF 2021. 8 de noviembre de 2020. Consultado el 1 de julio de 2022 .
  8. "BPF y Spectre: Mitigación de ataques de ejecución transitoria" . Conferencia POPL 2022. 22 de enero de 2022. Consultado el 1 de julio de 2022 .
  9. "eBPF - La silenciosa revolución de la plataforma desde Cloud Native" (PDF) . SIGCOMM 2023, 1er Taller sobre eBPF y Extensiones del Kernel . 10 de septiembre de 2023. Consultado el 5 de octubre de 2023 .
  10. Hedam, Niclas (26 de mayo de 2023). "eBPF - Desde la perspectiva de un programador" (PDF) . doi : 10.13140/RG.2.2.33688.11529/4 .
  11. "Superpoderes de Linux BPF" . Blog de Brendan Gregg . 5 de marzo de 2016. Consultado el 1 de julio de 2022 .
  12. "Linus Torvalds habla sobre su regreso al trabajo en Linux" . Entrevista de zdnet con Linus Torvalds . 23 de octubre de 2018. Consultado el 1 de julio de 2022 .
  13. "BPF clásico vs eBPF" . LWN . Marzo de 2014. Consultado el 6 de enero de 2023 .
  14. "net: filter: Just In Time compiler" . Abril de 2011. Consultado el 1 de julio de 2022 .
  15. "Otro nuevo enfoque para la computacional" . LWN . 1 de enero de 2012. Consultado el 1 de julio de 2022 .
  16. " [ PATCH net-next v4 0/9 ] Actualizaciones de BPF" . Marzo de 2014 . Consultado el 1 de julio de 2022 .
  17. "Núcleo de Linux 3.18, Sección 1.3. Llamada al sistema bpf() para programas de máquina virtual eBFP [ sic ] " . kernelnewbies.org . 7 de diciembre de 2014. Consultado el 6 de septiembre de 2019 .
  18. "¡Feliz cumpleaños BPF!" Septiembre de 2021. Consultado el 1 de julio de 2022 .
  19. " [ PATCH v5 tip 3/7 ] rastreo: permitir que los programas BPF llamen a bpf_ktime_get_ns()" . Marzo de 2015 . Consultado el 1 de julio de 2022 .
  20. " [ RFC PATCH net-next 0/7 ] Soporte eBPF para cls_bpf" . Marzo de 2015 . Consultado el 1 de julio de 2022 .
  21. " [ PATCH net-next v2 ] net, sched: add clsact qdisc" . Enero de 2016 . Consultado el 1 de julio de 2022 .
  22. 1 2 "Redes basadas en eBPF, observabilidad, seguridad" . cilium.io . Enero de 2016. Consultado el 1 de julio de 2022 .
  23. "Notas de la versión LLVM 3.7" . releases.llvm.org . Agosto de 2015. Consultado el 1 de julio de 2022 .
  24. "bcc: Domando los superpoderes de rastreo de Linux 4.3+" . brendangregg.com . Septiembre de 2015. Consultado el 1 de julio de 2022 .
  25. " [ PATCH v10 00/12 ] Agregar gancho bpf del controlador para el descarte y reenvío temprano de paquetes" . Julio de 2016. Consultado el 1 de julio de 2022 .
  26. "eCHO episodio 9: XDP y balanceo de carga" . youtube.com . Junio ​​de 2021. Consultado el 1 de julio de 2022 .
  27. Høiland-Jørgensen, Toke; Brouer, Jesper Dangaard; Borkmann, Daniel; Fastabend, John; Herbert, Tom; Ahern, David; Miller, David (diciembre de 2018). «La ruta de datos eXpress: procesamiento rápido y programable de paquetes en el núcleo del sistema operativo». Actas de la 14.ª Conferencia Internacional sobre Experimentos y Tecnologías de Redes Emergentes . págs. 54–66 . doi : 10.1145/3281411.3281443 . ISBN  9781450360807. S2CID 53779310 . 
  28. "Cilium - Redes de contenedores IPv6 rápidas con BPF y XDP" . slideshare.net . Agosto de 2016. Consultado el 1 de julio de 2022 .
  29. 1 2 "El nuevo GKE Dataplane V2 aumenta la seguridad y la visibilidad para los contenedores" . cloud.google.com . Mayo de 2021. Consultado el 16 de agosto de 2022 .
  30. " [ PATCH net-next reenvío 00/13 ] reconfiguración de anillo y soporte XDP" . Noviembre de 2016 . Consultado el 1 de julio de 2022 .
  31. 1 2 "XDP 1,5 años en producción. Evolución y lecciones aprendidas" . lpc.events . Noviembre de 2018. Consultado el 16 de agosto de 2022 .
  32. "pull-request: bpf 2017-11-23" . Noviembre de 2017. Consultado el 1 de julio de 2022 .
  33. " [ PATCH net-next 0/2 ] tools: add bpftool" . Septiembre de 2017 . Consultado el 1 de julio de 2022 .
  34. " [ RFC PATCH 00/24 ] Introduciendo la compatibilidad con AF_XDP" . Enero de 2018. Consultado el 1 de julio de 2022 .
  35. «Controlador del modo de encuesta AF_XDP» . doc.dpdk.org . Agosto de 2022 . Consultado el 16 de agosto de 2022 .
  36. "BPF llega a los firewalls" . lwn.net . Febrero de 2018. Consultado el 1 de julio de 2022 .
  37. "¿Por qué la comunidad del kernel está reemplazando iptables con BPF?" . cilium.io . Abril de 2018 . Consultado el 1 de julio de 2022 .
  38. "bpftrace (DTrace 2.0) para Linux 2018" . brendangregg.com . Octubre de 2018. Consultado el 16 de agosto de 2022 .
  39. Borkmann, Daniel; Fastabend, John (14 de noviembre de 2018). "Combinación de kTLS y BPF para introspección y aplicación de políticas" (PDF) . vger.kernel.org . Vancouver: Linux Plumbers Conference . Consultado el 31 de agosto de 2025 .
  40. "Deduplicación BTF y BTF del kernel de Linux" . nakryiko.com . Noviembre de 2018. Consultado el 1 de julio de 2022 .
  41. "BPF Performance Tools (libro)" . brendangregg.com . Diciembre de 2019. Consultado el 16 de agosto de 2022 .
  42. " [ PATCH bpf-next v9 0/8 ] Política MAC y de auditoría mediante eBPF (KRSI)" . Marzo de 2020 . Consultado el 16 de agosto de 2022 .
  43. "BPF en GCC" . lwn.net . Septiembre de 2020. Consultado el 16 de agosto de 2022 .
  44. "bpf.h - include/uapi/linux/bpf.h - Código fuente de Linux v5.15.86 - Bootlin" . elixir.bootlin.com . Consultado el 1 de agosto de 2024 .
  45. 1 2 3 4 5 Rice, Liz (2023). Aprendiendo eBPF: programación del kernel de Linux para una mayor observabilidad, redes y seguridad (Primera ed.). Sebastopol, CA: O'Reilly Media. ISBN  978-1-0981-3512-6OCLC 1353981026 
  46. 1 2 3 "Arquitectura BPF — Documentación de Cilium 1.16.0" . docs.cilium.io . Consultado el 1 de agosto de 2024 .
  47. 1 2 "Llamadas de cola - Documentación de eBPF" . ebpf-docs.dylanreimerink.nl . Consultado el 4 de agosto de 2024 .
  48. Shachnai, Matan; Vishwanathan, Harishankar; Narayana, Srinivas; Nagarakatte, Santosh. "Corrección de operadores abstractos latentes no válidos en el verificador eBPF del kernel de Linux" (PDF) . Análisis estático . Springer Nature Suiza. págs. 386–406 . doi : 10.1007/978-3-031-74776-2_15 . ISBN  978-3-031-74776-2Consultado el 2 de febrero de 2025 .
  49. "BPF CO-RE - Documentación de eBPF" . ebpf-docs.dylanreimerink.nl . Consultado el 7 de agosto de 2024 .
  50. Brendan Gregg (diciembre de 2019). Herramientas de rendimiento BPF . Addison-Wesley. ISBN 978-0136554820.
  51. "Segundo día de la cumbre eBPF" . cilium.io . Octubre de 2020. Consultado el 1 de julio de 2022 .
  52. 1 2 "¿Cómo se llama la abeja?" . ebpf.io . Consultado el 1 de julio de 2022 .
  53. "eBPF: Un pequeño paso" . Blog de Brendan Gregg . Mayo de 2015. Consultado el 1 de julio de 2022 .
  54. "Estatutos de la Fundación eBPF" . ebpf.foundation . Junio ​​de 2021. Consultado el 16 de agosto de 2022 .
  55. "Gobernanza de la Fundación eBPF" . ebpf.foundation . Agosto de 2022. Consultado el 16 de agosto de 2022 .
  56. "Katran, un balanceador de carga de red escalable de código abierto" , publicado en fb.com . Mayo de 2018. Consultado el 16 de agosto de 2022 .
  57. "BPF en Facebook" . youtube.com . Diciembre de 2019. Consultado el 16 de agosto de 2022 .
  58. "De XDP a socket" . lpc.events . Septiembre de 2021. Consultado el 16 de agosto de 2022 .
  59. "eCHO episodio 29: BPF LSM con KP Singh" . youtube.com . Noviembre de 2021. Consultado el 16 de agosto de 2022 .
  60. "Auditoría de seguridad BPF en Google - Brendan Jackman/KP Singh" . youtube.com . Noviembre de 2021. Consultado el 16 de agosto de 2022 .
  61. "Reemplazando HTB con EDT y BPF" . netdevconf.info . Julio de 2020. Consultado el 16 de agosto de 2022 .
  62. "Arquitectura de Cloudflare y cómo BPF se come el mundo" . blog.cloudflare.com . Mayo de 2019. Consultado el 16 de agosto de 2022 .
  63. "¡Está lleno de gente aquí!" . blog.cloudflare.com . Octubre de 2019 . Consultado el 16 de agosto de 2022 .
  64. "eBPF listo para producción, o cómo solucionamos la API de sockets BSD" . blog.cloudflare.com . Febrero de 2022. Consultado el 16 de agosto de 2022 .
  65. "Corrección en tiempo real de vulnerabilidades de seguridad en el kernel de Linux con el módulo de seguridad eBPF para Linux" . blog.cloudflare.com . Junio ​​de 2022. Consultado el 16 de agosto de 2022 .
  66. "Unimog - Balanceador de carga perimetral de Cloudflare" . blog.cloudflare.com . Septiembre de 2020. Consultado el 16 de agosto de 2022 .
  67. "Cómo Netflix utiliza los registros de flujo eBPF a gran escala para obtener información sobre la red" . netflixtechblog.com . Junio ​​de 2021. Consultado el 16 de agosto de 2022 .
  68. "Ampliando Vector con eBPF para inspeccionar el rendimiento del host y del contenedor" . netflixtechblog.com . Febrero de 2019. Consultado el 16 de agosto de 2022 .
  69. "Infraestructura de tráfico de Dropbox: Red perimetral" . dropbox.tech . Octubre de 2018. Consultado el 16 de agosto de 2022 .
  70. "Monitoreo de tráfico eBPF" . source.android.com . Agosto de 2022. Consultado el 16 de agosto de 2022 .
  71. "Extendiendo el Kernel con eBPF" . source.android.com . Agosto de 2022. Consultado el 16 de agosto de 2022 .
  72. " [ PATCH v5 1/3 ] selftests: bpf: agregar prueba para bpf_skb_change_proto" . Abril de 2022 . Consultado el 16 de agosto de 2022 .
  73. "BPF para Android: Cómo aprovechamos BPF para nuestras soluciones de red - Madhan Raj Kanagarathinam" . www.youtube.com . Febrero de 2024. Consultado el 19 de febrero de 2022 .
  74. Balanceo de carga de software L4 para servicios de Kubernetes en Yahoo! – Karthikeyan Thangaraj, Verizon Media , 19 de agosto de 2021 , consultado el 3 de febrero de 2024.
  75. "Skyfall: agente eBPF para la observabilidad de la infraestructura" . www.linkedin.com . Consultado el 3 de febrero de 2024 .
  76. "¿Cómo crea Alibaba Cloud redes de pods nativas de la nube de alto rendimiento en entornos de producción?" . alibabacloud.com . Septiembre de 2020 . Consultado el 16 de agosto de 2022 .
  77. "Datadog en eBPF" . datadogon.datadoghq.com . Febrero de 2021. Consultado el 16 de agosto de 2022 .
  78. "Supervisión de seguridad en tiempo de ejecución con eBPF" (PDF) . sstic.org . Febrero de 2021. Consultado el 16 de agosto de 2022 .
  79. ^ "Nuestro viaje eBPF en Datadog - Laurent Bernaille y Tabitha Sable, Datadog" . youtube.com . Noviembre 2020 . Consultado el 16 de agosto de 2022 .
  80. "Historia de usuario: cómo Trip.com utiliza Cilium" . cilium.io . Febrero de 2020. Consultado el 16 de agosto de 2022 .
  81. "Trip.com: Entrando en la era de las redes nativas en la nube con Cilium+BGP" . arthurchiao.art . Noviembre de 2020. Consultado el 16 de agosto de 2022 .
  82. Conferencia magistral: Detección de intrusiones de código abierto para contenedores en Shopify - Shane Lawrence y Kris Nóva , 4 de septiembre de 2020 , consultado el 9 de febrero de 2024.
  83. Rogers, Patrick (15 de agosto de 2023). "BPFAgent: eBPF para monitoreo en DoorDash - Blog de ingeniería de DoorDash" . Blog de ingeniería de DoorDash . Recuperado el 9 de febrero de 2024 .
  84. "Cómo hacer que eBPF funcione en Windows" . cloudblogs.microsoft.com . Mayo de 2021. Consultado el 16 de agosto de 2022 .
  85. "Cómo hacer que los programas eBPF basados ​​en Linux se ejecuten con eBPF para Windows" . cloudblogs.microsoft.com . Febrero de 2022. Consultado el 16 de agosto de 2022 .
  86. "Avances en la implementación de eBPF en Windows" . cloudblogs.microsoft.com . Noviembre de 2019. Consultado el 16 de agosto de 2022 .
  87. "Cilium Standalone Layer 4 Load Balancer XDP" . cilium.io . Julio de 2022. Consultado el 16 de agosto de 2022 .
  88. Limitación de la velocidad de acceso a servicios internos en una red virtual – Nick Bouliane, DigitalOcean , 19 de agosto de 2021 , consultado el 4 de febrero de 2024.
  89. "Construyendo una plataforma PaaS segura y mantenible - Bradley Whitfield, Capital One" . youtube.com . Noviembre de 2020. Consultado el 16 de agosto de 2022 .
  90. Por qué eBPF está cambiando el espacio de las redes de telecomunicaciones – Daniel Bernier, Bell Canada , 31 de agosto de 2021 , consultado el 9 de febrero de 2024
  91. Perfilado Universal Elástico , consultado el 26 de febrero de 2024
  92. "Piensa en eBPF para la monitorización de la seguridad del kernel: Falco en Apple - Eric Sage y Melissa Kilby, Apple" . youtube.com . Octubre de 2021. Consultado el 16 de agosto de 2022 .
  93. "eBPF y Cilium en Sky – Sebastian Duff, Anthony Comtois, Joseph [ sic ] Samuel, Sky" . youtube.com . Agosto de 2021. Consultado el 16 de agosto de 2022 .
  94. "Ejecución y orquestación de múltiples programas XDP y TC – Brian Merrell, Walmart" . youtube.com . Agosto de 2021. Consultado el 16 de agosto de 2022 .
  95. "Balanceo de carga de alto rendimiento en Walmart – Kanthi Pavuluri y Karan Dalal, Walmart" . youtube.com . Agosto de 2021. Consultado el 16 de agosto de 2022 .
  96. "DIGLIM eBPF: arranque seguro a nivel de aplicación con cambios mínimos en las distribuciones - Roberto Sassu" . youtube.com . Agosto de 2022. Consultado el 16 de agosto de 2022 .
  97. "Nube privada de IKEA, redes basadas en eBPF, equilibrio de carga y observabilidad con... Karsten Nielsen" . youtube.com . Mayo de 2022. Consultado el 16 de agosto de 2022 .
  98. Mesa redonda: ¿Hay realmente un byte detrás de todo este revuelo? ¡eBPF en producción!, 28 de octubre de 2022 , consultado el 9 de febrero de 2024.
  99. Uso del rastreo en el espacio de usuario para resolver problemas de DNS – Andrius Grabauskas, Palantir , 19 de agosto de 2021 , consultado el 9 de febrero de 2024
  100. "Lectura de memoria privilegiada con un canal lateral" . googleprojectzero.blogspot.com . 3 de enero de 2018. Consultado el 16 de agosto de 2022 .
  101. "BPF y Spectre: Mitigación de ataques de ejecución transitoria" . popl22.sigplan.org . Consultado el 16 de agosto de 2022 .
  102. 1 2 Gerhorst, Luis; Herzog, Henriette; Wägemann, Peter; Ott, Maximilian; Kapitza, Rüdiger; Hönig, Timo. "VeriFence: Defensas ligeras y precisas contra Spectre para extensiones del kernel de Linux no confiables" . Actas del 27.º Simposio Internacional sobre Investigación en Ataques, Intrusiones y Defensas (RAID '24) . Association for Computing Machinery. págs. 644–659 . arXiv : 2405.00078 . doi : 10.1145/3678890.3678907 . Recuperado el 2 de febrero de 2025 . 
  103. "bpf: Deshabilitar bpf sin privilegios por defecto" . kernel.org . Consultado el 16 de agosto de 2022 .
  104. "emit_indirect_jump() en arch/x86/net/bpf_jit_comp.c de Linux v6.13" . kernel.org . Consultado el 2 de febrero de 2025 .

Lecturas adicionales

  • Gregg, Brendan (diciembre de 2019). Herramientas de rendimiento BPF . Addison-Wesley. ISBN 978-0136554820.
  • David Calavera, Lorenzo Fontana (diciembre de 2019). Observabilidad de Linux con BPF . O'Reilly Media, Incorporated. ISBN 978-1492050209.
  • Gregg, Brendan (diciembre de 2020). Rendimiento de sistemas, segunda edición . Addison-Wesley. ISBN 978-0136820154.
  • Rice, Liz (abril de 2022). ¿ Qué es eBPF? ISBN 978-1492097259.
  • Rice, Liz (abril de 2023). Aprendiendo eBPF: Programando el kernel de Linux para mejorar la observabilidad, la conectividad de red y la seguridad . O'Reilly Media. ISBN 978-1098135126.
  • Thaler, Dave, ed. (octubre de 2024). Arquitectura del conjunto de instrucciones BPF (ISA) . IETF . doi : 10.17487/RFC9669 . RFC 9669. Recuperado el 5 de enero de 2024 .
  • eBPF.io - Introducción, tutoriales y recursos de la comunidad eBPF
  • eBPF.foundation - Sitio web de la Fundación eBPF de la Linux Foundation
  • Tutorial para desarrolladores de eBPF: Aprenda eBPF paso a paso con ejemplos.
  • Documental sobre eBPF: Documental sobre los inicios de eBPF.