I_l*_*unt 15 networking performance tcp udp network-protocols
我在两个虚拟机上使用 Iperf,当使用 TCP 时,我发现性能如下:
notroot@ubuntu:~$ iperf -s
------------------------------------------------------------
服务器监听 TCP 端口 5001 TCP 窗口大小:85.3 KB (默认)
------------------------------------------------------------
[4] 本地 192.168.1.29 端口 5001 连接 192.168.1.13 端口 52478
[ID] 间隔传输带宽
[4] -10.0 秒 2.22 GBytes 1.90 Gbits/秒
另一方面,UDP 很糟糕:
notroot@ubuntu:~$ iperf -s -u
------------------------------------------------------------
服务器侦听 UDP 端口 5001
接收 1470 字节数据报
UDP 缓冲区大小:208 KB(默认)
------------------------------------------------------------
[3] 本地 192.168.1.29 端口 5001 与 192.168.1.15 端口
[ ID33777777777传输带宽抖动丢失/总数据报
[3] 0.0-10.0 秒 1.25 MBytes 1.05 Mbits/sec 0.284 ms 0/ 893 (0%)
我正在阅读这篇文章
问题:
谢谢。
小智 52
iPerf 使用 UDP 测试的默认值 1Mb/sec。使用-biperf 客户端上的标志来指定要传输的 UDP 带宽,例如
iperf -c 10.79.175.219 -u -f m -b 100M
Run Code Online (Sandbox Code Playgroud)
正如 Nick 回答的那样,iPerf 对 UDP 使用默认值 1Mbit/sec。
为了在执行 UDP 测试时使用与 TCP 相同的带宽,只需提供-b值为 的标志0。
iperf3 --udp -b 0 -f m -c <server ip>
Run Code Online (Sandbox Code Playgroud)
形成文档,
-b, --bandwidth #[KMG][/#]
目标带宽(位/秒)(0表示无限制)
(UDP 默认 1 Mbit/秒,TCP 无限制)
(突发模式的可选斜杠和数据包计数)
-f在上面的命令中提供格式化类型(m如果是 MBits),
-f, --format [kmgKMG] 报告格式:Kbits、Mbits、KBytes、MBytes
Sim*_*mon -9
在这种情况下,问题是 iperf 的 UDP 默认速度非常慢(请参阅其他答案)。但对于不太极端的速度差异,请检查此问题serverfault.com上检查此问题。
引用自佩尔斯的回答
每个帧在发送时都会经过几个缓冲区:应用程序缓冲区、协议缓冲区、软件接口缓冲区和硬件接口缓冲区。当您开始通过发送高速数据对堆栈施加压力时,您将填满这些缓冲区并阻塞或丢失数据。您还拥有可能影响您的性能的及时性和轮询策略。例如,通过使用更大的缓冲区和更少的轮询频率,您可以获得更好的性能,同时牺牲延迟。
TCP 针对高速批量传输进行了优化,而 UDP 针对 Linux 内核中的低延迟进行了优化。这会影响缓冲区大小以及数据的轮询和移交方式。除此之外,您还经常需要将 TCP 负载卸载到硬件。与 UDP 相比,我预计 TCP 的性能要好得多。
请注意,通过 UDP 发送高速数据通常不是一个好主意,除非您实施自己的拥塞控制。TCP 保护您的网络免遭拥塞崩溃。当数据量较小或时效性要求较高时,请使用UDP。
| 归档时间: |
|
| 查看次数: |
31132 次 |
| 最近记录: |