我有一个用作iperf3客户端的 linux机器,用 Broadcom BCM5721、1Gb 适配器(2 个端口,但只有 1 个用于测试)测试了 2 个配备相同的 Windows 2012 R2 服务器盒。所有机器都通过一个 1Gb 交换机连接。
在例如 300Mbit 测试 UDP
iperf3 -uZVc 192.168.30.161 -b300m -t5 --get-server-output -l8192
Run Code Online (Sandbox Code Playgroud)
导致发送的所有数据包丢失 14%(对于具有完全相同硬件但较旧的 NIC 驱动程序的其他服务器盒,丢失约为 2%),但即使在 50Mbit 时也会发生丢失,尽管不那么严重。使用等效设置的 TCP 性能:
iperf3 -ZVc 192.168.30.161 -t5 --get-server-output -l8192
Run Code Online (Sandbox Code Playgroud)
产生800Mbit以北的传输速度,没有报告重传。
服务器始终使用以下选项启动:
iperf3 -sB192.168.30.161
Run Code Online (Sandbox Code Playgroud)
谁的错?
编辑:
现在我尝试了另一个方向:Windows -> Linux。结果:丢包率始终为 0,而吞吐量最大约为
-l8192,即分片的 IP 数据包-l1472未分片的 …我测试了一条线路的链接质量iperf。测得的速度(UDP 端口 9005)为 96Mbps,这很好,因为两台服务器都以 100Mbps 的速度连接到互联网。另一方面,数据报丢失率显示为 3.3-3.7%,我发现这有点太多了。使用高速传输协议,我用tcpdump. 比我计算的丢包率 - 平均 0.25%。有没有人解释一下,这个巨大的差异可能来自哪里?您认为可接受的丢包率是多少?
如果我使用带有 -y C 和 -r 参数的 iperf 来测试双向传输并将其导出为 CSV。
我得到了一些输出,但问题是我不知道列名是什么。例如它显示了三行数据,但我不知道哪些对应于发送,哪些对应于接收。
我可以猜到其他列,但我宁愿确定。
我在任何地方都找不到这个文件!
iperf -c 192.168.3.2 -i 2
connect failed: Connection refused
3.2是另一台机器。我认为该端口可能被阻止。
我怎样才能使这项工作?
我想测试 UDP 连接iperf3,但不知道如何在 UDP 服务器模式下启动它。
iperf3 -s只打开一个 TCP 套接字:
root@srv ~# lsof -i -P | grep iperf3
iperf3 21030 root 3u IPv4 15606995 0t0 TCP *:5201 (LISTEN)
Run Code Online (Sandbox Code Playgroud) 我想使用Iperf在 Windows 上进行一些网络测试。sourceforge 上的最新版本似乎是 2.0.4。但是,它仅可用作要编译的源。我试图在谷歌上搜索预编译版本,但我只能找到一些指向 1.x 内容的链接。
诚然,我发现的 1.x 版本似乎确实有效,我可能会继续使用它而不会出现问题。但是我很想说我需要最新版本并设置构建 VM 并处理不可避免的编译问题听起来并不有趣。所以我想我会在这里问是否有人知道在哪里可以找到适用于 Windows 的预编译 Iperf 2.x 二进制文件。
我正在为 websockets 开发一个小型测试客户端。我正在使用 Ubuntu 11.04 。我已阅读 /sf/ask/28743151/并且我已完成以下操作
sudo sysctl -w net.ipv4.tcp_fin_timeout=10
sysctl -w net.ipv4.ip_local_port_range="1024 65535"
Run Code Online (Sandbox Code Playgroud)
据我了解,这些是用于入站连接而不是出站连接。
当我打字
ulimit -n
unlimited
Run Code Online (Sandbox Code Playgroud)
我的客户端和服务器运行在不同的机器上。即使有了上述所有内容,我也无法从一个盒子跨越 1000 个以上的连接。如果有不同的提示,请告诉我
回答 我通过输入 ulimit -a 来显示所有内核限制。
ulimit -n
unlimited
Run Code Online (Sandbox Code Playgroud)
尽管
ulimit -a
Run Code Online (Sandbox Code Playgroud)
将 nofile 的值返回为 1024。我在/etc/security/limits.conf文件中设置了以下格式的限制
<user> soft nofile 8192
<user> hard nofile 65000
Run Code Online (Sandbox Code Playgroud)
对用户有用的东西
我需要测试服务器与自身之间的网络吞吐量(这是一个很长的故事!)。
我喜欢 Iperf 并在整个网络中使用它,但是,我无法弄清楚如何将它绑定到单个接口并且只能通过它进行侦听。
从文档中,我认为这会起作用:iperf -B eth0 -s 将一个实例绑定到 eth0,然后在另一个会话中:iperf -B eth1 -c ip.of.eth.1。
这根本不起作用,实际上失败了。如果我使用 ip 而不是接口,它确实可以工作,但是,吞吐量为 29Gb/s - 所以,除非我有一个带有 30Gb/s 卡的超级服务器发生了什么神奇的事情,我猜我我什至没有接触网络,这只是在本地进行。
任何人都可以在这里帮助我,或者知道更好的测试/工具吗?
我目前正在检查不同 Docker 覆盖网络的性能(尤其是 UDP 吞吐量)。为此,我在与 Docker 覆盖网络连接的两台主机之间创建点对点连接,然后iperf在 Docker 容器内运行以检查吞吐量。我注意到每次我iperf作为客户端运行向iperf作为服务器运行的另一个容器发送数据时,客户端主机的CPU使用率达到100%。我通过运行在此处找到的以下命令获得了该结果:
top -bn1 | grep "Cpu(s)" | \
sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | \
awk '{print 100 - $1"%"}'
Run Code Online (Sandbox Code Playgroud)
因此,对我而言,吞吐量测试的限制因素似乎是主机的 CPU 容量,因为它以 100% 的速度运行并且无法产生更多流量来使网络连接饱和。我想知道这是否是一个iperf特定问题,所以我想使用不同的工具运行相同的测试,但不确定哪种替代方案最好。主机正在运行 Ubuntu。例如,我发现qperf,uperf和netpipe。
此外,更一般地说,我开始想知道吞吐量性能的瓶颈通常是什么。它不总是与CPU容量或链路带宽有关吗?哪些因素与覆盖网络没有直接关系。
这是否意味着应用程序(或覆盖网络)的吞吐量仅取决于它需要多少 CPU 周期来传输一定数量的数据以及它如何压缩它以适应它通过网络(如果这将是瓶颈)。
我正在尝试通过 iperf 测试 UDP 多播吞吐量,但它似乎没有从我的开发机器发送超过 10Mbit/s:
C:\> iperf -c 224.0.166.111 -u -T 1 -t 100 -i 1 -b 1000000000
------------------------------------------------------------
Client connecting to 224.0.166.111, UDP port 5001
Sending 1470 byte datagrams
Setting multicast TTL to 1
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[156] local 192.168.1.99 port 49693 connected with 224.0.166.111 port 5001
[ ID] Interval Transfer Bandwidth
[156] 0.0- 1.0 sec 1.22 MBytes 10.2 Mbits/sec
[156] 1.0- 2.0 sec 1.14 MBytes 9.57 Mbits/sec
[156] 2.0- 3.0 sec 1.14 MBytes …Run Code Online (Sandbox Code Playgroud)