3. 网络带宽基础:带宽定义、吞吐量、PPS(包每秒)、延迟之间的关系,以及它们在K8s环境中的测量方法

在Kubernetes网络性能调优中,理解带宽、吞吐量、PPS和延迟这四大核心指标是诊断CNI插件瓶颈的前提。这四个指标相互制约,共同决定了Pod的网络服务质量。本节将厘清它们的定义、数学关系,并给出在K8s环境中的标准测量方法。

3.1 核心指标定义与对比

指标 英文 单位 核心含义
带宽 Bandwidth bps (bit/s), Gbps 链路或接口的理论最大传输速率,是物理或虚拟网卡的容量上限。
吞吐量 Throughput bps (bit/s), Gbps 实际应用中成功传输数据的速率,受协议开销、CPU、内存、CNI封装等因素影响,通常低于带宽。
包每秒 PPS (Packets Per Second) pps 网络设备或节点每秒能处理的数据包数量,反映小包场景下的转发能力。
延迟 Latency ms, μs 数据包从源端到目的端所花费的单向或往返时间(RTT)。
关键认知: 带宽是“水管粗细”,吞吐量是“实际水流”,PPS是“水滴数量”,延迟是“水流速度”。在K8s中,CNI插件的Overhead(如VXLAN封装)会同时降低吞吐量和PPS,并增加延迟。

3.2 四者之间的制约关系

这四个指标并非独立存在,它们之间存在经典的性能三角关系。理解这些关系有助于在调优时做出权衡。

  • 带宽 vs. 吞吐量: 吞吐量 ≤ 带宽。协议头开销(TCP/IP、VXLAN、Geneve)会消耗部分带宽,导致吞吐量永远无法达到理论带宽值。
  • PPS vs. 吞吐量: 吞吐量 = PPS × 平均包大小(含帧头)。当包大小固定时,PPS越高,吞吐量越大。但在小包场景(如64字节),CPU中断和内核协议栈处理成为瓶颈,PPS先达到上限,导致吞吐量远低于带宽。
  • 延迟 vs. 吞吐量: 在链路未饱和时,延迟通常较低且稳定。当吞吐量接近带宽上限时,网络队列开始堆积,导致延迟急剧上升(即“拐点”)。
  • PPS vs. 延迟: 高PPS意味着频繁的中断和上下文切换,这会增加CPU处理延迟,进而影响应用层的响应时间。
K8s调优启示: 对于Redis、Memcached等延迟敏感型应用,应优先关注PPS和延迟,而非单纯追求带宽。对于大数据传输(如Spark Shuffle),则需优先保障吞吐量。

3.3 指标关系示意图

下图展示了在典型K8s节点上,随着负载增加,吞吐量与延迟之间的非线性关系,以及PPS对吞吐量的影响。

网络性能指标关系图(K8s节点视角) 吞吐量 vs 延迟 延迟 (ms) 吞吐量 (Gbps) 拐点 低延迟区 拥塞区 PPS vs 吞吐量(不同包大小) 吞吐量 (Gbps) PPS (Mpps) 1500B 512B 64B 小包场景下,PPS先达到瓶颈 吞吐量远低于带宽上限 公式:吞吐量 (bps) = PPS × (包大小 + 帧头开销) × 8

3.4 K8s环境中的测量方法

在Kubernetes集群中测量网络指标,需要区分节点级和Pod级两个维度。以下是标准工具和命令。

3.4.1 节点级测量(宿主机视角)

  • 带宽/吞吐量: 使用 iperf3 在两个Node之间或Node与外部测试机之间进行TCP/UDP流测试。
  • PPS: 使用 sar -n DEV 1 或 ethtool -S eth0 | grep rx_packets 查看网卡收发包速率。
  • 延迟: 使用 ping 或 mtr 测量节点间RTT。
节点级命令示例:
# 在Node A启动服务端
iperf3 -s -p 5201

# 在Node B启动客户端,测试TCP吞吐量(30秒)
iperf3 -c <NodeA_IP> -p 5201 -t 30

# 查看节点eth0的PPS
sar -n DEV 1 5 | grep eth0

# 测量节点间延迟
ping -c 100 <NodeB_IP>

3.4.2 Pod级测量(容器视角)

Pod级测量需要绕过Service负载均衡,直接使用Pod IP。由于CNI插件的存在,Pod的网络性能可能与宿主机有显著差异。

  • Pod间吞吐量: 在同一个Node或跨Node的Pod之间运行 iperf3。注意Pod的CPU Limit可能成为瓶颈。
  • Pod间PPS: 使用 netperf 的 TCP_RR 或 UDP_STREAM 测试,或使用 sockperf 进行更精细的PPS测量。
  • Pod间延迟: 使用 ping 直接对Pod IP进行测试。对于微秒级精度,建议使用 sockperf 或 qperf。
K8s专用测量工具: 推荐使用 k8s-netperf 或 Kubernetes Netperf Operator,它们可以自动化部署测试Pod并收集跨Node的性能数据,避免手动配置的繁琐。

3.4.3 测量注意事项

注意事项 说明
CPU绑定 iperf3等工具是CPU密集型,建议将测试Pod绑定到独占CPU核心(使用Guaranteed QoS),避免干扰。
MTU一致性 确保Pod网络MTU与宿主机底层网络MTU一致,避免分片导致性能下降。
CNI Overhead VXLAN/Geneve封装会额外消耗20-50字节,导致有效MTU降低,影响大包吞吐量。
多轮测试 网络性能波动较大,建议每项测试至少运行5次,取中位数或平均值。
常见误区: 不要仅依赖 ping 的延迟结果来评估网络性能。ping使用的是ICMP协议,优先级高且不经过协议栈的复杂处理,其延迟通常远低于实际TCP/UDP应用的延迟。务必使用应用层工具(如iperf3、sockperf)进行验证。