【80页】eBPF学习笔记1
需积分: 0 98 浏览量
更新于2022-08-03
2
收藏 1.25MB PDF 举报
【eBPF学习笔记1】
eBPF,全称Extended Berkeley Packet Filter,起源于Berkeley Packet Filter,是一个在Linux内核中用于定制网络封包处理逻辑的机制。自Linux 3.18版本开始,eBPF成为BPF的主要形态,引入了一系列增强特性,使其超越了原始的网络过滤功能,成为了一个通用的内核扩展框架。
1. **eBPF的增强特性**:
- **通用的RISC指令集**:eBPF拥有11个64位寄存器(32位子寄存器),r0-r10,以及512字节的栈空间。
- **JIT编译**:通过Just-In-Time技术,将eBPF程序编译为目标架构的机器码,提高了执行效率。
- **解耦网络子系统**:eBPF程序可挂接到Kprobe、Tracepoint等,不仅限于网络处理。
- **Maps**:键值存储结构,用于不同eBPF程序间的状态共享。
- **助手函数**:提供如封包改写、Checksum计算等功能。
- **尾调用**:通过尾调用来实现程序间的控制转移,突破程序长度限制。
- **Pin对象**:通过伪文件系统固定对象,方便持久化和访问。
- **硬件Offload支持**:支持将eBPF程序交给智能硬件执行。
2. **应用领域**:
- **网络处理**:XDP、TC、socket progs、kcm、calico、cilium等。
- **内核跟踪和性能监控**:KProbes、UProbes、TracePoints。
- **安全领域**:Secomp、landlock等,用于限制系统调用。
3. **性能优势**:
- **内核执行**:避免用户空间和内核空间的上下文切换。
- **编译优化**:助手函数内联,减少函数调用开销。
4. **安全性**:
- **BPF校验器**:确保字节码的安全性,防止内核崩溃或锁定。
5. **灵活性**:
- **动态注入和卸载**:程序无需重启内核或中断网络服务。
- **跨架构移植**:eBPF程序可在不同硬件平台间迁移。
6. **执行流程**:
- **开发阶段**:使用Clang将C代码编译为eBPF object文件。
- **加载阶段**:用户空间加载object文件,经过校验和JIT编译。
- **执行阶段**:挂钩到内核的特定点,如网络事件、系统调用等。
- **数据交换**:通过BPF Maps在用户空间和内核间传递数据。
7. **挂钩点**:
- **网络事件**:如封包到达。
- **Kprobes/Uprobes**:跟踪内核函数调用。
- **系统调用**:监控系统调用行为。
- **函数入口/退出**:在特定函数执行前后执行eBPF程序。
8. **BPF Verifier**:
- **控制流检查**:防止循环。
- **边界检查**:检测非法跳转。
- **Context访问**:跟踪上下文访问。
- **指针泄漏检查**:防止非特权指针泄露。
- **助手函数调用检查**:验证参数合法性。
9. **BPF JITs**:
- **JIT编译**:将字节码转化为机器码,提高执行效率。
10. **BPF Maps**:
- **键值对**:存储共享数据,通过文件描述符访问。
- **Pinning**:通过固定文件系统位置,实现持久化和跨进程共享。
eBPF的这些特性使得它在现代Linux系统中扮演着越来越重要的角色,成为了一种强大的工具,广泛应用于性能分析、网络安全、系统监控等多个领域。
啊看看
- 粉丝: 37
- 资源: 323
最新资源
- Navicat.zip
- 麻雀搜索算法(SSA)文章复现:《基于混沌麻雀搜索算法的无人机航迹规划方法-汤安迪》 策略为:立方混沌+反向学习初始化种群+反向精英策略改进发现者策略+正余弦算法改进加入者策略+动态调整警觉者
- “田园风光在线”:打造村旅游信息平台
- Ollama.zip大模型
- 土地利用/土地覆盖数据(蚌埠市)对应代码表
- 基于Unity 3D的旅游景点漫游设计
- 基于混沌-高斯变异-麻雀搜索算法(CGSSA)优化BP神经网络(CGSSA-BP)的回归预测(含优化前后对比)MATLAB代码 代码注释清楚 main为主程序,可以读取EXCEL数据 很方便
- xyy_localhost-2024_12_24_14_32_06-dump.sql
- C++模板与泛型编程入门教程:代码重用与类型安全
- 面向对象编程语言Objective-C基础语法详解及应用
- MATLAB在ThingSpeak中应用信号处理与数据可视化的技术实现
- VMware.zip虚拟机
- CFA知识点梳理系列:CFA Level II, Reading 6 Economic Growth
- goland 2024直接使用到2099年
- SecureCRT-9.6.0-mac
- Python 自动办公- Python分类汇总278张Excel表中的数据 Python源码