Networking

為什麼多播 UDP 會比單播 UDP 慢?

  • March 15, 2022

我有兩台機器(兩台都有 Centos 7.3)通過 1G 交換機連接。當我用它測量機器之間的 UDP 吞吐量時,iperf它給出了大約 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%)

多播的範例輸出:

$ 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

一些觀察:

  • 問題是對稱的(iperf 客戶端和伺服器的切換位置沒有幫助)
  • 根據iptraf-ng發送方的流量已經很低。但是我不知道我是否可以信任它。

更新: 交換機:Netgear GS108(非託管)

檢查交換機是否使用流控。當任何連結埠無法跟上多播速率時,它將從源埠發出暫停幀,即。以100或 10 Mbit/s 的速度連結。

您可能想要禁用測試的流控制。我通常禁用它,因為它很少有用並且可能會導致行頭阻塞,就像你的情況一樣。TCP 的工作要好得多,而且很少有乙太網流控制有意義的情況(例如,在設計合理的 iSCSI SAN 中)。

您對 iPerf 的“-b”(頻寬)參數有所不同。我猜這會導致 IPG 報告的差異(包間間隙),這是您的多播和單播情況之間的 10 倍。

可疑地接近您報告的頻寬差異。所以這可能就是它的全部。

引用自:https://serverfault.com/questions/848226