Internet Engineering Task Force (IETF), която отговаря за разработването на интернет протоколи и архитектура, финализира RFC за архитектурата на набора от инструкции BPF и публикува свързаната спецификация под идентификатор RFC 9669. RFC получи статут на „Предложен стандарт“, след което ще започне работа по придаване на RFC статус на чернова на стандарт, което всъщност означава пълно стабилизиране и отчитане на всички направени коментари.
Публикуваната спецификация описва набор от инструкции за байткод на BPF и виртуална машина от ниско ниво, използвана в подсистемата на ядрото на Linux eBPF за изпълнение на външни манипулатори, способни да променят поведението на системата в движение, без да е необходима модификация на кода на ядрото. По същество eBPF реализира прост виртуален процесор със собствен набор от регистри, RISC-подобни инструкции, стек и програмен брояч. BPF програмите обикновено се пишат на подмножество от езика C и след това се компилират в байткод, подходящ за изпълнение в... виртуална машинаВиртуалната машина може да изпълнява BPF програми, използвайки или интерпретация, или JIT (just-in-time) компилация, за да преобразува байткод в машинни инструкции в движение.
Очаква се стандартизацията на архитектурата на набора от инструкции BPF да стимулира създаването на реализации от трети страни, съвместими с виртуалната машина eBPF и способни да изпълняват BPF програми, написани за ядрото на Linux. Работата по създаването на такива е в ход. виртуални машини Някои производители на мрежови адаптери разработват инструменти за хардуерно ускорение за обработчици на BPF мрежови пакети. Идеята е да се разширят възможностите на подсистемата XDP (eXpress Data Path), за да се изпълняват BPF програми не само на ниво мрежов драйвер, но и на самия мрежов адаптер.
Например, Netronome добави BPF поддръжка към адаптера Netronome Agilio CX SmartNIC и предостави колекция от примери за универсални BPF програми, които могат да се изпълняват не само с помощта на CPU в ядрото с всеки XDP-съвместим драйвер, но също и на мрежова карта страна, която ви позволява да вземате решения за премахване, модифициране или пренасочване на пакети, без да губите ресурси на процесора. Отделно се разработва технологията XRP (eXpress Resubmission Path), която прави възможно използването на BPF за преместване на някои операции с NVMe устройства, като работа с индекси и агрегиране на данни, на ниво NVMe драйвер или на външно устройство.
Отбелязва се, че по-широкото приемане на такива възможности досега е възпрепятствано от рискове, свързани с проблеми със съвместимостта и необходимостта да се наблюдава състоянието на eBPF в ядрото. Поради тези рискове някои производители отложиха включването на BPF хардуерно ускорение в своите устройства, докато не бъде установен стандарт.
Източник: opennet.ru
