当前位置: 首页 > news >正文

iperf3使用方法

iperf 是一款非常强大的开源网络性能测试工具,用于测量 TCP 和 UDP 带宽、延迟、抖动和丢包率。“打流”通常指的是进行持续、大流量的网络传输测试,以评估网络的吞吐量、稳定性和承载能力。

以下是 iperf 用于打流(主要是测量最大带宽)的常用命令详解,分为服务端客户端两部分:


一、服务端 (Server) - 接收数据

在需要接收流量的机器上运行。通常只需指定监听端口。

  1. 基本命令:

    
    iperf3 -s
    • -s: 以服务器模式运行。

    • 默认端口: 5201。

  2. 指定监听端口:

    
    iperf3 -s -p <端口号>
    • -p <端口号>: 指定服务器监听的端口(例如 -p 5001)。如果防火墙开启,需确保该端口开放。

  3. 输出更详细的信息:

    
    iperf3 -s -V
    
    • -V: 输出更详细的调试/运行时信息。

  4. 以守护进程/后台模式运行 (Linux):

    
    iperf3 -s -D
    -D: 作为守护进程在后台运行。

    二、客户端 (Client) - 发送数据 (打流)

    在需要发送流量的机器上运行。指定服务端的 IP 地址和端口。

    通用参数
    • -c <服务器IP地址>: 指定 iperf 服务器的 IP 地址或主机名 (必需)。例如 -c 192.168.1.100

    • -p <端口号>: 指定连接服务器的端口(默认为 5201)。例如 -p 5001

    • -t <秒数>: 设置测试的持续时间(单位:秒)。例如 -t 60 表示测试 60 秒。这是打流最关键的参数之一,确保测试持续足够长时间以反映稳定性能。

    • -i <秒数>: 设置定期带宽报告的间隔时间(单位:秒)。例如 -i 5 表示每 5 秒输出一次结果。

    • -V: 输出更详细的调试/运行时信息。

    • --logfile <文件名>: 将输出重定向到指定的日志文件。例如 --logfile iperf.log

    • -P <连接数>: 指定客户端到服务器使用的并行数据流数量。例如 -P 4 表示同时建立 4 个连接进行测试。这是突破单 TCP 流限制、测出接近物理链路最大带宽的关键参数! (通常需要结合服务端的 -s 使用)

    • -R / --reverse反向模式。默认是客户端发送数据到服务器。使用 -R 后,客户端将接收数据,服务器将发送数据。用于测试上行/下行的方向转换,无需重启服务端。

    TCP 测试参数 (默认协议)
    • -w <大小>[K|M]: 设置 TCP 窗口大小 (Socket Buffer Size)。例如 -w 256K 或 -w 2M调整窗口大小对长距离、高带宽链路(高 BDP 网络)的性能至关重要。 理想值应 >= 带宽(Bits/s) * 往返延迟(s) / 8。

    • -M <MTU大小>: 尝试设置 TCP MSS (Maximum Segment Size) 值。通常不需要手动设置,系统会自动协商。

    • -N: 设置 TCP no delay 选项 (禁用 Nagle 算法)。对于小数据包的低延迟测试可能有用,但对最大带宽测试影响不大。

    UDP 测试参数
    • -u: 使用 UDP 协议进行测试 (默认是 TCP)。

    • -b <带宽>[K|M|G]设置目标带宽速率。这是 UDP 打流最核心的参数! 例如:

      • -b 100M: 目标 100 Mbps。

      • -b 1G: 目标 1 Gbps。

      • -b 0: (iperf2 常用) 表示“尽可能快”。iperf3 中 UDP 默认行为就是尽可能快。iperf3 更推荐显式指定 -b 值。

      • 重要: 不指定 -b 时,UDP 默认会尝试以线路速度发送,可能超过网络承载能力导致大量丢包。建议根据网络预期能力设置一个目标值。

    • -l <长度>[K|M]: 设置读写缓冲区的长度 (UDP 包的大小)。例如 -l 1400 (字节) 或 -l 1K (1024 字节)。调整包大小可以模拟不同应用场景 (如 VoIP 用小包,视频流用大包),并影响 CPU 负载和丢包率。

    • --get-server-output: 在客户端结束时,从服务器获取并显示额外的结果报告 (包含服务端视角的丢包统计等,对 UDP 尤其重要)。


    三、常用打流命令示例

    示例 1:基本 TCP 带宽测试 (30秒)
    • 服务端:

      
      iperf3 -s -p 5001

    • 客户端:

      
      iperf3 -c 192.168.1.100 -p 5001 -t 30 -i 5

    示例 2:多线程 TCP 测试 (4个并行流,60秒) - 突破单流瓶颈
    • 服务端:

      
      iperf3 -s -p 5001

    • 客户端:

      
      iperf3 -c 192.168.1.100 -p 5001 -t 60 -P 4

    示例 3:UDP 测试 (目标 500Mbps, 包长 1400字节,60秒)
    • 服务端:

      
      iperf3 -s -p 5001

    • 客户端:

      
      iperf3 -c 192.168.1.100 -p 5001 -u -b 500M -l 1400 -t 60 -i 5 --get-server-output
      --get-server-output 对于查看服务端报告的 UDP 丢包率和抖动至关重要。
    示例 4:反向测试 (测试服务器到客户端的带宽)
    • 服务端 (启动监听):

      
      iperf3 -s -p 5001

    • 客户端 (告诉服务器向自己发送数据):

      
      iperf3 -c 192.168.1.100 -p 5001 -t 30 -i 5 -R  # 测试下行带宽
      # 或者测试多线程下行
      iperf3 -c 192.168.1.100 -p 5001 -t 30 -P 4 -R

    示例 5:设置 TCP 窗口大小 (256KB)
    • 客户端:

      
      iperf3 -c 192.168.1.100 -p 5001 -t 30 -w 256K


    四、结果解读关键点

    1. [ ID] Interval: 测试的时间段。

    2. Transfer: 在该时间段内传输的数据总量。

    3. Bitrate: 该时间段内的平均带宽。这是衡量网络吞吐量的核心指标。单位通常是 bits/sec (如 Gbits/secMbits/sec)。

    4. Retr: (TCP) 重传次数。过多重传可能指示网络拥塞或不稳定。

    5. Cwnd: (TCP) 拥塞窗口大小 (Congestion Window)。动态变化反映 TCP 的拥塞控制行为。

    6. Jitter: (UDP) 抖动的平均值。表示数据包到达时间间隔的变化量。单位是毫秒 (ms)。值越小,网络越稳定(对实时音视频很重要)。

    7. Lost/Total Datagrams: (UDP) 丢失的数据包数量 / 总发送数据包数量。

    8. Lost %: (UDP) 数据包丢失的百分比。是衡量网络可靠性和拥塞的关键指标。理想情况下应为 0% 或非常低。

    9. Sender/Receiver: 在反向模式 (-R) 或使用 --get-server-output 时,注意区分结果是从发送端还是接收端统计的。接收端报告的带宽更准确(不受发送端本地性能瓶颈影响),发送端报告的丢包率更准确(知道发了多少包)。


    五、重要注意事项

    1. 防火墙: 确保服务端监听端口在服务端机器的防火墙和沿途网络设备(如果有)上是放行的。

    2. CPU 性能: 在极高带宽(如 10G+)或小包测试时,iperf 本身可能成为瓶颈。监控客户端和服务端的 CPU 使用率。如果 CPU 接近 100%,测试结果可能不准确。使用多线程 (-P) 可以分散 CPU 负载。

    3. 物理链路限制: 测试结果不可能超过物理链路(网线、光纤、交换机端口、Wi-Fi 标准)的理论最大带宽。

    4. 网络拥塞: 测试应在相对空闲的网络进行,避免其他流量干扰结果。在共享网络(如公共 Wi-Fi、办公网)测试结果波动可能很大。

    5. TCP vs UDP:

      • TCP: 测试的是网络的可靠传输能力。结果受 TCP 拥塞控制算法、窗口大小、往返时延 (RTT) 影响显著。追求最大带宽时务必使用多线程 (-P)。

      • UDP: 测试的是网络的原始承载能力服务质量 (QoS)。可以模拟恒定码率应用(如视频流)。通过 -b 控制发送速率,通过结果看实际达到的速率、丢包率和抖动。

    6. 测试方向: 网络的上行(客户端->服务器)和下行(服务器->客户端)带宽可能不对称(如 ADSL、Cable Modem)。使用 -R 或单独测试来区分。

    7. 持续时间: -t 参数设置足够长的时间(至少 10-60 秒),让 TCP 流达到稳定状态,并平滑短时波动。对于稳定性测试,可能需要持续数小时甚至更久。

    8. 版本一致性: 尽量保证客户端和服务端使用相同版本的 iperf (iperf2 或 iperf3),避免兼容性问题。iperf2 和 iperf3 协议不兼容。

    通过灵活组合这些参数,你可以使用 iperf 进行各种复杂的网络“打流”测试,精确评估网络的性能极限和稳定性。如果需要针对特定场景的测试命令,可以提供更多细节。

    相关文章:

  5. 春秋云镜【CVE-2017-18349】fastjson wp
  6. WebSocket快速入门
  7. 北京他山科技:全球首款AI触觉感知芯片破局者
  8. 异步IO框架io_uring实现TCP服务器
  9. RISC-V h拓展
  10. 使用nhdeep目录套打工具打印备考表
  11. ELK 和 OpenShift 中的 EFK
  12. c++中的set容器介绍及操作
  13. 动,静态库
  14. 智能生成分析报告系统在危化安全生产监测预警评估中的应用
  15. 【麻省理工】《how to speaking》笔记
  16. Kubernetes安全
  17. 亚矩云手机赋能Vinted矩阵运营:破解二手电商多账号与本地化困局
  18. idea 报错:java: 非法字符: ‘\ufeff‘
  19. 回归任务与分类任务的区别
  20. 合并table
  21. Java后端与Vue前端项目部署全流程:从环境配置到Nginx反向代理
  22. 【基础篇-消息队列】——详解 RocketMQ 和 Kafka 的消息模型
  23. vue组件转html
  24. qt常用控件--02
  25. 快速做网站的技术/seo 最新
  26. 北京海淀月嫂家政公司/优化设计电子版
  27. 建站哪个平台好用/网上销售
  28. 做盗版网站会坐牢吗/搜索引擎优化免费
  29. 网站建设方法:/免费的外链平台
  30. wordpress错误代码403/优化营商环境存在问题及整改措施