sfnt-pingpong
是一个用于测试网络性能和延迟的工具,通常用于测量不同网络环境下的数据包传输性能、吞吐量、延迟等指标。
它通常是基于某种网络协议(如 TCP)执行“ping-pong”式的测试,即客户端和服务器之间相互发送数据包,衡量数据传输的性能。
1. 协议类型
- tcp:TCP 协议。
- udp:UDP 协议。
- pipe、unix_stream、unix_datagram:Unix 套接字和管道。
2. 常用选项
--port
:设置服务器的端口号。--sizes
:设置消息大小,可以是一个列表或者范围。--connect
:对于 UDP 套接字,使用connect()
进行连接。--spin
:在接收端启用旋转(即让接收端忙碌循环等待数据)。--muxer
:选择 IO 多路复用方式,可以是select
、poll
、epoll
或none
。--rtt
:报告往返时间(RTT,Round Trip Time)。--raw
:将原始结果输出到文件。--percentile
:报告百分位数据。--minmsg
和--maxmsg
:设置最小和最大消息大小。--minms
和--maxms
:设置每条消息的最小和最大时间(以毫秒为单位)。--miniter
和--maxiter
:设置计算结果的最小和最大迭代次数。--warmup
:设置暖机迭代次数和暖机时间。--mcast
:设置多播地址。--mcastintf
:设置多播接口。--ttl
:设置 IP 的 TTL(生存时间)值。3. 网络相关选项
--bind
:绑定套接字。--bindtodev
:将套接字绑定到特定的网络接口。--forkboth
:同时在客户端和服务器上运行。--timeout
:设置套接字的发送/接收超时。--affinity
:设置客户端和服务器的 CPU 亲和性。--v6only
:启用 IPV6_V6ONLY 套接字选项。--ipv4
和--ipv6
:强制使用 IPv4 或 IPv6。4. 标准选项
-?
或--help
:显示帮助信息。-q
或--quiet
:安静模式,不输出详细信息。-v
或--verbose
:详细模式,输出更多调试信息。--version
:打印版本号并退出。
常见命令:
tcp:
sfnt-pingpong --ipv4
sfnt-pingpong --affinity 6 tcp 10.1.1.7
sfnt-pingpong --affinity 1 --sizes 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536 tcp 100.1.1.7
udp:
sfnt-pingpong --ipv4
sfnt-pingpong --affinity 58 --sizes 0,1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768 udp 10.1.1.7