linux内核观测技术BPF速读笔记

动机:对bpf这些有点兴趣,通过速度这本书169页,获取一点知识。最近在网上看到的一种观点,很多书很多文字没有经过仔细的打磨,有可能是无用的信息,当然这个无用是很主观的,可能是自己的理解水平有限,但客观来讲就是自己读完没有太大的收获。因此读书要快,先很快的掌握了全貌,再去揪细节。

1&2&3

这几章节,BPF的历史和BPF的数据操作
比较关键的信息是bpf_trace_printk()要在/sys/kernel/debug/tracing/trace_pipe里边查看
BPF 分两类任务 跟踪&网络
第一个helloworld,检测到execve系统调用就输出
helloworld

4 BPF跟踪

bpf的跟踪类任务

静态
ABI稳定
动态
ABI不稳定
内核态跟踪点kprobes执行前插入
kretprobes返回后插入
用户态usdtuprobes执行前插入
uretprobes返回后插入

BPF 可视化:BPF收集信息,处理和可视化任务让给用户态的Perf事件来做

5 BPF工具

BPFtool

命令行工具,查看bpf信息,增删改查bpf映射

BPFTrace

类似与bpf的bash,按照DSL规则写脚本,即可直接运行

6 BPF网络

tcpdump工具

tcpdump—>linux pcap过滤器—>pcap过滤器被编译为bpf程序-d选项可查看BPF汇编指令
使用例子sudo tcpdump -n 'ip and tcp port 80'

源码bpf_load.c

流量控制TC

术语:排队规则qdisc
流量控制(Traffic Control, tc)是Linux内核提供的流量限速、整形和策略控制机制。它以qdisc-class-filter的树形结构来实现对流量的分层控制。参考
文中以cls_bpf分类器编写流量控制的BPF程序,cls_bpf可将BPF程序挂载到入口和出口即可直接访问sk_buff结构
在这里插入图片描述

7 XDP

XDP VS TC

TC访问sk_buff,有数据包的元数据,tc为加载器tc为加载器有数据包的元数据
XDP访问xdp_buff, 在进入主内核网络栈之前执行ip为加载器网卡NIC级别

总结

快速了解了下BPF的能力、优缺点。感觉这种速读还是有点意义的。

Q&A

  1. 第一章代码make后报错make: *** no rule to make target '/kernel-src/samples/bpf/bpf_load.c', needed by 'build'. stop.
    看看环境配置的[readme](https://github.com/bpftools/linux-observability- with-bpf/blob/master/README.md)吧,要下载一些东西
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值