spi*_*ans 2 networking virtual-machines virtualbox
我正在开发一个应用程序,它需要涉及各种事件的确切时间戳的复杂测试。
例如,假设我们有两个主机:h1 和 h2。
现在,如果我在 h1 上运行 tcpdump,我会得到一个相关的时间戳。h2 也是如此。
现在,假设 h1 向 h2 发送一个 ICMP 数据包。据我所知,数据包应该在离开 h1 时记录在 h1 的 tcpdump 上,当 h2 接收到相同的数据时记录在 h2 的 tcpdump 上。
现在我正在使用 VirtualBox 将主机模拟为 Ubuntu 机器。
所以我有两个问题:
一,我对 tcpdump 的假设是否正确?
其次,我能否绝对确定两个虚拟机的中心时间相同。我知道这在物理网络中是不可能的。但是,由于虚拟机共享一个公共系统,我想知道是否也是如此。如果没有,有没有其他方法可以确保在测试时同步?
[结束语]:对于那些可能好奇的人,VirtualBox 配置了 NTP,如果您有类似的任务,设置 NTP 可以从您的待办事项列表中删除。
你的假设tcpdump
是正确的。一个tcpdump
捕获抓住原始数据包。
因此,您在处理转储时可以访问的时间戳值是数据包中的时间戳值(由发送系统输入)。
如果您在接收器上记录数据包,您的日志可以包含两个时间戳(来自数据包的发送方时间戳,以及来自本地时钟的接收方时间戳)。
早在 1981 年,他们就在 RFC 781 中详细讨论了这一点。
关于时间同步,答案总是NTP。
VM 可以将虚拟硬件时钟与主机关于时间的想法同步,但操作系统可能不会痴迷于检查硬件时钟。现代操作系统(至少是 unix/linux)保持一个半独立于硬件时钟的操作系统时间,并且偶尔会被写回它。
NTP 规范了系统“现在几点”的想法,并考虑了硬件时钟/定时子系统中的自然漂移。将您的 VM 时钟与 NTP 同步是确保它们在现实世界中实际可行的时间范围内一致的最佳方式。
虚拟机不应该用于任何时间紧迫的事情* - 虚拟机真的很糟糕。即使是最好的商业管理程序也会根据系统工作负载和其他因素获得或失去时间。VirtualBox 是工作站级虚拟化,更容易受到此类问题的影响。
我见过没有 NTP 或其他计时助手的 VirtualBox VM 在我的工作站上每小时损失一分钟。这绝对超出了我可接受的准确度范围。
归档时间: |
|
查看次数: |
386 次 |
最近记录: |