来自发送方的 iperf3 udp 静默间隙

如何解决来自发送方的 iperf3 udp 静默间隙

我使用 iperf3.7 来测量最大 4 Gbps 左右的系统的吞吐量。

iperf3 服务器在 Linux 机器上运行。 我使用以下标志在客户端使用此命令启动流量, -R 选项让服务器发送到客户端: iperf3 -c 32.0.161.84 -u -l 1360 -b 550M -P 8 -w 16M -R -t 3000

大多数时候一切都按预期工作,我收到大约 4 Gbps。 但在某些情况下,例如 10 次迭代中的 1-2 次,我收到的吞吐量低于预期。低多少似乎是随机的,可能是 2 Gbps 或 3 或 3.5。 当我遇到低吞吐量场景时,它通常会在几分钟内保持低电平。有时,几分钟后它可以自行恢复到最大速度,有时它会长时间保持低速。 当我遇到这种低吞吐量场景时,如果停止流量并重新开始,我可以获得一个很好的吞吐量场景,在这种情况下,客户端收到了一个新的 IP 地址,因为它在每次迭代时动态分配给客户端。

查看发送服务器端的打印输出,它说它正在发送 8x550M,我还检查了 ifstat,它也显示它发送了 4400 Mbps。

仍然接收方接收较低的速度。

将运行 iperf 客户端(发送端)的机器的以太网卡镜像到 Wireshark 显示不时有 10.8 毫秒的静间隙,这可以解释接收到的较低速率。

wireshark capture

在这个使用wireshark的例子中,流量是4.4 Gbps,然后突然之间,似乎有10.8 ms的静间隙,我们丢失了4486个1360字节的ip帧。 这可以解释为什么流量在一段时间内下降到 3 Gbps。

有谁知道为什么会发生这种情况,以及它是否是一个可能在更高版本(3.8 或 3.9)中修复的已知问题? 任何额外的标志可能有助于避免这种情况? 我尝试在不同的Linux机器上运行服务器,但出现同样的问题,所以我认为不是机器本身的问题。

BR 尼克拉斯

解决方法

我们将日志记录技术更改为一种称为 net-sniff 的技术,然后当吞吐量降低时,我们再也看不到差距了。所以我最初提到的差距并不是真正的差距,更可能是日志记录中的错误。 因此,我们认为 iperf3 可以正常工作,并认为较低的吞吐量是由于网络中的某些原因造成的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?