为什么多播 UDP 比单播 UDP 慢?

Ale*_*pov 6 networking performance multicast iperf udp

我有两台机器(两台机器都装有 Centos 7.3)通过 1G 交换机连接。当我用iperf它测量机器之间的 UDP 吞吐量时,它给出了大约 850 Mbit/s。但是,当我测量多播UDP 吞吐量时,它会导致 95 Mbit/s(几乎 10 倍的减速)。

造成这种情况的可能原因是什么?

单播的示例输出:

$ iperf -c 192.168.1.11 -u -b 9900m -f m -i 5 -t 30 -w 1m
------------------------------------------------------------
Client connecting to 192.168.1.11, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1.19 us (kalman adjust)
UDP buffer size: 2.00 MByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[  3] local 192.168.1.208 port 52738 connected with 192.168.1.11 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec   503 MBytes   845 Mbits/sec
[  3]  5.0-10.0 sec   507 MBytes   850 Mbits/sec
[  3] 10.0-15.0 sec   500 MBytes   839 Mbits/sec
[  3] 15.0-20.0 sec   499 MBytes   837 Mbits/sec
[  3] 20.0-25.0 sec   497 MBytes   834 Mbits/sec
[  3] 25.0-30.0 sec   501 MBytes   841 Mbits/sec
[  3]  0.0-30.0 sec  3008 MBytes   841 Mbits/sec
[  3] Sent 2145384 datagrams
[  3] Server Report:
[  3]  0.0-30.0 sec  3008 MBytes   841 Mbits/sec   0.406 ms    0/2145384 (0%)
Run Code Online (Sandbox Code Playgroud)

多播的示例输出:

$ iperf -c 239.255.1.3 -u -b 990m -f m -i 5 -t 30 -w 1m
------------------------------------------------------------
Client connecting to 239.255.1.3, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11.88 us (kalman adjust)
Setting multicast TTL to 1
UDP buffer size: 2.00 MByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[  3] local 192.168.1.208 port 53248 connected with 239.255.1.3 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 5.0 sec  57.2 MBytes  95.9 Mbits/sec
[  3]  5.0-10.0 sec  57.0 MBytes  95.6 Mbits/sec
[  3] 10.0-15.0 sec  56.4 MBytes  94.6 Mbits/sec
[  3] 15.0-20.0 sec  56.4 MBytes  94.6 Mbits/sec
[  3] 20.0-25.0 sec  56.4 MBytes  94.6 Mbits/sec
[  3] 25.0-30.0 sec  54.5 MBytes  91.4 Mbits/sec
[  3]  0.0-30.0 sec   338 MBytes  94.3 Mbits/sec
[  3] Sent 240946 datagrams
Run Code Online (Sandbox Code Playgroud)

一些观察:

  • 问题是对称的(iperf客户端和服务器的切换位置没有帮助)
  • 根据iptraf-ng发送方的流量已经很低。但是我不知道我是否可以相信它。

更新: 交换机:Netgear GS108(非托管)

Zac*_*c67 1

检查交换机是否使用流控。当任何链接端口无法跟上多播速率时,它会从源端口发出暂停帧,即。以100或 10 Mbit/s的速度链接。

您可能想要禁用测试的流量控制。我通常会禁用它,因为它很少有用,并且可能会导致队头阻塞,就像您的情况一样。TCP 做得更好,并且很少有以太网流控制有意义的情况(例如,在正确设计的 iSCSI SAN 中)。