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