作为网络项目的一部分,我使用 VirtualBox 5.2.20 模拟了一个包含 7 个虚拟机的“微型互联网”。我的主机运行的是 Linux Mint 18.3,所有客户机都运行的是 Ubuntu Server 16.04 LTS。主机 CPU 是 Ryzen R7 1700。
其中两个客户机使用 Intel Pro/1000 MT Desktop(1Gb/s NIC)桥接到主机 NIC。作为基本测试,我决定做一个防火墙这两位客人之间的测试。
我使用的命令是iperf -c 192.168.1.50 -i 1。结果是:
------------------------------------------------------------
Client connecting to 192.168.1.50, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.35 port 58752 connected with 192.168.1.50 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 243 MBytes 2.04 Gbits/sec
[ 3] 1.0- 2.0 sec 236 MBytes 1.98 Gbits/sec
[ 3] 2.0- 3.0 sec 210 MBytes 1.76 Gbits/sec
[ 3] 3.0- 4.0 sec 207 MBytes 1.74 Gbits/sec
[ 3] 4.0- 5.0 sec 216 MBytes 1.81 Gbits/sec
[ 3] 5.0- 6.0 sec 202 MBytes 1.70 Gbits/sec
[ 3] 6.0- 7.0 sec 216 MBytes 1.81 Gbits/sec
[ 3] 7.0- 8.0 sec 210 MBytes 1.76 Gbits/sec
[ 3] 8.0- 9.0 sec 206 MBytes 1.72 Gbits/sec
[ 3] 9.0-10.0 sec 223 MBytes 1.87 Gbits/sec
[ 3] 0.0-10.0 sec 2.12 GBytes 1.82 Gbits/sec
在没有指定全双工的情况下,如何在 1Gbit 线路上实现超过 1Gbit/s 的吞吐量?防火墙? 这是 VirtualBox 的怪癖还是其他什么?
非常感谢。
答案1
VirtualBox 显然足够聪明,可以使用localhost
界面来实现客户机之间的通信。
不使用网络适配器的巧妙之处在于,在大多数情况下,这不起作用。只有高级路由器才支持环回,即从计算机通过路由器发送并返回到同一台计算机。大多数商用路由器都不支持此功能。
由于localhost
接口通过内存缓冲区而不是适配器工作,因此它能够实现更高的速度。 就您而言,它接近 2 Gbits/秒,高于物理网络适配器的容量。
有关详细信息,请参阅维基百科本地主机。