{"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\/ro\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","title":{"rendered":"Proiectul bpftime dezvolt\u0103 o implementare eBPF, care func\u021bioneaz\u0103 \u00een spa\u021biul utilizatorului","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A fost prezentat proiectul bpftime, care dezvolt\u0103 un runtime \u0219i o ma\u0219in\u0103 virtual\u0103 pentru executarea handler-elor eBPF \u00een spa\u021biul utilizatorului. Bpftime permite executarea complet\u0103 a programelor eBPF de trasare \u0219i interven\u021bie \u00een procesele din spa\u021biul utilizatorului, utiliz\u00e2nd func\u021bionalit\u0103\u021bi precum uprobe \u0219i interceptarea programatic\u0103 a apelurilor de sistem. Se observ\u0103 c\u0103, prin eliminarea comut\u0103rilor de context inutile, bpftime permite ob\u021binerea unei reduceri de zece ori a cheltuielilor indirecte \u00een compara\u021bie cu utilizarea func\u021bionalit\u0103\u021bii uprobe \u0219i uretprobe furnizate de kernel-ul Linux. \u00cen plus, bpftime simplific\u0103 semnificativ depanarea, poate fi aplicat pe sisteme f\u0103r\u0103 kernel Linux \u0219i nu necesit\u0103 privilegii extinse necesare pentru \u00eenc\u0103rcarea aplica\u021biei eBPF \u00een kernel. Codul proiectului este scris \u00een limbajele C\/C++ \u0219i este distribuit sub licen\u021ba MIT.      <\/p>\n<p>Interceptarea apelurilor de sistem \u0219i integrarea verific\u0103rilor uprobe sunt realizate folosind tehnica rescrierii codului executabil (binary rewriting), prin care apelurile la sistemele de apel, punctele de intrare \u0219i func\u021biile locale sunt \u00eenlocuite cu salturi c\u0103tre handler-e de depanare prin modificarea codului ma\u0219inii aplica\u021biei executate, ceea ce este mult mai eficient dec\u00e2t organizarea intercept\u0103rii utiliz\u00e2nd uprobe la nivelul kernel-ului Linux.            <\/p>\n<p>Sunt acceptate opera\u021bii de \u00eenlocuire sau modificare a func\u021biilor, ata\u0219area handler-elor (hook-urilor) \u0219i a filtrilor, redirec\u021bionarea, blocarea sau \u00eenlocuirea parametrilor apelurilor de sistem, interceptarea punctelor de intrare \u0219i de ie\u0219ire din func\u021bii, precum \u0219i \u00eenlocuirea handler-ului la o deplasare arbitrar\u0103 \u00een cod. Bpftime poate fi ata\u0219at la orice proces \u00een execu\u021bie \u00een sistem f\u0103r\u0103 a fi necesar\u0103 repornirea sau recompilarea acestora. \u00cenlocuirea bpftime \u00een procese poate fi realizat\u0103 pentru procesele aflate \u00een execu\u021bie prin ptrace, iar pentru cele care sunt \u00eenc\u0103rcate prin LD_PRELOAD.    <\/p>\n<p>\u00cen cadrul bpftime se dezvolt\u0103 un runtime care permite ata\u0219area programelor eBPF la punctele de trasare ale apelurilor de sistem \u0219i uprobe; <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/vps\/abuzoustojchivye-vps\/\"   title=\"ma\u0219in\u0103 virtual\u0103\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"4195\">ma\u0219in\u0103 virtual\u0103<\/a> eBPF cu JIT pentru execu\u021bia separat\u0103 a programelor eBPF la nivelul procesului utilizator (se  suport\u0103 suplimentar compilarea AOT); un proces de fundal pentru interac\u021biunea cu nucleul \u0219i organizarea compatibilit\u0103\u021bii cu subsistemul uprobe al nucleului (bpftime suport\u0103 modul de \u00eenc\u0103rcare a eBPF \u00een spa\u021biul utilizator din nucleu pentru a colabora cu programele eBPF din nucleu, utilizate, de exemplu, pentru procesarea kprobe sau stabilirea filtrelor de re\u021bea).     <\/p>\n<p>Ma\u0219ina virtual\u0103 eBPF este realizat\u0103 sub forma unei biblioteci plug-in \u0219i ofer\u0103 un API similar cu ubpf, ceea ce permite utilizarea ei pentru integrarea func\u021bionalit\u0103\u021bii eBPF \u00een alte proiecte. Pentru agregarea sumar\u0103 a datelor din mai multe procese, se suport\u0103 crearea de h\u0103r\u021bi eBPF comune, plasate \u00een memorie partajat\u0103. \u00cempreun\u0103 cu bpftime, pot fi utilizate manipulatoare standard eBPF, scrise pentru utilizarea \u00een nucleu, iar pentru compilare se pot aplica instrumente standard bazate pe clang \u0219i libbpf.     <\/p>\n<p>Cu bpftime \u00een spa\u021biul utilizator, pot fi executate sisteme de urm\u0103re\u0219te precum BCC, bpftrace \u0219i Deepflow. De exemplu, a fost demonstrat\u0103 utilizarea scriptului sslsniff din cadrul BCC pentru analizarea \u0219i salvarea traficului criptat \u00een nginx. \u00cen testele realizate, performan\u021ba nginx la efectuarea sslsniff \u00een nucleu scade cu 58%, iar atunci c\u00e2nd manipulatoarele sunt mutate \u00een spa\u021biul utilizator cu 12,3%.         <\/p>\n<p>Arhitectura de urm\u0103rire a proceselor utiliz\u00e2nd eBPF original \u00een nucleu:  <center><img decoding=\"async\" alt=\"Proiectul bpftime dezvolt\u0103 o implementare eBPF, care func\u021bioneaz\u0103 \u00een spa\u021biul utilizatorului\" src=\"\/wp-content\/uploads\/2024\/01\/45b892574510e3f7247e3c007f4328c4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Arhitectura de urm\u0103rire \u00een spa\u021biul utilizator utiliz\u00e2nd bpftime:    <center><img decoding=\"async\" alt=\"Proiectul bpftime dezvolt\u0103 o implementare eBPF, care func\u021bioneaz\u0103 \u00een spa\u021biul utilizatorului\" src=\"\/wp-content\/uploads\/2024\/01\/a2cca92994563e0381469d309bb9666a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>    <\/p>\n<p>Modul hibrid, \u00een care bpftime func\u021bioneaz\u0103 \u00eempreun\u0103 cu eBPF \u00een nucleu, de exemplu, pentru stabilirea filtrelor de re\u021bea sau mutarea unor manipulatoare \u00een spa\u021biul utilizator:       <center><img decoding=\"async\" alt=\"Proiectul bpftime dezvolt\u0103 o implementare eBPF, care func\u021bioneaz\u0103 \u00een spa\u021biul utilizatorului\" src=\"\/wp-content\/uploads\/2024\/01\/5a341be11e53820e32236a8d6f2d622a.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<p>Printre planurile de viitor se noteaz\u0103: posibilitatea de a introduce excep\u021bii (Fault Injection); aplicarea de patch-uri la cald (Hot Patching) pentru a modifica logica de func\u021bionare sau a corecta erori \u00een versiunile binare; crearea unui modul pentru Nginx care s\u0103 permit\u0103 crearea de extensii folosind programe eBPF (de exemplu, pentru selectarea dinamic\u0103 a rutei, caching, aplicarea politicilor de securitate \u0219i balansarea \u00eenc\u0103rc\u0103turii); extinderea capacit\u0103\u021bilor subsistemului FUSE (de exemplu, crearea sub form\u0103 de programe eBPF a extensiilor FS pentru caching sau gestionarea accesului).<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=60477\">opennet.ro<\/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.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\/ro\/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.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Proiectul bpftime dezvolt\u0103 implementarea eBPF care func\u021bioneaz\u0103 \u00een spa\u021biul utilizatorului | ProHoster","description":"Proiectul bpftime a fost lansat, dezvolt\u00e2nd runtime-ul \u0219i ma\u0219ina virtual\u0103 pentru a executa handler-e eBPF \u00een spa\u021biul utilizatorului.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/proekt-bpftime-razvivaet-realizacziyu-ebpf-rabotayushhuyu-v-prostranstve-polzovatelya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/113049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=113049"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/113049\/revisions"}],"predecessor-version":[{"id":164070,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/113049\/revisions\/164070"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/113050"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=113049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=113049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=113049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}