请教一个关于 tcp_syn_retries 参数的问题

214 天前
 AdmiralDollBug

手里有两种操作系统的 Linux 设备,一种是 CentOS 8 (内核 4.19.x ),一种是公司魔改过的某发行版(内核 4.18.x 到 4.19.x 都有)。近日偶尔发现一个问题,就是对于net.ipv4.tcp_syn_retries这个参数,在 CentOS 8 上的生效值比配置值少 2 。

比如:

而在魔改过的发行版上,这个配置的行为就是正常的。虽然我们自己也改过 CentOS 8 设备使用的内核源码,但是我看了一下,可以确认没有改到过这块逻辑,对比了一下上游的正式版内核代码,也没有发现哪里有问题。当前求助搜索引擎和 chatgpt 均未果。。 想问下有没有大佬也遇到过这样的问题?如果有的话,是否知道原因是什么?

910 次点击
所在节点    Linux
8 条回复
PTLin
213 天前
我看了下 4.19 的重传定时器 tcp_retransmit_timer ,没看到什么问题,倒不如说这段代码即使到 6.6 版本 syn 重传的变化也不大。
请问你是通过什么方式观测 syn 发送的?并且确定没有 syncnt 对 sock 设置独立的 syn 超时次数吧?
lysShub
213 天前
这个重试间隔时间是递增的吧,实际使用真会等那么旧吗?
PTLin
213 天前
@lysShub 他这个版本的内核 rto 在 syn 重传是每次都翻倍
AdmiralDollBug
213 天前
@PTLin
1. 抓包观测的
2. 可以确定没有地方使用 setsockopt 手动改超时次数
PTLin
213 天前
@AdmiralDollBug 你具体内核是 4.19.几
AdmiralDollBug
213 天前
@PTLin 4.19.181
PTLin
213 天前
@AdmiralDollBug 问一下,你机器上没打开 fastopen 吧
AdmiralDollBug
213 天前
@PTLin 感觉应该不是这个影响的,在两种设备上它们的配置相同:
```
[***@*** ~]# sysctl -a | grep fastopen
net.ipv4.tcp_fastopen = 1
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1043486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX