700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iperf3 网络带宽测试工具

iperf3 网络带宽测试工具

时间:2022-10-24 01:58:00

相关推荐

iperf3 网络带宽测试工具

iperf3 网络带宽测试工具

iperf3 是一个 TCP, UDP, 和 SCTP (传输层协议)网络带宽测量工具.

简介

iperf 是一个用于主动测量 IP 网络上最大可用带宽的工具. 它支持与时间、协议和缓冲区相关的各种参数的调优. 对于每个测试,它报告测量的吞吐量/比特率(带宽), 丢包率和其他参数.

这个版本,有时被称为 iperf3, 是 NLANR/DAST 开发的原始版本的重新设计. iperf3 是一个从头开始的新实现, 目标是更小, 更简单的代码库, 以及可以在其他程序中使用的功能的库版本. iperf3 还具有许多在其他工具(如 nutctp 和 netperf)中可以找到的特性, 但这些特性在最初的 iperf 中是没有的. 例如, 这包括零复制模式和可选的JSON输出. 注意 iperf3 与原来的 iperf 不向后兼容.

iperf3 的主要工作开发是在 CentOS Linux, FreeBSD 和 macOS 上进行的. 目前, 这些是唯一得到官方支持的平台, 但是已经有一些关于 OpenBSD, NetBSD, Android, Solaris 和其他 Linux 发行版的成功报告.

iperf3 主要由 ESnet / Lawrence Berkeley National 实验室开发. 它是在 three-clause BSD 许可下发布的.

更多信息: /iperf

源代码和问题跟踪: /esnet/iperf

获得 iperf3

iperf3 的下载地址:

/pub/iperf/https://iperf.fr/

要查看最新的代码, 克隆 git 存储库:

/esnet/iperf.git

构建 iperf3

./configuremakemake install

使用

iperf3 包含一个列出所有命令行选项的手册页. 手册页是对各种标志和参数的最新参考.

有关命令行使用示例,请参见:

/performance-testing/network-troubleshooting-tools/iperf/

使用默认选项, iperf 旨在显示典型的精心设计的应用程序(Typical well designed application)性能.

典型的精心设计的应用程序(Typical well designed application) 意味着避免只对测试有效的人工增强(例如 splice() 将数据发送到 /dev/null). iperf 也有用于 “极端最佳情况” 优化的标志, 但必须显式地激活它们.

这些标志包括:

-Z, --zerocopy 使用 ‘zero copy’ sendfile() 的方式数据发送

-A, --affinity n/n,m 设置 CPU 亲和力

快速开始

接收端

# 参数 -s 表示 iperf3 以服务端模式运行.iperf3 -s

输出

-----------------------------------------------------------Server listening on 5201-----------------------------------------------------------

iperf3 服务监听在默认端口 5201

发送端

# 参数 -c 表示 iperf3 以客户端模式运行, 192.168.101.7 为服务端的IP地址.iperf3 -c 192.168.101.7

输出

[ 5] local 192.168.101.5 port 53506 connected to 192.168.101.7 port 5201[ ID] Interval TransferBitrate Retr Cwnd[ 5] 0.00-1.00 sec 91.2 MBytes 765 Mbits/sec 0 837 KBytes[ 5] 1.00-2.00 sec 86.2 MBytes 724 Mbits/sec 0 969 KBytes[ 5] 2.00-3.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes[ 5] 3.00-4.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes[ 5] 4.00-5.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes[ 5] 5.00-6.00 sec 88.8 MBytes 744 Mbits/sec 0 969 KBytes[ 5] 6.00-7.00 sec 87.5 MBytes 734 Mbits/sec 0 969 KBytes[ 5] 7.00-8.00 sec 87.5 MBytes 734 Mbits/sec 0 1.04 MBytes[ 5] 8.00-9.00 sec 87.5 MBytes 734 Mbits/sec 0 1.09 MBytes[ 5] 9.00-10.00 sec 87.5 MBytes 734 Mbits/sec 0 1.09 MBytes- - - - - - - - - - - - - - - - - - - - - - - - -[ ID] Interval TransferBitrate Retr[ 5] 0.00-10.00 sec 879 MBytes 737 Mbits/sec 0 sender[ 5] 0.00-10.00 sec 876 MBytes 735 Mbits/sec receiver

发送端使用端口 53506 连接到接收端的 5201 端口.

总共发送了879 MBytes数据, 发送端测得带宽为737 Mbits/sec.

接收端总共接收到876 MBytes数据, 接收端测得带宽为735 Mbits/sec.

常用参数

iperf3 参数分为服务端参数, 客户端参数, 通用参数.

参考文档

https://iperf.fr/iperf-doc.php

通用参数 (Server or Client)

