Wireshark TS | Linux 系统对时问题

运维人员遇到Linux服务器跨区域对时问题,clockdiff命令在新业务区域失效。分析显示可能原因是思科N9K网关不支持IPv4Options中的标准时间戳,导致ICMP时间戳请求被丢弃。
摘要由CSDN通过智能技术生成

问题描述

节前业务运维同事提交了一个 case ,说是部署在新业务区域的 Linux 服务器和老业务区域的 Linux 服务器无法对时,脚本里使用的是 clockdiff 命令,无法正常返回结果,而在老业务区域两台服务器之间执行命令就正常,因为跨业务区域就有问题,所以怀疑是网络或是安全上有问题,而新老区域之间并无防火墙,排除掉,遂进入疑似网络故障分析。

问题分析

拿到这样一个问题,基于经验,可以简单梳理出以下处理步骤:

  1. 新老网络环境区别;
  2. clockdiff 实现原理;
  3. 故障复现和验证;
  4. 网络抓包分析。

新老网络环境区别

老业务区域网络环境为全思科设备,由于国产化替代趋势,新业务区域网络环境为全华为设备,仅此区别,也都是传统基础路由交换环境,配置上并无任何特殊之处。如果能排除服务器或操作系统的问题,那么问题就有可能出现在思科或华为网络设备上。

clockdiff 实现原理

clockdiff 命令用于测量两个主机之间的时钟差异,具体来说 clockdiff 是使用 ICMP 时间戳报文或使用 ICMP ECHO 的 IP 时间戳选项,以 1ms 精度测量两者之间的时钟差。

使用 ICMP 时间戳报文
clockdiff 10.1.1.1

使用 ICMP ECHO 的 IP 时间戳选项
clockdiff -o 10.1.1.1

Linux clockdiff 命令参考:https://linux.die.net/man/8/clockdiff

故障复现和验证

进一步和业务运维同事明确了故障环境和现象,补充了一点说是在老业务区域下成功的两台服务器是同一网段,且命令是加参数的 -o 。
基于上述情况,临时申请了几台新老环境下的虚机服务器,用于验证。验证方式很简单,clockdiff 命令执行的成功否类似网络中的通或者不通,故障很好复现,也很方便抓包排障。

测试环境和验证结果:

执行命令网络环境(思科)网络环境(华为)
同网段不同网段同网段不同网段
clockdiff成功成功成功成功
clockdiff -o成功失败成功成功

验证结果初步说明可能是思科区域核心网关交换机的问题,同网段二层交换机时正常,只有跨网段三层路由时有问题,而且只有加了参数 -o 也就是使用 IP 时间戳选项时有问题。

网络抓包分析

思科同网段

  1. 在虚机服务器上执行 clockdiff 成功的现象和抓包结果,如下:
[root@10-1-1-1 ~]$ clockdiff 10.1.1.2
.
host=10.1.1.2 rtt=750(187)ms/0ms delta=22ms/22ms Sun Jan 29 15:34:00 2023
[root@10-1-1-1 ~]$

clockdiff 命令 ICMP 数据包类型为 Timestamp request(Type 13)Timestamp reply (Type 14)

image.png

image.png

  1. 在虚机服务器上执行 clockdiff -o 成功的现象和抓包结果,如下:
[root@10-1-1-1 ~]$ clockdiff -o 10.1.1.2
..
host=10.1.1.2 rtt=562(280)ms/0ms delta=23ms/23ms Sun Jan 29 15:34:05 2023
[root@10-1-1-1 ~]$

clockdiff -o 命令 ICMP 数据包类型实际为普通的 Echo request(Type 8)Echo reply (Type 0),区别是在 IPv4 Options 上使用 Time Stamp。

image.png

image.png

思科不同网段

在虚机服务器上执行 clockdiff 成功和 clockdiff -o 失败的现象,如下:

[root@10-1-1-1 ~]$ clockdiff 10.2.1.1
.
host=10.2.1.1 rtt=750(187)ms/0ms delta=1ms/1ms Sun Jan 29 15:34:16 2023
[root@10-1-1-1 ~]$ clockdiff -o 10.2.1.1
10.2.1.1 is down
[root@10-1-1-1 ~]$ 

从抓包结果来说:

  1. clockdiff 命令不同网段执行没有区别, ICMP 数据包类型仍为 Timestamp request(Type 13)Timestamp reply (Type 14),结果成功;
  2. clockdiff -o 命令不同网段执行结果失败,源服务器抓包可以看到 ICMP Echo request (Type 8)发出,但是在目的服务器上并没有抓到任何请求包,因此判断为思科区域核心网关交换机丢包

image.png

问题总结

经测试环境实际验证,判断为思科区域核心网关交换机疑似不识别 IPv4 Options 里的 TimeStamp 字段,从而造成丢包。后向原厂开 case 沟通,确认说是 N9K 网关不支持 IPv4 Options 里的时间戳的 standard timestamps,导致丢弃,同时查询内部信息,目前暂没有计划支持,也没有相关的支持配置命令,Over。

参考:

  1. 在 linux.die.net clockdiff 命令参考页面,还有一句貌似相关的注释:Some nodes (Cisco) use non-standard timestamps, which is allowed by RFC, but makes timestamps mostly useless.
  2. RFC 791 Options: variable,The options may appear or not in datagrams. They must be implemented by all IP modules (host and gateways). What is optional is their transmission in any particular datagram, not their implementation.
  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值