前言
接触到这个概念总是在所难免,毕竟搞安全的,之前也看过eBPF,但是没有深究,这次就来看看这个,有个大概得认知,知道这个是什么东西。以后有涉及的时候,才知道从哪里下手。
原文链接:【Linux新技术基石 |eBPF and XDP】
eBPF
1-概念
BPF 是 Linux 内核中高度灵活和高效的类似虚拟机的技术,允许以安全的方式在各个挂钩点执行字节码。它用于许多 Linux 内核子系统,突出的是网络、跟踪和安全(例如沙箱)。
BPF 是一个通用目的 RISC 指令集,其初的设计目标是:用 C 语言的一个子集编 写程序,然后用一个编译器后端(例如 LLVM)将其编译成 BPF 指令,稍后内核再通 过一个位于内核中的(in-kernel)即时编译器(JIT Compiler)将 BPF 指令映射成处理器的原生指令(opcode ),以取得在内核中的佳执行性能。
尽管 BPF 自 1992 年就存在,扩展的 Berkeley Packet Filter (eBPF) 版本出现在 Kernel3.18中,如今被称为“经典”BPF (cBPF) 的版本已过时。许多人都知道 cBPF是tcpdump使用的数据包过滤语言。现在Linux内核只运行 eBPF,并且加载的 cBPF 字节码在程序执行之前被透明地转换为内核中的eBPF表示。除非指出 eBPF 和 cBPF 之间的明确区别,一般现在说的BPF就是指eBPF。
2-框架
XDP
1-概念
XDP的全称是: eXpress Data Path
XDP 是Linux 内核中提供高性能**、可编程的网络数据包处理框架。**
-
直接接管网卡的RX数据包(类似DPDK用户态驱动)处理;
-
通过运行BPF指令快速处理报文;
-
和Linux协议栈无缝对接;