DPDK高性能交换机深度故障分析:一次Mbuf Cache失衡引发的转发性能雪崩

DPDK高性能交换机深度故障分析:一次Mbuf Cache失衡引发的转发性能雪崩

一、故障背景

某省级运营商城域网部署了一套基于DPDK的软件交换机。

承担业务:

  • 二层汇聚
  • 三层路由
  • VXLAN网关
  • ACL访问控制
  • MPLS VPN接入

设备配置:

项目参数
CPUIntel Xeon Gold 6338
Socket2
Core64 Physical Core
NICIntel X710 Dual Port
DPDK22.11
PMD线程32
RX Queue32
TX Queue32

系统上线半年运行稳定。

某次扩容后:

业务流量:

42 Mpps ↓ 55 Mpps ↓ 67 Mpps

开始出现异常。


业务侧现象:

  • VXLAN时延波动
  • TCP重传增加
  • OSPF邻居偶发超时
  • ARP响应变慢

监控显示:

指标数值
CPU100%
内存36%
链路利用率52%
网卡Error0

所有PMD线程均正常运行。


二、第一轮排查

查看网卡统计。

rte_eth_stats_get();

结果:

imissed 0 ierrors 0 rx_nombuf 0

说明:

  • 网卡没有丢包
  • RX Ring正常
  • Mbuf没有耗尽

继续检查:

dpdk-proc-info --xstats

发现:

rx_q0_packets rx_q1_packets ... rx_q31_packets

流量分布均衡。

RSS正常。


继续检查:

show forwarding statistics

发现:

Input PPS 67M Output PPS 43M

出现明显差异。


但是:

没有任何硬件丢包。


问题变得非常奇怪。


三、深入DPDK转发路径

回顾交换机转发架构。