nuttcp如何网络测试

联启 网络工具 16

本文目录导读:

nuttcp如何网络测试-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 安装
  2. 基本架构与测试流程
  3. 核心参数详解
  4. 典型测试场景与命令
  5. 高级用法与技巧
  6. 常见问题与优化
  7. 比较:nuttcp vs. iperf3
  8. 快速检查清单

nuttcp 是一个非常轻量、高效且功能强大的网络性能测试工具,常用于测量 TCP 和 UDP 的吞吐量、丢包率、延迟等指标,相比 iperf3,它对于低带宽、高延迟或资源受限的环境(如嵌入式设备、物联网场景)有更好的适应性。

下面详细说明如何使用 nuttcp 进行网络测试,包括基本安装、核心参数、典型测试场景以及结果解读。


安装

  • Linux(Ubuntu/Debian): sudo apt install nuttcp
  • macOS(Homebrew): brew install nuttcp
  • Windows: 需要从官网或第三方源码编译(官方主要支持 Unix/Like 系统)。
  • 编译安装: 从官网下载源码,执行 makemake install

基本架构与测试流程

nuttcp 采用经典的 客户端-服务器(C/S) 模式。

  1. 启动服务端:在接收数据的机器上运行 nuttcp -S
  2. 运行客户端:在发送数据的机器上运行 nuttcp [选项] <服务端IP地址>

注意:如果不启动服务端,客户端会默认启动一个短暂的临时服务端,并在测试结束后自动关闭(适用于一次性快速测试)。


核心参数详解

