iperf TCP比UDP快得多,为什么?

iperf TCP比UDP快得多,为什么?,tcp,udp,iperf,Tcp,Udp,Iperf,我想知道为什么iperf在TCP中显示出比UDP更好的性能。这个问题与一个非常相似 UDP应该比TCP快得多,因为没有应答和拥塞检测。我在找一个解释 UDP(807 MBits/秒) TCP(26.7 Gbits/sec) 我怀疑您使用的是旧的iperf版本2.0.5,它已知UDP存在性能问题。我建议一个版本 iperf-v将给出该版本 注1:2.0.5中与此问题相关的主要问题是由于客户端线程和报告线程之间的互斥争用。增加了这两个线程之间的共享内存以解决此问题 注3:2.0.10中还有其他与性能

我想知道为什么iperf在TCP中显示出比UDP更好的性能。这个问题与一个非常相似

UDP应该比TCP快得多,因为没有应答和拥塞检测。我在找一个解释

UDP(807 MBits/秒) TCP(26.7 Gbits/sec)
我怀疑您使用的是旧的iperf版本2.0.5,它已知UDP存在性能问题。我建议一个版本

iperf-v将给出该版本

注1:2.0.5中与此问题相关的主要问题是由于客户端线程和报告线程之间的互斥争用。增加了这两个线程之间的共享内存以解决此问题

注3:2.0.10中还有其他与性能相关的增强功能

鲍勃

UDP应该比TCP快得多,因为没有应答和拥塞检测

这主要取决于你想做什么。如果您需要在Internet的两个端点之间传输文件,除非您在应用程序级别手动在UDP上实现可靠的传输机制,否则您将希望使用TCP


在我看来,使用iPerf进行纯粹的UDP带宽测试没有多大意义,因为本质上它只会导致iPerf尝试尽可能快地将数据包放到线路上。我建议使用它生成具有恒定数据速率的UDP流,以便大致测量网络中UDP流量(如VoIP)的情况。

UDP数据报的默认长度为1470字节。您可能需要使用-l参数增加长度。对于26Gb/s,我会尝试为您的-l参数设置50000,然后从那里向上或向下


您可能还需要在“-b10G”之间添加一个空格,以便它知道10G是用于-b参数的值。而且我相信大写字母G意味着千兆字节。通过TCP测试,您可以实现的最大带宽为26千兆位,远不及10GB。我将使您的-b参数值为26g,小写为g。

TCP有助于各种硬件卸载,如tso/gro,其中,由于UDP不适用于UDP数据报,因此这些卸载对UDP没有帮助

$ iperf -u -c 127.0.0.1 -b10G
------------------------------------------------------------
Client connecting to 127.0.0.1, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size:  208 KByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 52064 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   962 MBytes   807 Mbits/sec
[  3] Sent 686377 datagrams
[  3] Server Report:
[  3]  0.0-10.0 sec   960 MBytes   805 Mbits/sec   0.004 ms 1662/686376 (0.24%)
[  3]  0.0-10.0 sec  1 datagrams received out-of-order
$ iperf -c 127.0.0.1
------------------------------------------------------------
Client connecting to 127.0.0.1, TCP port 5001
TCP window size: 2.50 MByte (default)
------------------------------------------------------------
[  3] local 127.0.0.1 port 60712 connected with 127.0.0.1 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  31.1 GBytes  26.7 Gbits/sec