{"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\/de\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","title":{"rendered":"Das Projekt bpftime entwickelt eine eBPF-Implementierung, die im Benutzermodus arbeitet","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Das Projekt bpftime wurde vorgestellt, das ein Runtime und eine virtuelle Maschine zur Ausf\u00fchrung von eBPF-Handlern im Benutzerspeicher entwickelt. Bpftime erm\u00f6glicht die vollst\u00e4ndige Ausf\u00fchrung von eBPF-Programmen zur Trace- und Interventionsbehandlung in Benutzerspeicher und nutzt Funktionen wie uprobe und Software-Intercepts von Systemaufrufen. Es wird hervorgehoben, dass bpftime durch den Ausschluss unn\u00f6tiger Kontextwechsel eine zehnfache Reduzierung der Overheadkosten im Vergleich zur Verwendung der uprobe- und uretprobe-Funktionalit\u00e4t des Linux-Kernels erm\u00f6glicht. Dar\u00fcber hinaus vereinfacht bpftime die Debugging erheblich, kann potenziell auf Systemen ohne Linux-Kernel verwendet werden und erfordert keine erweiterten Berechtigungen, die zum Laden von eBPF-Anwendungen in den Kernel erforderlich sind. Der Code des Projekts ist in C\/C++ geschrieben und wird unter der MIT-Lizenz verbreitet.      <\/p>\n<p>Das Abfangen von Systemaufrufen und die Integration von uprobe-Pr\u00fcfungen werden durch die Technik der Umprogrammierung des ausf\u00fchrbaren Codes (binary rewriting) umgesetzt, bei der Aufrufe von Systemaufrufen, Einstiegspunkten und lokalen Funktionen durch den \u00dcbergang zu Debugging-Handlern durch Modifikation des Maschinencodes der ausf\u00fchrenden Anwendung ersetzt werden, was erheblich effizienter ist als das Abfangen mit uprobe auf der Ebene des Linux-Kernels.            <\/p>\n<p>Es werden Operationen zur Ersetzung oder Modifizierung von Funktionen, das Anbringen von Hooks und Filtern, Umleitungen, Blockierungen oder Ersetzungen von Parametern von Systemaufrufen, das Abfangen von Ein- und Ausstiegspunkten von Funktionen sowie die Substitution von Handlern an beliebigen Offsets im Code unterst\u00fctzt. Bpftime kann an jeden arbeitenden Prozess im System angeh\u00e4ngt werden, ohne dass diese neu gestartet oder neu kompiliert werden m\u00fcssen. Die Substitution von bpftime in Prozessen kann f\u00fcr laufende Prozesse \u00fcber ptrace und f\u00fcr ladbare Prozesse \u00fcber LD_PRELOAD erfolgen.    <\/p>\n<p>Im Rahmen von bpftime wird ein Runtime entwickelt, das das Anh\u00e4ngen von eBPF-Programmen an die Trace-Punkte von Systemaufrufen und uprobe erm\u00f6glicht. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/vps\/abuzoustojchivye-vps\/\"   title=\"eine virtuelle Maschine\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4195\">eine virtuelle Maschine<\/a> eBPF mit JIT f\u00fcr die isolierte Ausf\u00fchrung von eBPF-Programmen auf der Ebene des Benutzerprozesses (zus\u00e4tzlich wird AOT-Compilation unterst\u00fctzt); ein Hintergrundprozess f\u00fcr die Interaktion mit dem Kernel und die Gew\u00e4hrleistung der Kompatibilit\u00e4t mit dem uprobe-Subsystem des Kernels (bpftime unterst\u00fctzt den Modus f\u00fcr das Laden von eBPF in den Adressraum des Benutzers aus dem Kernel, um eine Zusammenarbeit mit eBPF-Programmen im Kernel zu erm\u00f6glichen, die beispielsweise f\u00fcr die Verarbeitung von kprobe oder die Anwendung von Netzwerkfiltern verwendet werden).     <\/p>\n<p>Die eBPF-VM ist als dynamische Bibliothek implementiert und bietet eine API, die der von ubpf \u00e4hnelt, was die Integration von eBPF-Funktionalit\u00e4ten in andere Projekte erm\u00f6glicht. F\u00fcr die aggregierte Datensammlung aus mehreren Prozessen wird die Erstellung gemeinsamer eBPF-Maps unterst\u00fctzt, die im Shared Memory abgelegt werden. Zusammen mit bpftime k\u00f6nnen g\u00e4ngige eBPF-Handler verwendet werden, die f\u00fcr den Einsatz im Kernel geschrieben wurden, und f\u00fcr das Kompilieren k\u00f6nnen Standardwerkzeuge auf Basis von clang und libbpf angewendet werden.     <\/p>\n<p>Mit bpftime im Benutzerraum k\u00f6nnen solche Tracing-Systeme wie BCC, bpftrace und Deepflow ausgef\u00fchrt werden. Beispielsweise wurde die Anwendung des Skripts sslsniff aus dem BCC-Framework demonstriert, um verschl\u00fcsselten Traffic in nginx zu analysieren und zu speichern. In durchgef\u00fchrten Tests sank die Leistung von nginx bei der Ausf\u00fchrung von sslsniff im Kernel-Modus um 58 % und bei der Auslagerung des Handlers in den Benutzerraum um 12,3 %.         <\/p>\n<p>Architektur des Prozess-Traceings unter Verwendung des originalen eBPF im Kernel:  <center><img decoding=\"async\" alt=\"Das Projekt bpftime entwickelt eine eBPF-Implementierung, die im Benutzermodus arbeitet\" src=\"\/wp-content\/uploads\/2024\/01\/45b892574510e3f7247e3c007f4328c4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Architektur des Traceings im Benutzerraum unter Verwendung von bpftime:    <center><img decoding=\"async\" alt=\"Das Projekt bpftime entwickelt eine eBPF-Implementierung, die im Benutzermodus arbeitet\" src=\"\/wp-content\/uploads\/2024\/01\/a2cca92994563e0381469d309bb9666a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Hybrider Modus, in dem bpftime zusammen mit eBPF im Kernel arbeitet, beispielsweise zur Einrichtung von Netzwerkfiltern oder zur Auslagerung bestimmter Handler in den Benutzerraum:       <center><img decoding=\"async\" alt=\"Das Projekt bpftime entwickelt eine eBPF-Implementierung, die im Benutzermodus arbeitet\" src=\"\/wp-content\/uploads\/2024\/01\/5a341be11e53820e32236a8d6f2d622a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Zuk\u00fcnftige Pl\u00e4ne umfassen: die M\u00f6glichkeit der Fehlerinjektion (Fault Injection); Hot Patching zur \u00c4nderung der Logik oder zur Fehlerbehebung in Bin\u00e4rversionen; die Erstellung eines Moduls f\u00fcr Nginx, das die Entwicklung von Erweiterungen mithilfe von eBPF-Programmen erm\u00f6glicht (z. B. f\u00fcr dynamische Routenauswahl, Caching, Anwendung von Sicherheitsrichtlinien und Lastverteilung); Erweiterung der M\u00f6glichkeiten des FUSE-Subsystems (z. B. die Schaffung von eBPF-Programmen zur Erweiterung von Dateisystemen f\u00fcr Caching oder Zugriffsmanagement).<br \/>\n<br \/>Quelle: <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.1.1 - 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\/de\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Das Projekt bpftime entwickelt die eBPF-Implementierung weiter, die im Benutzermodus arbeitet | ProHoster","description":"Das Projekt bpftime wurde vorgestellt, das die Runtime und die virtuelle Maschine zur Ausf\u00fchrung von eBPF-Handlern im Benutzermodus weiterentwickelt.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/113049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=113049"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/113049\/revisions"}],"predecessor-version":[{"id":164070,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/113049\/revisions\/164070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/113050"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=113049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=113049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=113049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}