是否有可能造成人为的网络丢包或者延迟?

是否有可能造成人为的网络丢包或者延迟?

我正在尝试重现已部署应用程序上的一些问题,其中 MSSQL 服务器和客户端在两台单独的计算机上运行。我认为两台计算机之间可能存在网络问题,因此我想尝试在两台 Hyper-V 虚拟机(在同一虚拟服务器上)上重现这些情况。当然,这些虚拟机的网络是“本地”的,因此实际上与实时环境中的情况相差甚远。

是否有可以在虚拟机上运行的程序会降低网络性能?或者还有其他解决方法?例如,重现这些情况的一种方法可能是在地理位置分散的单独 Hyper-V 服务器上运行虚拟机(因此 SQL 流量会通过 VPN 等传输)——但我认为这有点冗长。一定有更简单的方法。

答案1

在 Linux 上您可以使用 netem,在 FreeBSD 上您可以使用 dummynet。

这两种解决方案都不适用于使用 Hyper-V 的单台 Windows 机器。我搜索了一下,但找不到任何兼容 Windows Hyper-V 的网络模拟器。

您可以将两个虚拟机放在两台不同的物理机上,并在它们之间放置一个 Linux 或 FreeBSD 盒。但看起来似乎没有任何解决方案可以在单个虚拟机主机上完全满足您的要求。

答案2

我的朋友在 ESX 中使用 dummynet 和 FreeBSD 设置了一些东西。我知道它不是 Hyper-V,但您可以修改它以适合您。 http://apocryph.org/2009/05/15/simulating-slow-wan-links-with-dummynet-and-vmware-esx/

答案3

Dummynet 应该适合你: http://info.iet.unipi.it/~luigi/dummynet/

它在 NIC 上安装一个服务,然后通过命令行设置参数。

我曾经用它在 Windows XP 上测试通过高延迟或低带宽链接进行的网站访问,效果非常好。

答案4

听起来你需要网状结构

您可以插入数据包丢失、延迟、抖动等

相关内容