XDP/eBPF — BPF
Posted 范桂飓
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XDP/eBPF — BPF相关的知识,希望对你有一定的参考价值。
目录
BPF 的诞生背景
在没有 BPF(Berkeley Packet Filter,伯克利包过滤器)之前,当 Userspace 的应用程序希望对 Packets 进行过滤,以求获得感兴趣的部分时。首先需要将 NIC 收到的所有 Packets 从 Kernel 拷贝一份到 Userspace,然后应用程序再对这些进行过滤。
那么,明显的问题就是,应用程序根本不关心的 Packets 都需要走完一套 Kernel TCP/IP Stack 处理,也就是说对这些 Packets 执行的拷贝操作是无效的、浪费 CPU 资源的。
所有,1992 年,Steven McCanne 和 Van Jacobson 发表了名为《BSD Packet Filter(数据包过滤):一种新的用户级包捕获架构》的论文,论文中描述了 BPF 这一新的数据包过滤技术,支持在 Kernel 中直接过滤数据包,继而避免一些无用的、浪费的拷贝,以此可以让数据包过滤性能提高 20 倍。
BPF
BPF 的核心思想是:直接在 Kernel 执行数据包的过滤。
BPF 的本质是:一种指令集架构(instruction set architecture)
以上是关于XDP/eBPF — BPF的主要内容,如果未能解决你的问题,请参考以下文章