带宽:计算机网络的带宽是指网络可通过的最高数据率,即每秒多少比特(常用的单位是bps(bit per second))。带宽通常用bps表示,表示每秒多少bit;描述带宽时常常把“比特/秒”省略。例如,带宽是100M,实际上是100Mbps,这里的Mbps是指兆位/s。
吞吐量:PPS,全称是 Packet Per Second(包 / 秒),表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力。考验转发能力一般以能够处理最小包长来衡量,对于以太网最小包为64字节,加上帧开销20字节,因此最小包为84字节。线速转发:端口在满负载的情况下,对帧进行无差错的转发称为线速。
往返时延:RTT (Round-Trip Time),往返时延。 在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认),总共经历的时延。
抖动:网络抖动是指最大延迟与最小延迟的时间差,比如你访问一个网站的最大延迟是10ms,最小延迟为5ms,那么网络抖动就是5ms;抖动可以用来评价网络的稳定性,抖动越小,网络越稳定;
丢包:简单来说丢包就是指一个或多个数据包的数据无法通过网络到达目的地,接收端如果发现数据丢失,会根据队列序号向发送端发出请求,进行丢包重传。丢包率是指测试中所丢失数据包数量占所发送数据包的比率。比如发送100个数据包,丢失一个数据包,那么丢包率就是1%。
Iperf3 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。 iperf3 有客户端 和 服务端之别: 服务端:收包,使用 -s 参数指定, iperf3 -s 客户端:发包,使用 -c xx.xx.xx.xx 来指定要往哪个服务端发包, -u:发送 UDP 包,仅客户端可用,服务端默认 tcp udp 都可以接收 -b:指定发送速率(比如 100M),发送端不受限速影响,如果有限速,也只是接收端有影响 -P 队列数 -p:后接服务端监听的端口 -i:设置带宽报告的时间间隔,单位为秒 -t:设置测试的时长,单位为秒
Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。 -H host :指定远端运行netserver的server IP地址。 -l testlen:指定测试的时间长度(秒) -t testname:指定进行的测试类型,包括TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR -s size 设置本地系统的socket发送与接收缓冲大小 -S size 设置远端系统的socket发送与接收缓冲大小 -m size 设置本地系统发送测试分组的大小 -M size 设置远端系统接收测试分组的大小 -D 对本地与远端系统的socket设置TCP_NODELAY选项
通常使用dpdk-testpmd测试pps,以获得更好地性能 1)开启大页内存,开启iommu,重启 2)绑定驱动 modprobe vfio-pci ifconfig ens3 down dpdk-devbind.py -b vfio-pci 12:00.0
3)发送端 dpdk-testpmd -l 0-8 -n 4 -a 12:00.0 --file-prefix pg0 -- -i --rxq=16 --txq=16 --rxd=4096 --txd=4096 --txpkts=64 --burst=512 --mbcache=512 --mbuf-size=2048 --nb-cores=8 --forward-mode=txonly --txonly-multi-flow 4)接收端 dpdk-testpmd -l 0-7 -n 16 -a 0000:12:00.0 --file-prefix pg1 -- -i --rxq=16 --txq=16 --rxd=1024 --txd=1024 --mbcache=512 --txpkts=64 --burst=512 --mbuf-size=4096 --nb-cores=7 --forward-mode=5tswap 常用模式有rxonly/io/txonly/macswap/5tswap