Internet Engineering Task Force (IETF), care este responsabil pentru dezvoltarea protocoalelor și arhitecturii Internet, a finalizat RFC pentru arhitectura setului de instrucțiuni BPF și a publicat specificația asociată sub identificatorul RFC 9669. RFC a primit statutul de un „Standard propus”, după care se vor începe lucrările pentru a da RFC statutul de proiect de standard, ceea ce înseamnă de fapt stabilizare completă și luarea în considerare a tuturor comentariilor făcute.
Specificația publicată descrie un set de instrucțiuni bytecode BPF și o mașină virtuală de nivel scăzut utilizată în subsistemul kernelului Linux eBPF pentru a executa handlere externe capabile să modifice comportamentul sistemului din mers, fără a necesita modificarea codului kernelului. În esență, eBPF implementează un procesor virtual simplu cu propriul set de registre, instrucțiuni de tip RISC, stivă și contor de programe. Programele BPF sunt de obicei scrise într-un subset al limbajului C și apoi compilate în bytecode adecvat pentru execuție în mașină virtualăMașina virtuală poate executa programe BPF folosind fie interpretarea, fie compilarea just-in-time (JIT) pentru a traduce bytecode-ul în instrucțiuni ale mașinii din mers.
Se așteaptă ca standardizarea arhitecturii setului de instrucțiuni BPF să stimuleze crearea de implementări terțe compatibile cu mașina virtuală eBPF și capabile să ruleze programe BPF scrise pentru kernelul Linux. Se lucrează la crearea unor astfel de implementări. mașini virtuale Unii producători de adaptoare de rețea dezvoltă instrumente de accelerare hardware pentru gestionarea pachetelor de rețea BPF. Ideea este de a extinde capacitățile subsistemului XDP (eXpress Data Path) pentru a rula programe BPF nu doar la nivel de driver de rețea, ci și pe adaptorul de rețea.
De exemplu, Netronome a adăugat suport BPF la adaptorul Netronome Agilio CX SmartNIC și a oferit o colecție de exemple de programe BPF universale care pot fi executate nu numai folosind procesorul din nucleu cu orice driver compatibil XDP, ci și pe placa de rețea. lateral, care vă permite să luați decizii cu privire la eliminarea, modificarea sau redirecționarea pachetelor fără a irosi resursele CPU. Separat, este în curs de dezvoltare tehnologia XRP (eXpress Resubmission Path), care face posibilă utilizarea BPF pentru a muta unele operațiuni cu unități NVMe, cum ar fi lucrul cu indici și agregarea datelor, la nivelul driverului NVMe sau pe un dispozitiv extern.
Se observă că adoptarea pe scară largă a unor astfel de capabilități a fost până acum împiedicată de riscurile asociate cu problemele de compatibilitate și de necesitatea de a monitoriza starea eBPF în nucleu. Din cauza acestor riscuri, unii producători au amânat încorporarea accelerației hardware BPF în dispozitivele lor până la stabilirea unui standard.
Sursa: opennet.ru
