更精准的时延:使用软件时间戳和硬件时间戳

更精准的时延:使用软件时间戳和硬件时间戳

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

本文介绍了使用软硬件时间戳计算网络时延的方法,通过socket选项获取时间戳并演示了mping工具的改造。同时,作者还提供了计算时延的代码示例。

🎯

关键要点

  • 本文介绍了使用软硬件时间戳计算网络时延的方法。
  • mping工具使用新的icmp库实现探测和压测功能,并计算往返时延指标(RTT)。
  • 应用层读取时间戳计算延时可能导致误差,特别是在物理网络传输中。
  • 光信号在光纤中的传输速度约为20万公里/秒,理论上每100公里的物理网络时延约为0.5毫秒。
  • 实际网络时延受到多种因素影响,如路由器处理带来的转发时延。
  • 软件时间戳和硬件时间戳可以更精确地计算包的发送和接收时间戳。
  • 软件时间戳精度较低,通常只能达到毫秒级,而硬件时间戳可以达到微秒或纳秒级精度。
  • Linux内核对软硬件时间戳的支持是渐进的,软件时间戳自2.6内核开始支持,硬件时间戳自3.5内核开始引入PTP支持。
  • mping工具改造后,优先使用硬件时间戳,其次使用软件时间戳,最后使用应用程序的时间戳。
  • 通过设置socket选项,可以开启软硬件时间戳的支持。
  • mping示例演示了如何使用软硬件时间戳精确计算时延,代码可在github上获取。
➡️

继续阅读