确切的时间戳设置在哪里?

时间:2016-06-06 13:48:46

标签: networking timestamp unix-timestamp nic timestamping

我需要知道在什么时间点设置了在NIC上接收或发送帧的时间戳。我已经搜索了很多,但我找不到任何东西,这对我很有帮助。 对于发送案例,它可以是例如:

  • 当第一位离开网线时
  • 当最后一位离开网线时
  • 当帧数据写入缓冲区时

我使用的是英特尔82541PI网卡。

1 个答案:

答案 0 :(得分:1)

我最近对此做了一些研究,但是如果我错了,Linux驱动程序编写者可能会添加更多详细信息或更正我。简短摘要:当采用时间戳取决于设备时。

例如,在使用PTP一步时间戳的Intel I210网卡上(即指定发送方PTP时间戳由NIC hw写入的UDP有效负载的偏移量的尚未普通的PTP模式),则hw时间戳在帧从MAC发送到PHY之前采用。在1 Gbit速度下,然后在PHY将以太网前导码连接到第一位之前需要大约178 ns。查看NIC的NIC数据表以获取更多信息,或查看Linux驱动程序源代码。对于I210,数据表可公开下载,名称为“Intel®EthernetController I210”  数据表'。另请注意,目前尚不清楚I210 Linux驱动程序(igb)是否支持一步时间戳。 “经典”方法是发送数据包,在套接字错误队列上接收hw时间戳,然后在后续数据包中发送hw时间戳,这称为2步hw tx时间戳,并且受到更多NIC的支持。另请注意,驱动程序可以补偿178 ns的MAC到PHY延迟。