- Enable bpf() system
翻译:启用伯克利数据包过滤器
说明:
[ ] Enable BPF Just In Time compiler
翻译:启用BPF实时编译器
说明:[ ] Permanently enable BPF JIT and remove BPF interpreter
翻译:永久启用BPF JIT并删除BPF解释器
说明:待确定用途[ ] Disable unprivileged BPF by default
翻译:默认情况下禁用无特权BPF
说明:[ ] Preload BPF file system with kernel specific program and map iterators --->
翻译:使用内核特定程序和映射迭代器预加载BPF文件系统
说明:--- Preload BPF file system with kernel specific program and map iterators 翻译:使用内核特定程序和映射迭代器预加载BPF文件系统 说明: <M> bpf_preload kernel module 翻译:bpf预加载内核模块 说明:
[ ] Enable BPF LSM Instrumentation
翻译:启用BPF LSM检测
说明:当前用于提的遥测内核基础结构(审计,性能等)与访问强制(即LSM)脱节。增强审核提供的信息需要更改内核,审核,其策略语言和用户空间组件。此外,基于新添加的遥测数据构建MAC策略需要更改各种LSM及其各自的策略语言。新版本中增加了一个新的LSM,允许将BPF程序附加到LSM hook,这有助于统一和动态审核和MAC策略。- Enable bpf() system
附注:
BPF原来是Berkely Packet Filter(伯克利数据包过滤器)的缩写,原来是提升pcap过滤性能的,比当时最快的包过滤技术快20倍,只所以性能高,是因为它工作在内核中,避免包从内核态复制到用户态所以速度快,后来Alexei Starovoitov 大牛在2014年重新实现了BPF,将其扩展成了通用的执行引擎,称为eBPF,官方缩写仍是BPF。
简单解释BPF作用,BPF提供了一种当内核或应用特定事件发生时候,执行一段代码的能力。BPF 采用了虚拟机指令规范,所以也可以看一种虚拟机实现,使我们可以在不修改内核源码和重新编译的情况下,提供一种扩展内核的能力的方法。
BPF程序不像一般程序可以独立运行,它是被动运行的,需要事件触发才能运行,有点类似js里面的监听,监听到按钮点击执行一小段代码。这些事件包括系统调用,内核跟踪,内核函数,用户函数,网络事件等。
具体能干嘛那,作用还是很强大,可以进行系统故障诊断,因为其有透视内核的能力;网络性能优化,因为它可以在内核态接收网络包,并做修改和转发;系统安全,因为它可以中断非法连接等;性能监控,因为其透视能力,可以查看函数耗费时间从而我们可以知道问题到底出在哪里。