Projekti bpftime zhvillon implementimin e eBPF, që funksionon në hapësirën e përdoruesit.

Projekti bpftime është prezantuar, duke zhvilluar një runtime dhe makinë virtuale për ekzekutimin e përpunuesve eBPF në hapësirën e përdoruesit. Bpftime lejon ekzekutimin e programeve eBPF për gjurmimin dhe ndërhyrjen në funksionimin e proceseve krejtësisht në hapësirën e përdoruesit, duke përdorur mundësitë si uprobe dhe kapjen programore të thirrjeve sistemore. Vërehet se, duke përjashtuar kalimet e panevojshme të kontekstit, bpftime arrin një reduktim dhjetëfish të kostove krahasuar me përdorimin e funksionalitetit uprobe dhe uretprobe të ofruar nga bërthama Linux. Për më tepër, bpftime e thjeshton ndjeshëm debimin, potencialisht mund të përdoret në sisteme pa bërthamë Linux dhe nuk kërkon privilegje të avancuara të nevojshme për ngarkimin e aplikacionit eBPF në bërthamë. Kodi i projektit është shkruar në gjuhët C/C++ dhe shpërndahet nën licencën MIT.

Kapja e thirrjeve sistemore dhe integrimi i kontrollimeve uprobe është realizuar duke përdorur teknikën e ri-shkrimit të kodit ekzekutiv (binary rewriting), ku thirrjet në thirrje sistemore, pika hyrëse dhe funksione lokale zëvendësohen me kalime në trajtuesit debues përmes modifikimit të kodit të makinës së aplikacionit në ekzekutim, që është shumë më efektive sesa organizimi i kapjes duke përdorur uprobe në nivelin e bërthamës Linux.

Mbështeten operacionet e zëvendësimit ose ndryshimit të funksioneve, lidhjeve të trajtuesve (hook) dhe filtreve, ridrejtimit, bllokimit ose zëvendësimit të parametrave të thirrjeve sistemore, kapjes së pikave hyrëse dhe dalëse nga funksionet, si dhe zëvendësimi i trajtuesit në ndonjë offset të rastësishëm në kod. Bpftime mund të lidhet me çdo proces në funksion në sistem pa pasur nevojë për rinstalim ose rikonstruksion. Zëvendësimi i bpftime në procese mund të bëhet për proceset që punojnë përmes ptrace, dhe për ata që ngarkohen përmes LD_PRELOAD.

NĂ« pĂ«rbĂ«rjen e bpftime zhvillohet njĂ« runtime qĂ« lejon lidhen programe eBPF me pikat e gjurmimit tĂ« thirrjeve sistemore dhe uprobe; ĐČĐžŃ€Ń‚ŃƒĐ°Đ»ŃŒĐœĐ°Ń ĐŒĐ°ŃˆĐžĐœĐ° eBPF me JIT pĂ«r ekzekutimin e ndarĂ« tĂ« programeve eBPF nĂ« nivelin e procesit tĂ« pĂ«rdoruesit (pĂ«r mĂ« tepĂ«r mbĂ«shtetet kompilimi AOT); njĂ« proces nĂ« sfond pĂ«r ndĂ«rveprimin me bĂ«rthamĂ«n dhe organizimin e kompatibilitetit me nĂ«n-sistemin uprobe tĂ« bĂ«rthamĂ«s (bpftime mbĂ«shtet modalitetin e ngarkimit tĂ« eBPF nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit nga bĂ«rthama pĂ«r tĂ« organizuar bashkĂ«punimin me programet eBPF nĂ« bĂ«rthamĂ«, tĂ« pĂ«rdorura, pĂ«r shembull, pĂ«r trajtimin e kprobe ose pĂ«r vendosjen e filtrave rrjetĂ«rore).

Makinë virtuale eBPF është formuar si një bibliotekë e lidhshme dhe ofron një API të ngjashëm me ubpf, duke e bërë atë të mundshme për integrimin e funksionalitetit eBPF në projekte të tjera. Për grumbullimin e të dhënave nga disa procese mbështetet krijimi i hartave eBPF të përbashkëta, të vendosura në_memorie të ndarë. Së bashku me bpftime, mund të përdoren trajtues të standardizuar eBPF të shkruar për përdorim në bërthamë, dhe për ndërtim mund të përdoren mjete standarde të bazuara në clang dhe libbpf.

Me bpftime në hapësirën e përdoruesit mund të ekzekutohen sisteme gjurmimi si BCC, bpftrace dhe Deepflow. Për shembull, është demonstruar përdorimi i skenarit sslsniff nga frameworku BCC për analizimin dhe ruajtjen e trafikut të enkriptuar në nginx. Në testet e zhvilluara, performanca e nginx në ekzekutimin e sslsniff në anën e bërthamës zvogëlohet me 58%, ndërsa kur trajtuesi është zhvendosur në hapësirën e përdoruesit me 12.3%.

Arqitektura e gjurmimit të proceseve duke përdorur eBPF-original në bërthamë:

Projekti bpftime zhvillon implementimin e eBPF, që funksionon në hapësirën e përdoruesit.

Arqitektura e gjurmimit në hapësirën e përdoruesit duke përdorur bpftime:

Projekti bpftime zhvillon implementimin e eBPF, që funksionon në hapësirën e përdoruesit.

Rekordi hibrid, në të cilin bpftime punon së bashku me eBPF në bërthamë, për shembull, për vendosjen e filtrave rrjetërore ose për zhvendosjen e trajtuesve të veçantë në hapësirën e përdoruesit:

Projekti bpftime zhvillon implementimin e eBPF, që funksionon në hapësirën e përdoruesit.

Nga planet për të ardhmen, përmendet: mundësia e zëvendësimit të përjashtimeve (Fault Injection); ngjitja e nxehtë e patch-eve (Hot Patching) për të ndryshuar logjikën e punës ose për të korrigjuar gabimet në ndërtimet binarë; krijimi i një moduli për Nginx, që lejon krijimin e zgjerimeve duke përdorur programe eBPF (për shembull, për zgjedhjen dinamike të rrugëve, ruajtjen e caches, aplikimin e politikave të sigurisë dhe balancimin e ngarkesës); zgjerimi i mundësive të nën-sistemit FUSE (për shembull, krijimi në formën e programeve eBPF të zgjerimeve për FS për ruajtjen e caches ose menaxhimin e qasjes).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster