1

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

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

我正在使用英特尔 82541PI 网卡。

4

1 回答 1

1

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

例如,在 Intel I210 NIC 上,当使用 PTP 单步时间戳(即在 UDP 有效负载中指定偏移量的尚不常见的 PTP 模式,其中发送方 PTP 时间戳由 NIC 硬件写入)时,硬件时间戳是正确的在帧从 MAC 发送到 PHY 之前。在 1 Gbit 速度下,大约需要 178 ns 直到以太网前导码被 PHY 放到线上之后的第一个比特。查看 NIC 数据表以获取更多信息,或查看 Linux 驱动程序源代码。对于 I210,数据表可公开下载,名称为“英特尔® 以太网控制器 I210 数据表”。另请注意,目前尚不清楚 I210 Linux 驱动程序 (igb) 是否支持单步时间戳。这样做的“经典”方式是发送一个数据包,在套接字错误队列上接收硬件时间戳,然后在后续数据包中发送硬件时间戳,这称为 2-step hw tx 时间戳,并得到更多 NIC 的支持。另请注意,驱动程序会补偿 178 ns MAC-to-PHY 延迟。

于 2016-06-28T14:08:03.580 回答