包含标签 bpf 中的文章

Rust 系列 03:深入理解 Kprobes 与 Kretprobes

本文地址:https://www.ebpf.top/post/03-lets-understand-kprobes-kretprobes 1. 工作原理 2. 注意事项 3. 实战示例 3.1 跟踪目标进程 PID 4. eBPF 程序逻辑:提取 HTTP 头 4.1 跟踪连接建立:kretprobe/__sys_accept4 4.2 跟踪数据读取……

阅读全文

Rust 系列 02:理解 eBPF 核心构建单元

本文地址:https://www.ebpf.top/post/02-understanding-ebpf-core-building-blocks 1. BPF 程序类型与钩子点 2. BPF 验证器:安全守护者 3. BPF map:数据存储与通信 4. 辅助函数:内核 API 5. BTF & CO-RE:一次编写,到处运行 6. BPF 尾调用(……

阅读全文

Rust 系列 01: eBPF 和 Rust 简介

本文地址:https://www.ebpf.top/post/01-intro-into-ebpf-and-rust 1. 什么是 eBPF? 2. 为什么选择 Rust? 3. 可用的 Rust 库 3.1 libbpf-rs 3.2 Aya 4. 为什么选择 libbpf-rs 4.1 什么是 libbpf? 4.2 CO-RE 的工作原理 4.3 为什么选择 libbpf-rs 4.5 为什么 libbpf-rs 适合我的场景 5. eBPF + Rust:架……

阅读全文

eBPF 进阶:5种循环方式你都掌握了吗?

本文地址:https://www.ebpf.top/post/bpf_five_loops 1. 前言 本文的主题是在 eBPF 技术中代码如何编写循环。 循环几乎是我们所能接触到的所有编程语言中的通用概念,但在 eBPF 中,它们可能要复杂一些。更不用说,截止到目前 eBPF 提供了5+ 种不同的循环方式 - 那么我们应该……

阅读全文

BPF 调度器 sched_ext 实现机制、调度流程及样例

本文地址:https://www.ebpf.top/post/bpf_sched_ext_dive_into Linux 进程调度器 CFS 调度器 EEVDF 调度器 通用调度器的窘境 BPF 调度扩展器 sched_ext 实现机制 新增1: SCHED_EXT 调度类 新增2:eBPF 自定义调度器函数 SCHED_EXT 调度类工作流程 调度队列 DSQ(Dispatch Queue……

阅读全文

Linus 强势拍板 6.11 合入: BPF 赋能调度器终成正果

本文地址:https://www.ebpf.top/post/bpf_sched_ext 1. 插拔调度器的萌芽【2004 年】 在 2004 年,Linux 社区的 Con Kolivas 提出了可插拔式调度器想法,旨在让内核中存在多个调度器,用户可在引导时选择。提交 patch 的工作原理是将大量代码拆分为 kernel/sched.c 公共部分和私有部分,同……

阅读全文

LSM BPF 实践

本文地址:https://www.ebpf.top/post/lsm_bpf_intro 1. 安全背景知识 2. 内核安全策略模块通用框架 LSM 2.1 LSM 框架介绍 2.2 LSM 架构 2.3 LSM 中的钩子函数 3. LSM BPF 3.1 BCC 实践 3.2 libbpf-bootstrap 框架实践 4. 总结 5. 附录:LSM 热修内核漏洞查找 hook 点过程 1. 安全背景知识 国际上对计算机安全概括了三个特……

阅读全文

eBPF: 从 BPF to BPF Calls 到 Tail Calls

本站地址:https://www.ebpf.top/post/bpf2pbpf_tail_call 本文作者:李兆龙 (已经取得得原作者授权) 原文地址:https://blog.csdn.net/weixin_43705457/article/details/123474244 1. 引言……

阅读全文

揭秘 BPF map 前生今世

本文地址:https://www.ebpf.top/post/map_internal 1. 前言 众所周知,map 可用于内核 BPF 程序和用户应用程序之间实现双向的数据交换, 为 BPF 技术中的重要基础数据结构。 在 BPF 程序中可以通过声明 struct bpf_map_def 结构完成创建,这其实带给我们一种错觉,感觉这和普通的 C 语言变量……

阅读全文