我对 BPF 开发领域非常陌生,需要在我的 BPF 程序中使用 kprobes,以便我可以正确检测和收集尝试通过网络发送数据包的进程的 PID。我想用我的用户空间应用程序部署这个 BPF 程序,我的用户空间应用程序在各种 linux 版本和发行版上运行——尽管都是相对较新的。
我知道 kprobe 机制并不是官方稳定的,但是我的程序在实践中出现故障的可能性有多大?我正在挂钩tcp_connect
和ip4_datagram_connect
. 我原以为这些功能在内核版本之间不会有太大变化,所以或多或少地依赖它们应该是安全的吗?还是我有什么误解?
我能否发布一个依赖于这些特定 (tcp/udp) kprobes 的应用程序,而不必过多担心兼容性或稳定性?