3. 测试环境搭建:硬件准备与软件安装

做吞吐测试和抓包分析,说白了就是一场「实验室里的实战演习」。环境搭得好,后面分析数据才能顺风顺水。我见过太多人一上来就开测,结果网卡跑不满、交换机丢包、抓包文件损坏……嗯,这些坑我基本都踩过。今天咱们就把这套环境从头捋一遍。

3.1 硬件选型:别让设备拖后腿

硬件是地基。你想想看,如果服务器网卡只有千兆,却想测万兆的吞吐,那不是白费劲吗?我个人习惯,先定目标带宽,再选设备。

3.4.1 服务器

吞吐测试对 CPU 和内存要求不高,但 PCIe 通道数一定要够。我建议至少用双路 Xeon 或同等水平的 AMD EPYC。内存 16GB 起步,硬盘用 SSD,不然 iperf3 写日志时可能卡 I/O。

我的经验: 曾经用一台旧款 i7 笔记本当服务器,跑 10G 测试时 CPU 直接飙到 100%,结果吞吐只有 6Gbps。后来换了台 Xeon Silver,同样配置轻松跑满 9.8Gbps。瓶颈往往不在网卡,而在 CPU 能不能及时处理中断。

3.1.2 交换机

交换机要支持线速转发。别只看端口速率,背板带宽不够的话,多端口同时测试就会丢包。我一般选企业级三层交换机,比如华为 S5700 或 Cisco 3750 系列。家用交换机千万别用,它们的缓冲区太小,跑 iperf3 时延迟会忽高忽低。

设备类型 推荐型号 关键参数
服务器 Dell R740 / H3C R4900 双路 Xeon、64GB RAM、SSD
交换机 华为 S5735 / Cisco 3850 万兆上行、线速转发、大缓冲区
网卡 Intel X710 / Mellanox ConnectX-4 双口 10G、PCIe 3.0 x8

3.1.3 网卡

网卡是吞吐测试的「咽喉」。我强烈建议用 Intel 或 Mellanox 的服务器网卡。Realtek 那种消费级网卡,跑千兆还行,一到万兆就各种掉线。另外,记得检查网卡固件版本——我曾经被一块旧固件的 X520 坑过,死活跑不满 10G,升级固件后直接正常。

避坑指南: 网卡必须插在 PCIe 3.0 x8 或更快的插槽上。如果插在 x4 槽上,带宽会被限制在 4Gbps 左右。我见过有人把万兆网卡插在 PCIe 2.0 x1 上,结果测出来只有 500Mbps,还以为是网卡坏了。

3.2 软件安装:三件套缺一不可

软件方面,咱们主要用三个工具:iperf3 打流、tcpdump 抓包、Wireshark 分析。这三兄弟配合好了,什么问题都能揪出来。

3.2.1 iperf3:吞吐测试的瑞士军刀

iperf3 是目前最主流的吞吐测试工具。安装很简单:

# Ubuntu / Debian
sudo apt install iperf3

# CentOS / RHEL
sudo yum install iperf3

# macOS
brew install iperf3

装完之后,记得验证一下版本:iperf3 -v。我习惯用 3.9 以上版本,因为修复了旧版的一些 TCP 窗口问题。

小技巧: 如果你需要测试多流并发,iperf3 的 -P 参数可以指定并行流数。比如 iperf3 -c 192.168.1.10 -P 4 会同时开 4 个流,能更充分地压榨带宽。

3.2.2 tcpdump:命令行抓包利器

tcpdump 是 Linux 下的抓包神器。安装命令:

sudo apt install tcpdump   # Ubuntu
sudo yum install tcpdump   # CentOS

我个人习惯用 -i 指定网口,-w 保存文件。比如:

sudo tcpdump -i eth0 -w test.pcap

这里要注意,抓包文件会很大。10Gbps 的流量,抓 10 秒就能生成几个 GB 的文件。所以抓包前先估算好磁盘空间。

避坑指南: 千万不要在 iperf3 测试期间用 tcpdump 抓所有流量。我曾经这么干过,结果 tcpdump 把 CPU 吃光了,iperf3 的吞吐直接掉了一半。正确做法是:只抓控制面或特定端口的流量,或者用 -s 0 只抓包头。

3.2.3 Wireshark:图形化分析平台

Wireshark 是分析 pcap 文件的主力。安装方式:

# Windows / macOS 直接官网下载安装包
# Linux
sudo apt install wireshark

Wireshark 的过滤器是核心技能。我常用的几个:

  • tcp.port == 5201 —— 只看 iperf3 的流量
  • tcp.analysis.retransmission —— 快速定位重传包
  • tcp.window_size == 0 —— 检查窗口是否被耗尽

3.3 网络拓扑设计:画好你的测试蓝图

拓扑设计决定了测试的覆盖范围。我一般分三种场景:

3.3.1 直连拓扑(最简单)

两台服务器用网线直连,不经过交换机。这种拓扑适合测网卡极限性能,排除交换机干扰。

3.3.2 单跳拓扑(最常见)

两台服务器接在同一台交换机上。这是企业内网的标准场景,能测出交换机转发性能。

3.3.3 多跳拓扑(复杂场景)

经过多台交换机或路由器。适合模拟数据中心或广域网环境。

下面这张图是我常用的测试拓扑:

吞吐测试网络拓扑图 吞吐测试网络拓扑图 服务器 A iperf3 客户端 交换机 万兆 / 千兆 线速转发 服务器 B iperf3 服务端 tcpdump 抓包 tcpdump 抓包 Wireshark 分析 说明:服务器 A 和 B 通过交换机连接,两端同时抓包,最后用 Wireshark 统一分析

3.4 环境验证:别急着跑测试

硬件和软件都装好了,拓扑也连好了。别急着开测,先做几个快速验证:

  1. 连通性测试: ping 192.168.1.10,确保两端能通。
  2. 网卡速率确认: ethtool eth0,看 Speed 字段是不是你期望的值。
  3. 驱动版本检查: ethtool -i eth0,确认驱动版本不是太老。
  4. 简单 iperf3 测试: 先跑 10 秒,看看有没有明显丢包。
我的习惯: 每次搭建新环境,我都会先跑一次 iperf3 -c 目标IP -t 5 做快速验证。如果结果跟预期差太多,就回头检查网线、交换机端口配置和网卡驱动。别一上来就跑 60 秒,浪费时间。

环境搭好了,后面才能安心做测试。记住一句话:测试环境的质量,决定了测试结果的可信度。 别嫌麻烦,每一步都走扎实了,后面分析数据时你会感谢自己的。