参数 作用 说明
-S 作为服务端运行 长期监听,等待客户端连接
-i 间隔秒数 定期(如每1秒)输出当前传输速率,代替最终总结果
-l 缓冲区大小 设置读/写缓冲区(单位:字节,支持 KM
-n 数据块数量 发送指定数量的 -l 大小的数据块(-n 1000
-N 使用非阻塞 I/O 更贴近真实应用场景(如 HTTP 请求)
-p 端口号 指定通信端口(默认 5000)
-R 反向模式 客户端接收,服务端发送(测试下行到客户端的速度)
-u 使用 UDP 协议 默认是 TCP,加上此参数改为 UDP
-v 详细输出 打印更多调试信息
-w TCP 窗口大小 设置 TCP 发送/接收窗口(影响高延迟链路)
-T 测试时长(秒) 测试持续指定时间后自动结束(-T 30
-r 双向测试 客户端和服务端同时收发数据
-P 并行线程数 启动多个连接并行测试(-P 4

典型测试场景与命令

场景1:TCP 带宽测试(最常用)

  • 服务端(Server IP: 192.168.1.10): nuttcp -S (保持后台运行)

  • 客户端(发送数据):

    # 默认测试约 10 秒,输出总吞吐量
    nuttcp 192.168.1.10
    # 指定测试 30 秒(-T 30)
    nuttcp -T 30 192.168.1.10
    # 每 1 秒输出一次实时速率(-i 1)
    nuttcp -i 1 192.168.1.10

    输出示例

    7500 MB /  10.00 sec = 667.97 Mbps 3 %TX 5 %RX

    解读:10秒传输了795.75 MB数据,平均速率 667.97 Mbps,发送端 CPU 占用 3%,接收端 5%。

场景2:UDP 带宽与丢包测试

nuttcp 的 UDP 测试非常强大,因为 iperf3 的 UDP 测试在某些场景下有性能瓶颈,而 nuttcp 更稳定。

  • 服务端: nuttcp -S -u

  • 客户端:

    # 以 100 Mbps 的速率发送 UDP 数据包(-R 100M)
    nuttcp -u -R 100M 192.168.1.10
    # 指定发送 10 万个小包(每个 1472 字节,避免 IP 分片)
    nuttcp -u -n 100000 192.168.1.10

    输出示例

    0000 Mbps TX, 99.9950 Mbps RX, 0.005% loss

    解读:发送速率100 Mbps,接收速率约99.995 Mbps,丢包率0.005%。这是衡量 UDP 传输质量的关键指标。

场景3:高延迟链路(长肥网络)测试

对于跨洲际、卫星链路等高带宽高延迟场景,需要调大 TCP 窗口:

# 窗口设为 256KB(-w 256K)
nuttcp -w 256K -i 1 -T 30 192.168.1.10

场景4:双向同时测试(上行 + 下行)

# 在客户端同时发送和接收数据
nuttcp -r -T 30 192.168.1.10

输出会显示两个方向的吞吐量。

场景5:反向测试(测试客户端下载速度)

有时服务端在公网,客户端在内网,需要从服务端下载数据回客户端:

# 客户端执行(-R 表示反向)
nuttcp -R -T 30 192.168.1.10
# 等价于:服务端作为发送方,客户端作为接收方

高级用法与技巧

1 测试 UDP 非饱合带宽(指定速率)

在 UDP 测试中,通常想测试在特定速率下链路的丢包率,而不是跑满带宽。

nuttcp -u -R 500K -T 20 192.168.1.10
# 以 500 Kbps 的速率发送 UDP 数据,持续 20 秒

2 使用文件模式(模拟真实应用)

通过 -F 参数可以指定传输文件,模拟真实的文件传输场景:

# 服务端
nuttcp -S -F receive.dat
# 客户端
nuttcp -F send.dat 192.168.1.10

这会将 send.dat 发送到服务端并保存为 receive.dat

3 连续压测(不限制时长)

如果希望测试一直进行,直到手动停止:

# 使用 -N 非阻塞模式,并用 -n 指定大量数据块
# 例如发送 10 亿个 8K 数据块(约 8TB)
nuttcp -l 8K -n 1000000000 192.168.1.10
# 按 Ctrl+C 停止测试

常见问题与优化

问题 可能原因 解决方法
速度远低于预期 窗口大小太小(高延迟) 增加 -w 参数(如 -w 1M
防火墙或限速 检查 iptablesqdisc
CPU 瓶颈 观察 %TX %RX 是否接近 100%
UDP 丢包率高 网络拥塞或缓冲区不足 降低发送速率 -R,或增大系统缓冲区 sysctl -w net.core.rmem_max=...
测试不稳定 客户端和服务端时间不同步 确保使用 NTP 同步(尤其是长时间测试)
端口冲突 nuttcp -S 启动失败 换用 -p 指定其他端口

比较:nuttcp vs. iperf3

特性 nuttcp iperf3
安装包大小 极小(< 100KB) 较大
UDP 性能 极优,无性能天花板 高带宽 UDP 测试常见 CPU 瓶颈
单线程优化 优秀 一般(有时需多线程弥补)
资源占用 极低 稍高
实时输出 -i 参数 -i 参数(格式更丰富)
反向模式 -R -R
社区支持 较小,文档相对简略 非常活跃,文档和教程丰富

选择建议

  • 如果你在高带宽 UDP 测试(如视频流、高频交易网络)或嵌入式/低资源环境下测试,nuttcp 是更好的选择。
  • 如果追求更丰富的报告格式(JSON 输出)、多端口测试或更广泛的社区支持,iperf3 更合适。

快速检查清单

# 1. 服务端(后台运行)
nohup nuttcp -S &
# 2. TCP 默认测试(10秒)
nuttcp <server_ip>
# 3. TCP 带实时输出(每1秒)
nuttcp -i 1 <server_ip>
# 4. UDP 测试(100Mbps速率,30秒)
nuttcp -u -R 100M -T 30 <server_ip>
# 5. 高延迟场景(窗口256K)
nuttcp -w 256K -i 5 <server_ip>
# 6. 双向测试
nuttcp -r -T 20 <server_ip>

通过以上步骤,你应该可以熟练使用 nuttcp 进行各种场景的网络性能测试,如果遇到特定问题(如跨防火墙、IPv6、自定义速率等),可以进一步查阅官方文档或结合 -v 选项调试。

标签: 网络测试

抱歉,评论功能暂时关闭!