V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
AdmiralDollBug
V2EX  ›  Linux

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

  •  
  •   AdmiralDollBug · 23 天前 · 648 次点击

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

    比如:

    • net.ipv4.tcp_syn_retries=6 时,实际的重试次数为 4 ,即总共发送出 5 个 SYN 包
    • net.ipv4.tcp_syn_retries=7 时,实际的重试次数为 5 ,即总共发送出 6 个 SYN 包

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

    8 条回复    2024-05-24 16:44:38 +08:00
    PTLin
        1
    PTLin  
       23 天前
    我看了下 4.19 的重传定时器 tcp_retransmit_timer ,没看到什么问题,倒不如说这段代码即使到 6.6 版本 syn 重传的变化也不大。
    请问你是通过什么方式观测 syn 发送的?并且确定没有 syncnt 对 sock 设置独立的 syn 超时次数吧?
    lysShub
        2
    lysShub  
       23 天前
    这个重试间隔时间是递增的吧,实际使用真会等那么旧吗?
    PTLin
        3
    PTLin  
       23 天前
    @lysShub 他这个版本的内核 rto 在 syn 重传是每次都翻倍
    AdmiralDollBug
        4
    AdmiralDollBug  
    OP
       23 天前
    @PTLin
    1. 抓包观测的
    2. 可以确定没有地方使用 setsockopt 手动改超时次数
    PTLin
        5
    PTLin  
       23 天前
    @AdmiralDollBug 你具体内核是 4.19.几
    AdmiralDollBug
        6
    AdmiralDollBug  
    OP
       23 天前
    @PTLin 4.19.181
    PTLin
        7
    PTLin  
       23 天前
    @AdmiralDollBug 问一下,你机器上没打开 fastopen 吧
    AdmiralDollBug
        8
    AdmiralDollBug  
    OP
       23 天前
    @PTLin 感觉应该不是这个影响的,在两种设备上它们的配置相同:
    ```
    [***@*** ~]# sysctl -a | grep fastopen
    net.ipv4.tcp_fastopen = 1
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   985 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:03 · PVG 03:03 · LAX 12:03 · JFK 15:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.