1
eBPF
程序分类

跟踪类
1
eBPF
程序

主要用于从系统中提取跟踪信息,进而为监控,排错、性能优化等提供数据支持

网络类
1
eBPF
程序

网络类

1
eBPF
程序,主要对网络数据包进行过滤和处理,进而实现网络的观测、过滤、流量控制以及性能优化等各种丰富的功能。在触发位置的不同,网络类
1
eBPF
又可以分为:
1
XDP
(高速数据路径)程序,
1
TC
(流量控制)程序,套接字程序、以及
1
cgroup
程序。

1
XDP
(高速数据路径)程序

1
BPF_PROG_TYPE_XDP
,在网络驱动程序刚刚收到数据包的时候触发执行。由于无需通过繁杂的内核协议栈,
1
XDP
程序可以用来实现高性能的网络处理方案,常用于
1
DDoS
防御、防火墙、4层负载均衡等场景

需要注意的是

1
XDP
不是绕过了内核协议栈,它只是在内核协议栈之前处理了数据包,而处理过了的数据包还可以正常通过内核协议栈继续处理。

根据网卡和网卡驱动是否原生支持

1
XDP
程序,
1
XDP
程序又分为以下三种模式:

无论那种模式,

1
XDP
程序在处理过网络包之后,都需要根据
1
eBPF
程序执行结果,来决定数据包的去处。下面是5中
1
XDP
程序的执行结果