eBPF学习实践系列(五) -- 分析tcplife.bpf.c程序
跟踪分析bcc项目ibbpf-tools中的 tcplife.bpf.c 程序 1. 背景 前面的eBPF学习实践系列主要是跟着别人的文章学习,积累了比较理论的知识。 TCP半连接全连接(三) – eBPF跟踪全连接队列溢出(上) 这篇中,自己要写eBPF程序了,带着实践的目的去参考已有工具代码,发现视角完全变了。 之前的理论知识很多都串起来了,再次体会到如这篇文章:举三反一–从理论...
跟踪分析bcc项目ibbpf-tools中的 tcplife.bpf.c 程序 1. 背景 前面的eBPF学习实践系列主要是跟着别人的文章学习,积累了比较理论的知识。 TCP半连接全连接(三) – eBPF跟踪全连接队列溢出(上) 这篇中,自己要写eBPF程序了,带着实践的目的去参考已有工具代码,发现视角完全变了。 之前的理论知识很多都串起来了,再次体会到如这篇文章:举三反一–从理论...
eBPF追踪类型学习整理 1. 背景 前面涉及了helloworld级别程序的开发流程,本文梳理学习梳理各种追踪机制及使用方式。 并结合BCC和libbpf-bootstrap中的示例进行学习。 几种追踪机制: Tracepoints(Kernel Tracepoints),内核预定义跟踪点,跟踪特定事件或操作,是静态定义的 Kprobes(Kernel Probes),...
Excalidraw白板工具和快捷键 1. 工具简要介绍 1.1. excalidraw Excalidraw 是一个开源的无限画布的手绘效果白板绘图工具,支持多人协作和端到端加密。 Excalidraw 的作者是一位目前在 Facebook 工作的法裔前端开发工程师 Vjeux。除了是 Excalidraw 的作者之外,还是 React Native、Prettier 的联合创始人...
基于libbpf开发实践 1. 背景 最近初步学习了libbpf-bootstrap和BCC (其中的bcc tools/libbpf-tools)。并在一个环境A里从BCC项目(0.23.0版本)中的libbpf-tools移植了tcpconnect工具到libbpf-bootstrap,成功编译运行了;但是在另一个环境B里(0.19.0版本),依赖的工具类文件比较多就不再移植测试了。...
CentOS的/boot分区空间不够用了,记录失败的扩容过程。 1. 背景 在“eBPF学习实践系列(二) – bcc tools网络工具集”里,实验tcpretrans时想用tc构造重传的场景。需要安装kernel-modules-extra,提示/boot空间不够了,之前装系统只分配了220M左右(Windows+CentOS8.5的双系统)。 于是准备进行扩容,虽然最终失败,但是...
bcc tools工具集中网络部分说明和使用。 1. 背景 上篇(eBPF学习实践系列(一) – 初识eBPF)中提到性能分析大师Brendan Gregg等编写了诸多的 BCC 或 BPFTrace 的工具集可以拿来直接使用,可以满足很多我们日常问题分析和排查,本篇先学习下网络相关的几个工具。 参考 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎...
eBPF学习实践,初步整理学习。 1. 背景 在“TCP半连接全连接(一) – 全连接队列相关过程”这篇文章中,进行了全连接队列溢出的实验,准备后续用eBPF跟踪过程。 eBPF名声在外,之前没用过时简单翻完了《Linux内核观测技术BPF》这本动物书,正好趁这个机会掌握熟悉这个技能,祛魅。 在基本学习eBPF之后尝试用libbpf-bootstrap写跟踪程序,发现还差些火候。先把...
半连接队列相关过程分析及实验,并用工具跟踪。本文先分析半连接相关代码逻辑。 1. 背景 在“TCP半连接全连接(一) – 全连接队列相关过程”这篇文章中,进行了全连接队列溢出的实验,并且遗留了几个问题。 本博客跟踪分析半连接队列相关过程,并探究上述文章中的遗留问题。 半连接队列溢出情况分析,服务端接收具体处理逻辑 内核drop包的时机,以及跟抓包的关系。哪些情况可能会抓不到...
跟踪分析netstat中Send-Q和Recv-Q在不同连接状态(listen和非listen)下的含义。 1. 背景 分析某环境中ss结果中Send-Q为0的原因中,最后没分析netstat中为什么不展示全连接队列,本篇博客进行跟踪分析。 2. netstat源码 1、环境中执行结果 在ECS中查看netstat [root@iZ2zejee6e4h8ysmmjwj1oZ ~]...
某个环境中ss结果里的Send-Q为0,跟踪代码分析原因。 1. 背景 上一篇文章(TCP半连接全连接(一) – 全连接队列相关过程)中提到ss结果里的Send-Q是全连接队列的长度,也提到ss和netstat实现有差异。 在某环境中查看信息时,ss -lt发现所有监听端口的Send-Q都是0,本篇文章进行流程跟踪和原因定位。 2. 现象和问题定位 2.1. 现象 找几个环境对比...