首页  

网络报文分析利器eBPF简介     所属分类 BPF 浏览量 446
BPF(Berkeley Packet Filter ) 

1992 伯克利实验室的一篇论文  The BSD Packet Filter: A New Architecture for User-level Packet Capture
这篇论文描述了,BPF 是如何更加高效灵活地从操作系统内核中抓取网络数据包的

Wireshark 和 tcmdump 依赖libpcap库,libpcap库使用 BPF 技术
linux kernle从2.1版本开始支持BPF功能,
在 BPF 实现的基础上,Linux 在 2014 年内核 3.18 版本上实现了 eBPF
eBPF 是 BPF 的增强 
eBPF extended Berkeley Packet Filter

对虚拟机做了增强,扩展了寄存器和指令集的定义,提高了虚拟机的性能,可以处理更加复杂的程序
增加了 eBPF maps,这是一种存储类型,可以保存状态信息,从一个 BPF 事件的处理函数传递给另一个,或者保存一些统计信息,从内核态传递给用户态程序。
eBPF在内核中支持JIT即时编译,机器指令和寄存器可以一一对应
增加了Verifier验证器,以保证在内核中执行的字节码是安全的

eBPF 主要应用领域 
安全,网络,负载均衡,故障分析,追踪等

云原生领域,Cilium 使用 eBPF 实现了无 kube-proxy 的容器网络
利用eBPF解决iptables带来的性能问题


网络领域,内核态网络包的快速处理和转发,XDP eXpress Data Path

安全领域,通过LSM(Linux Security Module)的 hook 点
eBPF 可以对 Linux 内核做安全监控和访问控制,可参考KRSI(Kernel Runtime Security Instrumentation)的文档


wireshark 抓包 tcpdump使用简介

上一篇     下一篇
fateboard 源码笔记

wireshark 抓包

fate flow 命令行 请求 抓包分析

python3-001 基础语法

python3-002 基本数据类型

python3-003 条件和循环