【发布时间】:2016-06-06 13:48:45
【问题描述】:
我需要知道在 NIC 上设置接收或发送帧的时间戳的确切时间。我已经搜索了很多,但我找不到任何东西,这对我很有帮助。 对于发送案例,例如:
- 当第一个 Bit 离开网线时
- 当最后一个 Bit 离开网线时
- 帧数据写入缓冲区时
我使用的是 Intel 82541PI 网卡。
【问题讨论】:
标签: networking timestamp unix-timestamp nic timestamping
我需要知道在 NIC 上设置接收或发送帧的时间戳的确切时间。我已经搜索了很多,但我找不到任何东西,这对我很有帮助。 对于发送案例,例如:
我使用的是 Intel 82541PI 网卡。
【问题讨论】:
标签: networking timestamp unix-timestamp nic timestamping
我最近对此进行了一些研究,但是例如如果我错了,Linux 驱动程序编写者可能会添加更多细节或纠正我。简短摘要:何时采用时间戳取决于设备。
例如在 Intel I210 NIC 上,当使用 PTP 单步时间戳(即,在 UDP 有效负载中指定偏移量的尚不常见的 PTP 模式,其中发送方 PTP 时间戳由 NIC 硬件写入),然后是硬件时间戳是在帧从 MAC 发送到 PHY 之前拍摄的。在 1 Gbit 速度下,大约需要 178 ns 直到以太网前导码被 PHY 放到线上之后的第一个比特。查看 NIC 数据表以获取更多信息,或查看 Linux 驱动程序源代码。对于 I210,数据表可公开下载,名称为“英特尔® 以太网控制器 I210 数据表'。另请注意,目前尚不清楚 I210 Linux 驱动程序 (igb) 是否支持单步时间戳。执行此操作的“经典”方式是发送数据包,在套接字错误队列上接收硬件时间戳,然后在后续数据包中发送硬件时间戳,这称为 2 步硬件 tx 时间戳,并且受到更多 NIC 的支持。另请注意,驱动程序会补偿 178 ns MAC-to-PHY 延迟。
【讨论】: