我用iperf
testing了它的链路质量。 测量的速度(UDP端口9005)是96Mbps,这很好,因为两台服务器都连接到100Mbps的互联网。 另一方面,数据报丢失率显示为3.3-3.7%,我发现有点太多了。 使用高速传输协议,我用tcpdump
logging了两端的数据包。 比我计算的丢包率 – 平均为0.25%。 有没有人有一个解释,这个巨大的差异可能来自哪里? 您认为什么是可接受的数据包丢失?
由于CPU无法跟上,我在UDP模式下经历了iPerf的重大数据丢失。 出于某种原因,使用UDP的iPerf似乎比使用TCP的iPerf更加占用CPU资源。 当您将iPerf设置为一半时,您会遇到同样的损失百分比吗?
要回答第二个问题:有多less数据包丢失是可以接受的,这取决于您正在运行的应用程序,您获得了多lessstream量。 真的,如果你的带宽限制不应该有任何损失。 对于大多数情况下,我可能不会抱怨太多的.25%,但如果你的速度非常高,那么这仍然是一个很大的损失。
[编辑1]我对这个主题有一些其他想法:
那么,与TCP有机制来最大限度地利用一个stream,与UDP没有。 因此,每个应用程序都必须创build自己的机制,因此每个应用程序可能都使用不同的方法来完成。 Iperf可能会允许更多的数据包丢失,因为试图达到最大可用带宽而不关心信息是否被接收。 另一个应用程序可能会尝试不丢失很多数据包,并将数据包速率降低到连接中的可用吞吐量。
你使用tcpdump来检查使用iPerf确保你使用tcpdump计算出的数据包丢失与iperf匹配时的数据包丢失吗?
您可能会发现您的测量方法不具有可比性。
iperf是否会自动丢弃与UDP序列无关的数据包? 您可能正在查看连接上的一点点抖动。