IETF-kommittén (Internet Engineering Task Force), som ansvarar för utvecklingen av protokoll och arkitektur för internet, har slutfört utarbetandet av RFC för arkitekturen av BPF-instruktioner och publicerat den relaterade specifikationen med identifieraren RFC 9669. RFC har fÄtt status som "Föreslagen standard", varefter arbetet med att ge RFC-statusen utkaststandard (Draft Standard) kommer att inledas, vilket i praktiken innebÀr en fullstÀndig stabilisering och beaktande av alla gjorda anmÀrkningar.
Den publicerade specifikationen beskriver ett instruktionsset för BPF-bytecode och en lÄg nivÄ virtuell maskin som anvÀnds i Linux-kÀrnans eBPF-subsystem för att köra externa hanterare som kan Àndra systembeteendet i realtid utan att behöva Àndra kÀrnkoden. I praktiken implementerar eBPF en grundlÀggande virtuell processor med sitt eget register, RISC-liknande instruktioner, stack och programrÀknare. BPF-program skapas vanligtvis pÄ en delmÀngd av programsprÄket C, och kompileras dÀrefter till bytecode som Àr lÀmplig för körning i en virtuell maskin. Den virtuella maskinen kan köra BPF-program antingen genom tolkning eller genom att anvÀnda JIT-kompilering för att översÀtta bytecode i realtid till maskininstruktioner.
Det antas att standardiseringen av BPF-instruktionssetet kommer att fungera som en stimulans för skapandet av tredjepartsimplementationer som Àr kompatibla med den eBPF-virtuella maskinen och som kan köra BPF-program skrivna för Linux-kÀrnan. Vissa tillverkare av nÀtverkskort arbetar med att utveckla verktyg för hÄrdvaruacceleration av BPF-behandlare för nÀtverkspaket. virtuella maskiner Idén Àr att utöka funktionaliteten i XDP (eXpress Data Path) subsystemet för att köra BPF-program inte bara pÄ nivÄn av nÀtverksdrivrutinen utan Àven pÄ nÀtverkskortets sida.
Till exempel har företaget Netronome lagt till stöd för BPF i adaptern Netronome Agilio CX SmartNIC och tillhandahÄllit en uppsÀttning exempel pÄ generiska BPF-program som kan köras inte bara med CPU i kÀrnan med vilken XDP-kompatibel drivrutin som helst, utan ocksÄ pÄ nÀtverkskortet. Detta gör att beslut om att kassera, Àndra eller omdirigera paket kan fattas utan att belasta CPU-resurser. Dessutom utvecklas teknologin XRP (eXpress Resubmission Path) som möjliggör anvÀndning av BPF för att utföra vissa operationer med NVMe-lagringsenheter, sÄsom indexhantering och aggregering av data, pÄ NVMe-drivrutinsnivÄ eller pÄ en extern enhet.
Det pÄpekas att en bredare implementering av sÄdana funktioner fortfarande hindras av risker som Àr kopplade till kompatibilitetsproblem och behovet av att övervaka tillstÄndet för eBPF i kÀrnan. PÄ grund av dessa risker har vissa tillverkare skjutit upp införandet av hÄrdvaruaccelerering av BPF i sina enheter tills ett standardiserat protokoll har utvecklats.
KĂ€lla: opennet.ru
