news 2026/3/2 12:49:14

交换机和网卡的 PFC 机制工作原理与实例解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
交换机和网卡的 PFC 机制工作原理与实例解析

PFC(Priority-based Flow Control,基于优先级的流控)是数据中心以太网(如 RoCE v2、DCB)的核心技术,属于链路层(Layer 2)流量控制机制。其核心目标是解决拥塞导致的丢包问题—— 通过在链路两端(交换机端口与网卡端口)基于流量优先级实现 “按需暂停 / 恢复”,而非传统的全局流控,适配智算中心 RDMA 网络对零丢包、低延迟的严苛需求。


一、PFC 的核心设计逻辑

  1. 优先级划分:基于 802.1p 协议,将流量划分为 8 个优先级(0-7),智算中心通常将RDMA 梯度同步流、存储数据传输流标记为高优先级,普通业务流标记为低优先级。
  2. 独立队列映射:交换机端口和网卡端口为每个优先级分配独立的缓冲区队列,不同优先级流量互不干扰。
  3. 端到端反馈机制:当某一端口的某优先级队列出现拥塞时,主动向对端端口发送暂停帧(PAUSE Frame),指令其暂停发送对应优先级的流量;拥塞缓解后发送恢复帧,恢复流量传输。


二、PFC 的工作流程(交换机 + 网卡协同)

PFC 的工作分为拥塞检测、暂停帧发送、流量暂停、拥塞缓解、恢复帧发送、流量恢复六个步骤,涉及网卡发送端、交换机转发端、网卡接收端三个核心角色,以下是标准化流程:

1. 初始化配置

  • 网卡与交换机通过DCBx 协议(数据中心桥接交换协议)协商 PFC 使能状态、优先级映射规则、队列阈值参数,确保两端配置一致。
  • 例如:约定优先级7为 RDMA 梯度流,优先级0为普通监控流;设置队列拥塞阈值TH_high=80%(触发暂停)、TH_low=30%(触发恢复)。

2. 拥塞检测(交换机端口 / 网卡接收端)

交换机端口接收 RDMA 流量为例:

  • 高优先级(7)的 RDMA 数据包持续进入交换机端口的队列Q7,队列长度快速增长。
  • Q7的缓冲区占用率达到TH_high=80%时,交换机判定该优先级队列拥塞。

3. 暂停帧发送

  • 交换机端口向对端网卡发送端发送 PFC 暂停帧,帧中包含两个核心字段:
  1. Priority Code Point(PCP):指定需要暂停的优先级(此处为 7);
  2. Pause Time:暂停时长(单位:时隙,1 时隙 = 512 比特传输时间)。
  • 注意:暂停帧仅针对指定优先级,其他优先级(如 0)的流量不受影响。

4. 流量暂停(网卡发送端)

  • 网卡发送端收到暂停帧后,立即暂停发送优先级 7的 RDMA 流量,但继续发送优先级 0 的普通流量。
  • 此时网卡的优先级 7 队列数据暂存于本地缓冲区,不向交换机传输,避免交换机队列溢出丢包。

5. 拥塞缓解与恢复帧发送

  • 交换机端口的Q7队列持续转发数据包,缓冲区占用率逐渐下降。
  • 当占用率降至TH_low=30%时,交换机判定拥塞缓解,向网卡发送端发送PFC 恢复帧(或暂停时长设为 0 的暂停帧)。

6. 流量恢复

  • 网卡发送端收到恢复帧后,立即恢复优先级 7 的 RDMA 流量传输,整个过程无丢包、无重传。

三、具体实例:智算中心 GPU 集群 RDMA 梯度同步场景

1.场景背景

某智算中心采用Spine-Leaf 架构 RoCE v2 网络,包含 100 台 GPU 服务器(每台配备支持 PFC 的 Mellanox CX6 网卡)和 10 台 Leaf 交换机。GPU 节点在千亿参数大模型训练的梯度同步阶段,需通过 RDMA all-reduce 协议传输 TB 级梯度数据,流量优先级标记为 7;同时节点需发送低优先级(0)的监控日志数据。

