深入了解BPF程序类型
1. BPF程序基础概述
大多数BPF程序只能由具有root权限的用户加载到内核中。当运行一个BPF程序时,即使你没有对计算机进行任何操作,几秒钟后也会开始看到 “Hello, BPF World!” 消息。这是因为计算机后台运行的程序可能正在执行其他程序。当停止该程序时,消息将不再显示在终端中,并且一旦加载BPF程序的程序终止,BPF程序就会从虚拟机中卸载。
在很多情况下,我们希望BPF程序能够在后台运行,收集系统数据,而不受其他进程是否运行的影响。了解了BPF程序的基本结构后,下面来深入探讨可以编写的BPF程序类型,这些类型能让我们访问Linux内核中的不同子系统。
2. BPF程序类型分类
BPF程序类型虽然没有明确的分类,但可以根据其主要目的分为两类:
- 追踪类 :许多此类程序有助于更好地了解系统中正在发生的事情,能提供系统和硬件行为的直接信息,可访问特定程序的内存区域,提取运行进程的执行跟踪信息,还能直接访问每个特定进程分配的资源,如文件描述符、CPU和内存使用情况。
- 网络类 :这类程序允许检查和操作系统中的网络流量,可以过滤来自网络接口的数据包,甚至完全拒绝这些数据包。不同类型的程序可以附加到内核中网络处理的不同阶段,这各有利弊。例如,在网络驱动程序接收到数据包时就附加BPF程序,能更早控制数据包,但获取的信息较少;而在数据包即将传递到用户空间时附加程序,能获得更多信息以做出更明智的决策,但需要付出完全处理数据包的代价。
下面按照它们被添加到内核的时间顺序介绍一些常见的BPF程序类型:
|
超级会员免费看
订阅专栏 解锁全文
2300

被折叠的 条评论
为什么被折叠?



