Az IETF (Internet Engineering Task Force) bizottsága, amely az internet protokolljainak és architektúrájának fejlesztésével foglalkozik, befejezte a BPF utasításkészlet architektúrájának RFC-jét, és közzétette a kapcsolódó specifikációt RFC 9669 azonosítóval. Az RFC "Javasolt szabvány" státuszt kapott, ezt követően megkezdődik az RFC fekete szabványra (Draft Standard) történő átállás folyamata, amely a teljes stabilizálást és a megfogalmazott észrevételek figyelembevételét jelenti.
A közzétett specifikáció a BPF bytecode utasításkészletét és az alacsony szintű virtuális gépet írja le, amelyet a Linux kernel eBPF alrendszerében használnak külső feldolgozók végrehajtására, amelyek képesek rendellenesen megváltoztatni a rendszer viselkedését anélkül, hogy a kernel kódját meg kellene változtatni. Lényegében az eBPF egy egyszerű virtuális processzort valósít meg saját regiszterkészletével, RISC-szerű utasításokkal, verembe és utasítás számlálóra van szüksége. A BPF programokat általában a C nyelv egy részhalmazában írják, majd bytecode-ra fordítják, amely alkalmas a végrehajtásra. virtuális gépben. A virtuális gép a BPF programokat vagy értelmezés segítségével, vagy JIT fordítást alkalmazva végezheti el a bytecode élő gépi utasításokká történő fordítását.
A BPF utasításkészlet architektúrájának standardizálása várhatóan ösztönzi a harmadik féltől származó megvalósítások létrehozását, amelyek kompatibilisek az eBPF virtuális géppel és képesek végrehajtani a Linux kernelhez írt BPF programokat. Az ilyen megvalósítások létrehozásán a virtuális gépekhez néhány hálózati adapter gyártója dolgozik, akik fejlesztik a BPF hálózati csomagfeldolgozók hardveres gyorsításához szükséges eszközöket. Az ötlet az, hogy kiterjesszük az XDP (eXpress Data Path) alrendszer lehetőségeit a BPF programok végrehajtására nemcsak a hálózati meghajtó szintjén, hanem a hálózati kártya oldalán is.
Például a Netronome cég támogatást adott a BPF-hez a Netronome Agilio CX SmartNIC adapterében, és bemutatta a univerzális BPF-programok gyűjteményét, amelyek nemcsak a CPU által hajthatók végre bármely XDP-kompatibilis illesztőprogrammal, hanem a hálózati kártya oldalán is, lehetővé téve a csomagok eldobására, módosítására vagy átirányítására vonatkozó döntések meghozatalát a CPU erőforrásainak felhasználása nélkül. Külön technológia fejlődik az XRP (eXpress Resubmission Path) néven, amely lehetővé teszi a BPF használatát bizonyos NVMe tárolók műveleteinek, mint például az indexek kezelése és az adatok aggregálása, az NVMe illesztőprogram szintjére vagy egy külső eszközre való áthelyezésére.
Megjegyzik, hogy az ilyen lehetőségek szélesebb körű bevezetését eddig hátráltatták a kompatibilitási problémák és az eBPF állapotának figyelésének szükségessége által felmerülő kockázatok. Ezek miatt egyes gyártók elhalasztották a BPF hardveres gyorsítók integrálását az eszközeikbe a szabvány kialakulásáig.
Forrás: opennet.ru
