使用iperf测试网络性能
Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络性能测试工具。
可以用来测试网络节点间(也包括回环)TCP或UDP连接的性能,包括带宽、抖动以及丢包率,
其中抖动和丢包率适应于UDP测试,而带宽测试适应于TCP和UDP。
TCP支持:
- Measure bandwidth
- Report MSS/MTU size and observed read sizes.
- Support for TCP window size via socket buffers.
- Multi-threaded if pthreads or Win32 threads are available. Client and server can have multiple simultaneous connections.
UDP支持:
- Client can create UDP streams of specified bandwidth.
- Measure packet loss
- Measure delay jitter
- Multicast capable
- Multi-threaded if pthreads are available. Client and server can have multiple simultaneous connections.
所以,服务端通过-u
来区分监听协议,而TCP协议不能计算时延与丢包率,而且不能指定发送带宽。
服务端
1 | $ iperf3 -s |
客户端
1 | $ iperf3 -c IP |
需要使用TCP来测试带宽的时候,需要指定TCP的窗口大小,
窗口的大小即网络通道的容量 capacity = bandwidth x round-trip-time
其中round-trip-time可以通过ping来得到。
参数
1 | -c --client 标记客户端 |