首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用tcpdump捕获以太网适配器时钟同步

用tcpdump捕获以太网适配器时钟同步
EN

Stack Overflow用户
提问于 2015-10-06 13:14:59
回答 2查看 2.1K关注 0票数 3

设置和观察

我有一台配备英特尔i350 T2网卡的个人电脑,我想在这两个界面上同时使用tcpdump捕捉。两个接口都连接到一个100 Both集线器(sic!)它将来自外部业务源的各种流量“同时”转发到两个接口,因此我可以测量各自的以太网MACs所做时间戳的差异。

同时捕获:

代码语言:javascript
复制
user@rt:~$ sudo tcpdump -j adapter --time-stamp-precision nano -B 1048576 -i eth2 -w test_eth2.pcap
user@rt:~$ sudo tcpdump -j adapter --time-stamp-precision nano -B 1048576 -i eth3 -w test_eth3.pcap

之后,我将这两个文件合并在一起,比较时间戳:

代码语言:javascript
复制
user@rt:~$ mergecap -F nseclibpcap -w merged.pcap test_eth2.pcap test_eth3.pcap

然后,Wireshark向我展示,对于几个数据包,我得到了大约20-40 40nsec的重复帧的时间戳差异(这对我的应用程序来说很好,也足够了!)但是也有很多帧,当比较各自的重复时,会显示出几十微秒的差异。

环境

代码语言:javascript
复制
user@rt:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid

user@rt:~$ uname -r
3.19.0-28-generic

user@rt:~$ lscpu | grep "Model name"
Model name:            Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz

问题

  1. 如何/谁来同步适配器时钟到CLOCK_REALTIME (我猜)
  2. 这种同步多久发生一次。
  3. 没有太多的努力就有调整的余地吗?
  4. 是否可以使用例如phc2sys将所有适配器时钟同步到CLOCK_REALTIME?
  5. (4)是否会干扰(1)所做的机制?

寻求帮助或指出我的错误!

EN

回答 2

Stack Overflow用户

发布于 2015-10-07 18:58:41

快速地浏览一下igb_ethtool.c,您的NIC确实能够完成硬件时间戳。您观察到的抖动(20-40 is )就在预期的PHY抖动范围内,从同步到以太网时钟。(100 40ns的时钟为25 the或40 is。)

到目前为止看上去还不错,多亏了英特尔。没有多少NIC/驱动程序具有此功能。

现在最糟糕的是:我怀疑目前是否有任何东西是将CLOCK_REALTIME同步到NIC适配器时钟。这些时钟很可能是自由运转的,频率略有不同。这些振荡器通常被指定在50 5ppm左右,典型的漂移将在5 5ppm左右,这意味着它们每秒钟漂移约5us,随室温而变化。在使用纳秒精度时要记住这一点。如果您的系统使用NTP,您甚至可能会看到NTP漂移调整发生。

但好消息是,除非您真的需要绝对时间戳,否则您可能不需要同步它们。NIC支持硬件时间戳的主要原因可能是支持IEEE1588 PTP (精确时间协议)。如果你需要绝对的时间和亚微秒的精度,你应该看看这个协议和/或购买全球定位系统接收器。

如果您只需要相对的时间戳,您可以尝试-j adapter_unsynced而不是-j adapter,或者您可以尝试阻止NTP试图漂移-校正您的系统时钟。如果所有这些都失败了,您可以尝试启动linuxptp,即使您没有PTP网络,它也可能具有正确同步NIC和系统时间的能力。

最后..。你在使用集线器,这意味着以太网在半双工模式下运行,这意味着.碰撞。除非你的NIC绝对安静。理论上,我想这并不重要,因为您在两个NIC中观察到相同的碰撞,并且帧不会根据它们的路径不同而被延迟或排队。但是由于现在半双工非常罕见,所以NIC时间戳支持的实现可能没有考虑到这一点。这些实现中的典型错误是返回以前帧的时间戳,而不是当前框架的时间戳。

票数 2
EN

Stack Overflow用户

发布于 2015-11-06 08:21:29

英特尔i350数据表第7.9章可能会帮助您回答第三个问题。它提供了您可以在igb驱动程序中配置的PTP寄存器集。

http://www.intel.com/content/dam/www/public/us/en/documents/datasheets/ethernet-controller-i350-datasheet.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32970988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档