2.PFC 协同工作全过程

  1. 流量发送:GPU A 的网卡向 GPU B 发送优先级 7 的 RDMA 梯度流优先级 0 的监控流,数据包经 Leaf 交换机转发。
  2. 交换机拥塞触发:由于多台 GPU 同时向 GPU B 发送梯度流,Leaf 交换机连接 GPU B 的端口队列Q7缓冲区占用率快速升至 85%(超过阈值 80%),触发 PFC。
  3. 交换机发送暂停帧:Leaf 交换机端口向 GPU A 的网卡发送暂停帧,指定暂停优先级 7,暂停时长为 1000 时隙。
  4. 网卡暂停高优先级流量:GPU A 的网卡收到暂停帧后,立即停止发送优先级 7 的梯度流,仅继续发送优先级 0 的监控流,避免交换机Q7队列溢出丢包。
  5. 拥塞缓解:交换机Q7队列的梯度数据包持续转发至 GPU B,缓冲区占用率降至 25%(低于阈值 30%),拥塞缓解。
  6. 恢复流量传输:交换机发送恢复帧,GPU A 的网卡恢复优先级 7 的梯度流传输,梯度同步继续进行,全程无丢包。
  7. 低优先级流量不受影响:在整个 PFC 过程中,优先级 0 的监控流始终正常传输,未因高优先级流量拥塞被中断。

四、PFC 的关键优势与潜在风险

1. 核心优势

  • 零丢包传输:避免队列溢出丢包,适配 RDMA “丢包敏感” 特性(RDMA 丢包会触发超时重传,延迟飙升至毫秒级)。
  • 优先级隔离:高优先级关键业务(如梯度同步、存储 IO)不受低优先级流量干扰。
  • 链路级精准控制:仅在拥塞链路两端生效,不会引发全网流控风暴。

2. 潜在风险

  • PFC 死锁:若多台设备相互发送暂停帧,可能导致流量完全停滞(需通过 DCBx 配置超时机制规避)。
  • 队列头阻塞(HOL):同一优先级内的长流可能阻塞短流,需结合ECN、HPCC等拥塞控制技术协同优化。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/1 14:25:36

UI自动化测试常见面试题

1、什么是UI自动化测试? UI自动化测试是一种通过模拟用户交互并自动执行UI操作的软件测试方法。它用于验证用户界面的功能和稳定性,以确保在不同的操作系统、浏览器和设备上的一致性。 2、UI自动化测试的优势和劣势是什么? 优势&#xff1…

作者头像 李华
网站建设 2026/3/1 20:39:34

Linux OOM 问题之 DMSERVER 受害者

Shell 脚本模拟(无需安装工具) OOM 问题#!/bin/bash #持续申请内存,每次申请 100MB,直到内存耗尽。while true; do # 创建 100MB 临时文件,读取到内存(cat 命令会占用内存)。cat /dev/zero |head -c 100M |tail & done运行脚本&#xff1…

作者头像 李华
网站建设 2026/3/2 4:44:45

Flutter引擎裁剪与鸿蒙方舟编译协同优化

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。 Flutter引擎裁剪与鸿蒙方舟编译协同优化 Flutter引擎的冗余模块会增加包体积并影响启动速度。通过分析flutter_engine源代码,可识别非必要模块进行裁剪。常见可移除模块包括&#…

作者头像 李华
网站建设 2026/2/25 8:49:08

STM32CubeMX的main.c开头介绍

简单来说,这些 USER CODE BEGIN 和 USER CODE END 包裹的区域是 “代码保护区”。1. 这些区域是什么?为什么要这样设计?STM32CubeMX 是一个图形化配置工具,它可以自动帮你生成底层驱动代码(如 GPIO 初始化、时钟配置等…

作者头像 李华
网站建设 2026/2/26 12:53:25

26.MPSOC FPGA linux读AHT20传感器

一、vivado 工程搭建因为十分简单&#xff0c;不在赘述。生成平台文件&#xff0c;导出&#xff0c;建立vitis linux 设备树工程&#xff0c;不在赘述。生成的设备树文件&#xff1a;axi_iic_0: i2c80000000 {#address-cells <1>;#size-cells <0>;clock-names &…

作者头像 李华
网站建设 2026/3/2 4:23:24

嵌入式系统时序图完全指南:从原理到实战

嵌入式系统时序图完全指南&#xff1a;从原理到实战在嵌入式系统开发中&#xff0c;时序图是理解硬件交互的关键语言。本文将全面解析时序图的阅读、测量和应用技巧&#xff0c;帮助您掌握这一硬件工程师的核心技能。一、时序图基础&#xff1a;硬件通信的蓝本 1.1 时序图核心要…

作者头像 李华