99,117
社区成员
一、现象
有时候 , 我们在用iperf测试流量时会发现sever端,收不到client发过来的包,没有任何输出。
二、可能原因
1、检查client侧发包的packet size是否大于server上网卡设置的MTU值,比如说,在 client端,使用iperf -c x.x.x.x -u -p xxx 命令发包,默认packet size是1470,加上udp和ip头的长度28, 等于1498;但是在server端, 网卡上的MTU如果小于1498,这时候,iperf -s -u -p xxx就没有任何的输出。一般不会出现这种情况,基本都是1500;
2、检查server端侧是否用了iptables,把udp端口发过来的包都drop掉了。可以通过“iptables -L -nv”查看是否丢包。
执行iptables -A INPUT -p udp --dport xxxx -j ACCEPT,加上测试端口放通规则,再次测试;
3、如果server侧监听端口,已有其他进程监听相同端口;比如监听9099,系统有进程已监听udp,这时iperf也监听9099,这是client端如果用测试udp就会出现无输出状况,这时可监听TCP 9099验证;
4、相关资料显示yum源自带的3.1.7版本有bug,处理UDP打流会出现乱序,数据不准问题;
5、wget https://downloads.es.net/pub/iperf/iperf-3.9.tar.gz
yum install gcc gcc++* -y
./configure
make
make install
cd ./src
mv /bin/iperf3 /bin/iperf3.1.7
cp ./iperf3 /bin/
【补充】:制作rpm包
yum install rpm-build rpmdevtools -y
rpmbuild --version //rpm 从 4.5.x 版本开始,将 rpmbuid 的默认工作路径移动到用户家目录下的 rpmbuild目录里,即 $HOME/rpmbuild
RPM version 4.11.3
6、UDP带宽测试:-w后的数字太大会报错
.\iperf3.exe -c 要测试的ip -p 9094 -b 100M -t 20 -w 20M