-10 +

ebpf 介绍 1

ebpf

之前一直有研究 linux 下的 dtrace 技术,包括 systemtap,ftrace,perf 等,但是进入 kubernetes 领域后在网络领域接触到了 cilium 项目,cilium 在 kubernetes 中体现出来优势太明显了,因此接触了 ebpf 技术。我在下面大概列出了 ebpf 相关的模块。 后面我详细介绍各个模块。

介绍

ebpf 是一种革命性的 linux kernel 可编程技术,而不依赖于重新编译 kernel 或者通过加载 kernel modules。 最近几年 ebpf 正在成为一个需要通过 linux kernel 才能解决问题的标准技术。 ebpf 成为新一代的 networking, security, application profiling 领域内的事实标准。

从上面的简单描述中可以知道这个技术应该具备以下的特点

上图可以看出一个 ebpf 是如何在 linux kernel 中运行的

  1. 需要使用 LLVM 编译器将 C code 编译为 ebpf RISC 指令
  2. ebpf 校验器会校验这个 ebpf 程序是否对 kernel 是安全的
  3. ebpf JIT 将 ebpf 程序翻译为 native code 运行到 kernel 的各个 probe 点

Security

在 Security 领域,可以借助 ebpf 在 system calls 和 network filtering 两个方面 上的功能做出革命性的 Security 系统。

Tracing & Profiling

通过 ebpf 能够 trace kernel 和 用户态的所有行为,这样可以在系统层面和用户应用层面提供一个系统的诊断。

Networking

借助 ebpf 的 kernel 可编程性,能够非常方便和高性能完成网络协议解析,这样非常适合 networking 领域。

Observability & Monitoring

ebpf 在可见性领域可以不在依赖操作系统的静态数据导入,而是可以在 kernel 内部自定义收集各种统计数据。 可以大大提高可见性的深度。

参考

关于我

85 后程序员, 比较熟悉 Java,JVM,Golang 相关技术栈, 关注 Liunx kernel,目前痴迷于分布式系统的设计和实践。 研究包括但不限于 Docker Kubernetes eBPF 等相关技术。

Blog

Code

Life

Archive