-p, --port# 用于监听/连接的服务器端口, 默认值是 5201.-f, --format [kmgtKMGT] 输出报告的单位(默认值: m): Kbits, Mbits, Gbits, Tbits (小写为bit, 大写为 Byte)-i, --interval # 每次报告的间隔时间(单位: 秒, 默认值: 1)-F, --file name 指定 xmit/recv 的文件, 客户端模式下表示要发送的文件名, 服务端模式下表示要写入的文件名.-A, --affinity n/n,m设置 CPU 亲和性-B, --bind<host> 绑定到主机<host>, 这台机器的地址之一. 对于客户端, 这将设置出站网络接口.对于服务器, 这将设置传入接口.这只在具有多个网络接口的多主机上有用.-V, --verbose 更详细的输出-J, --json使用 JSON 格式输出--logfile f输出日志到文件--forceflush 在每个间隔强制 flush 输出--timestamps <format> 在每个输出行开始处添加一个时间戳(使用可选格式字符串按 strftime(3) 给定)-d, --debug打开调试输出-v, --version 显示版本信息并退出-h, --help显示此消息并退出

服务端专用参数 (Server specific)

-s, --server 以服务器模式运行-D, --daemon 将服务器作为守护进程运行-I, --pidfile file 写到 PID 文件-1, --one-off 处理一个客户端连接然后退出--server-bitrate-limit #[KMG][/#] 服务器的总比特率(带宽)限制 (默认值: 0 = 无限制)(可选的斜杠和数值(/#) 表示#秒间隔的平均值, 默认为5秒 )--rsa-private-key-path 用于解密认证凭证的 RSA 私钥路径--authorized-users-path 包含用户凭证的配置文件的路径

客户端专用参数 (Client specific)

-c, --client <host> 以客户端模式运行, 连接到 <host> (服务器地址)--sctp使用 SCTP 而不是 TCP-X, --xbind <name> 将 SCTP 关联绑定到链接--nstreams# SCTP 流的个数-u, --udp 使用 UDP 而不是 TCP--connect-timeout # 控制连接建立超时 (ms)-b, --bitrate #[KMG][/#] 目标比特率 bits/sec (0 表示无限制)(UDP: 默认为 1 Mbit/sec, TCP: 默认无限制)(可选的斜杠和数字, 数字表示突发模式的包数)--pacing-timer #[KMG]设置 pacing 时间,以微秒为单位(default 1000)--fq-rate #[KMG]启用基于套接字的 pacing bits/sec 的加权公平队列(fair-queuing)(只有 Linux 可用).-t, --time# 以秒为单位的传输时间(默认为10秒)-n, --bytes#[KMG] 传输的字节数(代替 -t)-k, --blockcount #[KMG] 要传输的块(包)数(代替 -t 或 -n)-l, --length #[KMG] 读取或写入缓冲区的长度(TCP默认: 128 KB, UDP: 动态调整或 1460)--cport <port> 绑定到特定的客户端端口 (TCP 和 UDP, default: 临时端口)-P, --parallel # 要运行的并行客户端流的数量(并行测试)-R, --reverse 以反向模式运行(服务器发送,客户端接收)--bidir 以双向模式运行.客户端和服务器同时发送和接收数据. -w, --window #[KMG] 设置窗口大小/套接字缓冲区大小-C, --congestion <algo> 设置 TCP 的拥塞控制算法 (只有: Linux 和 FreeBSD 支持)-M, --set-mss # 设置 TCP/SCTP 最大分段大小(MSS, MTU - 40字节)-N, --no-delay 设置 TCP/SCTP 无延迟,禁用 Nagle's 算法-4, --version4 只使用 IPv4-6, --version6 只使用 IPv6-S, --tos N设置 IP 服务类型(TOS, Type Of Service), 0-255.可以使用八进制和十六进制的常用前缀,例如 52, 064 和 0x34 都指定相同的值.--dscp N or --dscp val 设置 IP dscp 值, 0-63 或 象征值.数值可以用十进制指定,八进制和十六进制(参考 --tos).-L, --flowlabel N 配置IPv6流标签 (仅在 Linux 上支持)-Z, --zerocopy 使用 "零拷贝" 方法发送数据-O, --omit N 省略前 N 秒的测试(忽略 TCP 慢启动)-T, --title str 在每个输出行前加上这个字符串--extra-data str包含客户端和服务器 JSON 数据字符串--get-server-output 从服务器获取结果--udp-counters-64bit在 UDP 测试包中使用 64 位计数器(防止计数器溢出)--repeating-payload 在有效载荷中使用重复模式,而不是随机有效载荷(如 iperf2)--username认证用户名--rsa-public-key-path用于加密认证凭证的 RSA 公钥的路径

用例

例: TCP 带宽测试

服务端

iperf3 -s

客户端

iperf3 -c 192.168.101.7

例: UDP 带宽测试

服务端

iperf3 -s

客户端

# UDP 模式下 -b 默认为 1Mbps, 手动设置为 0 = 无限制.iperf3 -c 192.168.101.7 -u -b 0

例: 测试反向 TCP 带宽

服务端

iperf3 -s

客户端

iperf3 -c 192.168.101.7 -R

例: 测试双向 TCP 带宽

服务端

iperf3 -s

客户端

iperf3 -c 192.168.101.7 --bidir

[TX-C] 为客户端发送数据 对应 -> [RX-S] 为服务端接收数据

[RX-C] 为客户端接收数据 对应 <- [TX-S] 为服务端发送数据

参考

/iperf

/esnet/iperf

/pub/iperf/

https://iperf.fr/

/esnet/iperf.git

/performance-testing/network-troubleshooting-tools/iperf/

https://iperf.fr/iperf-doc.php

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。