{"id":113049,"date":"2024-01-22T17:28:02","date_gmt":"2024-01-22T15:28:04","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya"},"modified":"2024-01-22T17:28:02","modified_gmt":"2024-01-22T15:28:04","slug":"proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","title":{"rendered":"El proyecto bpftime desarrolla la implementaci\u00f3n de eBPF que funciona en espacio de usuario.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Se presenta el proyecto bpftime, que desarrolla un runtime y una m\u00e1quina virtual para ejecutar controladores eBPF en el espacio de usuario. Bpftime permite ejecutar por completo programas eBPF de trazado e interferencia en el funcionamiento de procesos, utilizando capacidades como uprobe y la interceptaci\u00f3n program\u00e1tica de llamadas al sistema. Se se\u00f1ala que, al excluir cambios de contexto innecesarios, bpftime permite lograr una reducci\u00f3n de diez veces en los costos generales en comparaci\u00f3n con el uso de la funcionalidad uprobe y uretprobe que proporciona el n\u00facleo de Linux. Adem\u00e1s, bpftime simplifica significativamente la depuraci\u00f3n, puede aplicarse potencialmente en sistemas sin n\u00facleo de Linux y no requiere privilegios ampliados necesarios para cargar la aplicaci\u00f3n eBPF en el n\u00facleo. El c\u00f3digo del proyecto est\u00e1 escrito en C\/C++ y se distribuye bajo la licencia MIT.      <\/p>\n<p>La interceptaci\u00f3n de llamadas al sistema y la integraci\u00f3n de comprobaciones uprobe se implementa utilizando la t\u00e9cnica de reescritura de c\u00f3digo ejecutable (binary rewriting), en la que las llamadas a las funciones del sistema, puntos de entrada y funciones locales se sustituyen por un salto a controladores de depuraci\u00f3n a trav\u00e9s de la modificaci\u00f3n del c\u00f3digo m\u00e1quina de la aplicaci\u00f3n en ejecuci\u00f3n, lo que es significativamente m\u00e1s eficiente que organizar la interceptaci\u00f3n utilizando uprobe a nivel del n\u00facleo de Linux.            <\/p>\n<p>Se admiten operaciones de reemplazo o modificaci\u00f3n de funciones, adjunto de controladores (hooks) y filtros, redirecci\u00f3n, bloqueo o sustituci\u00f3n de par\u00e1metros de llamadas al sistema, interceptaci\u00f3n de puntos de entrada y salida de funciones, as\u00ed como la sustituci\u00f3n de un controlador en un desplazamiento arbitrario en el c\u00f3digo. Bpftime puede ser adjuntado a cualquier proceso en ejecuci\u00f3n en el sistema sin necesidad de reiniciarlos o recompilarlos. La inserci\u00f3n de bpftime en procesos se puede realizar para procesos en ejecuci\u00f3n a trav\u00e9s de ptrace, y para aquellos que se est\u00e1n cargando a trav\u00e9s de LD_PRELOAD.    <\/p>\n<p>Dentro de bpftime se desarrolla un runtime que permite adjuntar programas eBPF a puntos de trazado de llamadas al sistema y uprobe; <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/es\/vps\/abuzoustojchivye-vps\/\"   title=\"m\u00e1quina virtual\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4195\">m\u00e1quina virtual<\/a> eBPF con JIT para la ejecuci\u00f3n aislada de programas eBPF a nivel de proceso de usuario (tambi\u00e9n se admite la compilaci\u00f3n AOT); un proceso en segundo plano para interactuar con el n\u00facleo y organizar la compatibilidad con el subsistema uprobe del n\u00facleo (bpftime admite el modo de carga de eBPF en el espacio de usuario desde el n\u00facleo para facilitar la colaboraci\u00f3n con programas eBPF en el n\u00facleo, utilizados, por ejemplo, para el procesamiento de kprobe o para establecer filtros de red).     <\/p>\n<p>La m\u00e1quina virtual eBPF est\u00e1 dise\u00f1ada como una biblioteca conectable y proporciona una API similar a ubpf, lo que permite utilizarla para integrar la funcionalidad eBPF en otros proyectos. Para la agregaci\u00f3n total de datos de varios procesos, se admite la creaci\u00f3n de eBPF Maps compartidas que se colocan en memoria compartida. Junto con bpftime, se pueden utilizar controladores eBPF est\u00e1ndar escritos para uso en el n\u00facleo, y se pueden aplicar herramientas est\u00e1ndar basadas en clang y libbpf para la construcci\u00f3n.     <\/p>\n<p>Con bpftime en el espacio de usuario, pueden ejecutarse sistemas de trazado como BCC, bpftrace y Deepflow. Por ejemplo, se ha demostrado la aplicaci\u00f3n del script sslsniff del marco BCC para analizar y guardar el tr\u00e1fico cifrado en nginx. En las pruebas realizadas, el rendimiento de nginx al ejecutar sslsniff en el lado del n\u00facleo disminuye en un 58%, mientras que al mover el controlador al espacio de usuario disminuye en un 12.3%.         <\/p>\n<p>Arquitectura de trazado de procesos utilizando el eBPF original en el n\u00facleo:  <center><img decoding=\"async\" alt=\"El proyecto bpftime desarrolla la implementaci\u00f3n de eBPF que funciona en espacio de usuario.\" src=\"\/wp-content\/uploads\/2024\/01\/45b892574510e3f7247e3c007f4328c4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Arquitectura de trazado en el espacio de usuario utilizando bpftime:    <center><img decoding=\"async\" alt=\"El proyecto bpftime desarrolla la implementaci\u00f3n de eBPF que funciona en espacio de usuario.\" src=\"\/wp-content\/uploads\/2024\/01\/a2cca92994563e0381469d309bb9666a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Modo h\u00edbrido, en el que bpftime trabaja en conjunto con eBPF en el n\u00facleo, por ejemplo, para establecer filtros de red o mover controladores individuales al espacio de usuario:       <center><img decoding=\"async\" alt=\"El proyecto bpftime desarrolla la implementaci\u00f3n de eBPF que funciona en espacio de usuario.\" src=\"\/wp-content\/uploads\/2024\/01\/5a341be11e53820e32236a8d6f2d622a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Entre los planes futuros se destacan: la posibilidad de inyecci\u00f3n de fallos (Fault Injection); parcheado en caliente (Hot Patching) para modificar la l\u00f3gica de operaci\u00f3n o corregir errores en compilaciones binarios; creaci\u00f3n de un m\u00f3dulo para Nginx que permita crear extensiones mediante programas eBPF (por ejemplo, para la selecci\u00f3n din\u00e1mica de rutas, almacenamiento en cach\u00e9, aplicaci\u00f3n de pol\u00edticas de seguridad y balanceo de carga); expansi\u00f3n de las capacidades del subsistema FUSE (por ejemplo, creando extensiones a FS en forma de programas eBPF para almacenamiento en cach\u00e9 o gesti\u00f3n de acceso).<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=60477\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 bpftime, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0439 runtime \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 eBPF \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. Bpftime \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0438 \u0432\u043c\u0435\u0448\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u043a\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u0430\u043a uprobe \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432. \u041e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043b\u0438\u0448\u043d\u0438\u0445 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430 bpftime \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0434\u0435\u0441\u044f\u0442\u0438\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u044f \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u044b\u0445 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":113050,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-113049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 bpftime, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0439 runtime \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 eBPF \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u0435\u043a\u0442 bpftime \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e eBPF, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 bpftime, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0439 runtime \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 eBPF \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-01-22T15:28:04+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-01-22T15:28:04+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47El proyecto bpftime desarrolla la implementaci\u00f3n de eBPF que funciona en espacio de usuario | ProHoster","description":"Se presenta el proyecto bpftime, que desarrolla un runtime y una m\u00e1quina virtual para ejecutar controladores eBPF en espacio de usuario.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u0435\u043a\u0442 bpftime \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e eBPF, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f | ProHoster","og:description":"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0440\u043e\u0435\u043a\u0442 bpftime, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0438\u0439 runtime \u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 eBPF \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.","og:url":"https:\/\/prohoster.info\/es\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2024-01-22T15:28:04+00:00","article:modified_time":"2024-01-22T15:28:04+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/113049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=113049"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/113049\/revisions"}],"predecessor-version":[{"id":164070,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/113049\/revisions\/164070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/113050"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=113049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=113049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=113049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}