Linux Overlay网络性能测试
小樊
41
2025-12-15 22:18:13
Linux Overlay网络性能测试方案
一 测试目标与场景
- 明确被测对象与路径:区分容器间同主机、跨主机同二层域、跨主机跨三层域三类路径,分别覆盖VXLAN/NVGRE/Geneve等封装与内核/用户态数据面实现。
- 定义指标口径:吞吐(Gbps/Mbps)、时延(RTT p50/p95/p99)、抖动、丢包率、CPU占用(用户态/内核态)、PPS、重传率、带宽收敛比(多流/单流)。
- 基线对照:准备无Overlay(host网络)与Underlay直连两套基线,便于量化封装与隧道开销。
- 稳定性与规模:长稳(≥15–30分钟)、多流(并发≥100条五元组)、背靠背(burst)与大小流混合场景。
二 测试拓扑与准备
- 拓扑建议:至少准备3台物理机/虚拟机(两台作为端点,一台作为流量发生器/采集器),每台至少2×10GbE网卡;跨主机测试时保证Underlay互通且MTU一致。
- 环境配置要点:
- 统一MTU:Overlay封装引入额外头部(如VXLAN 50B),物理口/隧道口/容器口需一致,建议从1500–50=1450起步验证,必要时下调至1400以规避分片。
- 驱动与内核:优先使用较新稳定内核与vfio-pci/iommu就绪的驱动;容器侧选择一致的运行时(containerd/docker)。
- 资源隔离:为测试进程设置CPU亲和与中断绑定,避免调度与软中断干扰。
- 验证连通与封装:
- 使用ip link/bridge/vxlan/nmcli等确认隧道接口与VTEP状态;
- 通过ping/traceroute验证端到端可达性;
- 用tcpdump在隧道口抓包确认封装类型与报文大小分布。
三 测试工具与命令示例
- 吞吐与并发
- iperf3(推荐):服务端容器/主机执行
iperf3 -s;客户端执行iperf3 -c <dst> -P <并发流数> -t <秒> -i 1 -w 256K/1M,关注带宽、重传、PPS与CPU占用。
- 多流与长稳:
-P 100、-t 1800,结合--bidir测试双向吞吐;必要时用--json便于后处理。
- 时延与抖动
- ping:
ping -c 100 -i 0.2 -s <payload> <dst>,记录RTT分布;
- hping3:
hping3 -S -p 80 -i u100 <dst>,获取微秒级RTT与丢包。
- 丢包与路径验证
- 容器侧丢包定位:
docker run -it --rm alpine ping -c 100 <dst>;
- 容器间带宽:
docker run -d --rm --name s networkstatic/iperf3 -s 与 docker run -it --rm --network container:s networkstatic/iperf3 -c s;
- 抓包定位:
tcpdump -i <overlay|veth|phy> -nn -vv port <vxlan_vni|4789>,确认外层目的IP、VNI、TTL与分片。
- 资源与可视化
- 实时流量:
iftop -i <iface>;
- 系统资源:
nmon、systemd-cgtop;
- 容器资源:
docker stats;
- 监控可视化:部署Prometheus+Grafana,采集主机/容器/网络指标并构建Overlay专用面板。
四 关键测试用例与步骤
- 基线对比
- 同主机容器:host网络 vs bridge vs overlay;记录吞吐、时延与CPU差异。
- 跨主机:Underlay直连 vs VXLAN vs Geneve;统一MTU与并发流数。
- 吞吐与并发
- 单流/多流(如1/4/16/64/256流)递增测试,观察PPS饱和点与带宽收敛;
- 长稳(≥30分钟)与背靠背(burst)测试,关注性能回落与丢包。
- 时延与抖动
- 固定包长(如64B/1400B)与可变负载,比较RTT p50/p95/p99;
- 对比TCP/UDP与不同窗口/缓冲设置的影响。
- 分片与MTU
- 设置1500/1450/1400逐级测试,观察分片、丢包、重传与吞吐变化;
- 抓包验证内层/外层L3/L4校验和与分段行为。
- 故障与异常注入
- 限速/丢包(如tc netem)、CPU抢占、中断迁移,验证稳定性与恢复时间;
- 安全组/防火墙规则变更,验证策略对性能的影响。
五 结果分析与优化建议
- 结果判读
- 吞吐低于基线:优先排查封装开销、MTU/分片、CPU软中断与中断绑定;
- 时延抖动大:检查队列/缓存(RING/HTB)、CPU亲和、NUMA与远端拥塞;
- 丢包:结合
ping/iperf3与tcpdump定位是封装/隧道、物理链路还是安全策略问题。
- 优化方向
- 数据面:优先选择内核态转发(如VXLAN),在追求极致PPS时评估eBPF/XDP或用户态(如VPP)方案;
- 资源:中断与RSS队列绑定到测试CPU,RPS/RFS辅助均衡;
- 队列与缓冲:合理设置txqueuelen、tune-scheduler与驱动队列参数,避免缓存过大引入抖动;
- 协议与栈:调优TCP窗口/内核参数(如
rmem/wmem、somaxconn、tcp_tw_reuse),UDP业务关注应用层重传与限速;
- 拓扑与封装:尽量同二层域减少跨三层跳数;在复杂SLA需求下,可评估SRv6/VPP等高性能网关方案。