ebpf简介
eBPF是一项革命性的技术,起源于Linux内核,可以在操作系统内核等特权上下文中运行沙盒程序。它可以安全有效地扩展内核的功能,而无需更改内核源代码或加载内核模块。比如,使用ebpf可以追踪任何内核导出函数的参数,返回值,以实现kernelhook的效果;通过ebpf还可以在网络封包到达内核协议栈之前就进行处理,这可以实现流量控制,甚至隐蔽通信。
ebpf追踪
ebpf本质上只是运行在linux内核中的虚拟机,要发挥其强大的能力还是要跟linuxkernel自带的追踪功能搭配:
kprobe
uprobe
tracepoint
USDT
通常可以通过以下三种工具使用ebpf:
bcc
libbpf
bpftrace
bcc
BCC是一个用于创建高效内核跟踪和操作程序的工具包,包括几个有用的工具和示例。它利用扩展的BPF(BerkeleyPacketFilters),正式名称为eBPF,这是Linux.15中首次添加的新功能。BCC使用的大部分内容都需要Linux4.1及更高版本。
源码安装bccv0.25.0
首先clonebcc源码仓库
gitclone