title: 网络测试
created: 2026-06-20
updated: 2026-06-20
type: concept
tags: [network, linux, monitoring]
sources:
- raw/scripts/0网络.sh
- raw/scripts/双网卡同网段.sh
- raw/scripts/Mellanox.sh
- raw/scripts/network.sh
- raw/scripts/bond.sh
- raw/scripts/dhcp.sh
- raw/scripts/ethtool.sh
- raw/scripts/sar.sh
网络测试
网络测试涵盖网卡配置、MTU 调优、网速监控、硬件信息查看、双网卡同网段策略路由、Mellanox InfiniBand 网卡配置以及网络性能测试工具(iperf/netperf)。
网卡配置
nmtui(NetworkManager TUI)
nmtui 是 NetworkManager 的文本界面工具,适用于快速交互式配置:
nmtui
通过向导式界面配置 IP 地址、DNS、网关等。
Netplan(Ubuntu 默认)
Netplan 是 Ubuntu 的网络配置抽象层,使用 YAML 配置文件。推荐绑定 MAC 地址以防止网卡名称变更:
# /etc/netplan/00-installer-config.yaml
network:
ethernets:
eth0:
match:
macaddress: "00:15:b2:b4:a4:16"
set-name: "eth0"
dhcp4: true
version: 2
应用配置:sudo netplan apply
ifcfg(RHEL/CentOS 传统方式)
配置文件位于 /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
# 重启网络服务
sudo systemctl restart network
sudo systemctl restart NetworkManager.service
/etc/init.d/networking restart
MTU 设置(巨帧 Jumbo Frame)
MTU(Maximum Transmission Unit)默认以太网为 1500 字节。启用巨帧(9000)可减少数据包头部开销,提升大文件传输性能:
# 临时设置
ip link set dev eth0 mtu 9000
# 永久设置需写入网卡配置文件(ifcfg 中添加 MTU=9000)
注意:MTU 必须端到端一致(交换机、两端网卡),否则会导致分片或丢包。
网速监控
nload
实时查看网卡流量,以图形化方式展示:
sudo apt install -y nload
nload -u M # 以 MB 为单位显示
iftop
显示每个连接的带宽占用:
sudo apt install -y iftop
sudo iftop -B -i eth0 # -B 以字节显示,-i 指定网卡
ip -s link
Linux 内核自带的统计查看方式:
watch -n 1 ip -s link show eth0
实时刷新显示发送/接收的字节数、数据包数、错误数、丢弃数。
sar
系统活动报告工具,可记录历史网络流量:
# 安装 sysstat
yum install sysstat -y
# 查看指定网卡流量,每秒采集一次,共 320 次
sar -n DEV 1 320 | grep [网卡名]
网卡硬件信息
ethtool
ethtool 是查询和修改网卡参数的标准工具:
# 查看网卡基本信息(速率、双工模式、Auto-negotiation)
ethtool eth0
# 查看驱动和总线信息(bus-info 可用于 lspci 定位物理槽位)
ethtool -i eth0
# 查看网卡统计(丢包、错包、CRC 错误等)
ethtool -S eth0
ethtool 常用参数解释:
- Speed: 10000Mb/s — 当前链路速率(10GbE)
- Duplex: Full — 全双工模式(Half 为半双工)
- Port: Twisted Pair — 端口类型(FIBRE 为光纤)
- Link detected: yes — 链路是否接通
- driver: ixgbe — 网卡驱动名称
- bus-info: 0000:02:00.0 — PCI 总线地址
网卡亮灯定位
在数据中心机房中,使用以下命令让指定网卡的端口指示灯闪烁,便于物理定位:
ethtool -p ens83f0 # 亮灯 2 秒(默认)
ethtool -p ens83f0 30 # 亮灯 30 秒
配合 lshw 查看总线地址与网卡名称的对应关系:
lshw -class network -businfo
lspci | grep net
lspci -nvv -d 8086:1572 | grep --color Width # 查看 PCIe 链路宽度
双网卡同网段配置
当两个网卡配置在同一网段时,默认情况下 Linux 会利用所有网卡响应 ARP 请求,导致即使某个网卡未插线其 IP 也可被 ping 通(ARP 泛洪问题)。
策略路由
通过策略路由为每个网卡使用独立的路由表:
# 为 eno1(192.168.1.46)创建独立路由表
ip route add default via 192.168.1.46 dev eno1 table 46
ip rule add from 192.168.1.46 table 46
# 为 eno2(192.168.1.50)创建独立路由表
ip route add default via 192.168.1.50 dev eno2 table 50
ip rule add from 192.168.1.50 table 50
ARP 隔离
通过 sysctl 参数限制 ARP 响应行为:
# 临时生效
echo 1 > /proc/sys/net/ipv4/conf/eno1/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eno1/arp_announce
# 永久生效(写入 /etc/sysctl.conf)
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.rp_filter = 1
参数解释:
- arp_ignore = 1 — 只回答目标 IP 地址是本地地址(该网卡配置的 IP)的 ARP 请求
- arp_announce = 2 — 总是使用最佳本地地址作为 ARP 请求的源地址
- rp_filter = 1 — 开启反向路径过滤,防止 IP 欺骗
Bonding 基本概念
Bonding(网卡绑定)将多个物理网卡聚合为一个逻辑接口,实现冗余和带宽叠加。常见模式:
| 模式 | 名称 | 说明 |
|---|---|---|
| 0 | balance-rr | 轮询模式,负载均衡 + 容错 |
| 1 | active-backup | 主备模式,仅容错 |
| 2 | balance-xor | 基于 XOR 算法的负载均衡 |
| 4 | 802.3ad | 动态链路聚合(LACP),需交换机支持 |
Mellanox 网卡配置
Mellanox(现 NVIDIA Networking)网卡支持 InfiniBand 和高速以太网。
MLNX_OFED 驱动安装
# 下载并安装 MLNX_OFED
./mlnx_add_kernel_support.sh -m ./
./mlnxofedinstall
/etc/init.d/openibd restart
/etc/init.d/opensmd restart
查看 Mellanox 设备信息
# MST 状态管理
sudo mst start
sudo mst status -v
# 查看 InfiniBand 设备
ibv_devices
ibv_devinfo
# 查看 IB 设备与网络接口映射
ibdev2netdev
# 查看工作状态
ibstatus
# 性能调优
mlnx_tune
InfiniBand 速率测试
# 本地回环测试(重要:测试 IB 链路本身是否正常)
ib_write_bw -d mlx5_0 & ib_write_bw -d mlx5_1 127.0.0.1 --report_gbits
# 绑核测试(结合 NUMA 拓扑)
taskset -c 0-15 ib_write_bw -d mlx5_0 &
taskset -c 32-47 ib_write_bw -d mlx5_1 127.0.0.1 --report_gbits
InfiniBand 网络配置(IPoIB)
通过 IPoIB(IP over InfiniBand)在 IB 网络上承载 IP 协议:
# 使用 nmcli 创建 IPoIB 连接
nmcli con add type infiniband con-name mlx4_ib0 ifname mlx4_ib0 \
transport-mode connected mtu 65520
# ifcfg 配置文件示例
# /etc/sysconfig/network-scripts/ifcfg-mlx4_ib0
DEVICE=mlx4_ib0
TYPE=InfiniBand
ONBOOT=yes
MTU=65520
CONNECTED_MODE=yes
RDMA 连通性测试(rping)
# 服务端
rping -s -a 172.16.34.1 -p 9401 -v
# 客户端
rping -c -I 172.16.16.1 -a 172.16.34.1 -p 9401 -v
网络性能测试
iperf/iperf3
# 服务端
iperf3 -s
# 客户端 - TCP 测试
iperf3 -c 10.10.1.1 -B 10.10.1.2
# UDP 测试(建议使用 iperf2 进行 UDP 测试)
iperf3 -c 10.10.1.1 -u -b 5G -P 20
# PPS 测试(小包 UDP)
iperf -t 120 -i 1 -u -b 10G -l 16 -c $serverip
iperf 关键参数:
- -c — 客户端模式,指定服务端 IP
- -s — 服务端模式
- -u — UDP 模式
- -b — 目标带宽(如 5G、10G)
- -P — 并行流数
- -l — 缓冲区大小(小包测试用 16 字节)
- -t — 测试时长(秒)
netperf
# 服务端
netserver
# TCP 吞吐测试
netperf -H 172.168.5.23 -l 100
# 延迟测试
netperf -H $SERVER -t omni -- -d rr \
-O "THROUGHPUT, THROUGHPUT_UNITS, MIN_LATENCY, MAX_LATENCY, MEAN_LATENCY"
netperf 测试类型:
- TCP_STREAM — TCP 吞吐量
- UDP_STREAM — UDP 吞吐量
- TCP_RR — TCP 请求/响应延迟
- TCP_CRR — TCP 连接/请求/响应
- UDP_RR — UDP 请求/响应
相关页面
- system-information — 系统信息采集(lspci 查看网卡设备)
- gpu-testing — GPU 测试(Mellanox InfiniBand 在 GPU 集群中用于通信)
- Linux 常规操作与优化 — 系统调优(网络相关的内核参数)