我有两个虚拟机 ubuntu 使用 10G HP 网卡相互连接,现在我想在一个虚拟机上播放 .pcap 文件中的数据包并在另一台虚拟机上接收数据包,但有一个条件,它必须遵守以下中存在的时间戳vm接收端的pcap文件。
现在,为了使用 C 代码中的 libpcap 库根据数据包间隔验证数据包播放,我发送了第一个数据包,在 71.5us(vm1 系统时间)之后,当我使用 tcpdump 捕获 RX 数据包时,我发送了第二个数据包第二个虚拟机,第二个数据包到达时间为 495ns,而不是接近 71.5us,为什么会发生这种情况?
使用 tcpdump 的虚拟机接收端未满足时间戳要求
据我了解,您正在发送端重放捕获的数据包。那么,就无法直接控制另一端何时收到重放的数据包。
一般来说,内核并不与用户空间程序同步运行。当您将数据包交给内核以供其发送时,系统调用不会阻塞,直到数据包实际传输为止,更不用说直到它被成功接收和确认为止。出站数据包可能遭受不一致的发送延迟(尤其是微秒级)的原因有多种。还有一些原因导致另一端入站的数据包可能表现出不一致的延迟。
使用 tcpdump 的虚拟机接收端未满足时间戳要求
我看不出有任何理由相信会是这样。至少不是几十微秒的分辨率。