Linux 内核技术实战课
邵亚方
前蘑菇街技术专家,Linux Kernel 活跃贡献者
23704 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 26 讲
Linux 内核技术实战课
15
15
1.0x
00:00/00:00
登录|注册

15 分析篇 | 如何高效地分析TCP重传问题?

拥塞
丢包
追踪收到的TCP重传包的方法讨论
追踪TCP重传事件的方法
产生TCP重传的问题
TCP重传率的重要性
tcpretrans工具的使用
Tracepoint的使用方法
使用ftrace框架和Brendan Gregg的工具
Kprobe的使用方法
追踪内核函数tcp_retransmit_skb()
性能影响和轻量级分析方法
使用tcpdump和tshark
引起TCP重传的情况
RetransSegs和OutSegs的含义
TCP重传率的计算公式
课后作业
课堂总结
如何高效地分析TCP重传?
分析TCP重传的常规手段
什么是TCP重传?
如何高效地分析TCP重传问题?

该思维导图由 AI 生成,仅供参考

你好,我是邵亚方。
我们在基础篇和案例篇里讲了很多问题,比如说 RT 抖动问题、丢包问题、无法建连问题等等。这些问题通常都会伴随着 TCP 重传,所以我们往往也会抓取 TCP 重传信息来辅助我们分析这些问题。
而且 TCP 重传也是一个信号,我们通常会利用这个信号来判断系统是否稳定。比如说,如果一台服务器的 TCP 重传率很高,那这个服务器肯定是存在问题的,需要我们及时采取措施,否则可能会产生更加严重的故障。
但是,TCP 重传率分析并不是一件很容易的事,比如说现在某台服务器的 TCP 重传率很高,那究竟是什么业务在进行 TCP 重传呢?对此,很多人并不懂得如何来分析。所以,在这节课中,我会带你来认识 TCP 重传是怎么回事,以及如何来高效地分析它。

什么是 TCP 重传 ?

我在“开篇词”中举过一个 TCP 重传率的例子,如下图所示:
这是互联网企业普遍都有的 TCP 重传率监控,它是服务器稳定性的一个指标,如果它太高,就像上图中的那些毛刺一样,往往就意味着服务器不稳定了。那 TCP 重传率究竟表示什么呢?
其实 TCP 重传率是通过解析 /proc/net/snmp 这个文件里的指标计算出来的,这个文件里面和 TCP 有关的关键指标如下:
TCP 重传率的计算公式如下:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何高效地分析TCP重传问题,重点讲解了TCP重传率的计算方法和导致TCP重传的两类情况:丢包和拥塞。作者提出了常规手段,包括使用tcpdump和tshark工具来抓取和过滤TCP重传包。此外,还介绍了使用Kprobe和Tracepoint来追踪TCP重传事件的方法。文章还提到了tcpretrans工具的使用,以及对内核版本的要求。通过清晰的示例和详细的解释,读者可以了解TCP重传的定义、计算方法以及分析手段。对于网络运维人员和系统管理员来说,本文提供了实用的分析方法和工具,帮助他们快速定位和解决TCP重传问题,提高系统稳定性和性能。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 内核技术实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 邵亚方
    置顶
    课后作业答案: - 请问我们提到的 tracepoint 观察方式,或者 tcpretrans 这个工具,可以追踪收到的 TCP 重传包吗?为什么? 不可以,因为tracepoint是在发送的地方进行打点来追踪的重传包,所以无法追踪收到的重传包。
    2020-10-11
    12
  • swordholder
    从本文了解到的ftrace简直打开了新天地。 学习后写了篇ftrace的介绍文章 https://github.com/mz1999/blog/blob/master/docs/ftrace.md

    作者回复: 赞👍

    2021-06-30
    10
  • 石维康
    『如果你觉得实现内核模块比较麻烦,可以借助 ftrace 框架来使用 Kprobe。Brendan Gregg 实现的tcpretrans采用的就是这种方式,你也可以直接使用它这个工具来追踪 TCP 重传。』 『。它通过解析该 Tracepoint 实现了对 TCP 重传事件的追踪,而不再使用之前的 Kprobe 方式,』
    2020-09-22
    2
  • 明翼
    有个问题请教,一次重传,总发包数也会增加,那么重传率为什么可以超过百分之百?
    2023-05-02归属地:四川
  • 逗比
    最近遇到一个情况,关掉接收方的网卡GRO就没有重传,乱序,重复ack现象,但是不知道为什么 场景:A(虚拟机ip) -> B(虚拟机ip:port), ipvs转发到某一台pod ip,其实就是一个普通的k8s service
    2022-08-30归属地:北京
  • 尼克
    请问老师,路由变化为什么会导致发送包乱序呢?这段时间生产有个问题,ospf刷新的时候会有很多的重传,但是我不理解为什么路由变化会导致乱序,我理解的seq 不应该是同一个包是一直不变的吗,谢谢
    2021-01-28
    2
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部