我正在使用 iperf 在两个虚拟机之间运行简单的带宽测试。我得到的 TCP 和 UDP 带宽读数非常不同,其中 UDP 带宽远低于 TCP。
TCP:
root@i-sahmed-node2: ~ # iperf -c 10.160.24.123 -------------------------------------------------- ---------- 客户端连接到 10.160.24.123,TCP 端口 5001 TCP 窗口大小:85.0 KByte(默认) -------------------------------------------------- ---------- [3]本地10.160.24.170端口48339与10.160.24.123端口5001连接 [ ID] 间隔传输带宽 [3] 0.0-10.0 秒 7.41 GB 6.36 GB/秒 root@i-sahmed-node2: ~ #
UDP:
root@i-sahmed-node2: ~ # iperf -c 10.160.24.123 -u -b 6g -------------------------------------------------- ---------- 客户端连接到10.160.24.123,UDP端口5001 发送 1470 字节数据报 UDP 缓冲区大小:208 KByte(默认) -------------------------------------------------- ---------- [3]本地10.160.24.170端口51922与10.160.24.123端口5001连接 [ ID] 间隔传输带宽 [3] 0.0-10.0 秒 962 MBytes 807 Mbits/秒 [3]发送了686548个数据报 [3]服务器报告: [ 3] 0.0-10.0 秒 630 MBytes 528 Mbits/秒 0.009 毫秒 237368/686547 (35%) [ 3] 0.0-10.0 秒 9 个无序接收的数据报 root@i-sahmed-node2: ~ #
我几乎每次都能重现这一点。由于我在虚拟机上运行,因此我无法直接访问底层硬件。有谁知道为什么会发生这种情况?
答案1
./iPerf
在UDP模式下必须跟踪每个UDP数据包的性能,而在TCP模式下,唯一的交互是最终的总结。
800Mb/秒大约是我见过的来宾虚拟机的限制。