![eBPF 在功能方面有哪些限制?](https://linux22.com/image/211331/eBPF%20%E5%9C%A8%E5%8A%9F%E8%83%BD%E6%96%B9%E9%9D%A2%E6%9C%89%E5%93%AA%E4%BA%9B%E9%99%90%E5%88%B6%EF%BC%9F.png)
据我了解,它主要用于可观察性(即只读)。
我看到你可以路由数据包,但你还能做更多的事情吗?
您还可以操作文件系统、发送信号并从 eBPF 程序写入吗?
答案1
eBPF 在功能方面有哪些限制?
这是一个非常广泛的问题:-) 要了解 eBPF 可以做什么,您可以查看官方网站:https://ebpf.io。
除了与文件系统的交互(见下文)之外,很难想象 eBPF 程序现在不能做什么。
您还可以操作文件系统、发送信号并从 eBPF 程序写入吗?
操作文件系统:除了 sysctls(参见bpf_sysctl_set_new_value
BPF 助手),我不相信你现在可以从 BPF 程序写入文件。我认为这主要是因为还没有出现这样的用例。
发送信号:您可以使用发送信号bpf_send_signal
BPF 助手。
答案2
eBPF 在设计上无法对它想要的内核进行任何调用。他们创建了“bpf helpers”函数,这是暴露给 ebpf 程序的内核的功能。你可以在这里看到列表:
https://github.com/torvalds/linux/blob/master/include/uapi/linux/bpf.h#L1538