首页/系统/Linux 内核与性能调优速查/net.ipv4.tcp_timestamps 时间戳选项
sysctl 内核参数72 条

net.ipv4.tcp_timestamps 时间戳选项

启用 TCP 时间戳用于更精细的 RTT 测量与 PAWS 防旧报文重放;tcp_tw_reuse 的复用判定也依赖它。

TCP 时间戳是什么

net.ipv4.tcp_timestamps 控制是否在 TCP 头部使用时间戳选项,默认开启。它有两个作用:一是让收发双方更精确地测量往返时延,从而更准确地估算重传超时;二是实现 PAWS 机制,用来识别并丢弃延迟到达或序号回绕后的旧报文。此外,TIME_WAIT 端口的安全复用判定也依赖时间戳,因此它与 net.ipv4.tcp_tw_reuse 是绑定关系。

基本信息

参数net.ipv4.tcp_timestamps
默认值1(开启)
核心作用精确 RTT 测量与 PAWS 旧报文防护
依赖关系启用 tcp_tw_reuse 时需保持开启,否则复用条件不成立
协商方式在三次握手中与对端协商,双方都支持才启用
观测方式ss -ti 显示连接的 rtt 等实时参数

典型使用场景

  • 理解端口复用前提:调整 tcp_tw_reuse 时先确认时间戳处于开启状态
  • 排查超时估算异常:关闭时间戳会让重传退避更保守,在高延迟链路上更明显
  • 兼容性验证:遇到老旧设备对时间戳处理异常时,临时关闭做对照实验
  • 协议分析:抓包时识别时间戳选项,判断对端是否支持该特性
  • 安全评审:时间戳会反映设备运行时间的量级,部分场景会评估这一信息暴露

查看与关联

查看与关联
sysctl net.ipv4.tcp_timestamps net.ipv4.tcp_tw_reuse   # 两者一起看
ss -ti | grep -m3 -E 'rtt|ts'                           # 观察连接的时间戳与 RTT
sysctl -w net.ipv4.tcp_timestamps=1                     # 恢复开启
nstat -az TcpExtPAWSEstab 2>/dev/null                   # PAWS 相关计数
sysctl net.ipv4.tcp_sack                                # 同为常见 TCP 选项,可一并核对

开关影响对照

状态影响注意点
开启(默认)RTT 测量精确,具备 PAWS 防护是安全复用 TIME_WAIT 端口的前提
关闭重传超时估算变粗,退避更保守与端口复用同开时复用条件不成立
对端不支持协商失败则该连接不使用该选项老旧设备环境可能出现,属正常协商结果
修改后仅对新建连接生效需要新建连接才能验证效果
关闭时间戳会连带失去延迟报文与序号回绕的防护,也失去更细的 RTT 采样能力。现代链路上没有充分理由不建议关闭,只有在遇到明确的对端兼容性问题时才临时关闭做对照验证。
与它对偶的旧参数 tcp_tw_recycle 已在较新内核中移除:它依赖时间戳丢弃看似过期的报文,在 NAT 后的客户端上会造成随机连接失败,属于应当废弃的方案,遗留脚本里不应再出现。

易错点

  • 关闭时间戳的同时启用端口复用:复用判定条件不成立,开关形同虚设
  • 把兼容性问题直接归因于时间戳:先用抓包确认协商情况,再做对照实验
  • 以为调整立刻影响存量连接:选项在握手时协商,只有新连接生效
  • 照抄旧内核时代的调优脚本:涉及已移除参数时会报错或静默无效
  • 忽略信息暴露这一维度:安全评审要求高的场景需要评估该选项的取舍

数据来源与参考

  • RFC 7323(Timestamp Option)
  • Linux 内核 Documentation/networking/ip-sysctl.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