iperf 基于 c-s 架构,client 发包,server 收包。client 在发包前,需要启动 server,并且需要确认链路是通的。同时,假设 server 的 ip 是 192.168.10.30。
1、发送tcp报文
server 侧命令:
$ iperf -s
client 侧命令:
$ iperf -c 192.168.10.30 -i 1 -t 60
2、发送udp报文
server 侧命令:
$ iperf -u -s
client 侧命令:
$ iperf -u -c 192.168.10.30 -i 1 -t 600 -b 10G
3、小问题:
- 参数问题:-l, --len #[kmKM] length of buffer in bytes to read or write (Defaults: TCP=128K, v4 UDP=1470, v6 UDP=1450)。它不是包大小,而是用来进行读写的缓冲区的大小。不应该用它来指定包的大小,指定 -l 参数对性能会有影响。较小的 -l 参数值(小于默认值)会使性能降低,较大的 -l 参数值可能会使程序报错,具体情况可以自己测一下。
- 可以通过修改网卡的 mtu 来强制指定帧大小,命令为:ifconfig eth0 mtu 128,将 mtu 值设置为 128。