UBPF

描述

UBPFUser Berkeley Packet Filter,其思想是参考 Linux 内核的 EBPF 机制,内核实现字节码,加载用户态的字节码程序并运行。

由于 EBPF 限制比较多,不是图灵完备的:即不允许有循环(正在进行的工作是支持有界循环), 所以每个 eBPF 程序都需要保证完成而不会被挂起、所有的内存访问都是有界和类型检查的(包括寄存器, 一个 MOV 指令可以改变一个寄存器的类型)、不能包含空解引用、一个程序必须最多拥有 BPF_MAXINSNS 指令(默认 4096)、 “主"函数需要一个参数(context)等等。

于是,UBPF 会更像 JVM 这种是单纯的虚拟机,因此,是可以在用户态编写程序,编译成字节码,然后通过内核的 UBPF 虚拟机进行运行。

那么,对于服务程序和驱动来说,就可以使用直接调用内核的功能,免去了系统调用,并且,该程序的崩溃只会导致执行该程序的虚拟机崩溃, 而不会影响到内核。如果虚拟机支持 NATIVE 模式,就可以直接通过机器码运行,其性能将会大大提高!

hub调用

该功能只是出于设想状态

results matching ""

    No results matching ""