我正在尝试从我的机器 192.168.1.50 到另一台机器 192.168.1.220 进行 iperf 测试。 以下测试将给出错误“错误 - 套接字缓冲区大小设置不正确”:
iperf3 -c 192.168.1.220 -w 512K
当 -w 设置为 416k 时,此命令将起作用,任何更高的值都会显示该错误。 我做了一些探查,我认为这是由于我的 tcp 会话窗口太小,但似乎并非如此。
这些是一些 sysctl 值:
net.core.rmem_max = 16777216
net.core.rmem_default = 212992
net.core.wmem_max = 212992
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
然而,我能够在另一个方向成功地进行这个测试。 所以我相信这与这台机器上的某种设置有关,我不知道它可能是什么。
任何帮助将不胜感激。
谢谢!
iperf3 版本:
iperf 3.1.7
Linux 3450asterisk 3.10.0-123.9.3.el7.x86_64 #1 SMP 星期四 11 月 6 日 15:06:03 UTC 2014 x86_64
可用的可选功能:CPU 亲和性设置、IPv6 流标签、TCP 拥塞算法设置、sendfile / zerocopy、socket pacing
硬件:
板载 NIC,8 GB 内存,至强 E3-1271
预期行为
iperf 应该能够处理该窗口大小
实际行为
当窗口大小大于 416k 时,iperf 抛出错误
我以为我已经写了一个回应,但显然我没有。
您可能想尝试增加net.core.wmem_max
的大小,它似乎仍然具有相当低的/默认值。
可以在此处找到有关调整 Linux 内核的其他一些技巧(包括设置套接字缓冲区大小):
http://fasterdata.es.net/host-tuning/linux/
最后,您可能需要考虑使用较新版本的 iperf3(在撰写本文时,iperf 3.6 是最新版本)。 如果我没记错的话,一些较新的版本在套接字缓冲区设置代码中进行了一些修复,虽然是临时的,但我记得它们是否直接适用于这个问题。
这是一个很好的阅读,谢谢。
关闭此问题,因为我认为问题已解决。
最有用的评论
我以为我已经写了一个回应,但显然我没有。
您可能想尝试增加
net.core.wmem_max
的大小,它似乎仍然具有相当低的/默认值。可以在此处找到有关调整 Linux 内核的其他一些技巧(包括设置套接字缓冲区大小):
http://fasterdata.es.net/host-tuning/linux/
最后,您可能需要考虑使用较新版本的 iperf3(在撰写本文时,iperf 3.6 是最新版本)。 如果我没记错的话,一些较新的版本在套接字缓冲区设置代码中进行了一些修复,虽然是临时的,但我记得它们是否直接适用于这个问题。