《4.eBPF急先锋:surftrace.pptx》由会员分享,可在线阅读,更多相关《4.eBPF急先锋:surftrace.pptx(15页珍藏版)》请在三个皮匠报告上搜索。
1、首届中国首届中国eBPFeBPF研讨会研讨会eBPF急先锋锋 Surftrace主讲讲人:廖肇燕2022-11-12首届中国首届中国eBPFeBPF研讨会研讨会目录录01Surftrace 介绍绍02实实践案例03与eBPF未来展望首届中国首届中国eBPFeBPF研讨会研讨会从从ftraceftrace说起说起优势 轻量:无需安装,直接mount即可 可靠:从第一现场获取数据 安全:不易导致crashftrace从2.6内内核开始引入,是一个内核的追踪器,用于帮助系统开发者或设计者查看内核运行情况 以对内核符号 wake_up_new_task 进行trace,同时要获取入参(struct t
2、ask_struct*)-comm 成员信息为例,启动配置需要经历三个步骤:要想停止需要继续配置如下:难点:1、所有偏移都需要手工计算;2、步骤多,不通用;3、毫无可读性;首届中国首届中国eBPFeBPF研讨会研讨会perf-tools来源:https:/ 中的大部分功能kernel kernel debugfsdebugfsAlibabaAlibaba CloudCloud LinuxLinuxsurftracesurftraceparserparseronline dblocal dbgdb+vmlinuxeventseventskprobeuprobeeventExpressionExp
3、ressionGeneratorGenerator1、支持多事件类型同时注入2、结构体信息无限级联3、函数内部追踪4、支持多过滤器组合,优化数据量首届中国首届中国eBPFeBPF研讨会研讨会网络协议栈增强网络协议栈增强 sk_buff 是linux网络协议栈重要的结构体,里面承载了网络报文等内容。但是仅凭结构体解析的方法,并不能直接获取报文内容处理方式处理方式$符号是指向网络报文内容的特殊标记方式,不可省略要从哪一层开始解析报文,当前支持ethhdr,iphdr,icmphdr,tcphdr,udphdr5种类型,不可省略。skb在当前函数时,data指针指向的协议层级,有l2、l3、l4 三
4、个选项,可以不填,默认l3获取协议报文内容获取协议报文内容 surftrace给5个报文协议头基础上额外增加了一个xdata成员,方便获取协议头之后的报文内容。xdata有 cdata.sdata,ldata,qdata,Sdata 四类场景,位宽对应1 2 4 8和字符串。数组下标按照位宽进行对齐。如表达式 data=%0$(struct icmphdr)l3-sdata1。sdata1表示要提取icmp报文中的23字节内容端模式和端模式和ipip转换转换ethhdriphdricmphdr-xdatabody surftrace对以 ip_xx开头的变量进行ipv4u32,如 ip_src
5、=%0$(struct iphdr)l3-saddr,会转成对应的IP格式。对B16_、B32_、B64_、b16_、b32_、b64_开头的变量也会进行大小端转换,B开头按照16进制输出,b以10进制输出。首届中国首届中国eBPFeBPF研讨会研讨会 调用过程追踪调用过程追踪 在callgraph数据基础上,surftrace可直接生成火焰图,方便对符号级别的耗时进行直观分析。ftrace-callgraph功能输出仅是单次调用符号级别的延迟数据,综合分析不便首届中国首届中国eBPFeBPF研讨会研讨会 适用场场景优势:易于安装快速上手追踪范围广支持二次开发适用场景:符号级别问题诊断调用流程
6、追踪深度信息获取不适用场景:长期运行应用复杂数据过滤 上述场景推荐采用coolbpfkprobeeventsuprobeperfxdpSurftraceCoolbpf首届中国首届中国eBPFeBPF研讨会研讨会Surftrace 实实践案例02首届中国首届中国eBPFeBPF研讨会研讨会 锁定每一颗流星锁定每一颗流星 在用户节点上,能够捕捉到像某个IP 80 端口发送的非预期报文,需要锁定发起者。难点1:发起网络请求是一个瞬时动作,采用lsof i 等命令追踪不到owner进程 难点2:这个请求有可能是一个独立命令(如curl)发起的,也是一个转瞬即逝的过程,无法用pstree 等找到父进程首
7、届中国首届中国eBPFeBPF研讨会研讨会 锁定每一颗流星锁定每一颗流星 锁定报文owner锁定curl owner 在唤醒任务的过程中,过滤curl进程,并打出父进程信息 可以在 ip_output 这个网络报文必经之路上,捕获到到目标报文,打出任务名追踪结果追踪结果仅用两行命令,即完整追踪到连接发起者。首届中国首届中国eBPFeBPF研讨会研讨会surftrace 展望纸纸上得来终觉终觉浅,绝绝知此事要躬行。03首届中国首届中国eBPFeBPF研讨会研讨会 展望01将命令自动动生成coolbpf代码码02覆盖更多发发行版首届中国首届中国eBPFeBPF研讨会研讨会 首届中国首届中国eBPFeBPF研讨会研讨会Thanks!2024-5-