{"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\/fr\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","title":{"rendered":"Le projet bpftime d\u00e9veloppe une impl\u00e9mentation eBPF fonctionnant en espace utilisateur.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Le projet bpftime a \u00e9t\u00e9 pr\u00e9sent\u00e9, d\u00e9veloppant un runtime et une machine virtuelle pour ex\u00e9cuter des gestionnaires eBPF dans l'espace utilisateur. Bpftime permet d'ex\u00e9cuter enti\u00e8rement des programmes eBPF de tra\u00e7age et d'intervention sur les processus dans l'espace utilisateur, utilisant des fonctionnalit\u00e9s telles que uprobe et l'interception des appels syst\u00e8me. Il est not\u00e9 qu'en \u00e9liminant les commutations de contexte superflues, bpftime permet d'atteindre une r\u00e9duction des frais g\u00e9n\u00e9raux par un facteur de dix par rapport \u00e0 l'utilisation de la fonctionnalit\u00e9 uprobe et uretprobe fournie par le noyau Linux. De plus, bpftime simplifie consid\u00e9rablement le d\u00e9bogage, peut potentiellement \u00eatre appliqu\u00e9 sur des syst\u00e8mes sans noyau Linux et ne n\u00e9cessite pas de privil\u00e8ges avanc\u00e9s n\u00e9cessaires pour charger une application eBPF dans le noyau. Le code du projet est \u00e9crit en C\/C++ et est distribu\u00e9 sous la licence MIT.      <\/p>\n<p>L'interception des appels syst\u00e8me et l'int\u00e9gration des v\u00e9rifications uprobe sont r\u00e9alis\u00e9es en utilisant la technique de r\u00e9\u00e9criture de code ex\u00e9cutable (binary rewriting), o\u00f9 les appels aux appels syst\u00e8me, aux points d'entr\u00e9e et aux fonctions locales sont remplac\u00e9s par un saut vers des gestionnaires de d\u00e9bogage par la modification du code machine de l'application en cours d'ex\u00e9cution, ce qui est consid\u00e9rablement plus efficace que l'organisation de l'interception utilisant uprobe au niveau du noyau Linux.            <\/p>\n<p>Les op\u00e9rations de remplacement ou de modification de fonctions, d'attachement de gestionnaires (hooks) et de filtres, de redirection, de blocage ou de remplacement des param\u00e8tres des appels syst\u00e8me, ainsi que l'interception des points d'entr\u00e9e et de sortie des fonctions, ainsi que le remplacement du gestionnaire \u00e0 un d\u00e9calage arbitraire dans le code sont pris en charge. Bpftime peut \u00eatre attach\u00e9 \u00e0 tout processus en cours d'ex\u00e9cution dans le syst\u00e8me sans n\u00e9cessiter leur red\u00e9marrage ou recompilation. L'injection de bpftime dans les processus peut se faire pour les processus actifs via ptrace, et pour ceux \u00e0 charger via LD_PRELOAD.    <\/p>\n<p>Dans le cadre de bpftime, un runtime est en d\u00e9veloppement, permettant d'attacher des programmes eBPF aux points de tra\u00e7age des appels syst\u00e8me et de uprobe; <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/vps\/abuzoustojchivye-vps\/\"   title=\"machine virtuelle\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4195\">machine virtuelle<\/a> eBPF avec JIT pour l'ex\u00e9cution isol\u00e9e des programmes eBPF au niveau du processus utilisateur (support compl\u00e9mentaire de la compilation AOT) ; un processus en arri\u00e8re-plan pour interagir avec le noyau et organiser la compatibilit\u00e9 avec le sous-syst\u00e8me uprobe du noyau (bpftime prend en charge le mode de chargement eBPF dans l'espace utilisateur depuis le noyau pour collaborer avec les programmes eBPF dans le noyau, utilis\u00e9s par exemple pour traiter les kprobes ou pour appliquer des filtres r\u00e9seau).     <\/p>\n<p>La machine virtuelle eBPF est con\u00e7ue sous forme de biblioth\u00e8que dynamique et fournit une API similaire \u00e0 ubpf, permettant son int\u00e9gration dans d'autres projets. Pour l'agr\u00e9gation des donn\u00e9es de plusieurs processus, la cr\u00e9ation de cartes eBPF communes, stock\u00e9es en m\u00e9moire partag\u00e9e, est prise en charge. Avec bpftime, il est possible d'utiliser des gestionnaires eBPF types, \u00e9crits pour une utilisation dans le noyau, et les outils standards bas\u00e9s sur clang et libbpf peuvent \u00eatre utilis\u00e9s pour la compilation.     <\/p>\n<p>Avec bpftime dans l'espace utilisateur, des syst\u00e8mes de tra\u00e7age tels que BCC, bpftrace et Deepflow peuvent \u00eatre ex\u00e9cut\u00e9s. Par exemple, l'utilisation du script sslsniff du framework BCC pour analyser et sauvegarder le trafic chiffr\u00e9 dans nginx a \u00e9t\u00e9 d\u00e9montr\u00e9e. Les tests ont montr\u00e9 que la performance de nginx lors de l'ex\u00e9cution de sslsniff c\u00f4t\u00e9 noyau diminue de 58 %, tandis que l'ex\u00e9cution du gestionnaire dans l'espace utilisateur r\u00e9duit la performance de 12,3 %.         <\/p>\n<p>Architecture de tra\u00e7age des processus utilisant l'eBPF d'origine dans le noyau :  <center><img decoding=\"async\" alt=\"Le projet bpftime d\u00e9veloppe une impl\u00e9mentation eBPF fonctionnant en espace utilisateur.\" src=\"\/wp-content\/uploads\/2024\/01\/45b892574510e3f7247e3c007f4328c4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Architecture de tra\u00e7age dans l'espace utilisateur utilisant bpftime :    <center><img decoding=\"async\" alt=\"Le projet bpftime d\u00e9veloppe une impl\u00e9mentation eBPF fonctionnant en espace utilisateur.\" src=\"\/wp-content\/uploads\/2024\/01\/a2cca92994563e0381469d309bb9666a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Mode hybride dans lequel bpftime fonctionne en conjonction avec l'eBPF dans le noyau, par exemple pour l'\u00e9tablissement de filtres r\u00e9seau ou le d\u00e9placement de gestionnaires sp\u00e9cifiques dans l'espace utilisateur :       <center><img decoding=\"async\" alt=\"Le projet bpftime d\u00e9veloppe une impl\u00e9mentation eBPF fonctionnant en espace utilisateur.\" src=\"\/wp-content\/uploads\/2024\/01\/5a341be11e53820e32236a8d6f2d622a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Parmi les projets futurs, il est not\u00e9 : la possibilit\u00e9 d'injection d'exceptions (Fault Injection) ; le patching \u00e0 chaud (Hot Patching) pour modifier la logique de fonctionnement ou corriger les erreurs dans les builds binaires ; la cr\u00e9ation d'un module pour Nginx, permettant de d\u00e9velopper des extensions \u00e0 l'aide de programmes eBPF (par exemple, pour un choix de routes dynamique, la mise en cache, l'application de politiques de s\u00e9curit\u00e9 et l'\u00e9quilibrage de charge) ; l'extension des fonctionnalit\u00e9s du sous-syst\u00e8me FUSE (par exemple, la cr\u00e9ation d'extensions au syst\u00e8me de fichiers sous forme de programmes eBPF pour la mise en cache ou la gestion des acc\u00e8s).<br \/>\n<br \/>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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\udd47Le projet bpftime d\u00e9veloppe une impl\u00e9mentation eBPF fonctionnant dans l'espace utilisateur | ProHoster","description":"Le projet bpftime a \u00e9t\u00e9 pr\u00e9sent\u00e9, d\u00e9veloppant un runtime et une machine virtuelle pour l'ex\u00e9cution des gestionnaires eBPF dans l'espace utilisateur.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/113049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=113049"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/113049\/revisions"}],"predecessor-version":[{"id":164070,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/113049\/revisions\/164070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/113050"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=113049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=113049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=113049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}